add TF parser support
authorInki Dae <inki.dae@samsung.com>
Tue, 18 Dec 2018 08:50:34 +0000 (17:50 +0900)
committerInki Dae <inki.dae@samsung.com>
Mon, 29 Jun 2020 07:08:07 +0000 (16:08 +0900)
Change-Id: Iba09005cb6249f7411319fc7265bad500ceb57e2
Signed-off-by: Inki Dae <inki.dae@samsung.com>
142 files changed:
packaging/armnn.spec
tensorflow/core/framework/allocation_description.pb.cc [new file with mode: 0644]
tensorflow/core/framework/allocation_description.pb.h [new file with mode: 0644]
tensorflow/core/framework/allocation_description.proto [new file with mode: 0644]
tensorflow/core/framework/api_def.pb.cc [new file with mode: 0644]
tensorflow/core/framework/api_def.pb.h [new file with mode: 0644]
tensorflow/core/framework/api_def.proto [new file with mode: 0644]
tensorflow/core/framework/attr_value.pb.cc [new file with mode: 0644]
tensorflow/core/framework/attr_value.pb.h [new file with mode: 0644]
tensorflow/core/framework/attr_value.proto [new file with mode: 0644]
tensorflow/core/framework/cost_graph.pb.cc [new file with mode: 0644]
tensorflow/core/framework/cost_graph.pb.h [new file with mode: 0644]
tensorflow/core/framework/cost_graph.proto [new file with mode: 0644]
tensorflow/core/framework/device_attributes.pb.cc [new file with mode: 0644]
tensorflow/core/framework/device_attributes.pb.h [new file with mode: 0644]
tensorflow/core/framework/device_attributes.proto [new file with mode: 0644]
tensorflow/core/framework/function.pb.cc [new file with mode: 0644]
tensorflow/core/framework/function.pb.h [new file with mode: 0644]
tensorflow/core/framework/function.proto [new file with mode: 0644]
tensorflow/core/framework/graph.pb.cc [new file with mode: 0644]
tensorflow/core/framework/graph.pb.h [new file with mode: 0644]
tensorflow/core/framework/graph.proto [new file with mode: 0644]
tensorflow/core/framework/graph_transfer_info.pb.cc [new file with mode: 0644]
tensorflow/core/framework/graph_transfer_info.pb.h [new file with mode: 0644]
tensorflow/core/framework/graph_transfer_info.proto [new file with mode: 0644]
tensorflow/core/framework/iterator.pb.cc [new file with mode: 0644]
tensorflow/core/framework/iterator.pb.h [new file with mode: 0644]
tensorflow/core/framework/iterator.proto [new file with mode: 0644]
tensorflow/core/framework/kernel_def.pb.cc [new file with mode: 0644]
tensorflow/core/framework/kernel_def.pb.h [new file with mode: 0644]
tensorflow/core/framework/kernel_def.proto [new file with mode: 0644]
tensorflow/core/framework/log_memory.pb.cc [new file with mode: 0644]
tensorflow/core/framework/log_memory.pb.h [new file with mode: 0644]
tensorflow/core/framework/log_memory.proto [new file with mode: 0644]
tensorflow/core/framework/node_def.pb.cc [new file with mode: 0644]
tensorflow/core/framework/node_def.pb.h [new file with mode: 0644]
tensorflow/core/framework/node_def.proto [new file with mode: 0644]
tensorflow/core/framework/op_def.pb.cc [new file with mode: 0644]
tensorflow/core/framework/op_def.pb.h [new file with mode: 0644]
tensorflow/core/framework/op_def.proto [new file with mode: 0644]
tensorflow/core/framework/reader_base.pb.cc [new file with mode: 0644]
tensorflow/core/framework/reader_base.pb.h [new file with mode: 0644]
tensorflow/core/framework/reader_base.proto [new file with mode: 0644]
tensorflow/core/framework/remote_fused_graph_execute_info.pb.cc [new file with mode: 0644]
tensorflow/core/framework/remote_fused_graph_execute_info.pb.h [new file with mode: 0644]
tensorflow/core/framework/remote_fused_graph_execute_info.proto [new file with mode: 0644]
tensorflow/core/framework/resource_handle.pb.cc [new file with mode: 0644]
tensorflow/core/framework/resource_handle.pb.h [new file with mode: 0644]
tensorflow/core/framework/resource_handle.proto [new file with mode: 0644]
tensorflow/core/framework/step_stats.pb.cc [new file with mode: 0644]
tensorflow/core/framework/step_stats.pb.h [new file with mode: 0644]
tensorflow/core/framework/step_stats.proto [new file with mode: 0644]
tensorflow/core/framework/summary.pb.cc [new file with mode: 0644]
tensorflow/core/framework/summary.pb.h [new file with mode: 0644]
tensorflow/core/framework/summary.proto [new file with mode: 0644]
tensorflow/core/framework/tensor.pb.cc [new file with mode: 0644]
tensorflow/core/framework/tensor.pb.h [new file with mode: 0644]
tensorflow/core/framework/tensor.proto [new file with mode: 0644]
tensorflow/core/framework/tensor_description.pb.cc [new file with mode: 0644]
tensorflow/core/framework/tensor_description.pb.h [new file with mode: 0644]
tensorflow/core/framework/tensor_description.proto [new file with mode: 0644]
tensorflow/core/framework/tensor_shape.pb.cc [new file with mode: 0644]
tensorflow/core/framework/tensor_shape.pb.h [new file with mode: 0644]
tensorflow/core/framework/tensor_shape.proto [new file with mode: 0644]
tensorflow/core/framework/tensor_slice.pb.cc [new file with mode: 0644]
tensorflow/core/framework/tensor_slice.pb.h [new file with mode: 0644]
tensorflow/core/framework/tensor_slice.proto [new file with mode: 0644]
tensorflow/core/framework/types.pb.cc [new file with mode: 0644]
tensorflow/core/framework/types.pb.h [new file with mode: 0644]
tensorflow/core/framework/types.proto [new file with mode: 0644]
tensorflow/core/framework/variable.pb.cc [new file with mode: 0644]
tensorflow/core/framework/variable.pb.h [new file with mode: 0644]
tensorflow/core/framework/variable.proto [new file with mode: 0644]
tensorflow/core/framework/versions.pb.cc [new file with mode: 0644]
tensorflow/core/framework/versions.pb.h [new file with mode: 0644]
tensorflow/core/framework/versions.proto [new file with mode: 0644]
tensorflow/core/lib/core/error_codes.pb.cc [new file with mode: 0644]
tensorflow/core/lib/core/error_codes.pb.h [new file with mode: 0644]
tensorflow/core/lib/core/error_codes.proto [new file with mode: 0644]
tensorflow/core/protobuf/checkpointable_object_graph.pb.cc [new file with mode: 0644]
tensorflow/core/protobuf/checkpointable_object_graph.pb.h [new file with mode: 0644]
tensorflow/core/protobuf/checkpointable_object_graph.proto [new file with mode: 0644]
tensorflow/core/protobuf/cluster.pb.cc [new file with mode: 0644]
tensorflow/core/protobuf/cluster.pb.h [new file with mode: 0644]
tensorflow/core/protobuf/cluster.proto [new file with mode: 0644]
tensorflow/core/protobuf/config.pb.cc [new file with mode: 0644]
tensorflow/core/protobuf/config.pb.h [new file with mode: 0644]
tensorflow/core/protobuf/config.proto [new file with mode: 0644]
tensorflow/core/protobuf/control_flow.pb.cc [new file with mode: 0644]
tensorflow/core/protobuf/control_flow.pb.h [new file with mode: 0644]
tensorflow/core/protobuf/control_flow.proto [new file with mode: 0644]
tensorflow/core/protobuf/critical_section.pb.cc [new file with mode: 0644]
tensorflow/core/protobuf/critical_section.pb.h [new file with mode: 0644]
tensorflow/core/protobuf/critical_section.proto [new file with mode: 0644]
tensorflow/core/protobuf/debug.pb.cc [new file with mode: 0644]
tensorflow/core/protobuf/debug.pb.h [new file with mode: 0644]
tensorflow/core/protobuf/debug.proto [new file with mode: 0644]
tensorflow/core/protobuf/device_properties.pb.cc [new file with mode: 0644]
tensorflow/core/protobuf/device_properties.pb.h [new file with mode: 0644]
tensorflow/core/protobuf/device_properties.proto [new file with mode: 0644]
tensorflow/core/protobuf/eager_service.pb.cc [new file with mode: 0644]
tensorflow/core/protobuf/eager_service.pb.h [new file with mode: 0644]
tensorflow/core/protobuf/eager_service.proto [new file with mode: 0644]
tensorflow/core/protobuf/master.pb.cc [new file with mode: 0644]
tensorflow/core/protobuf/master.pb.h [new file with mode: 0644]
tensorflow/core/protobuf/master.proto [new file with mode: 0644]
tensorflow/core/protobuf/master_service.pb.cc [new file with mode: 0644]
tensorflow/core/protobuf/master_service.pb.h [new file with mode: 0644]
tensorflow/core/protobuf/master_service.proto [new file with mode: 0644]
tensorflow/core/protobuf/meta_graph.pb.cc [new file with mode: 0644]
tensorflow/core/protobuf/meta_graph.pb.h [new file with mode: 0644]
tensorflow/core/protobuf/meta_graph.proto [new file with mode: 0644]
tensorflow/core/protobuf/named_tensor.pb.cc [new file with mode: 0644]
tensorflow/core/protobuf/named_tensor.pb.h [new file with mode: 0644]
tensorflow/core/protobuf/named_tensor.proto [new file with mode: 0644]
tensorflow/core/protobuf/queue_runner.pb.cc [new file with mode: 0644]
tensorflow/core/protobuf/queue_runner.pb.h [new file with mode: 0644]
tensorflow/core/protobuf/queue_runner.proto [new file with mode: 0644]
tensorflow/core/protobuf/rewriter_config.pb.cc [new file with mode: 0644]
tensorflow/core/protobuf/rewriter_config.pb.h [new file with mode: 0644]
tensorflow/core/protobuf/rewriter_config.proto [new file with mode: 0644]
tensorflow/core/protobuf/saved_model.pb.cc [new file with mode: 0644]
tensorflow/core/protobuf/saved_model.pb.h [new file with mode: 0644]
tensorflow/core/protobuf/saved_model.proto [new file with mode: 0644]
tensorflow/core/protobuf/saver.pb.cc [new file with mode: 0644]
tensorflow/core/protobuf/saver.pb.h [new file with mode: 0644]
tensorflow/core/protobuf/saver.proto [new file with mode: 0644]
tensorflow/core/protobuf/tensor_bundle.pb.cc [new file with mode: 0644]
tensorflow/core/protobuf/tensor_bundle.pb.h [new file with mode: 0644]
tensorflow/core/protobuf/tensor_bundle.proto [new file with mode: 0644]
tensorflow/core/protobuf/tensorflow_server.pb.cc [new file with mode: 0644]
tensorflow/core/protobuf/tensorflow_server.pb.h [new file with mode: 0644]
tensorflow/core/protobuf/tensorflow_server.proto [new file with mode: 0644]
tensorflow/core/protobuf/transport_options.pb.cc [new file with mode: 0644]
tensorflow/core/protobuf/transport_options.pb.h [new file with mode: 0644]
tensorflow/core/protobuf/transport_options.proto [new file with mode: 0644]
tensorflow/core/protobuf/worker.pb.cc [new file with mode: 0644]
tensorflow/core/protobuf/worker.pb.h [new file with mode: 0644]
tensorflow/core/protobuf/worker.proto [new file with mode: 0644]
tensorflow/core/protobuf/worker_service.pb.cc [new file with mode: 0644]
tensorflow/core/protobuf/worker_service.pb.h [new file with mode: 0644]
tensorflow/core/protobuf/worker_service.proto [new file with mode: 0644]

index 76f7958..82f833d 100644 (file)
@@ -10,10 +10,10 @@ ExclusiveArch:  %arm aarch64
 
 BuildRequires: curl
 BuildRequires: cmake
-BuildRequires: libarmcl-devel
-BuildRequires: protobuf-devel
-BuildRequires: boost-devel
-BuildRequires:libcaffeonacl-devel
+#BuildRequires: libarmcl-devel
+#BuildRequires: protobuf-devel
+#BuildRequires: boost-devel
+#BuildRequires:libcaffeonacl-devel
 
 %description
 Arm Neural Networks Library
@@ -42,18 +42,28 @@ cp %{SOURCE1001} .
 
 %build
 
+#compile proto files
+#mkdir -p %{buildroot}/usr
+#cp tensorflow/ %{buildroot}/usr -ar
+#cd %{buildroot}/usr
+#protoc tensorflow/core/framework/*.proto --cpp_out=.
+#protoc tensorflow/core/protobuf/*.proto --cpp_out=.
+#protoc tensorflow/core/lib/core/*.proto --cpp_out=.
+#cd -
+
 #build ArmNN
 cmake -DARMCOMPUTENEON=1        \
       -DARMCOMPUTECL=1          \
       -DCMAKE_SKIP_RPATH=1     \
-      -DBUILD_CAFFE_PARSER=1 \
+      -DBUILD_CAFFE_PARSER=1   \
+      -DTF_GENERATED_SOURCES=./        \
+      -DBUILD_TF_PARSER=1      \
       -DBUILD_TESTS=1 \
       -DCAFFE_GENERATED_SOURCES=/usr/include \
 
 make
 
 %install
-
 mkdir -p %{buildroot}%{_libdir}
 mkdir -p %{buildroot}%{_bindir}/armnn
 mkdir -p %{buildroot}%{_includedir}/armnn
diff --git a/tensorflow/core/framework/allocation_description.pb.cc b/tensorflow/core/framework/allocation_description.pb.cc
new file mode 100644 (file)
index 0000000..50af178
--- /dev/null
@@ -0,0 +1,671 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: tensorflow/core/framework/allocation_description.proto
+
+#include "tensorflow/core/framework/allocation_description.pb.h"
+
+#include <algorithm>
+
+#include <google/protobuf/stubs/common.h>
+#include <google/protobuf/io/coded_stream.h>
+#include <google/protobuf/extension_set.h>
+#include <google/protobuf/wire_format_lite_inl.h>
+#include <google/protobuf/descriptor.h>
+#include <google/protobuf/generated_message_reflection.h>
+#include <google/protobuf/reflection_ops.h>
+#include <google/protobuf/wire_format.h>
+// @@protoc_insertion_point(includes)
+#include <google/protobuf/port_def.inc>
+
+namespace tensorflow {
+class AllocationDescriptionDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<AllocationDescription> _instance;
+} _AllocationDescription_default_instance_;
+}  // namespace tensorflow
+static void InitDefaultsAllocationDescription_tensorflow_2fcore_2fframework_2fallocation_5fdescription_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_AllocationDescription_default_instance_;
+    new (ptr) ::tensorflow::AllocationDescription();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::AllocationDescription::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<0> scc_info_AllocationDescription_tensorflow_2fcore_2fframework_2fallocation_5fdescription_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsAllocationDescription_tensorflow_2fcore_2fframework_2fallocation_5fdescription_2eproto}, {}};
+
+void InitDefaults_tensorflow_2fcore_2fframework_2fallocation_5fdescription_2eproto() {
+  ::google::protobuf::internal::InitSCC(&scc_info_AllocationDescription_tensorflow_2fcore_2fframework_2fallocation_5fdescription_2eproto.base);
+}
+
+::google::protobuf::Metadata file_level_metadata_tensorflow_2fcore_2fframework_2fallocation_5fdescription_2eproto[1];
+constexpr ::google::protobuf::EnumDescriptor const** file_level_enum_descriptors_tensorflow_2fcore_2fframework_2fallocation_5fdescription_2eproto = nullptr;
+constexpr ::google::protobuf::ServiceDescriptor const** file_level_service_descriptors_tensorflow_2fcore_2fframework_2fallocation_5fdescription_2eproto = nullptr;
+
+const ::google::protobuf::uint32 TableStruct_tensorflow_2fcore_2fframework_2fallocation_5fdescription_2eproto::offsets[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = {
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::AllocationDescription, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::AllocationDescription, requested_bytes_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::AllocationDescription, allocated_bytes_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::AllocationDescription, allocator_name_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::AllocationDescription, allocation_id_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::AllocationDescription, has_single_reference_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::AllocationDescription, ptr_),
+};
+static const ::google::protobuf::internal::MigrationSchema schemas[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = {
+  { 0, -1, sizeof(::tensorflow::AllocationDescription)},
+};
+
+static ::google::protobuf::Message const * const file_default_instances[] = {
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_AllocationDescription_default_instance_),
+};
+
+::google::protobuf::internal::AssignDescriptorsTable assign_descriptors_table_tensorflow_2fcore_2fframework_2fallocation_5fdescription_2eproto = {
+  {}, AddDescriptors_tensorflow_2fcore_2fframework_2fallocation_5fdescription_2eproto, "tensorflow/core/framework/allocation_description.proto", schemas,
+  file_default_instances, TableStruct_tensorflow_2fcore_2fframework_2fallocation_5fdescription_2eproto::offsets,
+  file_level_metadata_tensorflow_2fcore_2fframework_2fallocation_5fdescription_2eproto, 1, file_level_enum_descriptors_tensorflow_2fcore_2fframework_2fallocation_5fdescription_2eproto, file_level_service_descriptors_tensorflow_2fcore_2fframework_2fallocation_5fdescription_2eproto,
+};
+
+::google::protobuf::internal::DescriptorTable descriptor_table_tensorflow_2fcore_2fframework_2fallocation_5fdescription_2eproto = {
+  false, InitDefaults_tensorflow_2fcore_2fframework_2fallocation_5fdescription_2eproto, 
+  "\n6tensorflow/core/framework/allocation_d"
+  "escription.proto\022\ntensorflow\"\243\001\n\025Allocat"
+  "ionDescription\022\027\n\017requested_bytes\030\001 \001(\003\022"
+  "\027\n\017allocated_bytes\030\002 \001(\003\022\026\n\016allocator_na"
+  "me\030\003 \001(\t\022\025\n\rallocation_id\030\004 \001(\003\022\034\n\024has_s"
+  "ingle_reference\030\005 \001(\010\022\013\n\003ptr\030\006 \001(\004B{\n\030or"
+  "g.tensorflow.frameworkB\033AllocationDescri"
+  "ptionProtosP\001Z=github.com/tensorflow/ten"
+  "sorflow/tensorflow/go/core/framework\370\001\001b"
+  "\006proto3"
+,
+  "tensorflow/core/framework/allocation_description.proto", &assign_descriptors_table_tensorflow_2fcore_2fframework_2fallocation_5fdescription_2eproto, 367,
+};
+
+void AddDescriptors_tensorflow_2fcore_2fframework_2fallocation_5fdescription_2eproto() {
+  static constexpr ::google::protobuf::internal::InitFunc deps[1] =
+  {
+  };
+ ::google::protobuf::internal::AddDescriptors(&descriptor_table_tensorflow_2fcore_2fframework_2fallocation_5fdescription_2eproto, deps, 0);
+}
+
+// Force running AddDescriptors() at dynamic initialization time.
+static bool dynamic_init_dummy_tensorflow_2fcore_2fframework_2fallocation_5fdescription_2eproto = []() { AddDescriptors_tensorflow_2fcore_2fframework_2fallocation_5fdescription_2eproto(); return true; }();
+namespace tensorflow {
+
+// ===================================================================
+
+void AllocationDescription::InitAsDefaultInstance() {
+}
+class AllocationDescription::HasBitSetters {
+ public:
+};
+
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int AllocationDescription::kRequestedBytesFieldNumber;
+const int AllocationDescription::kAllocatedBytesFieldNumber;
+const int AllocationDescription::kAllocatorNameFieldNumber;
+const int AllocationDescription::kAllocationIdFieldNumber;
+const int AllocationDescription::kHasSingleReferenceFieldNumber;
+const int AllocationDescription::kPtrFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+AllocationDescription::AllocationDescription()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.AllocationDescription)
+}
+AllocationDescription::AllocationDescription(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.AllocationDescription)
+}
+AllocationDescription::AllocationDescription(const AllocationDescription& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  allocator_name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.allocator_name().size() > 0) {
+    allocator_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.allocator_name(),
+      GetArenaNoVirtual());
+  }
+  ::memcpy(&requested_bytes_, &from.requested_bytes_,
+    static_cast<size_t>(reinterpret_cast<char*>(&has_single_reference_) -
+    reinterpret_cast<char*>(&requested_bytes_)) + sizeof(has_single_reference_));
+  // @@protoc_insertion_point(copy_constructor:tensorflow.AllocationDescription)
+}
+
+void AllocationDescription::SharedCtor() {
+  ::google::protobuf::internal::InitSCC(
+      &scc_info_AllocationDescription_tensorflow_2fcore_2fframework_2fallocation_5fdescription_2eproto.base);
+  allocator_name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  ::memset(&requested_bytes_, 0, static_cast<size_t>(
+      reinterpret_cast<char*>(&has_single_reference_) -
+      reinterpret_cast<char*>(&requested_bytes_)) + sizeof(has_single_reference_));
+}
+
+AllocationDescription::~AllocationDescription() {
+  // @@protoc_insertion_point(destructor:tensorflow.AllocationDescription)
+  SharedDtor();
+}
+
+void AllocationDescription::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+  allocator_name_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+
+void AllocationDescription::ArenaDtor(void* object) {
+  AllocationDescription* _this = reinterpret_cast< AllocationDescription* >(object);
+  (void)_this;
+}
+void AllocationDescription::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void AllocationDescription::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const AllocationDescription& AllocationDescription::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_AllocationDescription_tensorflow_2fcore_2fframework_2fallocation_5fdescription_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void AllocationDescription::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.AllocationDescription)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  allocator_name_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+  ::memset(&requested_bytes_, 0, static_cast<size_t>(
+      reinterpret_cast<char*>(&has_single_reference_) -
+      reinterpret_cast<char*>(&requested_bytes_)) + sizeof(has_single_reference_));
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* AllocationDescription::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<AllocationDescription*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // int64 requested_bytes = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 8) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::google::protobuf::int64 value = val;
+        msg->set_requested_bytes(value);
+        break;
+      }
+      // int64 allocated_bytes = 2;
+      case 2: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 16) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::google::protobuf::int64 value = val;
+        msg->set_allocated_bytes(value);
+        break;
+      }
+      // string allocator_name = 3;
+      case 3: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 26) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("tensorflow.AllocationDescription.allocator_name");
+        parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+        ::std::string* str = msg->mutable_allocator_name();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+        break;
+      }
+      // int64 allocation_id = 4;
+      case 4: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 32) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::google::protobuf::int64 value = val;
+        msg->set_allocation_id(value);
+        break;
+      }
+      // bool has_single_reference = 5;
+      case 5: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 40) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        bool value = val;
+        msg->set_has_single_reference(value);
+        break;
+      }
+      // uint64 ptr = 6;
+      case 6: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 48) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::google::protobuf::uint64 value = val;
+        msg->set_ptr(value);
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool AllocationDescription::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.AllocationDescription)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // int64 requested_bytes = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (8 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>(
+                 input, &requested_bytes_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // int64 allocated_bytes = 2;
+      case 2: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (16 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>(
+                 input, &allocated_bytes_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // string allocator_name = 3;
+      case 3: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (26 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_allocator_name()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->allocator_name().data(), static_cast<int>(this->allocator_name().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.AllocationDescription.allocator_name"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // int64 allocation_id = 4;
+      case 4: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (32 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>(
+                 input, &allocation_id_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // bool has_single_reference = 5;
+      case 5: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (40 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
+                 input, &has_single_reference_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // uint64 ptr = 6;
+      case 6: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (48 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_UINT64>(
+                 input, &ptr_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.AllocationDescription)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.AllocationDescription)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void AllocationDescription::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.AllocationDescription)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // int64 requested_bytes = 1;
+  if (this->requested_bytes() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt64(1, this->requested_bytes(), output);
+  }
+
+  // int64 allocated_bytes = 2;
+  if (this->allocated_bytes() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt64(2, this->allocated_bytes(), output);
+  }
+
+  // string allocator_name = 3;
+  if (this->allocator_name().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->allocator_name().data(), static_cast<int>(this->allocator_name().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.AllocationDescription.allocator_name");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      3, this->allocator_name(), output);
+  }
+
+  // int64 allocation_id = 4;
+  if (this->allocation_id() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt64(4, this->allocation_id(), output);
+  }
+
+  // bool has_single_reference = 5;
+  if (this->has_single_reference() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteBool(5, this->has_single_reference(), output);
+  }
+
+  // uint64 ptr = 6;
+  if (this->ptr() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteUInt64(6, this->ptr(), output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.AllocationDescription)
+}
+
+::google::protobuf::uint8* AllocationDescription::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.AllocationDescription)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // int64 requested_bytes = 1;
+  if (this->requested_bytes() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt64ToArray(1, this->requested_bytes(), target);
+  }
+
+  // int64 allocated_bytes = 2;
+  if (this->allocated_bytes() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt64ToArray(2, this->allocated_bytes(), target);
+  }
+
+  // string allocator_name = 3;
+  if (this->allocator_name().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->allocator_name().data(), static_cast<int>(this->allocator_name().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.AllocationDescription.allocator_name");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        3, this->allocator_name(), target);
+  }
+
+  // int64 allocation_id = 4;
+  if (this->allocation_id() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt64ToArray(4, this->allocation_id(), target);
+  }
+
+  // bool has_single_reference = 5;
+  if (this->has_single_reference() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(5, this->has_single_reference(), target);
+  }
+
+  // uint64 ptr = 6;
+  if (this->ptr() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteUInt64ToArray(6, this->ptr(), target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.AllocationDescription)
+  return target;
+}
+
+size_t AllocationDescription::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.AllocationDescription)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // string allocator_name = 3;
+  if (this->allocator_name().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->allocator_name());
+  }
+
+  // int64 requested_bytes = 1;
+  if (this->requested_bytes() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::Int64Size(
+        this->requested_bytes());
+  }
+
+  // int64 allocated_bytes = 2;
+  if (this->allocated_bytes() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::Int64Size(
+        this->allocated_bytes());
+  }
+
+  // int64 allocation_id = 4;
+  if (this->allocation_id() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::Int64Size(
+        this->allocation_id());
+  }
+
+  // uint64 ptr = 6;
+  if (this->ptr() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::UInt64Size(
+        this->ptr());
+  }
+
+  // bool has_single_reference = 5;
+  if (this->has_single_reference() != 0) {
+    total_size += 1 + 1;
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void AllocationDescription::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.AllocationDescription)
+  GOOGLE_DCHECK_NE(&from, this);
+  const AllocationDescription* source =
+      ::google::protobuf::DynamicCastToGenerated<AllocationDescription>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.AllocationDescription)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.AllocationDescription)
+    MergeFrom(*source);
+  }
+}
+
+void AllocationDescription::MergeFrom(const AllocationDescription& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.AllocationDescription)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  if (from.allocator_name().size() > 0) {
+    set_allocator_name(from.allocator_name());
+  }
+  if (from.requested_bytes() != 0) {
+    set_requested_bytes(from.requested_bytes());
+  }
+  if (from.allocated_bytes() != 0) {
+    set_allocated_bytes(from.allocated_bytes());
+  }
+  if (from.allocation_id() != 0) {
+    set_allocation_id(from.allocation_id());
+  }
+  if (from.ptr() != 0) {
+    set_ptr(from.ptr());
+  }
+  if (from.has_single_reference() != 0) {
+    set_has_single_reference(from.has_single_reference());
+  }
+}
+
+void AllocationDescription::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.AllocationDescription)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void AllocationDescription::CopyFrom(const AllocationDescription& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.AllocationDescription)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool AllocationDescription::IsInitialized() const {
+  return true;
+}
+
+void AllocationDescription::Swap(AllocationDescription* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    AllocationDescription* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void AllocationDescription::UnsafeArenaSwap(AllocationDescription* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void AllocationDescription::InternalSwap(AllocationDescription* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  allocator_name_.Swap(&other->allocator_name_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+  swap(requested_bytes_, other->requested_bytes_);
+  swap(allocated_bytes_, other->allocated_bytes_);
+  swap(allocation_id_, other->allocation_id_);
+  swap(ptr_, other->ptr_);
+  swap(has_single_reference_, other->has_single_reference_);
+}
+
+::google::protobuf::Metadata AllocationDescription::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fframework_2fallocation_5fdescription_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fframework_2fallocation_5fdescription_2eproto[kIndexInFileMessages];
+}
+
+
+// @@protoc_insertion_point(namespace_scope)
+}  // namespace tensorflow
+namespace google {
+namespace protobuf {
+template<> PROTOBUF_NOINLINE ::tensorflow::AllocationDescription* Arena::CreateMaybeMessage< ::tensorflow::AllocationDescription >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::AllocationDescription >(arena);
+}
+}  // namespace protobuf
+}  // namespace google
+
+// @@protoc_insertion_point(global_scope)
+#include <google/protobuf/port_undef.inc>
diff --git a/tensorflow/core/framework/allocation_description.pb.h b/tensorflow/core/framework/allocation_description.pb.h
new file mode 100644 (file)
index 0000000..caadb3d
--- /dev/null
@@ -0,0 +1,408 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: tensorflow/core/framework/allocation_description.proto
+
+#ifndef PROTOBUF_INCLUDED_tensorflow_2fcore_2fframework_2fallocation_5fdescription_2eproto
+#define PROTOBUF_INCLUDED_tensorflow_2fcore_2fframework_2fallocation_5fdescription_2eproto
+
+#include <limits>
+#include <string>
+
+#include <google/protobuf/port_def.inc>
+#if PROTOBUF_VERSION < 3006001
+#error This file was generated by a newer version of protoc which is
+#error incompatible with your Protocol Buffer headers. Please update
+#error your headers.
+#endif
+#if 3006001 < PROTOBUF_MIN_PROTOC_VERSION
+#error This file was generated by an older version of protoc which is
+#error incompatible with your Protocol Buffer headers. Please
+#error regenerate this file with a newer version of protoc.
+#endif
+
+#include <google/protobuf/port_undef.inc>
+#include <google/protobuf/io/coded_stream.h>
+#include <google/protobuf/arena.h>
+#include <google/protobuf/arenastring.h>
+#include <google/protobuf/generated_message_table_driven.h>
+#include <google/protobuf/generated_message_util.h>
+#include <google/protobuf/inlined_string_field.h>
+#include <google/protobuf/metadata.h>
+#include <google/protobuf/message.h>
+#include <google/protobuf/repeated_field.h>  // IWYU pragma: export
+#include <google/protobuf/extension_set.h>  // IWYU pragma: export
+#include <google/protobuf/unknown_field_set.h>
+// @@protoc_insertion_point(includes)
+#include <google/protobuf/port_def.inc>
+#define PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fframework_2fallocation_5fdescription_2eproto
+
+// Internal implementation detail -- do not use these members.
+struct TableStruct_tensorflow_2fcore_2fframework_2fallocation_5fdescription_2eproto {
+  static const ::google::protobuf::internal::ParseTableField entries[]
+    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
+  static const ::google::protobuf::internal::AuxillaryParseTableField aux[]
+    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
+  static const ::google::protobuf::internal::ParseTable schema[1]
+    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
+  static const ::google::protobuf::internal::FieldMetadata field_metadata[];
+  static const ::google::protobuf::internal::SerializationTable serialization_table[];
+  static const ::google::protobuf::uint32 offsets[];
+};
+void AddDescriptors_tensorflow_2fcore_2fframework_2fallocation_5fdescription_2eproto();
+namespace tensorflow {
+class AllocationDescription;
+class AllocationDescriptionDefaultTypeInternal;
+extern AllocationDescriptionDefaultTypeInternal _AllocationDescription_default_instance_;
+}  // namespace tensorflow
+namespace google {
+namespace protobuf {
+template<> ::tensorflow::AllocationDescription* Arena::CreateMaybeMessage<::tensorflow::AllocationDescription>(Arena*);
+}  // namespace protobuf
+}  // namespace google
+namespace tensorflow {
+
+// ===================================================================
+
+class AllocationDescription : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.AllocationDescription) */ {
+ public:
+  AllocationDescription();
+  virtual ~AllocationDescription();
+
+  AllocationDescription(const AllocationDescription& from);
+
+  inline AllocationDescription& operator=(const AllocationDescription& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  AllocationDescription(AllocationDescription&& from) noexcept
+    : AllocationDescription() {
+    *this = ::std::move(from);
+  }
+
+  inline AllocationDescription& operator=(AllocationDescription&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const AllocationDescription& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const AllocationDescription* internal_default_instance() {
+    return reinterpret_cast<const AllocationDescription*>(
+               &_AllocationDescription_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    0;
+
+  void UnsafeArenaSwap(AllocationDescription* other);
+  void Swap(AllocationDescription* other);
+  friend void swap(AllocationDescription& a, AllocationDescription& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline AllocationDescription* New() const final {
+    return CreateMaybeMessage<AllocationDescription>(NULL);
+  }
+
+  AllocationDescription* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<AllocationDescription>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const AllocationDescription& from);
+  void MergeFrom(const AllocationDescription& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(AllocationDescription* other);
+  protected:
+  explicit AllocationDescription(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // string allocator_name = 3;
+  void clear_allocator_name();
+  static const int kAllocatorNameFieldNumber = 3;
+  const ::std::string& allocator_name() const;
+  void set_allocator_name(const ::std::string& value);
+  #if LANG_CXX11
+  void set_allocator_name(::std::string&& value);
+  #endif
+  void set_allocator_name(const char* value);
+  void set_allocator_name(const char* value, size_t size);
+  ::std::string* mutable_allocator_name();
+  ::std::string* release_allocator_name();
+  void set_allocated_allocator_name(::std::string* allocator_name);
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  ::std::string* unsafe_arena_release_allocator_name();
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  void unsafe_arena_set_allocated_allocator_name(
+      ::std::string* allocator_name);
+
+  // int64 requested_bytes = 1;
+  void clear_requested_bytes();
+  static const int kRequestedBytesFieldNumber = 1;
+  ::google::protobuf::int64 requested_bytes() const;
+  void set_requested_bytes(::google::protobuf::int64 value);
+
+  // int64 allocated_bytes = 2;
+  void clear_allocated_bytes();
+  static const int kAllocatedBytesFieldNumber = 2;
+  ::google::protobuf::int64 allocated_bytes() const;
+  void set_allocated_bytes(::google::protobuf::int64 value);
+
+  // int64 allocation_id = 4;
+  void clear_allocation_id();
+  static const int kAllocationIdFieldNumber = 4;
+  ::google::protobuf::int64 allocation_id() const;
+  void set_allocation_id(::google::protobuf::int64 value);
+
+  // uint64 ptr = 6;
+  void clear_ptr();
+  static const int kPtrFieldNumber = 6;
+  ::google::protobuf::uint64 ptr() const;
+  void set_ptr(::google::protobuf::uint64 value);
+
+  // bool has_single_reference = 5;
+  void clear_has_single_reference();
+  static const int kHasSingleReferenceFieldNumber = 5;
+  bool has_single_reference() const;
+  void set_has_single_reference(bool value);
+
+  // @@protoc_insertion_point(class_scope:tensorflow.AllocationDescription)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  ::google::protobuf::internal::ArenaStringPtr allocator_name_;
+  ::google::protobuf::int64 requested_bytes_;
+  ::google::protobuf::int64 allocated_bytes_;
+  ::google::protobuf::int64 allocation_id_;
+  ::google::protobuf::uint64 ptr_;
+  bool has_single_reference_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fframework_2fallocation_5fdescription_2eproto;
+};
+// ===================================================================
+
+
+// ===================================================================
+
+#ifdef __GNUC__
+  #pragma GCC diagnostic push
+  #pragma GCC diagnostic ignored "-Wstrict-aliasing"
+#endif  // __GNUC__
+// AllocationDescription
+
+// int64 requested_bytes = 1;
+inline void AllocationDescription::clear_requested_bytes() {
+  requested_bytes_ = PROTOBUF_LONGLONG(0);
+}
+inline ::google::protobuf::int64 AllocationDescription::requested_bytes() const {
+  // @@protoc_insertion_point(field_get:tensorflow.AllocationDescription.requested_bytes)
+  return requested_bytes_;
+}
+inline void AllocationDescription::set_requested_bytes(::google::protobuf::int64 value) {
+  
+  requested_bytes_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.AllocationDescription.requested_bytes)
+}
+
+// int64 allocated_bytes = 2;
+inline void AllocationDescription::clear_allocated_bytes() {
+  allocated_bytes_ = PROTOBUF_LONGLONG(0);
+}
+inline ::google::protobuf::int64 AllocationDescription::allocated_bytes() const {
+  // @@protoc_insertion_point(field_get:tensorflow.AllocationDescription.allocated_bytes)
+  return allocated_bytes_;
+}
+inline void AllocationDescription::set_allocated_bytes(::google::protobuf::int64 value) {
+  
+  allocated_bytes_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.AllocationDescription.allocated_bytes)
+}
+
+// string allocator_name = 3;
+inline void AllocationDescription::clear_allocator_name() {
+  allocator_name_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline const ::std::string& AllocationDescription::allocator_name() const {
+  // @@protoc_insertion_point(field_get:tensorflow.AllocationDescription.allocator_name)
+  return allocator_name_.Get();
+}
+inline void AllocationDescription::set_allocator_name(const ::std::string& value) {
+  
+  allocator_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set:tensorflow.AllocationDescription.allocator_name)
+}
+#if LANG_CXX11
+inline void AllocationDescription::set_allocator_name(::std::string&& value) {
+  
+  allocator_name_.Set(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.AllocationDescription.allocator_name)
+}
+#endif
+inline void AllocationDescription::set_allocator_name(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  allocator_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
+              GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_char:tensorflow.AllocationDescription.allocator_name)
+}
+inline void AllocationDescription::set_allocator_name(const char* value,
+    size_t size) {
+  
+  allocator_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
+      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.AllocationDescription.allocator_name)
+}
+inline ::std::string* AllocationDescription::mutable_allocator_name() {
+  
+  // @@protoc_insertion_point(field_mutable:tensorflow.AllocationDescription.allocator_name)
+  return allocator_name_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline ::std::string* AllocationDescription::release_allocator_name() {
+  // @@protoc_insertion_point(field_release:tensorflow.AllocationDescription.allocator_name)
+  
+  return allocator_name_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline void AllocationDescription::set_allocated_allocator_name(::std::string* allocator_name) {
+  if (allocator_name != NULL) {
+    
+  } else {
+    
+  }
+  allocator_name_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), allocator_name,
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.AllocationDescription.allocator_name)
+}
+inline ::std::string* AllocationDescription::unsafe_arena_release_allocator_name() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.AllocationDescription.allocator_name)
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  
+  return allocator_name_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      GetArenaNoVirtual());
+}
+inline void AllocationDescription::unsafe_arena_set_allocated_allocator_name(
+    ::std::string* allocator_name) {
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (allocator_name != NULL) {
+    
+  } else {
+    
+  }
+  allocator_name_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      allocator_name, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.AllocationDescription.allocator_name)
+}
+
+// int64 allocation_id = 4;
+inline void AllocationDescription::clear_allocation_id() {
+  allocation_id_ = PROTOBUF_LONGLONG(0);
+}
+inline ::google::protobuf::int64 AllocationDescription::allocation_id() const {
+  // @@protoc_insertion_point(field_get:tensorflow.AllocationDescription.allocation_id)
+  return allocation_id_;
+}
+inline void AllocationDescription::set_allocation_id(::google::protobuf::int64 value) {
+  
+  allocation_id_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.AllocationDescription.allocation_id)
+}
+
+// bool has_single_reference = 5;
+inline void AllocationDescription::clear_has_single_reference() {
+  has_single_reference_ = false;
+}
+inline bool AllocationDescription::has_single_reference() const {
+  // @@protoc_insertion_point(field_get:tensorflow.AllocationDescription.has_single_reference)
+  return has_single_reference_;
+}
+inline void AllocationDescription::set_has_single_reference(bool value) {
+  
+  has_single_reference_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.AllocationDescription.has_single_reference)
+}
+
+// uint64 ptr = 6;
+inline void AllocationDescription::clear_ptr() {
+  ptr_ = PROTOBUF_ULONGLONG(0);
+}
+inline ::google::protobuf::uint64 AllocationDescription::ptr() const {
+  // @@protoc_insertion_point(field_get:tensorflow.AllocationDescription.ptr)
+  return ptr_;
+}
+inline void AllocationDescription::set_ptr(::google::protobuf::uint64 value) {
+  
+  ptr_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.AllocationDescription.ptr)
+}
+
+#ifdef __GNUC__
+  #pragma GCC diagnostic pop
+#endif  // __GNUC__
+
+// @@protoc_insertion_point(namespace_scope)
+
+}  // namespace tensorflow
+
+// @@protoc_insertion_point(global_scope)
+
+#include <google/protobuf/port_undef.inc>
+#endif  // PROTOBUF_INCLUDED_tensorflow_2fcore_2fframework_2fallocation_5fdescription_2eproto
diff --git a/tensorflow/core/framework/allocation_description.proto b/tensorflow/core/framework/allocation_description.proto
new file mode 100644 (file)
index 0000000..64133b0
--- /dev/null
@@ -0,0 +1,28 @@
+syntax = "proto3";
+
+package tensorflow;
+option cc_enable_arenas = true;
+option java_outer_classname = "AllocationDescriptionProtos";
+option java_multiple_files = true;
+option java_package = "org.tensorflow.framework";
+option go_package = "github.com/tensorflow/tensorflow/tensorflow/go/core/framework";
+
+message AllocationDescription {
+  // Total number of bytes requested
+  int64 requested_bytes = 1;
+
+  // Total number of bytes allocated if known
+  int64 allocated_bytes = 2;
+
+  // Name of the allocator used
+  string allocator_name = 3;
+
+  // Identifier of the allocated buffer if known
+  int64 allocation_id = 4;
+
+  // Set if this tensor only has one remaining reference
+  bool has_single_reference = 5;
+
+  // Address of the allocation.
+  uint64 ptr = 6;
+};
diff --git a/tensorflow/core/framework/api_def.pb.cc b/tensorflow/core/framework/api_def.pb.cc
new file mode 100644 (file)
index 0000000..5ffeb6d
--- /dev/null
@@ -0,0 +1,3033 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: tensorflow/core/framework/api_def.proto
+
+#include "tensorflow/core/framework/api_def.pb.h"
+
+#include <algorithm>
+
+#include <google/protobuf/stubs/common.h>
+#include <google/protobuf/io/coded_stream.h>
+#include <google/protobuf/extension_set.h>
+#include <google/protobuf/wire_format_lite_inl.h>
+#include <google/protobuf/descriptor.h>
+#include <google/protobuf/generated_message_reflection.h>
+#include <google/protobuf/reflection_ops.h>
+#include <google/protobuf/wire_format.h>
+// @@protoc_insertion_point(includes)
+#include <google/protobuf/port_def.inc>
+
+extern PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fframework_2fapi_5fdef_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_ApiDef_Arg_tensorflow_2fcore_2fframework_2fapi_5fdef_2eproto;
+extern PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fframework_2fapi_5fdef_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_ApiDef_Endpoint_tensorflow_2fcore_2fframework_2fapi_5fdef_2eproto;
+extern PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fframework_2fapi_5fdef_2eproto ::google::protobuf::internal::SCCInfo<1> scc_info_ApiDef_Attr_tensorflow_2fcore_2fframework_2fapi_5fdef_2eproto;
+extern PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fframework_2fapi_5fdef_2eproto ::google::protobuf::internal::SCCInfo<3> scc_info_ApiDef_tensorflow_2fcore_2fframework_2fapi_5fdef_2eproto;
+extern PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fframework_2fattr_5fvalue_2eproto ::google::protobuf::internal::SCCInfo<2> scc_info_AttrValue_tensorflow_2fcore_2fframework_2fattr_5fvalue_2eproto;
+namespace tensorflow {
+class ApiDef_EndpointDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<ApiDef_Endpoint> _instance;
+} _ApiDef_Endpoint_default_instance_;
+class ApiDef_ArgDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<ApiDef_Arg> _instance;
+} _ApiDef_Arg_default_instance_;
+class ApiDef_AttrDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<ApiDef_Attr> _instance;
+} _ApiDef_Attr_default_instance_;
+class ApiDefDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<ApiDef> _instance;
+} _ApiDef_default_instance_;
+class ApiDefsDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<ApiDefs> _instance;
+} _ApiDefs_default_instance_;
+}  // namespace tensorflow
+static void InitDefaultsApiDef_Endpoint_tensorflow_2fcore_2fframework_2fapi_5fdef_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_ApiDef_Endpoint_default_instance_;
+    new (ptr) ::tensorflow::ApiDef_Endpoint();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::ApiDef_Endpoint::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<0> scc_info_ApiDef_Endpoint_tensorflow_2fcore_2fframework_2fapi_5fdef_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsApiDef_Endpoint_tensorflow_2fcore_2fframework_2fapi_5fdef_2eproto}, {}};
+
+static void InitDefaultsApiDef_Arg_tensorflow_2fcore_2fframework_2fapi_5fdef_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_ApiDef_Arg_default_instance_;
+    new (ptr) ::tensorflow::ApiDef_Arg();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::ApiDef_Arg::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<0> scc_info_ApiDef_Arg_tensorflow_2fcore_2fframework_2fapi_5fdef_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsApiDef_Arg_tensorflow_2fcore_2fframework_2fapi_5fdef_2eproto}, {}};
+
+static void InitDefaultsApiDef_Attr_tensorflow_2fcore_2fframework_2fapi_5fdef_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_ApiDef_Attr_default_instance_;
+    new (ptr) ::tensorflow::ApiDef_Attr();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::ApiDef_Attr::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<1> scc_info_ApiDef_Attr_tensorflow_2fcore_2fframework_2fapi_5fdef_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsApiDef_Attr_tensorflow_2fcore_2fframework_2fapi_5fdef_2eproto}, {
+      &scc_info_AttrValue_tensorflow_2fcore_2fframework_2fattr_5fvalue_2eproto.base,}};
+
+static void InitDefaultsApiDef_tensorflow_2fcore_2fframework_2fapi_5fdef_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_ApiDef_default_instance_;
+    new (ptr) ::tensorflow::ApiDef();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::ApiDef::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<3> scc_info_ApiDef_tensorflow_2fcore_2fframework_2fapi_5fdef_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 3, InitDefaultsApiDef_tensorflow_2fcore_2fframework_2fapi_5fdef_2eproto}, {
+      &scc_info_ApiDef_Endpoint_tensorflow_2fcore_2fframework_2fapi_5fdef_2eproto.base,
+      &scc_info_ApiDef_Arg_tensorflow_2fcore_2fframework_2fapi_5fdef_2eproto.base,
+      &scc_info_ApiDef_Attr_tensorflow_2fcore_2fframework_2fapi_5fdef_2eproto.base,}};
+
+static void InitDefaultsApiDefs_tensorflow_2fcore_2fframework_2fapi_5fdef_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_ApiDefs_default_instance_;
+    new (ptr) ::tensorflow::ApiDefs();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::ApiDefs::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<1> scc_info_ApiDefs_tensorflow_2fcore_2fframework_2fapi_5fdef_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsApiDefs_tensorflow_2fcore_2fframework_2fapi_5fdef_2eproto}, {
+      &scc_info_ApiDef_tensorflow_2fcore_2fframework_2fapi_5fdef_2eproto.base,}};
+
+void InitDefaults_tensorflow_2fcore_2fframework_2fapi_5fdef_2eproto() {
+  ::google::protobuf::internal::InitSCC(&scc_info_ApiDef_Endpoint_tensorflow_2fcore_2fframework_2fapi_5fdef_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_ApiDef_Arg_tensorflow_2fcore_2fframework_2fapi_5fdef_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_ApiDef_Attr_tensorflow_2fcore_2fframework_2fapi_5fdef_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_ApiDef_tensorflow_2fcore_2fframework_2fapi_5fdef_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_ApiDefs_tensorflow_2fcore_2fframework_2fapi_5fdef_2eproto.base);
+}
+
+::google::protobuf::Metadata file_level_metadata_tensorflow_2fcore_2fframework_2fapi_5fdef_2eproto[5];
+const ::google::protobuf::EnumDescriptor* file_level_enum_descriptors_tensorflow_2fcore_2fframework_2fapi_5fdef_2eproto[1];
+constexpr ::google::protobuf::ServiceDescriptor const** file_level_service_descriptors_tensorflow_2fcore_2fframework_2fapi_5fdef_2eproto = nullptr;
+
+const ::google::protobuf::uint32 TableStruct_tensorflow_2fcore_2fframework_2fapi_5fdef_2eproto::offsets[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = {
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::ApiDef_Endpoint, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::ApiDef_Endpoint, name_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::ApiDef_Endpoint, deprecation_message_),
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::ApiDef_Arg, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::ApiDef_Arg, name_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::ApiDef_Arg, rename_to_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::ApiDef_Arg, description_),
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::ApiDef_Attr, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::ApiDef_Attr, name_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::ApiDef_Attr, rename_to_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::ApiDef_Attr, default_value_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::ApiDef_Attr, description_),
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::ApiDef, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::ApiDef, graph_op_name_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::ApiDef, visibility_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::ApiDef, endpoint_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::ApiDef, in_arg_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::ApiDef, out_arg_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::ApiDef, arg_order_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::ApiDef, attr_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::ApiDef, summary_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::ApiDef, description_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::ApiDef, description_prefix_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::ApiDef, description_suffix_),
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::ApiDefs, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::ApiDefs, op_),
+};
+static const ::google::protobuf::internal::MigrationSchema schemas[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = {
+  { 0, -1, sizeof(::tensorflow::ApiDef_Endpoint)},
+  { 7, -1, sizeof(::tensorflow::ApiDef_Arg)},
+  { 15, -1, sizeof(::tensorflow::ApiDef_Attr)},
+  { 24, -1, sizeof(::tensorflow::ApiDef)},
+  { 40, -1, sizeof(::tensorflow::ApiDefs)},
+};
+
+static ::google::protobuf::Message const * const file_default_instances[] = {
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_ApiDef_Endpoint_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_ApiDef_Arg_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_ApiDef_Attr_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_ApiDef_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_ApiDefs_default_instance_),
+};
+
+::google::protobuf::internal::AssignDescriptorsTable assign_descriptors_table_tensorflow_2fcore_2fframework_2fapi_5fdef_2eproto = {
+  {}, AddDescriptors_tensorflow_2fcore_2fframework_2fapi_5fdef_2eproto, "tensorflow/core/framework/api_def.proto", schemas,
+  file_default_instances, TableStruct_tensorflow_2fcore_2fframework_2fapi_5fdef_2eproto::offsets,
+  file_level_metadata_tensorflow_2fcore_2fframework_2fapi_5fdef_2eproto, 5, file_level_enum_descriptors_tensorflow_2fcore_2fframework_2fapi_5fdef_2eproto, file_level_service_descriptors_tensorflow_2fcore_2fframework_2fapi_5fdef_2eproto,
+};
+
+::google::protobuf::internal::DescriptorTable descriptor_table_tensorflow_2fcore_2fframework_2fapi_5fdef_2eproto = {
+  false, InitDefaults_tensorflow_2fcore_2fframework_2fapi_5fdef_2eproto, 
+  "\n\'tensorflow/core/framework/api_def.prot"
+  "o\022\ntensorflow\032*tensorflow/core/framework"
+  "/attr_value.proto\"\223\005\n\006ApiDef\022\025\n\rgraph_op"
+  "_name\030\001 \001(\t\0221\n\nvisibility\030\002 \001(\0162\035.tensor"
+  "flow.ApiDef.Visibility\022-\n\010endpoint\030\003 \003(\013"
+  "2\033.tensorflow.ApiDef.Endpoint\022&\n\006in_arg\030"
+  "\004 \003(\0132\026.tensorflow.ApiDef.Arg\022\'\n\007out_arg"
+  "\030\005 \003(\0132\026.tensorflow.ApiDef.Arg\022\021\n\targ_or"
+  "der\030\013 \003(\t\022%\n\004attr\030\006 \003(\0132\027.tensorflow.Api"
+  "Def.Attr\022\017\n\007summary\030\007 \001(\t\022\023\n\013description"
+  "\030\010 \001(\t\022\032\n\022description_prefix\030\t \001(\t\022\032\n\022de"
+  "scription_suffix\030\n \001(\t\0325\n\010Endpoint\022\014\n\004na"
+  "me\030\001 \001(\t\022\033\n\023deprecation_message\030\002 \001(\t\032;\n"
+  "\003Arg\022\014\n\004name\030\001 \001(\t\022\021\n\trename_to\030\002 \001(\t\022\023\n"
+  "\013description\030\003 \001(\t\032j\n\004Attr\022\014\n\004name\030\001 \001(\t"
+  "\022\021\n\trename_to\030\002 \001(\t\022,\n\rdefault_value\030\003 \001"
+  "(\0132\025.tensorflow.AttrValue\022\023\n\013description"
+  "\030\004 \001(\t\"G\n\nVisibility\022\026\n\022DEFAULT_VISIBILI"
+  "TY\020\000\022\013\n\007VISIBLE\020\001\022\010\n\004SKIP\020\002\022\n\n\006HIDDEN\020\003\""
+  ")\n\007ApiDefs\022\036\n\002op\030\001 \003(\0132\022.tensorflow.ApiD"
+  "efBl\n\030org.tensorflow.frameworkB\014ApiDefPr"
+  "otosP\001Z=github.com/tensorflow/tensorflow"
+  "/tensorflow/go/core/framework\370\001\001b\006proto3"
+,
+  "tensorflow/core/framework/api_def.proto", &assign_descriptors_table_tensorflow_2fcore_2fframework_2fapi_5fdef_2eproto, 920,
+};
+
+void AddDescriptors_tensorflow_2fcore_2fframework_2fapi_5fdef_2eproto() {
+  static constexpr ::google::protobuf::internal::InitFunc deps[1] =
+  {
+    ::AddDescriptors_tensorflow_2fcore_2fframework_2fattr_5fvalue_2eproto,
+  };
+ ::google::protobuf::internal::AddDescriptors(&descriptor_table_tensorflow_2fcore_2fframework_2fapi_5fdef_2eproto, deps, 1);
+}
+
+// Force running AddDescriptors() at dynamic initialization time.
+static bool dynamic_init_dummy_tensorflow_2fcore_2fframework_2fapi_5fdef_2eproto = []() { AddDescriptors_tensorflow_2fcore_2fframework_2fapi_5fdef_2eproto(); return true; }();
+namespace tensorflow {
+const ::google::protobuf::EnumDescriptor* ApiDef_Visibility_descriptor() {
+  ::google::protobuf::internal::AssignDescriptors(&assign_descriptors_table_tensorflow_2fcore_2fframework_2fapi_5fdef_2eproto);
+  return file_level_enum_descriptors_tensorflow_2fcore_2fframework_2fapi_5fdef_2eproto[0];
+}
+bool ApiDef_Visibility_IsValid(int value) {
+  switch (value) {
+    case 0:
+    case 1:
+    case 2:
+    case 3:
+      return true;
+    default:
+      return false;
+  }
+}
+
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const ApiDef_Visibility ApiDef::DEFAULT_VISIBILITY;
+const ApiDef_Visibility ApiDef::VISIBLE;
+const ApiDef_Visibility ApiDef::SKIP;
+const ApiDef_Visibility ApiDef::HIDDEN;
+const ApiDef_Visibility ApiDef::Visibility_MIN;
+const ApiDef_Visibility ApiDef::Visibility_MAX;
+const int ApiDef::Visibility_ARRAYSIZE;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+// ===================================================================
+
+void ApiDef_Endpoint::InitAsDefaultInstance() {
+}
+class ApiDef_Endpoint::HasBitSetters {
+ public:
+};
+
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int ApiDef_Endpoint::kNameFieldNumber;
+const int ApiDef_Endpoint::kDeprecationMessageFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+ApiDef_Endpoint::ApiDef_Endpoint()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.ApiDef.Endpoint)
+}
+ApiDef_Endpoint::ApiDef_Endpoint(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.ApiDef.Endpoint)
+}
+ApiDef_Endpoint::ApiDef_Endpoint(const ApiDef_Endpoint& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.name().size() > 0) {
+    name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.name(),
+      GetArenaNoVirtual());
+  }
+  deprecation_message_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.deprecation_message().size() > 0) {
+    deprecation_message_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.deprecation_message(),
+      GetArenaNoVirtual());
+  }
+  // @@protoc_insertion_point(copy_constructor:tensorflow.ApiDef.Endpoint)
+}
+
+void ApiDef_Endpoint::SharedCtor() {
+  ::google::protobuf::internal::InitSCC(
+      &scc_info_ApiDef_Endpoint_tensorflow_2fcore_2fframework_2fapi_5fdef_2eproto.base);
+  name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  deprecation_message_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+
+ApiDef_Endpoint::~ApiDef_Endpoint() {
+  // @@protoc_insertion_point(destructor:tensorflow.ApiDef.Endpoint)
+  SharedDtor();
+}
+
+void ApiDef_Endpoint::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+  name_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  deprecation_message_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+
+void ApiDef_Endpoint::ArenaDtor(void* object) {
+  ApiDef_Endpoint* _this = reinterpret_cast< ApiDef_Endpoint* >(object);
+  (void)_this;
+}
+void ApiDef_Endpoint::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void ApiDef_Endpoint::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const ApiDef_Endpoint& ApiDef_Endpoint::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_ApiDef_Endpoint_tensorflow_2fcore_2fframework_2fapi_5fdef_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void ApiDef_Endpoint::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.ApiDef.Endpoint)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  name_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+  deprecation_message_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* ApiDef_Endpoint::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<ApiDef_Endpoint*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // string name = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 10) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("tensorflow.ApiDef.Endpoint.name");
+        parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+        ::std::string* str = msg->mutable_name();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+        break;
+      }
+      // string deprecation_message = 2;
+      case 2: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 18) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("tensorflow.ApiDef.Endpoint.deprecation_message");
+        parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+        ::std::string* str = msg->mutable_deprecation_message();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool ApiDef_Endpoint::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.ApiDef.Endpoint)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // string name = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (10 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_name()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->name().data(), static_cast<int>(this->name().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.ApiDef.Endpoint.name"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // string deprecation_message = 2;
+      case 2: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (18 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_deprecation_message()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->deprecation_message().data(), static_cast<int>(this->deprecation_message().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.ApiDef.Endpoint.deprecation_message"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.ApiDef.Endpoint)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.ApiDef.Endpoint)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void ApiDef_Endpoint::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.ApiDef.Endpoint)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // string name = 1;
+  if (this->name().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->name().data(), static_cast<int>(this->name().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.ApiDef.Endpoint.name");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      1, this->name(), output);
+  }
+
+  // string deprecation_message = 2;
+  if (this->deprecation_message().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->deprecation_message().data(), static_cast<int>(this->deprecation_message().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.ApiDef.Endpoint.deprecation_message");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      2, this->deprecation_message(), output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.ApiDef.Endpoint)
+}
+
+::google::protobuf::uint8* ApiDef_Endpoint::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.ApiDef.Endpoint)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // string name = 1;
+  if (this->name().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->name().data(), static_cast<int>(this->name().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.ApiDef.Endpoint.name");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        1, this->name(), target);
+  }
+
+  // string deprecation_message = 2;
+  if (this->deprecation_message().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->deprecation_message().data(), static_cast<int>(this->deprecation_message().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.ApiDef.Endpoint.deprecation_message");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        2, this->deprecation_message(), target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.ApiDef.Endpoint)
+  return target;
+}
+
+size_t ApiDef_Endpoint::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.ApiDef.Endpoint)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // string name = 1;
+  if (this->name().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->name());
+  }
+
+  // string deprecation_message = 2;
+  if (this->deprecation_message().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->deprecation_message());
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void ApiDef_Endpoint::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.ApiDef.Endpoint)
+  GOOGLE_DCHECK_NE(&from, this);
+  const ApiDef_Endpoint* source =
+      ::google::protobuf::DynamicCastToGenerated<ApiDef_Endpoint>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.ApiDef.Endpoint)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.ApiDef.Endpoint)
+    MergeFrom(*source);
+  }
+}
+
+void ApiDef_Endpoint::MergeFrom(const ApiDef_Endpoint& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.ApiDef.Endpoint)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  if (from.name().size() > 0) {
+    set_name(from.name());
+  }
+  if (from.deprecation_message().size() > 0) {
+    set_deprecation_message(from.deprecation_message());
+  }
+}
+
+void ApiDef_Endpoint::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.ApiDef.Endpoint)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void ApiDef_Endpoint::CopyFrom(const ApiDef_Endpoint& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.ApiDef.Endpoint)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool ApiDef_Endpoint::IsInitialized() const {
+  return true;
+}
+
+void ApiDef_Endpoint::Swap(ApiDef_Endpoint* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    ApiDef_Endpoint* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void ApiDef_Endpoint::UnsafeArenaSwap(ApiDef_Endpoint* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void ApiDef_Endpoint::InternalSwap(ApiDef_Endpoint* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  name_.Swap(&other->name_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+  deprecation_message_.Swap(&other->deprecation_message_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+}
+
+::google::protobuf::Metadata ApiDef_Endpoint::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fframework_2fapi_5fdef_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fframework_2fapi_5fdef_2eproto[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+void ApiDef_Arg::InitAsDefaultInstance() {
+}
+class ApiDef_Arg::HasBitSetters {
+ public:
+};
+
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int ApiDef_Arg::kNameFieldNumber;
+const int ApiDef_Arg::kRenameToFieldNumber;
+const int ApiDef_Arg::kDescriptionFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+ApiDef_Arg::ApiDef_Arg()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.ApiDef.Arg)
+}
+ApiDef_Arg::ApiDef_Arg(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.ApiDef.Arg)
+}
+ApiDef_Arg::ApiDef_Arg(const ApiDef_Arg& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.name().size() > 0) {
+    name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.name(),
+      GetArenaNoVirtual());
+  }
+  rename_to_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.rename_to().size() > 0) {
+    rename_to_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.rename_to(),
+      GetArenaNoVirtual());
+  }
+  description_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.description().size() > 0) {
+    description_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.description(),
+      GetArenaNoVirtual());
+  }
+  // @@protoc_insertion_point(copy_constructor:tensorflow.ApiDef.Arg)
+}
+
+void ApiDef_Arg::SharedCtor() {
+  ::google::protobuf::internal::InitSCC(
+      &scc_info_ApiDef_Arg_tensorflow_2fcore_2fframework_2fapi_5fdef_2eproto.base);
+  name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  rename_to_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  description_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+
+ApiDef_Arg::~ApiDef_Arg() {
+  // @@protoc_insertion_point(destructor:tensorflow.ApiDef.Arg)
+  SharedDtor();
+}
+
+void ApiDef_Arg::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+  name_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  rename_to_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  description_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+
+void ApiDef_Arg::ArenaDtor(void* object) {
+  ApiDef_Arg* _this = reinterpret_cast< ApiDef_Arg* >(object);
+  (void)_this;
+}
+void ApiDef_Arg::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void ApiDef_Arg::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const ApiDef_Arg& ApiDef_Arg::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_ApiDef_Arg_tensorflow_2fcore_2fframework_2fapi_5fdef_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void ApiDef_Arg::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.ApiDef.Arg)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  name_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+  rename_to_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+  description_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* ApiDef_Arg::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<ApiDef_Arg*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // string name = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 10) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("tensorflow.ApiDef.Arg.name");
+        parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+        ::std::string* str = msg->mutable_name();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+        break;
+      }
+      // string rename_to = 2;
+      case 2: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 18) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("tensorflow.ApiDef.Arg.rename_to");
+        parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+        ::std::string* str = msg->mutable_rename_to();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+        break;
+      }
+      // string description = 3;
+      case 3: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 26) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("tensorflow.ApiDef.Arg.description");
+        parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+        ::std::string* str = msg->mutable_description();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool ApiDef_Arg::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.ApiDef.Arg)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // string name = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (10 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_name()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->name().data(), static_cast<int>(this->name().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.ApiDef.Arg.name"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // string rename_to = 2;
+      case 2: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (18 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_rename_to()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->rename_to().data(), static_cast<int>(this->rename_to().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.ApiDef.Arg.rename_to"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // string description = 3;
+      case 3: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (26 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_description()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->description().data(), static_cast<int>(this->description().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.ApiDef.Arg.description"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.ApiDef.Arg)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.ApiDef.Arg)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void ApiDef_Arg::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.ApiDef.Arg)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // string name = 1;
+  if (this->name().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->name().data(), static_cast<int>(this->name().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.ApiDef.Arg.name");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      1, this->name(), output);
+  }
+
+  // string rename_to = 2;
+  if (this->rename_to().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->rename_to().data(), static_cast<int>(this->rename_to().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.ApiDef.Arg.rename_to");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      2, this->rename_to(), output);
+  }
+
+  // string description = 3;
+  if (this->description().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->description().data(), static_cast<int>(this->description().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.ApiDef.Arg.description");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      3, this->description(), output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.ApiDef.Arg)
+}
+
+::google::protobuf::uint8* ApiDef_Arg::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.ApiDef.Arg)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // string name = 1;
+  if (this->name().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->name().data(), static_cast<int>(this->name().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.ApiDef.Arg.name");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        1, this->name(), target);
+  }
+
+  // string rename_to = 2;
+  if (this->rename_to().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->rename_to().data(), static_cast<int>(this->rename_to().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.ApiDef.Arg.rename_to");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        2, this->rename_to(), target);
+  }
+
+  // string description = 3;
+  if (this->description().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->description().data(), static_cast<int>(this->description().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.ApiDef.Arg.description");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        3, this->description(), target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.ApiDef.Arg)
+  return target;
+}
+
+size_t ApiDef_Arg::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.ApiDef.Arg)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // string name = 1;
+  if (this->name().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->name());
+  }
+
+  // string rename_to = 2;
+  if (this->rename_to().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->rename_to());
+  }
+
+  // string description = 3;
+  if (this->description().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->description());
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void ApiDef_Arg::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.ApiDef.Arg)
+  GOOGLE_DCHECK_NE(&from, this);
+  const ApiDef_Arg* source =
+      ::google::protobuf::DynamicCastToGenerated<ApiDef_Arg>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.ApiDef.Arg)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.ApiDef.Arg)
+    MergeFrom(*source);
+  }
+}
+
+void ApiDef_Arg::MergeFrom(const ApiDef_Arg& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.ApiDef.Arg)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  if (from.name().size() > 0) {
+    set_name(from.name());
+  }
+  if (from.rename_to().size() > 0) {
+    set_rename_to(from.rename_to());
+  }
+  if (from.description().size() > 0) {
+    set_description(from.description());
+  }
+}
+
+void ApiDef_Arg::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.ApiDef.Arg)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void ApiDef_Arg::CopyFrom(const ApiDef_Arg& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.ApiDef.Arg)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool ApiDef_Arg::IsInitialized() const {
+  return true;
+}
+
+void ApiDef_Arg::Swap(ApiDef_Arg* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    ApiDef_Arg* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void ApiDef_Arg::UnsafeArenaSwap(ApiDef_Arg* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void ApiDef_Arg::InternalSwap(ApiDef_Arg* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  name_.Swap(&other->name_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+  rename_to_.Swap(&other->rename_to_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+  description_.Swap(&other->description_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+}
+
+::google::protobuf::Metadata ApiDef_Arg::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fframework_2fapi_5fdef_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fframework_2fapi_5fdef_2eproto[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+void ApiDef_Attr::InitAsDefaultInstance() {
+  ::tensorflow::_ApiDef_Attr_default_instance_._instance.get_mutable()->default_value_ = const_cast< ::tensorflow::AttrValue*>(
+      ::tensorflow::AttrValue::internal_default_instance());
+}
+class ApiDef_Attr::HasBitSetters {
+ public:
+  static const ::tensorflow::AttrValue& default_value(const ApiDef_Attr* msg);
+};
+
+const ::tensorflow::AttrValue&
+ApiDef_Attr::HasBitSetters::default_value(const ApiDef_Attr* msg) {
+  return *msg->default_value_;
+}
+void ApiDef_Attr::unsafe_arena_set_allocated_default_value(
+    ::tensorflow::AttrValue* default_value) {
+  if (GetArenaNoVirtual() == NULL) {
+    delete default_value_;
+  }
+  default_value_ = default_value;
+  if (default_value) {
+    
+  } else {
+    
+  }
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.ApiDef.Attr.default_value)
+}
+void ApiDef_Attr::clear_default_value() {
+  if (GetArenaNoVirtual() == NULL && default_value_ != NULL) {
+    delete default_value_;
+  }
+  default_value_ = NULL;
+}
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int ApiDef_Attr::kNameFieldNumber;
+const int ApiDef_Attr::kRenameToFieldNumber;
+const int ApiDef_Attr::kDefaultValueFieldNumber;
+const int ApiDef_Attr::kDescriptionFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+ApiDef_Attr::ApiDef_Attr()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.ApiDef.Attr)
+}
+ApiDef_Attr::ApiDef_Attr(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.ApiDef.Attr)
+}
+ApiDef_Attr::ApiDef_Attr(const ApiDef_Attr& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.name().size() > 0) {
+    name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.name(),
+      GetArenaNoVirtual());
+  }
+  rename_to_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.rename_to().size() > 0) {
+    rename_to_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.rename_to(),
+      GetArenaNoVirtual());
+  }
+  description_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.description().size() > 0) {
+    description_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.description(),
+      GetArenaNoVirtual());
+  }
+  if (from.has_default_value()) {
+    default_value_ = new ::tensorflow::AttrValue(*from.default_value_);
+  } else {
+    default_value_ = NULL;
+  }
+  // @@protoc_insertion_point(copy_constructor:tensorflow.ApiDef.Attr)
+}
+
+void ApiDef_Attr::SharedCtor() {
+  ::google::protobuf::internal::InitSCC(
+      &scc_info_ApiDef_Attr_tensorflow_2fcore_2fframework_2fapi_5fdef_2eproto.base);
+  name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  rename_to_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  description_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  default_value_ = NULL;
+}
+
+ApiDef_Attr::~ApiDef_Attr() {
+  // @@protoc_insertion_point(destructor:tensorflow.ApiDef.Attr)
+  SharedDtor();
+}
+
+void ApiDef_Attr::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+  name_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  rename_to_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  description_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (this != internal_default_instance()) delete default_value_;
+}
+
+void ApiDef_Attr::ArenaDtor(void* object) {
+  ApiDef_Attr* _this = reinterpret_cast< ApiDef_Attr* >(object);
+  (void)_this;
+}
+void ApiDef_Attr::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void ApiDef_Attr::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const ApiDef_Attr& ApiDef_Attr::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_ApiDef_Attr_tensorflow_2fcore_2fframework_2fapi_5fdef_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void ApiDef_Attr::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.ApiDef.Attr)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  name_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+  rename_to_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+  description_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+  if (GetArenaNoVirtual() == NULL && default_value_ != NULL) {
+    delete default_value_;
+  }
+  default_value_ = NULL;
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* ApiDef_Attr::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<ApiDef_Attr*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // string name = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 10) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("tensorflow.ApiDef.Attr.name");
+        parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+        ::std::string* str = msg->mutable_name();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+        break;
+      }
+      // string rename_to = 2;
+      case 2: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 18) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("tensorflow.ApiDef.Attr.rename_to");
+        parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+        ::std::string* str = msg->mutable_rename_to();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+        break;
+      }
+      // .tensorflow.AttrValue default_value = 3;
+      case 3: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 26) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        parser_till_end = ::tensorflow::AttrValue::_InternalParse;
+        object = msg->mutable_default_value();
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                       ptr, newend);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+        ptr = newend;
+        break;
+      }
+      // string description = 4;
+      case 4: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 34) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("tensorflow.ApiDef.Attr.description");
+        parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+        ::std::string* str = msg->mutable_description();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool ApiDef_Attr::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.ApiDef.Attr)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // string name = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (10 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_name()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->name().data(), static_cast<int>(this->name().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.ApiDef.Attr.name"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // string rename_to = 2;
+      case 2: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (18 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_rename_to()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->rename_to().data(), static_cast<int>(this->rename_to().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.ApiDef.Attr.rename_to"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // .tensorflow.AttrValue default_value = 3;
+      case 3: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (26 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+               input, mutable_default_value()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // string description = 4;
+      case 4: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (34 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_description()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->description().data(), static_cast<int>(this->description().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.ApiDef.Attr.description"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.ApiDef.Attr)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.ApiDef.Attr)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void ApiDef_Attr::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.ApiDef.Attr)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // string name = 1;
+  if (this->name().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->name().data(), static_cast<int>(this->name().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.ApiDef.Attr.name");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      1, this->name(), output);
+  }
+
+  // string rename_to = 2;
+  if (this->rename_to().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->rename_to().data(), static_cast<int>(this->rename_to().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.ApiDef.Attr.rename_to");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      2, this->rename_to(), output);
+  }
+
+  // .tensorflow.AttrValue default_value = 3;
+  if (this->has_default_value()) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      3, HasBitSetters::default_value(this), output);
+  }
+
+  // string description = 4;
+  if (this->description().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->description().data(), static_cast<int>(this->description().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.ApiDef.Attr.description");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      4, this->description(), output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.ApiDef.Attr)
+}
+
+::google::protobuf::uint8* ApiDef_Attr::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.ApiDef.Attr)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // string name = 1;
+  if (this->name().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->name().data(), static_cast<int>(this->name().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.ApiDef.Attr.name");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        1, this->name(), target);
+  }
+
+  // string rename_to = 2;
+  if (this->rename_to().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->rename_to().data(), static_cast<int>(this->rename_to().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.ApiDef.Attr.rename_to");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        2, this->rename_to(), target);
+  }
+
+  // .tensorflow.AttrValue default_value = 3;
+  if (this->has_default_value()) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        3, HasBitSetters::default_value(this), deterministic, target);
+  }
+
+  // string description = 4;
+  if (this->description().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->description().data(), static_cast<int>(this->description().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.ApiDef.Attr.description");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        4, this->description(), target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.ApiDef.Attr)
+  return target;
+}
+
+size_t ApiDef_Attr::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.ApiDef.Attr)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // string name = 1;
+  if (this->name().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->name());
+  }
+
+  // string rename_to = 2;
+  if (this->rename_to().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->rename_to());
+  }
+
+  // string description = 4;
+  if (this->description().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->description());
+  }
+
+  // .tensorflow.AttrValue default_value = 3;
+  if (this->has_default_value()) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::MessageSize(
+        *default_value_);
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void ApiDef_Attr::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.ApiDef.Attr)
+  GOOGLE_DCHECK_NE(&from, this);
+  const ApiDef_Attr* source =
+      ::google::protobuf::DynamicCastToGenerated<ApiDef_Attr>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.ApiDef.Attr)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.ApiDef.Attr)
+    MergeFrom(*source);
+  }
+}
+
+void ApiDef_Attr::MergeFrom(const ApiDef_Attr& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.ApiDef.Attr)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  if (from.name().size() > 0) {
+    set_name(from.name());
+  }
+  if (from.rename_to().size() > 0) {
+    set_rename_to(from.rename_to());
+  }
+  if (from.description().size() > 0) {
+    set_description(from.description());
+  }
+  if (from.has_default_value()) {
+    mutable_default_value()->::tensorflow::AttrValue::MergeFrom(from.default_value());
+  }
+}
+
+void ApiDef_Attr::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.ApiDef.Attr)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void ApiDef_Attr::CopyFrom(const ApiDef_Attr& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.ApiDef.Attr)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool ApiDef_Attr::IsInitialized() const {
+  return true;
+}
+
+void ApiDef_Attr::Swap(ApiDef_Attr* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    ApiDef_Attr* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void ApiDef_Attr::UnsafeArenaSwap(ApiDef_Attr* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void ApiDef_Attr::InternalSwap(ApiDef_Attr* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  name_.Swap(&other->name_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+  rename_to_.Swap(&other->rename_to_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+  description_.Swap(&other->description_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+  swap(default_value_, other->default_value_);
+}
+
+::google::protobuf::Metadata ApiDef_Attr::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fframework_2fapi_5fdef_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fframework_2fapi_5fdef_2eproto[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+void ApiDef::InitAsDefaultInstance() {
+}
+class ApiDef::HasBitSetters {
+ public:
+};
+
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int ApiDef::kGraphOpNameFieldNumber;
+const int ApiDef::kVisibilityFieldNumber;
+const int ApiDef::kEndpointFieldNumber;
+const int ApiDef::kInArgFieldNumber;
+const int ApiDef::kOutArgFieldNumber;
+const int ApiDef::kArgOrderFieldNumber;
+const int ApiDef::kAttrFieldNumber;
+const int ApiDef::kSummaryFieldNumber;
+const int ApiDef::kDescriptionFieldNumber;
+const int ApiDef::kDescriptionPrefixFieldNumber;
+const int ApiDef::kDescriptionSuffixFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+ApiDef::ApiDef()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.ApiDef)
+}
+ApiDef::ApiDef(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena),
+  endpoint_(arena),
+  in_arg_(arena),
+  out_arg_(arena),
+  attr_(arena),
+  arg_order_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.ApiDef)
+}
+ApiDef::ApiDef(const ApiDef& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL),
+      endpoint_(from.endpoint_),
+      in_arg_(from.in_arg_),
+      out_arg_(from.out_arg_),
+      attr_(from.attr_),
+      arg_order_(from.arg_order_) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  graph_op_name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.graph_op_name().size() > 0) {
+    graph_op_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.graph_op_name(),
+      GetArenaNoVirtual());
+  }
+  summary_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.summary().size() > 0) {
+    summary_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.summary(),
+      GetArenaNoVirtual());
+  }
+  description_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.description().size() > 0) {
+    description_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.description(),
+      GetArenaNoVirtual());
+  }
+  description_prefix_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.description_prefix().size() > 0) {
+    description_prefix_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.description_prefix(),
+      GetArenaNoVirtual());
+  }
+  description_suffix_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.description_suffix().size() > 0) {
+    description_suffix_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.description_suffix(),
+      GetArenaNoVirtual());
+  }
+  visibility_ = from.visibility_;
+  // @@protoc_insertion_point(copy_constructor:tensorflow.ApiDef)
+}
+
+void ApiDef::SharedCtor() {
+  ::google::protobuf::internal::InitSCC(
+      &scc_info_ApiDef_tensorflow_2fcore_2fframework_2fapi_5fdef_2eproto.base);
+  graph_op_name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  summary_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  description_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  description_prefix_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  description_suffix_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  visibility_ = 0;
+}
+
+ApiDef::~ApiDef() {
+  // @@protoc_insertion_point(destructor:tensorflow.ApiDef)
+  SharedDtor();
+}
+
+void ApiDef::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+  graph_op_name_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  summary_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  description_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  description_prefix_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  description_suffix_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+
+void ApiDef::ArenaDtor(void* object) {
+  ApiDef* _this = reinterpret_cast< ApiDef* >(object);
+  (void)_this;
+}
+void ApiDef::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void ApiDef::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const ApiDef& ApiDef::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_ApiDef_tensorflow_2fcore_2fframework_2fapi_5fdef_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void ApiDef::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.ApiDef)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  endpoint_.Clear();
+  in_arg_.Clear();
+  out_arg_.Clear();
+  attr_.Clear();
+  arg_order_.Clear();
+  graph_op_name_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+  summary_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+  description_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+  description_prefix_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+  description_suffix_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+  visibility_ = 0;
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* ApiDef::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<ApiDef*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // string graph_op_name = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 10) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("tensorflow.ApiDef.graph_op_name");
+        parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+        ::std::string* str = msg->mutable_graph_op_name();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+        break;
+      }
+      // .tensorflow.ApiDef.Visibility visibility = 2;
+      case 2: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 16) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::tensorflow::ApiDef_Visibility value = static_cast<::tensorflow::ApiDef_Visibility>(val);
+        msg->set_visibility(value);
+        break;
+      }
+      // repeated .tensorflow.ApiDef.Endpoint endpoint = 3;
+      case 3: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 26) goto handle_unusual;
+        do {
+          ptr = Varint::Parse32Inline(ptr, &size);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          parser_till_end = ::tensorflow::ApiDef_Endpoint::_InternalParse;
+          object = msg->add_endpoint();
+          if (size > end - ptr) goto len_delim_till_end;
+          auto newend = ptr + size;
+          bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                         ptr, newend);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          ptr = newend;
+          if (ptr >= end) break;
+        } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 26 && (ptr += 1));
+        break;
+      }
+      // repeated .tensorflow.ApiDef.Arg in_arg = 4;
+      case 4: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 34) goto handle_unusual;
+        do {
+          ptr = Varint::Parse32Inline(ptr, &size);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          parser_till_end = ::tensorflow::ApiDef_Arg::_InternalParse;
+          object = msg->add_in_arg();
+          if (size > end - ptr) goto len_delim_till_end;
+          auto newend = ptr + size;
+          bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                         ptr, newend);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          ptr = newend;
+          if (ptr >= end) break;
+        } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 34 && (ptr += 1));
+        break;
+      }
+      // repeated .tensorflow.ApiDef.Arg out_arg = 5;
+      case 5: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 42) goto handle_unusual;
+        do {
+          ptr = Varint::Parse32Inline(ptr, &size);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          parser_till_end = ::tensorflow::ApiDef_Arg::_InternalParse;
+          object = msg->add_out_arg();
+          if (size > end - ptr) goto len_delim_till_end;
+          auto newend = ptr + size;
+          bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                         ptr, newend);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          ptr = newend;
+          if (ptr >= end) break;
+        } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 42 && (ptr += 1));
+        break;
+      }
+      // repeated .tensorflow.ApiDef.Attr attr = 6;
+      case 6: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 50) goto handle_unusual;
+        do {
+          ptr = Varint::Parse32Inline(ptr, &size);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          parser_till_end = ::tensorflow::ApiDef_Attr::_InternalParse;
+          object = msg->add_attr();
+          if (size > end - ptr) goto len_delim_till_end;
+          auto newend = ptr + size;
+          bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                         ptr, newend);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          ptr = newend;
+          if (ptr >= end) break;
+        } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 50 && (ptr += 1));
+        break;
+      }
+      // string summary = 7;
+      case 7: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 58) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("tensorflow.ApiDef.summary");
+        parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+        ::std::string* str = msg->mutable_summary();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+        break;
+      }
+      // string description = 8;
+      case 8: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 66) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("tensorflow.ApiDef.description");
+        parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+        ::std::string* str = msg->mutable_description();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+        break;
+      }
+      // string description_prefix = 9;
+      case 9: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 74) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("tensorflow.ApiDef.description_prefix");
+        parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+        ::std::string* str = msg->mutable_description_prefix();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+        break;
+      }
+      // string description_suffix = 10;
+      case 10: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 82) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("tensorflow.ApiDef.description_suffix");
+        parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+        ::std::string* str = msg->mutable_description_suffix();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+        break;
+      }
+      // repeated string arg_order = 11;
+      case 11: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 90) goto handle_unusual;
+        do {
+          ptr = Varint::Parse32Inline(ptr, &size);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          ctx->extra_parse_data().SetFieldName("tensorflow.ApiDef.arg_order");
+          parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+          ::std::string* str = msg->add_arg_order();
+          str->clear();
+          object = str;
+          if (size > end - ptr) goto len_delim_till_end;
+          auto newend = ptr + size;
+          if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+          if (ptr >= end) break;
+        } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 90 && (ptr += 1));
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool ApiDef::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.ApiDef)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // string graph_op_name = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (10 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_graph_op_name()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->graph_op_name().data(), static_cast<int>(this->graph_op_name().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.ApiDef.graph_op_name"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // .tensorflow.ApiDef.Visibility visibility = 2;
+      case 2: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (16 & 0xFF)) {
+          int value = 0;
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>(
+                 input, &value)));
+          set_visibility(static_cast< ::tensorflow::ApiDef_Visibility >(value));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // repeated .tensorflow.ApiDef.Endpoint endpoint = 3;
+      case 3: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (26 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+                input, add_endpoint()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // repeated .tensorflow.ApiDef.Arg in_arg = 4;
+      case 4: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (34 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+                input, add_in_arg()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // repeated .tensorflow.ApiDef.Arg out_arg = 5;
+      case 5: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (42 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+                input, add_out_arg()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // repeated .tensorflow.ApiDef.Attr attr = 6;
+      case 6: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (50 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+                input, add_attr()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // string summary = 7;
+      case 7: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (58 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_summary()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->summary().data(), static_cast<int>(this->summary().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.ApiDef.summary"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // string description = 8;
+      case 8: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (66 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_description()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->description().data(), static_cast<int>(this->description().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.ApiDef.description"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // string description_prefix = 9;
+      case 9: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (74 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_description_prefix()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->description_prefix().data(), static_cast<int>(this->description_prefix().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.ApiDef.description_prefix"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // string description_suffix = 10;
+      case 10: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (82 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_description_suffix()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->description_suffix().data(), static_cast<int>(this->description_suffix().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.ApiDef.description_suffix"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // repeated string arg_order = 11;
+      case 11: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (90 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->add_arg_order()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->arg_order(this->arg_order_size() - 1).data(),
+            static_cast<int>(this->arg_order(this->arg_order_size() - 1).length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.ApiDef.arg_order"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.ApiDef)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.ApiDef)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void ApiDef::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.ApiDef)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // string graph_op_name = 1;
+  if (this->graph_op_name().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->graph_op_name().data(), static_cast<int>(this->graph_op_name().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.ApiDef.graph_op_name");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      1, this->graph_op_name(), output);
+  }
+
+  // .tensorflow.ApiDef.Visibility visibility = 2;
+  if (this->visibility() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteEnum(
+      2, this->visibility(), output);
+  }
+
+  // repeated .tensorflow.ApiDef.Endpoint endpoint = 3;
+  for (unsigned int i = 0,
+      n = static_cast<unsigned int>(this->endpoint_size()); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      3,
+      this->endpoint(static_cast<int>(i)),
+      output);
+  }
+
+  // repeated .tensorflow.ApiDef.Arg in_arg = 4;
+  for (unsigned int i = 0,
+      n = static_cast<unsigned int>(this->in_arg_size()); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      4,
+      this->in_arg(static_cast<int>(i)),
+      output);
+  }
+
+  // repeated .tensorflow.ApiDef.Arg out_arg = 5;
+  for (unsigned int i = 0,
+      n = static_cast<unsigned int>(this->out_arg_size()); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      5,
+      this->out_arg(static_cast<int>(i)),
+      output);
+  }
+
+  // repeated .tensorflow.ApiDef.Attr attr = 6;
+  for (unsigned int i = 0,
+      n = static_cast<unsigned int>(this->attr_size()); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      6,
+      this->attr(static_cast<int>(i)),
+      output);
+  }
+
+  // string summary = 7;
+  if (this->summary().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->summary().data(), static_cast<int>(this->summary().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.ApiDef.summary");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      7, this->summary(), output);
+  }
+
+  // string description = 8;
+  if (this->description().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->description().data(), static_cast<int>(this->description().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.ApiDef.description");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      8, this->description(), output);
+  }
+
+  // string description_prefix = 9;
+  if (this->description_prefix().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->description_prefix().data(), static_cast<int>(this->description_prefix().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.ApiDef.description_prefix");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      9, this->description_prefix(), output);
+  }
+
+  // string description_suffix = 10;
+  if (this->description_suffix().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->description_suffix().data(), static_cast<int>(this->description_suffix().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.ApiDef.description_suffix");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      10, this->description_suffix(), output);
+  }
+
+  // repeated string arg_order = 11;
+  for (int i = 0, n = this->arg_order_size(); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->arg_order(i).data(), static_cast<int>(this->arg_order(i).length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.ApiDef.arg_order");
+    ::google::protobuf::internal::WireFormatLite::WriteString(
+      11, this->arg_order(i), output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.ApiDef)
+}
+
+::google::protobuf::uint8* ApiDef::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.ApiDef)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // string graph_op_name = 1;
+  if (this->graph_op_name().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->graph_op_name().data(), static_cast<int>(this->graph_op_name().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.ApiDef.graph_op_name");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        1, this->graph_op_name(), target);
+  }
+
+  // .tensorflow.ApiDef.Visibility visibility = 2;
+  if (this->visibility() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteEnumToArray(
+      2, this->visibility(), target);
+  }
+
+  // repeated .tensorflow.ApiDef.Endpoint endpoint = 3;
+  for (unsigned int i = 0,
+      n = static_cast<unsigned int>(this->endpoint_size()); i < n; i++) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        3, this->endpoint(static_cast<int>(i)), deterministic, target);
+  }
+
+  // repeated .tensorflow.ApiDef.Arg in_arg = 4;
+  for (unsigned int i = 0,
+      n = static_cast<unsigned int>(this->in_arg_size()); i < n; i++) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        4, this->in_arg(static_cast<int>(i)), deterministic, target);
+  }
+
+  // repeated .tensorflow.ApiDef.Arg out_arg = 5;
+  for (unsigned int i = 0,
+      n = static_cast<unsigned int>(this->out_arg_size()); i < n; i++) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        5, this->out_arg(static_cast<int>(i)), deterministic, target);
+  }
+
+  // repeated .tensorflow.ApiDef.Attr attr = 6;
+  for (unsigned int i = 0,
+      n = static_cast<unsigned int>(this->attr_size()); i < n; i++) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        6, this->attr(static_cast<int>(i)), deterministic, target);
+  }
+
+  // string summary = 7;
+  if (this->summary().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->summary().data(), static_cast<int>(this->summary().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.ApiDef.summary");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        7, this->summary(), target);
+  }
+
+  // string description = 8;
+  if (this->description().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->description().data(), static_cast<int>(this->description().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.ApiDef.description");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        8, this->description(), target);
+  }
+
+  // string description_prefix = 9;
+  if (this->description_prefix().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->description_prefix().data(), static_cast<int>(this->description_prefix().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.ApiDef.description_prefix");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        9, this->description_prefix(), target);
+  }
+
+  // string description_suffix = 10;
+  if (this->description_suffix().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->description_suffix().data(), static_cast<int>(this->description_suffix().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.ApiDef.description_suffix");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        10, this->description_suffix(), target);
+  }
+
+  // repeated string arg_order = 11;
+  for (int i = 0, n = this->arg_order_size(); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->arg_order(i).data(), static_cast<int>(this->arg_order(i).length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.ApiDef.arg_order");
+    target = ::google::protobuf::internal::WireFormatLite::
+      WriteStringToArray(11, this->arg_order(i), target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.ApiDef)
+  return target;
+}
+
+size_t ApiDef::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.ApiDef)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // repeated .tensorflow.ApiDef.Endpoint endpoint = 3;
+  {
+    unsigned int count = static_cast<unsigned int>(this->endpoint_size());
+    total_size += 1UL * count;
+    for (unsigned int i = 0; i < count; i++) {
+      total_size +=
+        ::google::protobuf::internal::WireFormatLite::MessageSize(
+          this->endpoint(static_cast<int>(i)));
+    }
+  }
+
+  // repeated .tensorflow.ApiDef.Arg in_arg = 4;
+  {
+    unsigned int count = static_cast<unsigned int>(this->in_arg_size());
+    total_size += 1UL * count;
+    for (unsigned int i = 0; i < count; i++) {
+      total_size +=
+        ::google::protobuf::internal::WireFormatLite::MessageSize(
+          this->in_arg(static_cast<int>(i)));
+    }
+  }
+
+  // repeated .tensorflow.ApiDef.Arg out_arg = 5;
+  {
+    unsigned int count = static_cast<unsigned int>(this->out_arg_size());
+    total_size += 1UL * count;
+    for (unsigned int i = 0; i < count; i++) {
+      total_size +=
+        ::google::protobuf::internal::WireFormatLite::MessageSize(
+          this->out_arg(static_cast<int>(i)));
+    }
+  }
+
+  // repeated .tensorflow.ApiDef.Attr attr = 6;
+  {
+    unsigned int count = static_cast<unsigned int>(this->attr_size());
+    total_size += 1UL * count;
+    for (unsigned int i = 0; i < count; i++) {
+      total_size +=
+        ::google::protobuf::internal::WireFormatLite::MessageSize(
+          this->attr(static_cast<int>(i)));
+    }
+  }
+
+  // repeated string arg_order = 11;
+  total_size += 1 *
+      ::google::protobuf::internal::FromIntSize(this->arg_order_size());
+  for (int i = 0, n = this->arg_order_size(); i < n; i++) {
+    total_size += ::google::protobuf::internal::WireFormatLite::StringSize(
+      this->arg_order(i));
+  }
+
+  // string graph_op_name = 1;
+  if (this->graph_op_name().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->graph_op_name());
+  }
+
+  // string summary = 7;
+  if (this->summary().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->summary());
+  }
+
+  // string description = 8;
+  if (this->description().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->description());
+  }
+
+  // string description_prefix = 9;
+  if (this->description_prefix().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->description_prefix());
+  }
+
+  // string description_suffix = 10;
+  if (this->description_suffix().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->description_suffix());
+  }
+
+  // .tensorflow.ApiDef.Visibility visibility = 2;
+  if (this->visibility() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::EnumSize(this->visibility());
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void ApiDef::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.ApiDef)
+  GOOGLE_DCHECK_NE(&from, this);
+  const ApiDef* source =
+      ::google::protobuf::DynamicCastToGenerated<ApiDef>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.ApiDef)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.ApiDef)
+    MergeFrom(*source);
+  }
+}
+
+void ApiDef::MergeFrom(const ApiDef& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.ApiDef)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  endpoint_.MergeFrom(from.endpoint_);
+  in_arg_.MergeFrom(from.in_arg_);
+  out_arg_.MergeFrom(from.out_arg_);
+  attr_.MergeFrom(from.attr_);
+  arg_order_.MergeFrom(from.arg_order_);
+  if (from.graph_op_name().size() > 0) {
+    set_graph_op_name(from.graph_op_name());
+  }
+  if (from.summary().size() > 0) {
+    set_summary(from.summary());
+  }
+  if (from.description().size() > 0) {
+    set_description(from.description());
+  }
+  if (from.description_prefix().size() > 0) {
+    set_description_prefix(from.description_prefix());
+  }
+  if (from.description_suffix().size() > 0) {
+    set_description_suffix(from.description_suffix());
+  }
+  if (from.visibility() != 0) {
+    set_visibility(from.visibility());
+  }
+}
+
+void ApiDef::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.ApiDef)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void ApiDef::CopyFrom(const ApiDef& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.ApiDef)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool ApiDef::IsInitialized() const {
+  return true;
+}
+
+void ApiDef::Swap(ApiDef* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    ApiDef* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void ApiDef::UnsafeArenaSwap(ApiDef* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void ApiDef::InternalSwap(ApiDef* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  CastToBase(&endpoint_)->InternalSwap(CastToBase(&other->endpoint_));
+  CastToBase(&in_arg_)->InternalSwap(CastToBase(&other->in_arg_));
+  CastToBase(&out_arg_)->InternalSwap(CastToBase(&other->out_arg_));
+  CastToBase(&attr_)->InternalSwap(CastToBase(&other->attr_));
+  arg_order_.InternalSwap(CastToBase(&other->arg_order_));
+  graph_op_name_.Swap(&other->graph_op_name_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+  summary_.Swap(&other->summary_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+  description_.Swap(&other->description_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+  description_prefix_.Swap(&other->description_prefix_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+  description_suffix_.Swap(&other->description_suffix_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+  swap(visibility_, other->visibility_);
+}
+
+::google::protobuf::Metadata ApiDef::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fframework_2fapi_5fdef_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fframework_2fapi_5fdef_2eproto[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+void ApiDefs::InitAsDefaultInstance() {
+}
+class ApiDefs::HasBitSetters {
+ public:
+};
+
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int ApiDefs::kOpFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+ApiDefs::ApiDefs()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.ApiDefs)
+}
+ApiDefs::ApiDefs(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena),
+  op_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.ApiDefs)
+}
+ApiDefs::ApiDefs(const ApiDefs& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL),
+      op_(from.op_) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  // @@protoc_insertion_point(copy_constructor:tensorflow.ApiDefs)
+}
+
+void ApiDefs::SharedCtor() {
+  ::google::protobuf::internal::InitSCC(
+      &scc_info_ApiDefs_tensorflow_2fcore_2fframework_2fapi_5fdef_2eproto.base);
+}
+
+ApiDefs::~ApiDefs() {
+  // @@protoc_insertion_point(destructor:tensorflow.ApiDefs)
+  SharedDtor();
+}
+
+void ApiDefs::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+}
+
+void ApiDefs::ArenaDtor(void* object) {
+  ApiDefs* _this = reinterpret_cast< ApiDefs* >(object);
+  (void)_this;
+}
+void ApiDefs::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void ApiDefs::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const ApiDefs& ApiDefs::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_ApiDefs_tensorflow_2fcore_2fframework_2fapi_5fdef_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void ApiDefs::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.ApiDefs)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  op_.Clear();
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* ApiDefs::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<ApiDefs*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // repeated .tensorflow.ApiDef op = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 10) goto handle_unusual;
+        do {
+          ptr = Varint::Parse32Inline(ptr, &size);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          parser_till_end = ::tensorflow::ApiDef::_InternalParse;
+          object = msg->add_op();
+          if (size > end - ptr) goto len_delim_till_end;
+          auto newend = ptr + size;
+          bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                         ptr, newend);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          ptr = newend;
+          if (ptr >= end) break;
+        } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 10 && (ptr += 1));
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool ApiDefs::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.ApiDefs)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // repeated .tensorflow.ApiDef op = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (10 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+                input, add_op()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.ApiDefs)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.ApiDefs)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void ApiDefs::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.ApiDefs)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // repeated .tensorflow.ApiDef op = 1;
+  for (unsigned int i = 0,
+      n = static_cast<unsigned int>(this->op_size()); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      1,
+      this->op(static_cast<int>(i)),
+      output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.ApiDefs)
+}
+
+::google::protobuf::uint8* ApiDefs::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.ApiDefs)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // repeated .tensorflow.ApiDef op = 1;
+  for (unsigned int i = 0,
+      n = static_cast<unsigned int>(this->op_size()); i < n; i++) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        1, this->op(static_cast<int>(i)), deterministic, target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.ApiDefs)
+  return target;
+}
+
+size_t ApiDefs::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.ApiDefs)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // repeated .tensorflow.ApiDef op = 1;
+  {
+    unsigned int count = static_cast<unsigned int>(this->op_size());
+    total_size += 1UL * count;
+    for (unsigned int i = 0; i < count; i++) {
+      total_size +=
+        ::google::protobuf::internal::WireFormatLite::MessageSize(
+          this->op(static_cast<int>(i)));
+    }
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void ApiDefs::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.ApiDefs)
+  GOOGLE_DCHECK_NE(&from, this);
+  const ApiDefs* source =
+      ::google::protobuf::DynamicCastToGenerated<ApiDefs>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.ApiDefs)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.ApiDefs)
+    MergeFrom(*source);
+  }
+}
+
+void ApiDefs::MergeFrom(const ApiDefs& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.ApiDefs)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  op_.MergeFrom(from.op_);
+}
+
+void ApiDefs::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.ApiDefs)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void ApiDefs::CopyFrom(const ApiDefs& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.ApiDefs)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool ApiDefs::IsInitialized() const {
+  return true;
+}
+
+void ApiDefs::Swap(ApiDefs* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    ApiDefs* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void ApiDefs::UnsafeArenaSwap(ApiDefs* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void ApiDefs::InternalSwap(ApiDefs* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  CastToBase(&op_)->InternalSwap(CastToBase(&other->op_));
+}
+
+::google::protobuf::Metadata ApiDefs::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fframework_2fapi_5fdef_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fframework_2fapi_5fdef_2eproto[kIndexInFileMessages];
+}
+
+
+// @@protoc_insertion_point(namespace_scope)
+}  // namespace tensorflow
+namespace google {
+namespace protobuf {
+template<> PROTOBUF_NOINLINE ::tensorflow::ApiDef_Endpoint* Arena::CreateMaybeMessage< ::tensorflow::ApiDef_Endpoint >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::ApiDef_Endpoint >(arena);
+}
+template<> PROTOBUF_NOINLINE ::tensorflow::ApiDef_Arg* Arena::CreateMaybeMessage< ::tensorflow::ApiDef_Arg >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::ApiDef_Arg >(arena);
+}
+template<> PROTOBUF_NOINLINE ::tensorflow::ApiDef_Attr* Arena::CreateMaybeMessage< ::tensorflow::ApiDef_Attr >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::ApiDef_Attr >(arena);
+}
+template<> PROTOBUF_NOINLINE ::tensorflow::ApiDef* Arena::CreateMaybeMessage< ::tensorflow::ApiDef >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::ApiDef >(arena);
+}
+template<> PROTOBUF_NOINLINE ::tensorflow::ApiDefs* Arena::CreateMaybeMessage< ::tensorflow::ApiDefs >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::ApiDefs >(arena);
+}
+}  // namespace protobuf
+}  // namespace google
+
+// @@protoc_insertion_point(global_scope)
+#include <google/protobuf/port_undef.inc>
diff --git a/tensorflow/core/framework/api_def.pb.h b/tensorflow/core/framework/api_def.pb.h
new file mode 100644 (file)
index 0000000..9f2fb59
--- /dev/null
@@ -0,0 +1,2475 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: tensorflow/core/framework/api_def.proto
+
+#ifndef PROTOBUF_INCLUDED_tensorflow_2fcore_2fframework_2fapi_5fdef_2eproto
+#define PROTOBUF_INCLUDED_tensorflow_2fcore_2fframework_2fapi_5fdef_2eproto
+
+#include <limits>
+#include <string>
+
+#include <google/protobuf/port_def.inc>
+#if PROTOBUF_VERSION < 3006001
+#error This file was generated by a newer version of protoc which is
+#error incompatible with your Protocol Buffer headers. Please update
+#error your headers.
+#endif
+#if 3006001 < PROTOBUF_MIN_PROTOC_VERSION
+#error This file was generated by an older version of protoc which is
+#error incompatible with your Protocol Buffer headers. Please
+#error regenerate this file with a newer version of protoc.
+#endif
+
+#include <google/protobuf/port_undef.inc>
+#include <google/protobuf/io/coded_stream.h>
+#include <google/protobuf/arena.h>
+#include <google/protobuf/arenastring.h>
+#include <google/protobuf/generated_message_table_driven.h>
+#include <google/protobuf/generated_message_util.h>
+#include <google/protobuf/inlined_string_field.h>
+#include <google/protobuf/metadata.h>
+#include <google/protobuf/message.h>
+#include <google/protobuf/repeated_field.h>  // IWYU pragma: export
+#include <google/protobuf/extension_set.h>  // IWYU pragma: export
+#include <google/protobuf/generated_enum_reflection.h>
+#include <google/protobuf/unknown_field_set.h>
+#include "tensorflow/core/framework/attr_value.pb.h"
+// @@protoc_insertion_point(includes)
+#include <google/protobuf/port_def.inc>
+#define PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fframework_2fapi_5fdef_2eproto
+
+// Internal implementation detail -- do not use these members.
+struct TableStruct_tensorflow_2fcore_2fframework_2fapi_5fdef_2eproto {
+  static const ::google::protobuf::internal::ParseTableField entries[]
+    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
+  static const ::google::protobuf::internal::AuxillaryParseTableField aux[]
+    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
+  static const ::google::protobuf::internal::ParseTable schema[5]
+    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
+  static const ::google::protobuf::internal::FieldMetadata field_metadata[];
+  static const ::google::protobuf::internal::SerializationTable serialization_table[];
+  static const ::google::protobuf::uint32 offsets[];
+};
+void AddDescriptors_tensorflow_2fcore_2fframework_2fapi_5fdef_2eproto();
+namespace tensorflow {
+class ApiDef;
+class ApiDefDefaultTypeInternal;
+extern ApiDefDefaultTypeInternal _ApiDef_default_instance_;
+class ApiDef_Arg;
+class ApiDef_ArgDefaultTypeInternal;
+extern ApiDef_ArgDefaultTypeInternal _ApiDef_Arg_default_instance_;
+class ApiDef_Attr;
+class ApiDef_AttrDefaultTypeInternal;
+extern ApiDef_AttrDefaultTypeInternal _ApiDef_Attr_default_instance_;
+class ApiDef_Endpoint;
+class ApiDef_EndpointDefaultTypeInternal;
+extern ApiDef_EndpointDefaultTypeInternal _ApiDef_Endpoint_default_instance_;
+class ApiDefs;
+class ApiDefsDefaultTypeInternal;
+extern ApiDefsDefaultTypeInternal _ApiDefs_default_instance_;
+}  // namespace tensorflow
+namespace google {
+namespace protobuf {
+template<> ::tensorflow::ApiDef* Arena::CreateMaybeMessage<::tensorflow::ApiDef>(Arena*);
+template<> ::tensorflow::ApiDef_Arg* Arena::CreateMaybeMessage<::tensorflow::ApiDef_Arg>(Arena*);
+template<> ::tensorflow::ApiDef_Attr* Arena::CreateMaybeMessage<::tensorflow::ApiDef_Attr>(Arena*);
+template<> ::tensorflow::ApiDef_Endpoint* Arena::CreateMaybeMessage<::tensorflow::ApiDef_Endpoint>(Arena*);
+template<> ::tensorflow::ApiDefs* Arena::CreateMaybeMessage<::tensorflow::ApiDefs>(Arena*);
+}  // namespace protobuf
+}  // namespace google
+namespace tensorflow {
+
+enum ApiDef_Visibility {
+  ApiDef_Visibility_DEFAULT_VISIBILITY = 0,
+  ApiDef_Visibility_VISIBLE = 1,
+  ApiDef_Visibility_SKIP = 2,
+  ApiDef_Visibility_HIDDEN = 3,
+  ApiDef_Visibility_ApiDef_Visibility_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::google::protobuf::int32>::min(),
+  ApiDef_Visibility_ApiDef_Visibility_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::google::protobuf::int32>::max()
+};
+bool ApiDef_Visibility_IsValid(int value);
+const ApiDef_Visibility ApiDef_Visibility_Visibility_MIN = ApiDef_Visibility_DEFAULT_VISIBILITY;
+const ApiDef_Visibility ApiDef_Visibility_Visibility_MAX = ApiDef_Visibility_HIDDEN;
+const int ApiDef_Visibility_Visibility_ARRAYSIZE = ApiDef_Visibility_Visibility_MAX + 1;
+
+const ::google::protobuf::EnumDescriptor* ApiDef_Visibility_descriptor();
+inline const ::std::string& ApiDef_Visibility_Name(ApiDef_Visibility value) {
+  return ::google::protobuf::internal::NameOfEnum(
+    ApiDef_Visibility_descriptor(), value);
+}
+inline bool ApiDef_Visibility_Parse(
+    const ::std::string& name, ApiDef_Visibility* value) {
+  return ::google::protobuf::internal::ParseNamedEnum<ApiDef_Visibility>(
+    ApiDef_Visibility_descriptor(), name, value);
+}
+// ===================================================================
+
+class ApiDef_Endpoint : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.ApiDef.Endpoint) */ {
+ public:
+  ApiDef_Endpoint();
+  virtual ~ApiDef_Endpoint();
+
+  ApiDef_Endpoint(const ApiDef_Endpoint& from);
+
+  inline ApiDef_Endpoint& operator=(const ApiDef_Endpoint& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  ApiDef_Endpoint(ApiDef_Endpoint&& from) noexcept
+    : ApiDef_Endpoint() {
+    *this = ::std::move(from);
+  }
+
+  inline ApiDef_Endpoint& operator=(ApiDef_Endpoint&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const ApiDef_Endpoint& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const ApiDef_Endpoint* internal_default_instance() {
+    return reinterpret_cast<const ApiDef_Endpoint*>(
+               &_ApiDef_Endpoint_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    0;
+
+  void UnsafeArenaSwap(ApiDef_Endpoint* other);
+  void Swap(ApiDef_Endpoint* other);
+  friend void swap(ApiDef_Endpoint& a, ApiDef_Endpoint& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline ApiDef_Endpoint* New() const final {
+    return CreateMaybeMessage<ApiDef_Endpoint>(NULL);
+  }
+
+  ApiDef_Endpoint* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<ApiDef_Endpoint>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const ApiDef_Endpoint& from);
+  void MergeFrom(const ApiDef_Endpoint& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(ApiDef_Endpoint* other);
+  protected:
+  explicit ApiDef_Endpoint(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // string name = 1;
+  void clear_name();
+  static const int kNameFieldNumber = 1;
+  const ::std::string& name() const;
+  void set_name(const ::std::string& value);
+  #if LANG_CXX11
+  void set_name(::std::string&& value);
+  #endif
+  void set_name(const char* value);
+  void set_name(const char* value, size_t size);
+  ::std::string* mutable_name();
+  ::std::string* release_name();
+  void set_allocated_name(::std::string* name);
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  ::std::string* unsafe_arena_release_name();
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  void unsafe_arena_set_allocated_name(
+      ::std::string* name);
+
+  // string deprecation_message = 2;
+  void clear_deprecation_message();
+  static const int kDeprecationMessageFieldNumber = 2;
+  const ::std::string& deprecation_message() const;
+  void set_deprecation_message(const ::std::string& value);
+  #if LANG_CXX11
+  void set_deprecation_message(::std::string&& value);
+  #endif
+  void set_deprecation_message(const char* value);
+  void set_deprecation_message(const char* value, size_t size);
+  ::std::string* mutable_deprecation_message();
+  ::std::string* release_deprecation_message();
+  void set_allocated_deprecation_message(::std::string* deprecation_message);
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  ::std::string* unsafe_arena_release_deprecation_message();
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  void unsafe_arena_set_allocated_deprecation_message(
+      ::std::string* deprecation_message);
+
+  // @@protoc_insertion_point(class_scope:tensorflow.ApiDef.Endpoint)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  ::google::protobuf::internal::ArenaStringPtr name_;
+  ::google::protobuf::internal::ArenaStringPtr deprecation_message_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fframework_2fapi_5fdef_2eproto;
+};
+// -------------------------------------------------------------------
+
+class ApiDef_Arg : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.ApiDef.Arg) */ {
+ public:
+  ApiDef_Arg();
+  virtual ~ApiDef_Arg();
+
+  ApiDef_Arg(const ApiDef_Arg& from);
+
+  inline ApiDef_Arg& operator=(const ApiDef_Arg& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  ApiDef_Arg(ApiDef_Arg&& from) noexcept
+    : ApiDef_Arg() {
+    *this = ::std::move(from);
+  }
+
+  inline ApiDef_Arg& operator=(ApiDef_Arg&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const ApiDef_Arg& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const ApiDef_Arg* internal_default_instance() {
+    return reinterpret_cast<const ApiDef_Arg*>(
+               &_ApiDef_Arg_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    1;
+
+  void UnsafeArenaSwap(ApiDef_Arg* other);
+  void Swap(ApiDef_Arg* other);
+  friend void swap(ApiDef_Arg& a, ApiDef_Arg& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline ApiDef_Arg* New() const final {
+    return CreateMaybeMessage<ApiDef_Arg>(NULL);
+  }
+
+  ApiDef_Arg* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<ApiDef_Arg>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const ApiDef_Arg& from);
+  void MergeFrom(const ApiDef_Arg& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(ApiDef_Arg* other);
+  protected:
+  explicit ApiDef_Arg(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // string name = 1;
+  void clear_name();
+  static const int kNameFieldNumber = 1;
+  const ::std::string& name() const;
+  void set_name(const ::std::string& value);
+  #if LANG_CXX11
+  void set_name(::std::string&& value);
+  #endif
+  void set_name(const char* value);
+  void set_name(const char* value, size_t size);
+  ::std::string* mutable_name();
+  ::std::string* release_name();
+  void set_allocated_name(::std::string* name);
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  ::std::string* unsafe_arena_release_name();
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  void unsafe_arena_set_allocated_name(
+      ::std::string* name);
+
+  // string rename_to = 2;
+  void clear_rename_to();
+  static const int kRenameToFieldNumber = 2;
+  const ::std::string& rename_to() const;
+  void set_rename_to(const ::std::string& value);
+  #if LANG_CXX11
+  void set_rename_to(::std::string&& value);
+  #endif
+  void set_rename_to(const char* value);
+  void set_rename_to(const char* value, size_t size);
+  ::std::string* mutable_rename_to();
+  ::std::string* release_rename_to();
+  void set_allocated_rename_to(::std::string* rename_to);
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  ::std::string* unsafe_arena_release_rename_to();
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  void unsafe_arena_set_allocated_rename_to(
+      ::std::string* rename_to);
+
+  // string description = 3;
+  void clear_description();
+  static const int kDescriptionFieldNumber = 3;
+  const ::std::string& description() const;
+  void set_description(const ::std::string& value);
+  #if LANG_CXX11
+  void set_description(::std::string&& value);
+  #endif
+  void set_description(const char* value);
+  void set_description(const char* value, size_t size);
+  ::std::string* mutable_description();
+  ::std::string* release_description();
+  void set_allocated_description(::std::string* description);
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  ::std::string* unsafe_arena_release_description();
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  void unsafe_arena_set_allocated_description(
+      ::std::string* description);
+
+  // @@protoc_insertion_point(class_scope:tensorflow.ApiDef.Arg)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  ::google::protobuf::internal::ArenaStringPtr name_;
+  ::google::protobuf::internal::ArenaStringPtr rename_to_;
+  ::google::protobuf::internal::ArenaStringPtr description_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fframework_2fapi_5fdef_2eproto;
+};
+// -------------------------------------------------------------------
+
+class ApiDef_Attr : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.ApiDef.Attr) */ {
+ public:
+  ApiDef_Attr();
+  virtual ~ApiDef_Attr();
+
+  ApiDef_Attr(const ApiDef_Attr& from);
+
+  inline ApiDef_Attr& operator=(const ApiDef_Attr& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  ApiDef_Attr(ApiDef_Attr&& from) noexcept
+    : ApiDef_Attr() {
+    *this = ::std::move(from);
+  }
+
+  inline ApiDef_Attr& operator=(ApiDef_Attr&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const ApiDef_Attr& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const ApiDef_Attr* internal_default_instance() {
+    return reinterpret_cast<const ApiDef_Attr*>(
+               &_ApiDef_Attr_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    2;
+
+  void UnsafeArenaSwap(ApiDef_Attr* other);
+  void Swap(ApiDef_Attr* other);
+  friend void swap(ApiDef_Attr& a, ApiDef_Attr& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline ApiDef_Attr* New() const final {
+    return CreateMaybeMessage<ApiDef_Attr>(NULL);
+  }
+
+  ApiDef_Attr* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<ApiDef_Attr>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const ApiDef_Attr& from);
+  void MergeFrom(const ApiDef_Attr& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(ApiDef_Attr* other);
+  protected:
+  explicit ApiDef_Attr(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // string name = 1;
+  void clear_name();
+  static const int kNameFieldNumber = 1;
+  const ::std::string& name() const;
+  void set_name(const ::std::string& value);
+  #if LANG_CXX11
+  void set_name(::std::string&& value);
+  #endif
+  void set_name(const char* value);
+  void set_name(const char* value, size_t size);
+  ::std::string* mutable_name();
+  ::std::string* release_name();
+  void set_allocated_name(::std::string* name);
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  ::std::string* unsafe_arena_release_name();
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  void unsafe_arena_set_allocated_name(
+      ::std::string* name);
+
+  // string rename_to = 2;
+  void clear_rename_to();
+  static const int kRenameToFieldNumber = 2;
+  const ::std::string& rename_to() const;
+  void set_rename_to(const ::std::string& value);
+  #if LANG_CXX11
+  void set_rename_to(::std::string&& value);
+  #endif
+  void set_rename_to(const char* value);
+  void set_rename_to(const char* value, size_t size);
+  ::std::string* mutable_rename_to();
+  ::std::string* release_rename_to();
+  void set_allocated_rename_to(::std::string* rename_to);
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  ::std::string* unsafe_arena_release_rename_to();
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  void unsafe_arena_set_allocated_rename_to(
+      ::std::string* rename_to);
+
+  // string description = 4;
+  void clear_description();
+  static const int kDescriptionFieldNumber = 4;
+  const ::std::string& description() const;
+  void set_description(const ::std::string& value);
+  #if LANG_CXX11
+  void set_description(::std::string&& value);
+  #endif
+  void set_description(const char* value);
+  void set_description(const char* value, size_t size);
+  ::std::string* mutable_description();
+  ::std::string* release_description();
+  void set_allocated_description(::std::string* description);
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  ::std::string* unsafe_arena_release_description();
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  void unsafe_arena_set_allocated_description(
+      ::std::string* description);
+
+  // .tensorflow.AttrValue default_value = 3;
+  bool has_default_value() const;
+  void clear_default_value();
+  static const int kDefaultValueFieldNumber = 3;
+  const ::tensorflow::AttrValue& default_value() const;
+  ::tensorflow::AttrValue* release_default_value();
+  ::tensorflow::AttrValue* mutable_default_value();
+  void set_allocated_default_value(::tensorflow::AttrValue* default_value);
+  void unsafe_arena_set_allocated_default_value(
+      ::tensorflow::AttrValue* default_value);
+  ::tensorflow::AttrValue* unsafe_arena_release_default_value();
+
+  // @@protoc_insertion_point(class_scope:tensorflow.ApiDef.Attr)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  ::google::protobuf::internal::ArenaStringPtr name_;
+  ::google::protobuf::internal::ArenaStringPtr rename_to_;
+  ::google::protobuf::internal::ArenaStringPtr description_;
+  ::tensorflow::AttrValue* default_value_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fframework_2fapi_5fdef_2eproto;
+};
+// -------------------------------------------------------------------
+
+class ApiDef : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.ApiDef) */ {
+ public:
+  ApiDef();
+  virtual ~ApiDef();
+
+  ApiDef(const ApiDef& from);
+
+  inline ApiDef& operator=(const ApiDef& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  ApiDef(ApiDef&& from) noexcept
+    : ApiDef() {
+    *this = ::std::move(from);
+  }
+
+  inline ApiDef& operator=(ApiDef&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const ApiDef& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const ApiDef* internal_default_instance() {
+    return reinterpret_cast<const ApiDef*>(
+               &_ApiDef_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    3;
+
+  void UnsafeArenaSwap(ApiDef* other);
+  void Swap(ApiDef* other);
+  friend void swap(ApiDef& a, ApiDef& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline ApiDef* New() const final {
+    return CreateMaybeMessage<ApiDef>(NULL);
+  }
+
+  ApiDef* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<ApiDef>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const ApiDef& from);
+  void MergeFrom(const ApiDef& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(ApiDef* other);
+  protected:
+  explicit ApiDef(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  typedef ApiDef_Endpoint Endpoint;
+  typedef ApiDef_Arg Arg;
+  typedef ApiDef_Attr Attr;
+
+  typedef ApiDef_Visibility Visibility;
+  static const Visibility DEFAULT_VISIBILITY =
+    ApiDef_Visibility_DEFAULT_VISIBILITY;
+  static const Visibility VISIBLE =
+    ApiDef_Visibility_VISIBLE;
+  static const Visibility SKIP =
+    ApiDef_Visibility_SKIP;
+  static const Visibility HIDDEN =
+    ApiDef_Visibility_HIDDEN;
+  static inline bool Visibility_IsValid(int value) {
+    return ApiDef_Visibility_IsValid(value);
+  }
+  static const Visibility Visibility_MIN =
+    ApiDef_Visibility_Visibility_MIN;
+  static const Visibility Visibility_MAX =
+    ApiDef_Visibility_Visibility_MAX;
+  static const int Visibility_ARRAYSIZE =
+    ApiDef_Visibility_Visibility_ARRAYSIZE;
+  static inline const ::google::protobuf::EnumDescriptor*
+  Visibility_descriptor() {
+    return ApiDef_Visibility_descriptor();
+  }
+  static inline const ::std::string& Visibility_Name(Visibility value) {
+    return ApiDef_Visibility_Name(value);
+  }
+  static inline bool Visibility_Parse(const ::std::string& name,
+      Visibility* value) {
+    return ApiDef_Visibility_Parse(name, value);
+  }
+
+  // accessors -------------------------------------------------------
+
+  // repeated .tensorflow.ApiDef.Endpoint endpoint = 3;
+  int endpoint_size() const;
+  void clear_endpoint();
+  static const int kEndpointFieldNumber = 3;
+  ::tensorflow::ApiDef_Endpoint* mutable_endpoint(int index);
+  ::google::protobuf::RepeatedPtrField< ::tensorflow::ApiDef_Endpoint >*
+      mutable_endpoint();
+  const ::tensorflow::ApiDef_Endpoint& endpoint(int index) const;
+  ::tensorflow::ApiDef_Endpoint* add_endpoint();
+  const ::google::protobuf::RepeatedPtrField< ::tensorflow::ApiDef_Endpoint >&
+      endpoint() const;
+
+  // repeated .tensorflow.ApiDef.Arg in_arg = 4;
+  int in_arg_size() const;
+  void clear_in_arg();
+  static const int kInArgFieldNumber = 4;
+  ::tensorflow::ApiDef_Arg* mutable_in_arg(int index);
+  ::google::protobuf::RepeatedPtrField< ::tensorflow::ApiDef_Arg >*
+      mutable_in_arg();
+  const ::tensorflow::ApiDef_Arg& in_arg(int index) const;
+  ::tensorflow::ApiDef_Arg* add_in_arg();
+  const ::google::protobuf::RepeatedPtrField< ::tensorflow::ApiDef_Arg >&
+      in_arg() const;
+
+  // repeated .tensorflow.ApiDef.Arg out_arg = 5;
+  int out_arg_size() const;
+  void clear_out_arg();
+  static const int kOutArgFieldNumber = 5;
+  ::tensorflow::ApiDef_Arg* mutable_out_arg(int index);
+  ::google::protobuf::RepeatedPtrField< ::tensorflow::ApiDef_Arg >*
+      mutable_out_arg();
+  const ::tensorflow::ApiDef_Arg& out_arg(int index) const;
+  ::tensorflow::ApiDef_Arg* add_out_arg();
+  const ::google::protobuf::RepeatedPtrField< ::tensorflow::ApiDef_Arg >&
+      out_arg() const;
+
+  // repeated .tensorflow.ApiDef.Attr attr = 6;
+  int attr_size() const;
+  void clear_attr();
+  static const int kAttrFieldNumber = 6;
+  ::tensorflow::ApiDef_Attr* mutable_attr(int index);
+  ::google::protobuf::RepeatedPtrField< ::tensorflow::ApiDef_Attr >*
+      mutable_attr();
+  const ::tensorflow::ApiDef_Attr& attr(int index) const;
+  ::tensorflow::ApiDef_Attr* add_attr();
+  const ::google::protobuf::RepeatedPtrField< ::tensorflow::ApiDef_Attr >&
+      attr() const;
+
+  // repeated string arg_order = 11;
+  int arg_order_size() const;
+  void clear_arg_order();
+  static const int kArgOrderFieldNumber = 11;
+  const ::std::string& arg_order(int index) const;
+  ::std::string* mutable_arg_order(int index);
+  void set_arg_order(int index, const ::std::string& value);
+  #if LANG_CXX11
+  void set_arg_order(int index, ::std::string&& value);
+  #endif
+  void set_arg_order(int index, const char* value);
+  void set_arg_order(int index, const char* value, size_t size);
+  ::std::string* add_arg_order();
+  void add_arg_order(const ::std::string& value);
+  #if LANG_CXX11
+  void add_arg_order(::std::string&& value);
+  #endif
+  void add_arg_order(const char* value);
+  void add_arg_order(const char* value, size_t size);
+  const ::google::protobuf::RepeatedPtrField<::std::string>& arg_order() const;
+  ::google::protobuf::RepeatedPtrField<::std::string>* mutable_arg_order();
+
+  // string graph_op_name = 1;
+  void clear_graph_op_name();
+  static const int kGraphOpNameFieldNumber = 1;
+  const ::std::string& graph_op_name() const;
+  void set_graph_op_name(const ::std::string& value);
+  #if LANG_CXX11
+  void set_graph_op_name(::std::string&& value);
+  #endif
+  void set_graph_op_name(const char* value);
+  void set_graph_op_name(const char* value, size_t size);
+  ::std::string* mutable_graph_op_name();
+  ::std::string* release_graph_op_name();
+  void set_allocated_graph_op_name(::std::string* graph_op_name);
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  ::std::string* unsafe_arena_release_graph_op_name();
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  void unsafe_arena_set_allocated_graph_op_name(
+      ::std::string* graph_op_name);
+
+  // string summary = 7;
+  void clear_summary();
+  static const int kSummaryFieldNumber = 7;
+  const ::std::string& summary() const;
+  void set_summary(const ::std::string& value);
+  #if LANG_CXX11
+  void set_summary(::std::string&& value);
+  #endif
+  void set_summary(const char* value);
+  void set_summary(const char* value, size_t size);
+  ::std::string* mutable_summary();
+  ::std::string* release_summary();
+  void set_allocated_summary(::std::string* summary);
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  ::std::string* unsafe_arena_release_summary();
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  void unsafe_arena_set_allocated_summary(
+      ::std::string* summary);
+
+  // string description = 8;
+  void clear_description();
+  static const int kDescriptionFieldNumber = 8;
+  const ::std::string& description() const;
+  void set_description(const ::std::string& value);
+  #if LANG_CXX11
+  void set_description(::std::string&& value);
+  #endif
+  void set_description(const char* value);
+  void set_description(const char* value, size_t size);
+  ::std::string* mutable_description();
+  ::std::string* release_description();
+  void set_allocated_description(::std::string* description);
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  ::std::string* unsafe_arena_release_description();
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  void unsafe_arena_set_allocated_description(
+      ::std::string* description);
+
+  // string description_prefix = 9;
+  void clear_description_prefix();
+  static const int kDescriptionPrefixFieldNumber = 9;
+  const ::std::string& description_prefix() const;
+  void set_description_prefix(const ::std::string& value);
+  #if LANG_CXX11
+  void set_description_prefix(::std::string&& value);
+  #endif
+  void set_description_prefix(const char* value);
+  void set_description_prefix(const char* value, size_t size);
+  ::std::string* mutable_description_prefix();
+  ::std::string* release_description_prefix();
+  void set_allocated_description_prefix(::std::string* description_prefix);
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  ::std::string* unsafe_arena_release_description_prefix();
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  void unsafe_arena_set_allocated_description_prefix(
+      ::std::string* description_prefix);
+
+  // string description_suffix = 10;
+  void clear_description_suffix();
+  static const int kDescriptionSuffixFieldNumber = 10;
+  const ::std::string& description_suffix() const;
+  void set_description_suffix(const ::std::string& value);
+  #if LANG_CXX11
+  void set_description_suffix(::std::string&& value);
+  #endif
+  void set_description_suffix(const char* value);
+  void set_description_suffix(const char* value, size_t size);
+  ::std::string* mutable_description_suffix();
+  ::std::string* release_description_suffix();
+  void set_allocated_description_suffix(::std::string* description_suffix);
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  ::std::string* unsafe_arena_release_description_suffix();
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  void unsafe_arena_set_allocated_description_suffix(
+      ::std::string* description_suffix);
+
+  // .tensorflow.ApiDef.Visibility visibility = 2;
+  void clear_visibility();
+  static const int kVisibilityFieldNumber = 2;
+  ::tensorflow::ApiDef_Visibility visibility() const;
+  void set_visibility(::tensorflow::ApiDef_Visibility value);
+
+  // @@protoc_insertion_point(class_scope:tensorflow.ApiDef)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  ::google::protobuf::RepeatedPtrField< ::tensorflow::ApiDef_Endpoint > endpoint_;
+  ::google::protobuf::RepeatedPtrField< ::tensorflow::ApiDef_Arg > in_arg_;
+  ::google::protobuf::RepeatedPtrField< ::tensorflow::ApiDef_Arg > out_arg_;
+  ::google::protobuf::RepeatedPtrField< ::tensorflow::ApiDef_Attr > attr_;
+  ::google::protobuf::RepeatedPtrField<::std::string> arg_order_;
+  ::google::protobuf::internal::ArenaStringPtr graph_op_name_;
+  ::google::protobuf::internal::ArenaStringPtr summary_;
+  ::google::protobuf::internal::ArenaStringPtr description_;
+  ::google::protobuf::internal::ArenaStringPtr description_prefix_;
+  ::google::protobuf::internal::ArenaStringPtr description_suffix_;
+  int visibility_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fframework_2fapi_5fdef_2eproto;
+};
+// -------------------------------------------------------------------
+
+class ApiDefs : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.ApiDefs) */ {
+ public:
+  ApiDefs();
+  virtual ~ApiDefs();
+
+  ApiDefs(const ApiDefs& from);
+
+  inline ApiDefs& operator=(const ApiDefs& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  ApiDefs(ApiDefs&& from) noexcept
+    : ApiDefs() {
+    *this = ::std::move(from);
+  }
+
+  inline ApiDefs& operator=(ApiDefs&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const ApiDefs& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const ApiDefs* internal_default_instance() {
+    return reinterpret_cast<const ApiDefs*>(
+               &_ApiDefs_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    4;
+
+  void UnsafeArenaSwap(ApiDefs* other);
+  void Swap(ApiDefs* other);
+  friend void swap(ApiDefs& a, ApiDefs& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline ApiDefs* New() const final {
+    return CreateMaybeMessage<ApiDefs>(NULL);
+  }
+
+  ApiDefs* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<ApiDefs>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const ApiDefs& from);
+  void MergeFrom(const ApiDefs& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(ApiDefs* other);
+  protected:
+  explicit ApiDefs(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // repeated .tensorflow.ApiDef op = 1;
+  int op_size() const;
+  void clear_op();
+  static const int kOpFieldNumber = 1;
+  ::tensorflow::ApiDef* mutable_op(int index);
+  ::google::protobuf::RepeatedPtrField< ::tensorflow::ApiDef >*
+      mutable_op();
+  const ::tensorflow::ApiDef& op(int index) const;
+  ::tensorflow::ApiDef* add_op();
+  const ::google::protobuf::RepeatedPtrField< ::tensorflow::ApiDef >&
+      op() const;
+
+  // @@protoc_insertion_point(class_scope:tensorflow.ApiDefs)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  ::google::protobuf::RepeatedPtrField< ::tensorflow::ApiDef > op_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fframework_2fapi_5fdef_2eproto;
+};
+// ===================================================================
+
+
+// ===================================================================
+
+#ifdef __GNUC__
+  #pragma GCC diagnostic push
+  #pragma GCC diagnostic ignored "-Wstrict-aliasing"
+#endif  // __GNUC__
+// ApiDef_Endpoint
+
+// string name = 1;
+inline void ApiDef_Endpoint::clear_name() {
+  name_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline const ::std::string& ApiDef_Endpoint::name() const {
+  // @@protoc_insertion_point(field_get:tensorflow.ApiDef.Endpoint.name)
+  return name_.Get();
+}
+inline void ApiDef_Endpoint::set_name(const ::std::string& value) {
+  
+  name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set:tensorflow.ApiDef.Endpoint.name)
+}
+#if LANG_CXX11
+inline void ApiDef_Endpoint::set_name(::std::string&& value) {
+  
+  name_.Set(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.ApiDef.Endpoint.name)
+}
+#endif
+inline void ApiDef_Endpoint::set_name(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
+              GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_char:tensorflow.ApiDef.Endpoint.name)
+}
+inline void ApiDef_Endpoint::set_name(const char* value,
+    size_t size) {
+  
+  name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
+      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.ApiDef.Endpoint.name)
+}
+inline ::std::string* ApiDef_Endpoint::mutable_name() {
+  
+  // @@protoc_insertion_point(field_mutable:tensorflow.ApiDef.Endpoint.name)
+  return name_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline ::std::string* ApiDef_Endpoint::release_name() {
+  // @@protoc_insertion_point(field_release:tensorflow.ApiDef.Endpoint.name)
+  
+  return name_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline void ApiDef_Endpoint::set_allocated_name(::std::string* name) {
+  if (name != NULL) {
+    
+  } else {
+    
+  }
+  name_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), name,
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.ApiDef.Endpoint.name)
+}
+inline ::std::string* ApiDef_Endpoint::unsafe_arena_release_name() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.ApiDef.Endpoint.name)
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  
+  return name_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      GetArenaNoVirtual());
+}
+inline void ApiDef_Endpoint::unsafe_arena_set_allocated_name(
+    ::std::string* name) {
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (name != NULL) {
+    
+  } else {
+    
+  }
+  name_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      name, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.ApiDef.Endpoint.name)
+}
+
+// string deprecation_message = 2;
+inline void ApiDef_Endpoint::clear_deprecation_message() {
+  deprecation_message_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline const ::std::string& ApiDef_Endpoint::deprecation_message() const {
+  // @@protoc_insertion_point(field_get:tensorflow.ApiDef.Endpoint.deprecation_message)
+  return deprecation_message_.Get();
+}
+inline void ApiDef_Endpoint::set_deprecation_message(const ::std::string& value) {
+  
+  deprecation_message_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set:tensorflow.ApiDef.Endpoint.deprecation_message)
+}
+#if LANG_CXX11
+inline void ApiDef_Endpoint::set_deprecation_message(::std::string&& value) {
+  
+  deprecation_message_.Set(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.ApiDef.Endpoint.deprecation_message)
+}
+#endif
+inline void ApiDef_Endpoint::set_deprecation_message(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  deprecation_message_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
+              GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_char:tensorflow.ApiDef.Endpoint.deprecation_message)
+}
+inline void ApiDef_Endpoint::set_deprecation_message(const char* value,
+    size_t size) {
+  
+  deprecation_message_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
+      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.ApiDef.Endpoint.deprecation_message)
+}
+inline ::std::string* ApiDef_Endpoint::mutable_deprecation_message() {
+  
+  // @@protoc_insertion_point(field_mutable:tensorflow.ApiDef.Endpoint.deprecation_message)
+  return deprecation_message_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline ::std::string* ApiDef_Endpoint::release_deprecation_message() {
+  // @@protoc_insertion_point(field_release:tensorflow.ApiDef.Endpoint.deprecation_message)
+  
+  return deprecation_message_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline void ApiDef_Endpoint::set_allocated_deprecation_message(::std::string* deprecation_message) {
+  if (deprecation_message != NULL) {
+    
+  } else {
+    
+  }
+  deprecation_message_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), deprecation_message,
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.ApiDef.Endpoint.deprecation_message)
+}
+inline ::std::string* ApiDef_Endpoint::unsafe_arena_release_deprecation_message() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.ApiDef.Endpoint.deprecation_message)
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  
+  return deprecation_message_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      GetArenaNoVirtual());
+}
+inline void ApiDef_Endpoint::unsafe_arena_set_allocated_deprecation_message(
+    ::std::string* deprecation_message) {
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (deprecation_message != NULL) {
+    
+  } else {
+    
+  }
+  deprecation_message_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      deprecation_message, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.ApiDef.Endpoint.deprecation_message)
+}
+
+// -------------------------------------------------------------------
+
+// ApiDef_Arg
+
+// string name = 1;
+inline void ApiDef_Arg::clear_name() {
+  name_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline const ::std::string& ApiDef_Arg::name() const {
+  // @@protoc_insertion_point(field_get:tensorflow.ApiDef.Arg.name)
+  return name_.Get();
+}
+inline void ApiDef_Arg::set_name(const ::std::string& value) {
+  
+  name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set:tensorflow.ApiDef.Arg.name)
+}
+#if LANG_CXX11
+inline void ApiDef_Arg::set_name(::std::string&& value) {
+  
+  name_.Set(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.ApiDef.Arg.name)
+}
+#endif
+inline void ApiDef_Arg::set_name(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
+              GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_char:tensorflow.ApiDef.Arg.name)
+}
+inline void ApiDef_Arg::set_name(const char* value,
+    size_t size) {
+  
+  name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
+      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.ApiDef.Arg.name)
+}
+inline ::std::string* ApiDef_Arg::mutable_name() {
+  
+  // @@protoc_insertion_point(field_mutable:tensorflow.ApiDef.Arg.name)
+  return name_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline ::std::string* ApiDef_Arg::release_name() {
+  // @@protoc_insertion_point(field_release:tensorflow.ApiDef.Arg.name)
+  
+  return name_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline void ApiDef_Arg::set_allocated_name(::std::string* name) {
+  if (name != NULL) {
+    
+  } else {
+    
+  }
+  name_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), name,
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.ApiDef.Arg.name)
+}
+inline ::std::string* ApiDef_Arg::unsafe_arena_release_name() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.ApiDef.Arg.name)
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  
+  return name_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      GetArenaNoVirtual());
+}
+inline void ApiDef_Arg::unsafe_arena_set_allocated_name(
+    ::std::string* name) {
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (name != NULL) {
+    
+  } else {
+    
+  }
+  name_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      name, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.ApiDef.Arg.name)
+}
+
+// string rename_to = 2;
+inline void ApiDef_Arg::clear_rename_to() {
+  rename_to_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline const ::std::string& ApiDef_Arg::rename_to() const {
+  // @@protoc_insertion_point(field_get:tensorflow.ApiDef.Arg.rename_to)
+  return rename_to_.Get();
+}
+inline void ApiDef_Arg::set_rename_to(const ::std::string& value) {
+  
+  rename_to_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set:tensorflow.ApiDef.Arg.rename_to)
+}
+#if LANG_CXX11
+inline void ApiDef_Arg::set_rename_to(::std::string&& value) {
+  
+  rename_to_.Set(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.ApiDef.Arg.rename_to)
+}
+#endif
+inline void ApiDef_Arg::set_rename_to(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  rename_to_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
+              GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_char:tensorflow.ApiDef.Arg.rename_to)
+}
+inline void ApiDef_Arg::set_rename_to(const char* value,
+    size_t size) {
+  
+  rename_to_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
+      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.ApiDef.Arg.rename_to)
+}
+inline ::std::string* ApiDef_Arg::mutable_rename_to() {
+  
+  // @@protoc_insertion_point(field_mutable:tensorflow.ApiDef.Arg.rename_to)
+  return rename_to_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline ::std::string* ApiDef_Arg::release_rename_to() {
+  // @@protoc_insertion_point(field_release:tensorflow.ApiDef.Arg.rename_to)
+  
+  return rename_to_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline void ApiDef_Arg::set_allocated_rename_to(::std::string* rename_to) {
+  if (rename_to != NULL) {
+    
+  } else {
+    
+  }
+  rename_to_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), rename_to,
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.ApiDef.Arg.rename_to)
+}
+inline ::std::string* ApiDef_Arg::unsafe_arena_release_rename_to() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.ApiDef.Arg.rename_to)
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  
+  return rename_to_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      GetArenaNoVirtual());
+}
+inline void ApiDef_Arg::unsafe_arena_set_allocated_rename_to(
+    ::std::string* rename_to) {
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (rename_to != NULL) {
+    
+  } else {
+    
+  }
+  rename_to_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      rename_to, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.ApiDef.Arg.rename_to)
+}
+
+// string description = 3;
+inline void ApiDef_Arg::clear_description() {
+  description_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline const ::std::string& ApiDef_Arg::description() const {
+  // @@protoc_insertion_point(field_get:tensorflow.ApiDef.Arg.description)
+  return description_.Get();
+}
+inline void ApiDef_Arg::set_description(const ::std::string& value) {
+  
+  description_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set:tensorflow.ApiDef.Arg.description)
+}
+#if LANG_CXX11
+inline void ApiDef_Arg::set_description(::std::string&& value) {
+  
+  description_.Set(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.ApiDef.Arg.description)
+}
+#endif
+inline void ApiDef_Arg::set_description(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  description_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
+              GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_char:tensorflow.ApiDef.Arg.description)
+}
+inline void ApiDef_Arg::set_description(const char* value,
+    size_t size) {
+  
+  description_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
+      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.ApiDef.Arg.description)
+}
+inline ::std::string* ApiDef_Arg::mutable_description() {
+  
+  // @@protoc_insertion_point(field_mutable:tensorflow.ApiDef.Arg.description)
+  return description_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline ::std::string* ApiDef_Arg::release_description() {
+  // @@protoc_insertion_point(field_release:tensorflow.ApiDef.Arg.description)
+  
+  return description_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline void ApiDef_Arg::set_allocated_description(::std::string* description) {
+  if (description != NULL) {
+    
+  } else {
+    
+  }
+  description_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), description,
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.ApiDef.Arg.description)
+}
+inline ::std::string* ApiDef_Arg::unsafe_arena_release_description() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.ApiDef.Arg.description)
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  
+  return description_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      GetArenaNoVirtual());
+}
+inline void ApiDef_Arg::unsafe_arena_set_allocated_description(
+    ::std::string* description) {
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (description != NULL) {
+    
+  } else {
+    
+  }
+  description_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      description, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.ApiDef.Arg.description)
+}
+
+// -------------------------------------------------------------------
+
+// ApiDef_Attr
+
+// string name = 1;
+inline void ApiDef_Attr::clear_name() {
+  name_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline const ::std::string& ApiDef_Attr::name() const {
+  // @@protoc_insertion_point(field_get:tensorflow.ApiDef.Attr.name)
+  return name_.Get();
+}
+inline void ApiDef_Attr::set_name(const ::std::string& value) {
+  
+  name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set:tensorflow.ApiDef.Attr.name)
+}
+#if LANG_CXX11
+inline void ApiDef_Attr::set_name(::std::string&& value) {
+  
+  name_.Set(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.ApiDef.Attr.name)
+}
+#endif
+inline void ApiDef_Attr::set_name(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
+              GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_char:tensorflow.ApiDef.Attr.name)
+}
+inline void ApiDef_Attr::set_name(const char* value,
+    size_t size) {
+  
+  name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
+      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.ApiDef.Attr.name)
+}
+inline ::std::string* ApiDef_Attr::mutable_name() {
+  
+  // @@protoc_insertion_point(field_mutable:tensorflow.ApiDef.Attr.name)
+  return name_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline ::std::string* ApiDef_Attr::release_name() {
+  // @@protoc_insertion_point(field_release:tensorflow.ApiDef.Attr.name)
+  
+  return name_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline void ApiDef_Attr::set_allocated_name(::std::string* name) {
+  if (name != NULL) {
+    
+  } else {
+    
+  }
+  name_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), name,
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.ApiDef.Attr.name)
+}
+inline ::std::string* ApiDef_Attr::unsafe_arena_release_name() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.ApiDef.Attr.name)
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  
+  return name_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      GetArenaNoVirtual());
+}
+inline void ApiDef_Attr::unsafe_arena_set_allocated_name(
+    ::std::string* name) {
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (name != NULL) {
+    
+  } else {
+    
+  }
+  name_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      name, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.ApiDef.Attr.name)
+}
+
+// string rename_to = 2;
+inline void ApiDef_Attr::clear_rename_to() {
+  rename_to_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline const ::std::string& ApiDef_Attr::rename_to() const {
+  // @@protoc_insertion_point(field_get:tensorflow.ApiDef.Attr.rename_to)
+  return rename_to_.Get();
+}
+inline void ApiDef_Attr::set_rename_to(const ::std::string& value) {
+  
+  rename_to_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set:tensorflow.ApiDef.Attr.rename_to)
+}
+#if LANG_CXX11
+inline void ApiDef_Attr::set_rename_to(::std::string&& value) {
+  
+  rename_to_.Set(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.ApiDef.Attr.rename_to)
+}
+#endif
+inline void ApiDef_Attr::set_rename_to(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  rename_to_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
+              GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_char:tensorflow.ApiDef.Attr.rename_to)
+}
+inline void ApiDef_Attr::set_rename_to(const char* value,
+    size_t size) {
+  
+  rename_to_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
+      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.ApiDef.Attr.rename_to)
+}
+inline ::std::string* ApiDef_Attr::mutable_rename_to() {
+  
+  // @@protoc_insertion_point(field_mutable:tensorflow.ApiDef.Attr.rename_to)
+  return rename_to_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline ::std::string* ApiDef_Attr::release_rename_to() {
+  // @@protoc_insertion_point(field_release:tensorflow.ApiDef.Attr.rename_to)
+  
+  return rename_to_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline void ApiDef_Attr::set_allocated_rename_to(::std::string* rename_to) {
+  if (rename_to != NULL) {
+    
+  } else {
+    
+  }
+  rename_to_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), rename_to,
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.ApiDef.Attr.rename_to)
+}
+inline ::std::string* ApiDef_Attr::unsafe_arena_release_rename_to() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.ApiDef.Attr.rename_to)
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  
+  return rename_to_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      GetArenaNoVirtual());
+}
+inline void ApiDef_Attr::unsafe_arena_set_allocated_rename_to(
+    ::std::string* rename_to) {
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (rename_to != NULL) {
+    
+  } else {
+    
+  }
+  rename_to_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      rename_to, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.ApiDef.Attr.rename_to)
+}
+
+// .tensorflow.AttrValue default_value = 3;
+inline bool ApiDef_Attr::has_default_value() const {
+  return this != internal_default_instance() && default_value_ != NULL;
+}
+inline const ::tensorflow::AttrValue& ApiDef_Attr::default_value() const {
+  const ::tensorflow::AttrValue* p = default_value_;
+  // @@protoc_insertion_point(field_get:tensorflow.ApiDef.Attr.default_value)
+  return p != NULL ? *p : *reinterpret_cast<const ::tensorflow::AttrValue*>(
+      &::tensorflow::_AttrValue_default_instance_);
+}
+inline ::tensorflow::AttrValue* ApiDef_Attr::release_default_value() {
+  // @@protoc_insertion_point(field_release:tensorflow.ApiDef.Attr.default_value)
+  
+  ::tensorflow::AttrValue* temp = default_value_;
+  if (GetArenaNoVirtual() != NULL) {
+    temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
+  }
+  default_value_ = NULL;
+  return temp;
+}
+inline ::tensorflow::AttrValue* ApiDef_Attr::unsafe_arena_release_default_value() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.ApiDef.Attr.default_value)
+  
+  ::tensorflow::AttrValue* temp = default_value_;
+  default_value_ = NULL;
+  return temp;
+}
+inline ::tensorflow::AttrValue* ApiDef_Attr::mutable_default_value() {
+  
+  if (default_value_ == NULL) {
+    auto* p = CreateMaybeMessage<::tensorflow::AttrValue>(GetArenaNoVirtual());
+    default_value_ = p;
+  }
+  // @@protoc_insertion_point(field_mutable:tensorflow.ApiDef.Attr.default_value)
+  return default_value_;
+}
+inline void ApiDef_Attr::set_allocated_default_value(::tensorflow::AttrValue* default_value) {
+  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
+  if (message_arena == NULL) {
+    delete reinterpret_cast< ::google::protobuf::MessageLite*>(default_value_);
+  }
+  if (default_value) {
+    ::google::protobuf::Arena* submessage_arena =
+      reinterpret_cast<::google::protobuf::MessageLite*>(default_value)->GetArena();
+    if (message_arena != submessage_arena) {
+      default_value = ::google::protobuf::internal::GetOwnedMessage(
+          message_arena, default_value, submessage_arena);
+    }
+    
+  } else {
+    
+  }
+  default_value_ = default_value;
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.ApiDef.Attr.default_value)
+}
+
+// string description = 4;
+inline void ApiDef_Attr::clear_description() {
+  description_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline const ::std::string& ApiDef_Attr::description() const {
+  // @@protoc_insertion_point(field_get:tensorflow.ApiDef.Attr.description)
+  return description_.Get();
+}
+inline void ApiDef_Attr::set_description(const ::std::string& value) {
+  
+  description_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set:tensorflow.ApiDef.Attr.description)
+}
+#if LANG_CXX11
+inline void ApiDef_Attr::set_description(::std::string&& value) {
+  
+  description_.Set(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.ApiDef.Attr.description)
+}
+#endif
+inline void ApiDef_Attr::set_description(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  description_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
+              GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_char:tensorflow.ApiDef.Attr.description)
+}
+inline void ApiDef_Attr::set_description(const char* value,
+    size_t size) {
+  
+  description_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
+      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.ApiDef.Attr.description)
+}
+inline ::std::string* ApiDef_Attr::mutable_description() {
+  
+  // @@protoc_insertion_point(field_mutable:tensorflow.ApiDef.Attr.description)
+  return description_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline ::std::string* ApiDef_Attr::release_description() {
+  // @@protoc_insertion_point(field_release:tensorflow.ApiDef.Attr.description)
+  
+  return description_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline void ApiDef_Attr::set_allocated_description(::std::string* description) {
+  if (description != NULL) {
+    
+  } else {
+    
+  }
+  description_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), description,
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.ApiDef.Attr.description)
+}
+inline ::std::string* ApiDef_Attr::unsafe_arena_release_description() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.ApiDef.Attr.description)
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  
+  return description_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      GetArenaNoVirtual());
+}
+inline void ApiDef_Attr::unsafe_arena_set_allocated_description(
+    ::std::string* description) {
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (description != NULL) {
+    
+  } else {
+    
+  }
+  description_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      description, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.ApiDef.Attr.description)
+}
+
+// -------------------------------------------------------------------
+
+// ApiDef
+
+// string graph_op_name = 1;
+inline void ApiDef::clear_graph_op_name() {
+  graph_op_name_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline const ::std::string& ApiDef::graph_op_name() const {
+  // @@protoc_insertion_point(field_get:tensorflow.ApiDef.graph_op_name)
+  return graph_op_name_.Get();
+}
+inline void ApiDef::set_graph_op_name(const ::std::string& value) {
+  
+  graph_op_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set:tensorflow.ApiDef.graph_op_name)
+}
+#if LANG_CXX11
+inline void ApiDef::set_graph_op_name(::std::string&& value) {
+  
+  graph_op_name_.Set(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.ApiDef.graph_op_name)
+}
+#endif
+inline void ApiDef::set_graph_op_name(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  graph_op_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
+              GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_char:tensorflow.ApiDef.graph_op_name)
+}
+inline void ApiDef::set_graph_op_name(const char* value,
+    size_t size) {
+  
+  graph_op_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
+      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.ApiDef.graph_op_name)
+}
+inline ::std::string* ApiDef::mutable_graph_op_name() {
+  
+  // @@protoc_insertion_point(field_mutable:tensorflow.ApiDef.graph_op_name)
+  return graph_op_name_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline ::std::string* ApiDef::release_graph_op_name() {
+  // @@protoc_insertion_point(field_release:tensorflow.ApiDef.graph_op_name)
+  
+  return graph_op_name_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline void ApiDef::set_allocated_graph_op_name(::std::string* graph_op_name) {
+  if (graph_op_name != NULL) {
+    
+  } else {
+    
+  }
+  graph_op_name_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), graph_op_name,
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.ApiDef.graph_op_name)
+}
+inline ::std::string* ApiDef::unsafe_arena_release_graph_op_name() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.ApiDef.graph_op_name)
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  
+  return graph_op_name_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      GetArenaNoVirtual());
+}
+inline void ApiDef::unsafe_arena_set_allocated_graph_op_name(
+    ::std::string* graph_op_name) {
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (graph_op_name != NULL) {
+    
+  } else {
+    
+  }
+  graph_op_name_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      graph_op_name, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.ApiDef.graph_op_name)
+}
+
+// .tensorflow.ApiDef.Visibility visibility = 2;
+inline void ApiDef::clear_visibility() {
+  visibility_ = 0;
+}
+inline ::tensorflow::ApiDef_Visibility ApiDef::visibility() const {
+  // @@protoc_insertion_point(field_get:tensorflow.ApiDef.visibility)
+  return static_cast< ::tensorflow::ApiDef_Visibility >(visibility_);
+}
+inline void ApiDef::set_visibility(::tensorflow::ApiDef_Visibility value) {
+  
+  visibility_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.ApiDef.visibility)
+}
+
+// repeated .tensorflow.ApiDef.Endpoint endpoint = 3;
+inline int ApiDef::endpoint_size() const {
+  return endpoint_.size();
+}
+inline void ApiDef::clear_endpoint() {
+  endpoint_.Clear();
+}
+inline ::tensorflow::ApiDef_Endpoint* ApiDef::mutable_endpoint(int index) {
+  // @@protoc_insertion_point(field_mutable:tensorflow.ApiDef.endpoint)
+  return endpoint_.Mutable(index);
+}
+inline ::google::protobuf::RepeatedPtrField< ::tensorflow::ApiDef_Endpoint >*
+ApiDef::mutable_endpoint() {
+  // @@protoc_insertion_point(field_mutable_list:tensorflow.ApiDef.endpoint)
+  return &endpoint_;
+}
+inline const ::tensorflow::ApiDef_Endpoint& ApiDef::endpoint(int index) const {
+  // @@protoc_insertion_point(field_get:tensorflow.ApiDef.endpoint)
+  return endpoint_.Get(index);
+}
+inline ::tensorflow::ApiDef_Endpoint* ApiDef::add_endpoint() {
+  // @@protoc_insertion_point(field_add:tensorflow.ApiDef.endpoint)
+  return endpoint_.Add();
+}
+inline const ::google::protobuf::RepeatedPtrField< ::tensorflow::ApiDef_Endpoint >&
+ApiDef::endpoint() const {
+  // @@protoc_insertion_point(field_list:tensorflow.ApiDef.endpoint)
+  return endpoint_;
+}
+
+// repeated .tensorflow.ApiDef.Arg in_arg = 4;
+inline int ApiDef::in_arg_size() const {
+  return in_arg_.size();
+}
+inline void ApiDef::clear_in_arg() {
+  in_arg_.Clear();
+}
+inline ::tensorflow::ApiDef_Arg* ApiDef::mutable_in_arg(int index) {
+  // @@protoc_insertion_point(field_mutable:tensorflow.ApiDef.in_arg)
+  return in_arg_.Mutable(index);
+}
+inline ::google::protobuf::RepeatedPtrField< ::tensorflow::ApiDef_Arg >*
+ApiDef::mutable_in_arg() {
+  // @@protoc_insertion_point(field_mutable_list:tensorflow.ApiDef.in_arg)
+  return &in_arg_;
+}
+inline const ::tensorflow::ApiDef_Arg& ApiDef::in_arg(int index) const {
+  // @@protoc_insertion_point(field_get:tensorflow.ApiDef.in_arg)
+  return in_arg_.Get(index);
+}
+inline ::tensorflow::ApiDef_Arg* ApiDef::add_in_arg() {
+  // @@protoc_insertion_point(field_add:tensorflow.ApiDef.in_arg)
+  return in_arg_.Add();
+}
+inline const ::google::protobuf::RepeatedPtrField< ::tensorflow::ApiDef_Arg >&
+ApiDef::in_arg() const {
+  // @@protoc_insertion_point(field_list:tensorflow.ApiDef.in_arg)
+  return in_arg_;
+}
+
+// repeated .tensorflow.ApiDef.Arg out_arg = 5;
+inline int ApiDef::out_arg_size() const {
+  return out_arg_.size();
+}
+inline void ApiDef::clear_out_arg() {
+  out_arg_.Clear();
+}
+inline ::tensorflow::ApiDef_Arg* ApiDef::mutable_out_arg(int index) {
+  // @@protoc_insertion_point(field_mutable:tensorflow.ApiDef.out_arg)
+  return out_arg_.Mutable(index);
+}
+inline ::google::protobuf::RepeatedPtrField< ::tensorflow::ApiDef_Arg >*
+ApiDef::mutable_out_arg() {
+  // @@protoc_insertion_point(field_mutable_list:tensorflow.ApiDef.out_arg)
+  return &out_arg_;
+}
+inline const ::tensorflow::ApiDef_Arg& ApiDef::out_arg(int index) const {
+  // @@protoc_insertion_point(field_get:tensorflow.ApiDef.out_arg)
+  return out_arg_.Get(index);
+}
+inline ::tensorflow::ApiDef_Arg* ApiDef::add_out_arg() {
+  // @@protoc_insertion_point(field_add:tensorflow.ApiDef.out_arg)
+  return out_arg_.Add();
+}
+inline const ::google::protobuf::RepeatedPtrField< ::tensorflow::ApiDef_Arg >&
+ApiDef::out_arg() const {
+  // @@protoc_insertion_point(field_list:tensorflow.ApiDef.out_arg)
+  return out_arg_;
+}
+
+// repeated string arg_order = 11;
+inline int ApiDef::arg_order_size() const {
+  return arg_order_.size();
+}
+inline void ApiDef::clear_arg_order() {
+  arg_order_.Clear();
+}
+inline const ::std::string& ApiDef::arg_order(int index) const {
+  // @@protoc_insertion_point(field_get:tensorflow.ApiDef.arg_order)
+  return arg_order_.Get(index);
+}
+inline ::std::string* ApiDef::mutable_arg_order(int index) {
+  // @@protoc_insertion_point(field_mutable:tensorflow.ApiDef.arg_order)
+  return arg_order_.Mutable(index);
+}
+inline void ApiDef::set_arg_order(int index, const ::std::string& value) {
+  // @@protoc_insertion_point(field_set:tensorflow.ApiDef.arg_order)
+  arg_order_.Mutable(index)->assign(value);
+}
+#if LANG_CXX11
+inline void ApiDef::set_arg_order(int index, ::std::string&& value) {
+  // @@protoc_insertion_point(field_set:tensorflow.ApiDef.arg_order)
+  arg_order_.Mutable(index)->assign(std::move(value));
+}
+#endif
+inline void ApiDef::set_arg_order(int index, const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  arg_order_.Mutable(index)->assign(value);
+  // @@protoc_insertion_point(field_set_char:tensorflow.ApiDef.arg_order)
+}
+inline void ApiDef::set_arg_order(int index, const char* value, size_t size) {
+  arg_order_.Mutable(index)->assign(
+    reinterpret_cast<const char*>(value), size);
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.ApiDef.arg_order)
+}
+inline ::std::string* ApiDef::add_arg_order() {
+  // @@protoc_insertion_point(field_add_mutable:tensorflow.ApiDef.arg_order)
+  return arg_order_.Add();
+}
+inline void ApiDef::add_arg_order(const ::std::string& value) {
+  arg_order_.Add()->assign(value);
+  // @@protoc_insertion_point(field_add:tensorflow.ApiDef.arg_order)
+}
+#if LANG_CXX11
+inline void ApiDef::add_arg_order(::std::string&& value) {
+  arg_order_.Add(std::move(value));
+  // @@protoc_insertion_point(field_add:tensorflow.ApiDef.arg_order)
+}
+#endif
+inline void ApiDef::add_arg_order(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  arg_order_.Add()->assign(value);
+  // @@protoc_insertion_point(field_add_char:tensorflow.ApiDef.arg_order)
+}
+inline void ApiDef::add_arg_order(const char* value, size_t size) {
+  arg_order_.Add()->assign(reinterpret_cast<const char*>(value), size);
+  // @@protoc_insertion_point(field_add_pointer:tensorflow.ApiDef.arg_order)
+}
+inline const ::google::protobuf::RepeatedPtrField<::std::string>&
+ApiDef::arg_order() const {
+  // @@protoc_insertion_point(field_list:tensorflow.ApiDef.arg_order)
+  return arg_order_;
+}
+inline ::google::protobuf::RepeatedPtrField<::std::string>*
+ApiDef::mutable_arg_order() {
+  // @@protoc_insertion_point(field_mutable_list:tensorflow.ApiDef.arg_order)
+  return &arg_order_;
+}
+
+// repeated .tensorflow.ApiDef.Attr attr = 6;
+inline int ApiDef::attr_size() const {
+  return attr_.size();
+}
+inline void ApiDef::clear_attr() {
+  attr_.Clear();
+}
+inline ::tensorflow::ApiDef_Attr* ApiDef::mutable_attr(int index) {
+  // @@protoc_insertion_point(field_mutable:tensorflow.ApiDef.attr)
+  return attr_.Mutable(index);
+}
+inline ::google::protobuf::RepeatedPtrField< ::tensorflow::ApiDef_Attr >*
+ApiDef::mutable_attr() {
+  // @@protoc_insertion_point(field_mutable_list:tensorflow.ApiDef.attr)
+  return &attr_;
+}
+inline const ::tensorflow::ApiDef_Attr& ApiDef::attr(int index) const {
+  // @@protoc_insertion_point(field_get:tensorflow.ApiDef.attr)
+  return attr_.Get(index);
+}
+inline ::tensorflow::ApiDef_Attr* ApiDef::add_attr() {
+  // @@protoc_insertion_point(field_add:tensorflow.ApiDef.attr)
+  return attr_.Add();
+}
+inline const ::google::protobuf::RepeatedPtrField< ::tensorflow::ApiDef_Attr >&
+ApiDef::attr() const {
+  // @@protoc_insertion_point(field_list:tensorflow.ApiDef.attr)
+  return attr_;
+}
+
+// string summary = 7;
+inline void ApiDef::clear_summary() {
+  summary_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline const ::std::string& ApiDef::summary() const {
+  // @@protoc_insertion_point(field_get:tensorflow.ApiDef.summary)
+  return summary_.Get();
+}
+inline void ApiDef::set_summary(const ::std::string& value) {
+  
+  summary_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set:tensorflow.ApiDef.summary)
+}
+#if LANG_CXX11
+inline void ApiDef::set_summary(::std::string&& value) {
+  
+  summary_.Set(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.ApiDef.summary)
+}
+#endif
+inline void ApiDef::set_summary(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  summary_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
+              GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_char:tensorflow.ApiDef.summary)
+}
+inline void ApiDef::set_summary(const char* value,
+    size_t size) {
+  
+  summary_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
+      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.ApiDef.summary)
+}
+inline ::std::string* ApiDef::mutable_summary() {
+  
+  // @@protoc_insertion_point(field_mutable:tensorflow.ApiDef.summary)
+  return summary_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline ::std::string* ApiDef::release_summary() {
+  // @@protoc_insertion_point(field_release:tensorflow.ApiDef.summary)
+  
+  return summary_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline void ApiDef::set_allocated_summary(::std::string* summary) {
+  if (summary != NULL) {
+    
+  } else {
+    
+  }
+  summary_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), summary,
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.ApiDef.summary)
+}
+inline ::std::string* ApiDef::unsafe_arena_release_summary() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.ApiDef.summary)
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  
+  return summary_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      GetArenaNoVirtual());
+}
+inline void ApiDef::unsafe_arena_set_allocated_summary(
+    ::std::string* summary) {
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (summary != NULL) {
+    
+  } else {
+    
+  }
+  summary_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      summary, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.ApiDef.summary)
+}
+
+// string description = 8;
+inline void ApiDef::clear_description() {
+  description_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline const ::std::string& ApiDef::description() const {
+  // @@protoc_insertion_point(field_get:tensorflow.ApiDef.description)
+  return description_.Get();
+}
+inline void ApiDef::set_description(const ::std::string& value) {
+  
+  description_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set:tensorflow.ApiDef.description)
+}
+#if LANG_CXX11
+inline void ApiDef::set_description(::std::string&& value) {
+  
+  description_.Set(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.ApiDef.description)
+}
+#endif
+inline void ApiDef::set_description(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  description_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
+              GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_char:tensorflow.ApiDef.description)
+}
+inline void ApiDef::set_description(const char* value,
+    size_t size) {
+  
+  description_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
+      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.ApiDef.description)
+}
+inline ::std::string* ApiDef::mutable_description() {
+  
+  // @@protoc_insertion_point(field_mutable:tensorflow.ApiDef.description)
+  return description_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline ::std::string* ApiDef::release_description() {
+  // @@protoc_insertion_point(field_release:tensorflow.ApiDef.description)
+  
+  return description_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline void ApiDef::set_allocated_description(::std::string* description) {
+  if (description != NULL) {
+    
+  } else {
+    
+  }
+  description_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), description,
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.ApiDef.description)
+}
+inline ::std::string* ApiDef::unsafe_arena_release_description() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.ApiDef.description)
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  
+  return description_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      GetArenaNoVirtual());
+}
+inline void ApiDef::unsafe_arena_set_allocated_description(
+    ::std::string* description) {
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (description != NULL) {
+    
+  } else {
+    
+  }
+  description_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      description, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.ApiDef.description)
+}
+
+// string description_prefix = 9;
+inline void ApiDef::clear_description_prefix() {
+  description_prefix_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline const ::std::string& ApiDef::description_prefix() const {
+  // @@protoc_insertion_point(field_get:tensorflow.ApiDef.description_prefix)
+  return description_prefix_.Get();
+}
+inline void ApiDef::set_description_prefix(const ::std::string& value) {
+  
+  description_prefix_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set:tensorflow.ApiDef.description_prefix)
+}
+#if LANG_CXX11
+inline void ApiDef::set_description_prefix(::std::string&& value) {
+  
+  description_prefix_.Set(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.ApiDef.description_prefix)
+}
+#endif
+inline void ApiDef::set_description_prefix(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  description_prefix_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
+              GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_char:tensorflow.ApiDef.description_prefix)
+}
+inline void ApiDef::set_description_prefix(const char* value,
+    size_t size) {
+  
+  description_prefix_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
+      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.ApiDef.description_prefix)
+}
+inline ::std::string* ApiDef::mutable_description_prefix() {
+  
+  // @@protoc_insertion_point(field_mutable:tensorflow.ApiDef.description_prefix)
+  return description_prefix_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline ::std::string* ApiDef::release_description_prefix() {
+  // @@protoc_insertion_point(field_release:tensorflow.ApiDef.description_prefix)
+  
+  return description_prefix_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline void ApiDef::set_allocated_description_prefix(::std::string* description_prefix) {
+  if (description_prefix != NULL) {
+    
+  } else {
+    
+  }
+  description_prefix_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), description_prefix,
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.ApiDef.description_prefix)
+}
+inline ::std::string* ApiDef::unsafe_arena_release_description_prefix() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.ApiDef.description_prefix)
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  
+  return description_prefix_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      GetArenaNoVirtual());
+}
+inline void ApiDef::unsafe_arena_set_allocated_description_prefix(
+    ::std::string* description_prefix) {
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (description_prefix != NULL) {
+    
+  } else {
+    
+  }
+  description_prefix_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      description_prefix, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.ApiDef.description_prefix)
+}
+
+// string description_suffix = 10;
+inline void ApiDef::clear_description_suffix() {
+  description_suffix_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline const ::std::string& ApiDef::description_suffix() const {
+  // @@protoc_insertion_point(field_get:tensorflow.ApiDef.description_suffix)
+  return description_suffix_.Get();
+}
+inline void ApiDef::set_description_suffix(const ::std::string& value) {
+  
+  description_suffix_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set:tensorflow.ApiDef.description_suffix)
+}
+#if LANG_CXX11
+inline void ApiDef::set_description_suffix(::std::string&& value) {
+  
+  description_suffix_.Set(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.ApiDef.description_suffix)
+}
+#endif
+inline void ApiDef::set_description_suffix(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  description_suffix_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
+              GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_char:tensorflow.ApiDef.description_suffix)
+}
+inline void ApiDef::set_description_suffix(const char* value,
+    size_t size) {
+  
+  description_suffix_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
+      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.ApiDef.description_suffix)
+}
+inline ::std::string* ApiDef::mutable_description_suffix() {
+  
+  // @@protoc_insertion_point(field_mutable:tensorflow.ApiDef.description_suffix)
+  return description_suffix_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline ::std::string* ApiDef::release_description_suffix() {
+  // @@protoc_insertion_point(field_release:tensorflow.ApiDef.description_suffix)
+  
+  return description_suffix_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline void ApiDef::set_allocated_description_suffix(::std::string* description_suffix) {
+  if (description_suffix != NULL) {
+    
+  } else {
+    
+  }
+  description_suffix_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), description_suffix,
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.ApiDef.description_suffix)
+}
+inline ::std::string* ApiDef::unsafe_arena_release_description_suffix() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.ApiDef.description_suffix)
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  
+  return description_suffix_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      GetArenaNoVirtual());
+}
+inline void ApiDef::unsafe_arena_set_allocated_description_suffix(
+    ::std::string* description_suffix) {
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (description_suffix != NULL) {
+    
+  } else {
+    
+  }
+  description_suffix_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      description_suffix, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.ApiDef.description_suffix)
+}
+
+// -------------------------------------------------------------------
+
+// ApiDefs
+
+// repeated .tensorflow.ApiDef op = 1;
+inline int ApiDefs::op_size() const {
+  return op_.size();
+}
+inline void ApiDefs::clear_op() {
+  op_.Clear();
+}
+inline ::tensorflow::ApiDef* ApiDefs::mutable_op(int index) {
+  // @@protoc_insertion_point(field_mutable:tensorflow.ApiDefs.op)
+  return op_.Mutable(index);
+}
+inline ::google::protobuf::RepeatedPtrField< ::tensorflow::ApiDef >*
+ApiDefs::mutable_op() {
+  // @@protoc_insertion_point(field_mutable_list:tensorflow.ApiDefs.op)
+  return &op_;
+}
+inline const ::tensorflow::ApiDef& ApiDefs::op(int index) const {
+  // @@protoc_insertion_point(field_get:tensorflow.ApiDefs.op)
+  return op_.Get(index);
+}
+inline ::tensorflow::ApiDef* ApiDefs::add_op() {
+  // @@protoc_insertion_point(field_add:tensorflow.ApiDefs.op)
+  return op_.Add();
+}
+inline const ::google::protobuf::RepeatedPtrField< ::tensorflow::ApiDef >&
+ApiDefs::op() const {
+  // @@protoc_insertion_point(field_list:tensorflow.ApiDefs.op)
+  return op_;
+}
+
+#ifdef __GNUC__
+  #pragma GCC diagnostic pop
+#endif  // __GNUC__
+// -------------------------------------------------------------------
+
+// -------------------------------------------------------------------
+
+// -------------------------------------------------------------------
+
+// -------------------------------------------------------------------
+
+
+// @@protoc_insertion_point(namespace_scope)
+
+}  // namespace tensorflow
+
+namespace google {
+namespace protobuf {
+
+template <> struct is_proto_enum< ::tensorflow::ApiDef_Visibility> : ::std::true_type {};
+template <>
+inline const EnumDescriptor* GetEnumDescriptor< ::tensorflow::ApiDef_Visibility>() {
+  return ::tensorflow::ApiDef_Visibility_descriptor();
+}
+
+}  // namespace protobuf
+}  // namespace google
+
+// @@protoc_insertion_point(global_scope)
+
+#include <google/protobuf/port_undef.inc>
+#endif  // PROTOBUF_INCLUDED_tensorflow_2fcore_2fframework_2fapi_5fdef_2eproto
diff --git a/tensorflow/core/framework/api_def.proto b/tensorflow/core/framework/api_def.proto
new file mode 100644 (file)
index 0000000..3f8dd27
--- /dev/null
@@ -0,0 +1,123 @@
+// Defines the text format for including per-op API definition and
+// overrides for client language op code generators.
+
+syntax = "proto3";
+
+package tensorflow;
+option cc_enable_arenas = true;
+option java_outer_classname = "ApiDefProtos";
+option java_multiple_files = true;
+option java_package = "org.tensorflow.framework";
+option go_package = "github.com/tensorflow/tensorflow/tensorflow/go/core/framework";
+import "tensorflow/core/framework/attr_value.proto";
+
+// Used to specify and override the default API & behavior in the
+// generated code for client languages, from what you would get from
+// the OpDef alone. There will be a set of ApiDefs that are common
+// to all client languages, and another set per client language.
+// The per-client-language ApiDefs will inherit values from the
+// common ApiDefs which it can either replace or modify.
+//
+// We separate the API definition from the OpDef so we can evolve the
+// API while remaining backwards compatible when interpretting old
+// graphs.  Overrides go in an "api_def.pbtxt" file with a text-format
+// ApiDefs message.
+//
+// WARNING: Be *very* careful changing the API for any existing op --
+// you can change the semantics of existing code.  These changes may
+// need to wait until a major release of TensorFlow to avoid breaking
+// our compatibility promises.
+message ApiDef {
+  // Name of the op (in the OpDef) to specify the API for.
+  string graph_op_name = 1;
+
+  enum Visibility {
+    // Normally this is "VISIBLE" unless you are inheriting a
+    // different value from another ApiDef.
+    DEFAULT_VISIBILITY = 0;
+    // Publicly visible in the API.
+    VISIBLE = 1;
+    // Do not include this op in the generated API. If visibility is
+    // set to 'SKIP', other fields are ignored for this op.
+    SKIP = 2;
+    // Hide this op by putting it into an internal namespace (or whatever
+    // is appropriate in the target language).
+    HIDDEN = 3;
+  }
+  Visibility visibility = 2;
+
+  // If you specify any endpoint, this will replace all of the
+  // inherited endpoints.  The first endpoint should be the
+  // "canonical" endpoint, and should not be deprecated (unless all
+  // endpoints are deprecated).
+  message Endpoint {
+    // Name should be either like "CamelCaseName" or
+    // "Package.CamelCaseName". Client-language-specific ApiDefs may
+    // use a snake_case convention instead of CamelCase.
+    string name = 1;
+
+    // If this endpoint is deprecated, set deprecation_message to a
+    // message that should be logged when the endpoint is used.
+    // The message should indicate alternative endpoint to use, if any.
+    string deprecation_message = 2;
+  }
+  repeated Endpoint endpoint = 3;
+
+  message Arg {
+    string name = 1;
+
+    // Change the name used to access this arg in the API from what
+    // is used in the GraphDef.  Note that these names in `backticks`
+    // will also be replaced in the summary & description fields.
+    string rename_to = 2;
+
+    // Note: this will replace any inherited arg doc. There is no
+    // current way of modifying arg descriptions (other than replacing
+    // them entirely) as can be done with op descriptions.
+    string description = 3;
+  }
+  repeated Arg in_arg = 4;
+  repeated Arg out_arg = 5;
+  // List of original in_arg names to specify new argument order.
+  // Length of arg_order should be either empty to keep current order
+  // or match size of in_arg.
+  repeated string arg_order = 11;
+
+  // Description of the graph-construction-time configuration of this
+  // Op.  That is to say, this describes the attr fields that will
+  // be specified in the NodeDef.
+  message Attr {
+    string name = 1;
+
+    // Change the name used to access this attr in the API from what
+    // is used in the GraphDef.  Note that these names in `backticks`
+    // will also be replaced in the summary & description fields.
+    string rename_to = 2;
+
+    // Specify a new default value to use for this attr.  This default
+    // will be used when creating new graphs, as opposed to the
+    // default in the OpDef, which will be used when interpreting old
+    // GraphDefs.
+    AttrValue default_value = 3;
+
+    // Note: this will replace any inherited attr doc, there is no current
+    // way of modifying attr descriptions as can be done with op descriptions.
+    string description = 4;
+  }
+  repeated Attr attr = 6;
+
+  // One-line human-readable description of what the Op does.
+  string summary = 7;
+
+  // Additional, longer human-readable description of what the Op does.
+  string description = 8;
+
+  // Modify an existing/inherited description by adding text to the beginning
+  // or end.
+  string description_prefix = 9;
+  string description_suffix = 10;
+}
+
+message ApiDefs {
+  repeated ApiDef op = 1;
+}
diff --git a/tensorflow/core/framework/attr_value.pb.cc b/tensorflow/core/framework/attr_value.pb.cc
new file mode 100644 (file)
index 0000000..900dc16
--- /dev/null
@@ -0,0 +1,2594 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: tensorflow/core/framework/attr_value.proto
+
+#include "tensorflow/core/framework/attr_value.pb.h"
+
+#include <algorithm>
+
+#include <google/protobuf/stubs/common.h>
+#include <google/protobuf/io/coded_stream.h>
+#include <google/protobuf/extension_set.h>
+#include <google/protobuf/wire_format_lite_inl.h>
+#include <google/protobuf/descriptor.h>
+#include <google/protobuf/generated_message_reflection.h>
+#include <google/protobuf/reflection_ops.h>
+#include <google/protobuf/wire_format.h>
+// @@protoc_insertion_point(includes)
+#include <google/protobuf/port_def.inc>
+
+extern PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fframework_2fattr_5fvalue_2eproto ::google::protobuf::internal::SCCInfo<2> scc_info_AttrValue_tensorflow_2fcore_2fframework_2fattr_5fvalue_2eproto;
+extern PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fframework_2ftensor_2eproto ::google::protobuf::internal::SCCInfo<2> scc_info_TensorProto_tensorflow_2fcore_2fframework_2ftensor_2eproto;
+extern PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fframework_2ftensor_5fshape_2eproto ::google::protobuf::internal::SCCInfo<1> scc_info_TensorShapeProto_tensorflow_2fcore_2fframework_2ftensor_5fshape_2eproto;
+namespace tensorflow {
+class AttrValue_ListValueDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<AttrValue_ListValue> _instance;
+} _AttrValue_ListValue_default_instance_;
+class AttrValueDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<AttrValue> _instance;
+  ::google::protobuf::internal::ArenaStringPtr s_;
+  ::google::protobuf::int64 i_;
+  float f_;
+  bool b_;
+  int type_;
+  const ::tensorflow::TensorShapeProto* shape_;
+  const ::tensorflow::TensorProto* tensor_;
+  const ::tensorflow::AttrValue_ListValue* list_;
+  const ::tensorflow::NameAttrList* func_;
+  ::google::protobuf::internal::ArenaStringPtr placeholder_;
+} _AttrValue_default_instance_;
+class NameAttrList_AttrEntry_DoNotUseDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<NameAttrList_AttrEntry_DoNotUse> _instance;
+} _NameAttrList_AttrEntry_DoNotUse_default_instance_;
+class NameAttrListDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<NameAttrList> _instance;
+} _NameAttrList_default_instance_;
+}  // namespace tensorflow
+static void InitDefaultsAttrValue_tensorflow_2fcore_2fframework_2fattr_5fvalue_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_AttrValue_ListValue_default_instance_;
+    new (ptr) ::tensorflow::AttrValue_ListValue();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  {
+    void* ptr = &::tensorflow::_AttrValue_default_instance_;
+    new (ptr) ::tensorflow::AttrValue();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  {
+    void* ptr = &::tensorflow::_NameAttrList_AttrEntry_DoNotUse_default_instance_;
+    new (ptr) ::tensorflow::NameAttrList_AttrEntry_DoNotUse();
+  }
+  {
+    void* ptr = &::tensorflow::_NameAttrList_default_instance_;
+    new (ptr) ::tensorflow::NameAttrList();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::AttrValue_ListValue::InitAsDefaultInstance();
+  ::tensorflow::AttrValue::InitAsDefaultInstance();
+  ::tensorflow::NameAttrList_AttrEntry_DoNotUse::InitAsDefaultInstance();
+  ::tensorflow::NameAttrList::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<2> scc_info_AttrValue_tensorflow_2fcore_2fframework_2fattr_5fvalue_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 2, InitDefaultsAttrValue_tensorflow_2fcore_2fframework_2fattr_5fvalue_2eproto}, {
+      &scc_info_TensorShapeProto_tensorflow_2fcore_2fframework_2ftensor_5fshape_2eproto.base,
+      &scc_info_TensorProto_tensorflow_2fcore_2fframework_2ftensor_2eproto.base,}};
+
+void InitDefaults_tensorflow_2fcore_2fframework_2fattr_5fvalue_2eproto() {
+  ::google::protobuf::internal::InitSCC(&scc_info_AttrValue_tensorflow_2fcore_2fframework_2fattr_5fvalue_2eproto.base);
+}
+
+::google::protobuf::Metadata file_level_metadata_tensorflow_2fcore_2fframework_2fattr_5fvalue_2eproto[4];
+constexpr ::google::protobuf::EnumDescriptor const** file_level_enum_descriptors_tensorflow_2fcore_2fframework_2fattr_5fvalue_2eproto = nullptr;
+constexpr ::google::protobuf::ServiceDescriptor const** file_level_service_descriptors_tensorflow_2fcore_2fframework_2fattr_5fvalue_2eproto = nullptr;
+
+const ::google::protobuf::uint32 TableStruct_tensorflow_2fcore_2fframework_2fattr_5fvalue_2eproto::offsets[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = {
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::AttrValue_ListValue, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::AttrValue_ListValue, s_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::AttrValue_ListValue, i_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::AttrValue_ListValue, f_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::AttrValue_ListValue, b_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::AttrValue_ListValue, type_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::AttrValue_ListValue, shape_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::AttrValue_ListValue, tensor_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::AttrValue_ListValue, func_),
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::AttrValue, _internal_metadata_),
+  ~0u,  // no _extensions_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::AttrValue, _oneof_case_[0]),
+  ~0u,  // no _weak_field_map_
+  offsetof(::tensorflow::AttrValueDefaultTypeInternal, s_),
+  offsetof(::tensorflow::AttrValueDefaultTypeInternal, i_),
+  offsetof(::tensorflow::AttrValueDefaultTypeInternal, f_),
+  offsetof(::tensorflow::AttrValueDefaultTypeInternal, b_),
+  offsetof(::tensorflow::AttrValueDefaultTypeInternal, type_),
+  offsetof(::tensorflow::AttrValueDefaultTypeInternal, shape_),
+  offsetof(::tensorflow::AttrValueDefaultTypeInternal, tensor_),
+  offsetof(::tensorflow::AttrValueDefaultTypeInternal, list_),
+  offsetof(::tensorflow::AttrValueDefaultTypeInternal, func_),
+  offsetof(::tensorflow::AttrValueDefaultTypeInternal, placeholder_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::AttrValue, value_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::NameAttrList_AttrEntry_DoNotUse, _has_bits_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::NameAttrList_AttrEntry_DoNotUse, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::NameAttrList_AttrEntry_DoNotUse, key_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::NameAttrList_AttrEntry_DoNotUse, value_),
+  0,
+  1,
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::NameAttrList, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::NameAttrList, name_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::NameAttrList, attr_),
+};
+static const ::google::protobuf::internal::MigrationSchema schemas[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = {
+  { 0, -1, sizeof(::tensorflow::AttrValue_ListValue)},
+  { 13, -1, sizeof(::tensorflow::AttrValue)},
+  { 29, 36, sizeof(::tensorflow::NameAttrList_AttrEntry_DoNotUse)},
+  { 38, -1, sizeof(::tensorflow::NameAttrList)},
+};
+
+static ::google::protobuf::Message const * const file_default_instances[] = {
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_AttrValue_ListValue_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_AttrValue_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_NameAttrList_AttrEntry_DoNotUse_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_NameAttrList_default_instance_),
+};
+
+::google::protobuf::internal::AssignDescriptorsTable assign_descriptors_table_tensorflow_2fcore_2fframework_2fattr_5fvalue_2eproto = {
+  {}, AddDescriptors_tensorflow_2fcore_2fframework_2fattr_5fvalue_2eproto, "tensorflow/core/framework/attr_value.proto", schemas,
+  file_default_instances, TableStruct_tensorflow_2fcore_2fframework_2fattr_5fvalue_2eproto::offsets,
+  file_level_metadata_tensorflow_2fcore_2fframework_2fattr_5fvalue_2eproto, 4, file_level_enum_descriptors_tensorflow_2fcore_2fframework_2fattr_5fvalue_2eproto, file_level_service_descriptors_tensorflow_2fcore_2fframework_2fattr_5fvalue_2eproto,
+};
+
+::google::protobuf::internal::DescriptorTable descriptor_table_tensorflow_2fcore_2fframework_2fattr_5fvalue_2eproto = {
+  false, InitDefaults_tensorflow_2fcore_2fframework_2fattr_5fvalue_2eproto, 
+  "\n*tensorflow/core/framework/attr_value.p"
+  "roto\022\ntensorflow\032&tensorflow/core/framew"
+  "ork/tensor.proto\032,tensorflow/core/framew"
+  "ork/tensor_shape.proto\032%tensorflow/core/"
+  "framework/types.proto\"\246\004\n\tAttrValue\022\013\n\001s"
+  "\030\002 \001(\014H\000\022\013\n\001i\030\003 \001(\003H\000\022\013\n\001f\030\004 \001(\002H\000\022\013\n\001b\030"
+  "\005 \001(\010H\000\022$\n\004type\030\006 \001(\0162\024.tensorflow.DataT"
+  "ypeH\000\022-\n\005shape\030\007 \001(\0132\034.tensorflow.Tensor"
+  "ShapeProtoH\000\022)\n\006tensor\030\010 \001(\0132\027.tensorflo"
+  "w.TensorProtoH\000\022/\n\004list\030\001 \001(\0132\037.tensorfl"
+  "ow.AttrValue.ListValueH\000\022(\n\004func\030\n \001(\0132\030"
+  ".tensorflow.NameAttrListH\000\022\025\n\013placeholde"
+  "r\030\t \001(\tH\000\032\351\001\n\tListValue\022\t\n\001s\030\002 \003(\014\022\r\n\001i\030"
+  "\003 \003(\003B\002\020\001\022\r\n\001f\030\004 \003(\002B\002\020\001\022\r\n\001b\030\005 \003(\010B\002\020\001\022"
+  "&\n\004type\030\006 \003(\0162\024.tensorflow.DataTypeB\002\020\001\022"
+  "+\n\005shape\030\007 \003(\0132\034.tensorflow.TensorShapeP"
+  "roto\022\'\n\006tensor\030\010 \003(\0132\027.tensorflow.Tensor"
+  "Proto\022&\n\004func\030\t \003(\0132\030.tensorflow.NameAtt"
+  "rListB\007\n\005value\"\222\001\n\014NameAttrList\022\014\n\004name\030"
+  "\001 \001(\t\0220\n\004attr\030\002 \003(\0132\".tensorflow.NameAtt"
+  "rList.AttrEntry\032B\n\tAttrEntry\022\013\n\003key\030\001 \001("
+  "\t\022$\n\005value\030\002 \001(\0132\025.tensorflow.AttrValue:"
+  "\0028\001Bo\n\030org.tensorflow.frameworkB\017AttrVal"
+  "ueProtosP\001Z=github.com/tensorflow/tensor"
+  "flow/tensorflow/go/core/framework\370\001\001b\006pr"
+  "oto3"
+,
+  "tensorflow/core/framework/attr_value.proto", &assign_descriptors_table_tensorflow_2fcore_2fframework_2fattr_5fvalue_2eproto, 1004,
+};
+
+void AddDescriptors_tensorflow_2fcore_2fframework_2fattr_5fvalue_2eproto() {
+  static constexpr ::google::protobuf::internal::InitFunc deps[3] =
+  {
+    ::AddDescriptors_tensorflow_2fcore_2fframework_2ftensor_2eproto,
+    ::AddDescriptors_tensorflow_2fcore_2fframework_2ftensor_5fshape_2eproto,
+    ::AddDescriptors_tensorflow_2fcore_2fframework_2ftypes_2eproto,
+  };
+ ::google::protobuf::internal::AddDescriptors(&descriptor_table_tensorflow_2fcore_2fframework_2fattr_5fvalue_2eproto, deps, 3);
+}
+
+// Force running AddDescriptors() at dynamic initialization time.
+static bool dynamic_init_dummy_tensorflow_2fcore_2fframework_2fattr_5fvalue_2eproto = []() { AddDescriptors_tensorflow_2fcore_2fframework_2fattr_5fvalue_2eproto(); return true; }();
+namespace tensorflow {
+
+// ===================================================================
+
+void AttrValue_ListValue::InitAsDefaultInstance() {
+}
+class AttrValue_ListValue::HasBitSetters {
+ public:
+};
+
+void AttrValue_ListValue::clear_shape() {
+  shape_.Clear();
+}
+void AttrValue_ListValue::clear_tensor() {
+  tensor_.Clear();
+}
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int AttrValue_ListValue::kSFieldNumber;
+const int AttrValue_ListValue::kIFieldNumber;
+const int AttrValue_ListValue::kFFieldNumber;
+const int AttrValue_ListValue::kBFieldNumber;
+const int AttrValue_ListValue::kTypeFieldNumber;
+const int AttrValue_ListValue::kShapeFieldNumber;
+const int AttrValue_ListValue::kTensorFieldNumber;
+const int AttrValue_ListValue::kFuncFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+AttrValue_ListValue::AttrValue_ListValue()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.AttrValue.ListValue)
+}
+AttrValue_ListValue::AttrValue_ListValue(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena),
+  s_(arena),
+  i_(arena),
+  f_(arena),
+  b_(arena),
+  type_(arena),
+  shape_(arena),
+  tensor_(arena),
+  func_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.AttrValue.ListValue)
+}
+AttrValue_ListValue::AttrValue_ListValue(const AttrValue_ListValue& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL),
+      s_(from.s_),
+      i_(from.i_),
+      f_(from.f_),
+      b_(from.b_),
+      type_(from.type_),
+      shape_(from.shape_),
+      tensor_(from.tensor_),
+      func_(from.func_) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  // @@protoc_insertion_point(copy_constructor:tensorflow.AttrValue.ListValue)
+}
+
+void AttrValue_ListValue::SharedCtor() {
+  ::google::protobuf::internal::InitSCC(
+      &scc_info_AttrValue_tensorflow_2fcore_2fframework_2fattr_5fvalue_2eproto.base);
+}
+
+AttrValue_ListValue::~AttrValue_ListValue() {
+  // @@protoc_insertion_point(destructor:tensorflow.AttrValue.ListValue)
+  SharedDtor();
+}
+
+void AttrValue_ListValue::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+}
+
+void AttrValue_ListValue::ArenaDtor(void* object) {
+  AttrValue_ListValue* _this = reinterpret_cast< AttrValue_ListValue* >(object);
+  (void)_this;
+}
+void AttrValue_ListValue::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void AttrValue_ListValue::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const AttrValue_ListValue& AttrValue_ListValue::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_AttrValue_tensorflow_2fcore_2fframework_2fattr_5fvalue_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void AttrValue_ListValue::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.AttrValue.ListValue)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  s_.Clear();
+  i_.Clear();
+  f_.Clear();
+  b_.Clear();
+  type_.Clear();
+  shape_.Clear();
+  tensor_.Clear();
+  func_.Clear();
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* AttrValue_ListValue::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<AttrValue_ListValue*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // repeated bytes s = 2;
+      case 2: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 18) goto handle_unusual;
+        do {
+          ptr = Varint::Parse32Inline(ptr, &size);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          parser_till_end = ::google::protobuf::internal::StringParser;
+          ::std::string* str = msg->add_s();
+          str->clear();
+          object = str;
+          if (size > end - ptr) goto len_delim_till_end;
+          str->append(ptr, size);
+          ptr += size;
+          if (ptr >= end) break;
+        } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 18 && (ptr += 1));
+        break;
+      }
+      // repeated int64 i = 3 [packed = true];
+      case 3: {
+        if (static_cast<::google::protobuf::uint8>(tag) == 26) {
+          ptr = Varint::Parse32Inline(ptr, &size);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          parser_till_end = ::google::protobuf::internal::PackedInt64Parser;
+          object = msg->mutable_i();
+          if (size > end - ptr) goto len_delim_till_end;
+          auto newend = ptr + size;
+          if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+          break;
+        } else if (static_cast<::google::protobuf::uint8>(tag) != 24) goto handle_unusual;
+        do {
+          ::google::protobuf::uint64 val;
+          ptr = Varint::Parse64(ptr, &val);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          ::google::protobuf::int64 value = val;
+          msg->add_i(value);
+          if (ptr >= end) break;
+        } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 24 && (ptr += 1));
+        break;
+      }
+      // repeated float f = 4 [packed = true];
+      case 4: {
+        if (static_cast<::google::protobuf::uint8>(tag) == 34) {
+          ptr = Varint::Parse32Inline(ptr, &size);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          parser_till_end = ::google::protobuf::internal::PackedFloatParser;
+          object = msg->mutable_f();
+          if (size > end - ptr) goto len_delim_till_end;
+          auto newend = ptr + size;
+          if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+          break;
+        } else if (static_cast<::google::protobuf::uint8>(tag) != 37) goto handle_unusual;
+        do {
+          float val;
+          std::memcpy(&val, ptr, 4);
+          ptr += 4;
+          msg->add_f(val);
+          if (ptr >= end) break;
+        } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 37 && (ptr += 1));
+        break;
+      }
+      // repeated bool b = 5 [packed = true];
+      case 5: {
+        if (static_cast<::google::protobuf::uint8>(tag) == 42) {
+          ptr = Varint::Parse32Inline(ptr, &size);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          parser_till_end = ::google::protobuf::internal::PackedBoolParser;
+          object = msg->mutable_b();
+          if (size > end - ptr) goto len_delim_till_end;
+          auto newend = ptr + size;
+          if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+          break;
+        } else if (static_cast<::google::protobuf::uint8>(tag) != 40) goto handle_unusual;
+        do {
+          ::google::protobuf::uint64 val;
+          ptr = Varint::Parse64(ptr, &val);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          bool value = val;
+          msg->add_b(value);
+          if (ptr >= end) break;
+        } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 40 && (ptr += 1));
+        break;
+      }
+      // repeated .tensorflow.DataType type = 6 [packed = true];
+      case 6: {
+        if (static_cast<::google::protobuf::uint8>(tag) == 50) {
+          ptr = Varint::Parse32Inline(ptr, &size);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          parser_till_end = ::google::protobuf::internal::PackedEnumParser;
+          object = msg->mutable_type();
+          if (size > end - ptr) goto len_delim_till_end;
+          auto newend = ptr + size;
+          if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+          break;
+        } else if (static_cast<::google::protobuf::uint8>(tag) != 48) goto handle_unusual;
+        do {
+          ::google::protobuf::uint64 val;
+          ptr = Varint::Parse64(ptr, &val);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          ::tensorflow::DataType value = static_cast<::tensorflow::DataType>(val);
+          msg->add_type(value);
+          if (ptr >= end) break;
+        } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 48 && (ptr += 1));
+        break;
+      }
+      // repeated .tensorflow.TensorShapeProto shape = 7;
+      case 7: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 58) goto handle_unusual;
+        do {
+          ptr = Varint::Parse32Inline(ptr, &size);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          parser_till_end = ::tensorflow::TensorShapeProto::_InternalParse;
+          object = msg->add_shape();
+          if (size > end - ptr) goto len_delim_till_end;
+          auto newend = ptr + size;
+          bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                         ptr, newend);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          ptr = newend;
+          if (ptr >= end) break;
+        } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 58 && (ptr += 1));
+        break;
+      }
+      // repeated .tensorflow.TensorProto tensor = 8;
+      case 8: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 66) goto handle_unusual;
+        do {
+          ptr = Varint::Parse32Inline(ptr, &size);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          parser_till_end = ::tensorflow::TensorProto::_InternalParse;
+          object = msg->add_tensor();
+          if (size > end - ptr) goto len_delim_till_end;
+          auto newend = ptr + size;
+          bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                         ptr, newend);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          ptr = newend;
+          if (ptr >= end) break;
+        } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 66 && (ptr += 1));
+        break;
+      }
+      // repeated .tensorflow.NameAttrList func = 9;
+      case 9: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 74) goto handle_unusual;
+        do {
+          ptr = Varint::Parse32Inline(ptr, &size);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          parser_till_end = ::tensorflow::NameAttrList::_InternalParse;
+          object = msg->add_func();
+          if (size > end - ptr) goto len_delim_till_end;
+          auto newend = ptr + size;
+          bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                         ptr, newend);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          ptr = newend;
+          if (ptr >= end) break;
+        } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 74 && (ptr += 1));
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool AttrValue_ListValue::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.AttrValue.ListValue)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // repeated bytes s = 2;
+      case 2: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (18 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadBytes(
+                input, this->add_s()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // repeated int64 i = 3 [packed = true];
+      case 3: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (26 & 0xFF)) {
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPackedPrimitive<
+                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>(
+                 input, this->mutable_i())));
+        } else if (static_cast< ::google::protobuf::uint8>(tag) == (24 & 0xFF)) {
+          DO_((::google::protobuf::internal::WireFormatLite::ReadRepeatedPrimitiveNoInline<
+                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>(
+                 1, 26u, input, this->mutable_i())));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // repeated float f = 4 [packed = true];
+      case 4: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (34 & 0xFF)) {
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPackedPrimitive<
+                   float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>(
+                 input, this->mutable_f())));
+        } else if (static_cast< ::google::protobuf::uint8>(tag) == (37 & 0xFF)) {
+          DO_((::google::protobuf::internal::WireFormatLite::ReadRepeatedPrimitiveNoInline<
+                   float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>(
+                 1, 34u, input, this->mutable_f())));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // repeated bool b = 5 [packed = true];
+      case 5: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (42 & 0xFF)) {
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPackedPrimitive<
+                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
+                 input, this->mutable_b())));
+        } else if (static_cast< ::google::protobuf::uint8>(tag) == (40 & 0xFF)) {
+          DO_((::google::protobuf::internal::WireFormatLite::ReadRepeatedPrimitiveNoInline<
+                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
+                 1, 42u, input, this->mutable_b())));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // repeated .tensorflow.DataType type = 6 [packed = true];
+      case 6: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (50 & 0xFF)) {
+          ::google::protobuf::uint32 length;
+          DO_(input->ReadVarint32(&length));
+          ::google::protobuf::io::CodedInputStream::Limit limit = input->PushLimit(static_cast<int>(length));
+          while (input->BytesUntilLimit() > 0) {
+            int value = 0;
+            DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>(
+                 input, &value)));
+            add_type(static_cast< ::tensorflow::DataType >(value));
+          }
+          input->PopLimit(limit);
+        } else if (static_cast< ::google::protobuf::uint8>(tag) == (48 & 0xFF)) {
+          int value = 0;
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>(
+                 input, &value)));
+          add_type(static_cast< ::tensorflow::DataType >(value));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // repeated .tensorflow.TensorShapeProto shape = 7;
+      case 7: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (58 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+                input, add_shape()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // repeated .tensorflow.TensorProto tensor = 8;
+      case 8: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (66 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+                input, add_tensor()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // repeated .tensorflow.NameAttrList func = 9;
+      case 9: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (74 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+                input, add_func()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.AttrValue.ListValue)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.AttrValue.ListValue)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void AttrValue_ListValue::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.AttrValue.ListValue)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // repeated bytes s = 2;
+  for (int i = 0, n = this->s_size(); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::WriteBytes(
+      2, this->s(i), output);
+  }
+
+  // repeated int64 i = 3 [packed = true];
+  if (this->i_size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteTag(3, ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED, output);
+    output->WriteVarint32(_i_cached_byte_size_.load(
+        std::memory_order_relaxed));
+  }
+  for (int i = 0, n = this->i_size(); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt64NoTag(
+      this->i(i), output);
+  }
+
+  // repeated float f = 4 [packed = true];
+  if (this->f_size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteTag(4, ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED, output);
+    output->WriteVarint32(_f_cached_byte_size_.load(
+        std::memory_order_relaxed));
+    ::google::protobuf::internal::WireFormatLite::WriteFloatArray(
+      this->f().data(), this->f_size(), output);
+  }
+
+  // repeated bool b = 5 [packed = true];
+  if (this->b_size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteTag(5, ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED, output);
+    output->WriteVarint32(_b_cached_byte_size_.load(
+        std::memory_order_relaxed));
+    ::google::protobuf::internal::WireFormatLite::WriteBoolArray(
+      this->b().data(), this->b_size(), output);
+  }
+
+  // repeated .tensorflow.DataType type = 6 [packed = true];
+  if (this->type_size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteTag(
+      6,
+      ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED,
+      output);
+    output->WriteVarint32(_type_cached_byte_size_.load(
+        std::memory_order_relaxed));
+  }
+  for (int i = 0, n = this->type_size(); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::WriteEnumNoTag(
+      this->type(i), output);
+  }
+
+  // repeated .tensorflow.TensorShapeProto shape = 7;
+  for (unsigned int i = 0,
+      n = static_cast<unsigned int>(this->shape_size()); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      7,
+      this->shape(static_cast<int>(i)),
+      output);
+  }
+
+  // repeated .tensorflow.TensorProto tensor = 8;
+  for (unsigned int i = 0,
+      n = static_cast<unsigned int>(this->tensor_size()); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      8,
+      this->tensor(static_cast<int>(i)),
+      output);
+  }
+
+  // repeated .tensorflow.NameAttrList func = 9;
+  for (unsigned int i = 0,
+      n = static_cast<unsigned int>(this->func_size()); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      9,
+      this->func(static_cast<int>(i)),
+      output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.AttrValue.ListValue)
+}
+
+::google::protobuf::uint8* AttrValue_ListValue::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.AttrValue.ListValue)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // repeated bytes s = 2;
+  for (int i = 0, n = this->s_size(); i < n; i++) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      WriteBytesToArray(2, this->s(i), target);
+  }
+
+  // repeated int64 i = 3 [packed = true];
+  if (this->i_size() > 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteTagToArray(
+      3,
+      ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED,
+      target);
+    target = ::google::protobuf::io::CodedOutputStream::WriteVarint32ToArray(
+        _i_cached_byte_size_.load(std::memory_order_relaxed),
+         target);
+    target = ::google::protobuf::internal::WireFormatLite::
+      WriteInt64NoTagToArray(this->i_, target);
+  }
+
+  // repeated float f = 4 [packed = true];
+  if (this->f_size() > 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteTagToArray(
+      4,
+      ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED,
+      target);
+    target = ::google::protobuf::io::CodedOutputStream::WriteVarint32ToArray(
+        _f_cached_byte_size_.load(std::memory_order_relaxed),
+         target);
+    target = ::google::protobuf::internal::WireFormatLite::
+      WriteFloatNoTagToArray(this->f_, target);
+  }
+
+  // repeated bool b = 5 [packed = true];
+  if (this->b_size() > 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteTagToArray(
+      5,
+      ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED,
+      target);
+    target = ::google::protobuf::io::CodedOutputStream::WriteVarint32ToArray(
+        _b_cached_byte_size_.load(std::memory_order_relaxed),
+         target);
+    target = ::google::protobuf::internal::WireFormatLite::
+      WriteBoolNoTagToArray(this->b_, target);
+  }
+
+  // repeated .tensorflow.DataType type = 6 [packed = true];
+  if (this->type_size() > 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteTagToArray(
+      6,
+      ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED,
+      target);
+    target = ::google::protobuf::io::CodedOutputStream::WriteVarint32ToArray(      _type_cached_byte_size_.load(std::memory_order_relaxed),
+        target);
+    target = ::google::protobuf::internal::WireFormatLite::WriteEnumNoTagToArray(
+      this->type_, target);
+  }
+
+  // repeated .tensorflow.TensorShapeProto shape = 7;
+  for (unsigned int i = 0,
+      n = static_cast<unsigned int>(this->shape_size()); i < n; i++) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        7, this->shape(static_cast<int>(i)), deterministic, target);
+  }
+
+  // repeated .tensorflow.TensorProto tensor = 8;
+  for (unsigned int i = 0,
+      n = static_cast<unsigned int>(this->tensor_size()); i < n; i++) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        8, this->tensor(static_cast<int>(i)), deterministic, target);
+  }
+
+  // repeated .tensorflow.NameAttrList func = 9;
+  for (unsigned int i = 0,
+      n = static_cast<unsigned int>(this->func_size()); i < n; i++) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        9, this->func(static_cast<int>(i)), deterministic, target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.AttrValue.ListValue)
+  return target;
+}
+
+size_t AttrValue_ListValue::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.AttrValue.ListValue)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // repeated bytes s = 2;
+  total_size += 1 *
+      ::google::protobuf::internal::FromIntSize(this->s_size());
+  for (int i = 0, n = this->s_size(); i < n; i++) {
+    total_size += ::google::protobuf::internal::WireFormatLite::BytesSize(
+      this->s(i));
+  }
+
+  // repeated int64 i = 3 [packed = true];
+  {
+    size_t data_size = ::google::protobuf::internal::WireFormatLite::
+      Int64Size(this->i_);
+    if (data_size > 0) {
+      total_size += 1 +
+        ::google::protobuf::internal::WireFormatLite::Int32Size(
+            static_cast<::google::protobuf::int32>(data_size));
+    }
+    int cached_size = ::google::protobuf::internal::ToCachedSize(data_size);
+    _i_cached_byte_size_.store(cached_size,
+                                    std::memory_order_relaxed);
+    total_size += data_size;
+  }
+
+  // repeated float f = 4 [packed = true];
+  {
+    unsigned int count = static_cast<unsigned int>(this->f_size());
+    size_t data_size = 4UL * count;
+    if (data_size > 0) {
+      total_size += 1 +
+        ::google::protobuf::internal::WireFormatLite::Int32Size(
+            static_cast<::google::protobuf::int32>(data_size));
+    }
+    int cached_size = ::google::protobuf::internal::ToCachedSize(data_size);
+    _f_cached_byte_size_.store(cached_size,
+                                    std::memory_order_relaxed);
+    total_size += data_size;
+  }
+
+  // repeated bool b = 5 [packed = true];
+  {
+    unsigned int count = static_cast<unsigned int>(this->b_size());
+    size_t data_size = 1UL * count;
+    if (data_size > 0) {
+      total_size += 1 +
+        ::google::protobuf::internal::WireFormatLite::Int32Size(
+            static_cast<::google::protobuf::int32>(data_size));
+    }
+    int cached_size = ::google::protobuf::internal::ToCachedSize(data_size);
+    _b_cached_byte_size_.store(cached_size,
+                                    std::memory_order_relaxed);
+    total_size += data_size;
+  }
+
+  // repeated .tensorflow.DataType type = 6 [packed = true];
+  {
+    size_t data_size = 0;
+    unsigned int count = static_cast<unsigned int>(this->type_size());for (unsigned int i = 0; i < count; i++) {
+      data_size += ::google::protobuf::internal::WireFormatLite::EnumSize(
+        this->type(static_cast<int>(i)));
+    }
+    if (data_size > 0) {
+      total_size += 1 +
+        ::google::protobuf::internal::WireFormatLite::Int32Size(
+            static_cast<::google::protobuf::int32>(data_size));
+    }
+    int cached_size = ::google::protobuf::internal::ToCachedSize(data_size);
+    _type_cached_byte_size_.store(cached_size,
+                                    std::memory_order_relaxed);
+    total_size += data_size;
+  }
+
+  // repeated .tensorflow.TensorShapeProto shape = 7;
+  {
+    unsigned int count = static_cast<unsigned int>(this->shape_size());
+    total_size += 1UL * count;
+    for (unsigned int i = 0; i < count; i++) {
+      total_size +=
+        ::google::protobuf::internal::WireFormatLite::MessageSize(
+          this->shape(static_cast<int>(i)));
+    }
+  }
+
+  // repeated .tensorflow.TensorProto tensor = 8;
+  {
+    unsigned int count = static_cast<unsigned int>(this->tensor_size());
+    total_size += 1UL * count;
+    for (unsigned int i = 0; i < count; i++) {
+      total_size +=
+        ::google::protobuf::internal::WireFormatLite::MessageSize(
+          this->tensor(static_cast<int>(i)));
+    }
+  }
+
+  // repeated .tensorflow.NameAttrList func = 9;
+  {
+    unsigned int count = static_cast<unsigned int>(this->func_size());
+    total_size += 1UL * count;
+    for (unsigned int i = 0; i < count; i++) {
+      total_size +=
+        ::google::protobuf::internal::WireFormatLite::MessageSize(
+          this->func(static_cast<int>(i)));
+    }
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void AttrValue_ListValue::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.AttrValue.ListValue)
+  GOOGLE_DCHECK_NE(&from, this);
+  const AttrValue_ListValue* source =
+      ::google::protobuf::DynamicCastToGenerated<AttrValue_ListValue>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.AttrValue.ListValue)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.AttrValue.ListValue)
+    MergeFrom(*source);
+  }
+}
+
+void AttrValue_ListValue::MergeFrom(const AttrValue_ListValue& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.AttrValue.ListValue)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  s_.MergeFrom(from.s_);
+  i_.MergeFrom(from.i_);
+  f_.MergeFrom(from.f_);
+  b_.MergeFrom(from.b_);
+  type_.MergeFrom(from.type_);
+  shape_.MergeFrom(from.shape_);
+  tensor_.MergeFrom(from.tensor_);
+  func_.MergeFrom(from.func_);
+}
+
+void AttrValue_ListValue::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.AttrValue.ListValue)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void AttrValue_ListValue::CopyFrom(const AttrValue_ListValue& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.AttrValue.ListValue)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool AttrValue_ListValue::IsInitialized() const {
+  return true;
+}
+
+void AttrValue_ListValue::Swap(AttrValue_ListValue* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    AttrValue_ListValue* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void AttrValue_ListValue::UnsafeArenaSwap(AttrValue_ListValue* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void AttrValue_ListValue::InternalSwap(AttrValue_ListValue* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  s_.InternalSwap(CastToBase(&other->s_));
+  i_.InternalSwap(&other->i_);
+  f_.InternalSwap(&other->f_);
+  b_.InternalSwap(&other->b_);
+  type_.InternalSwap(&other->type_);
+  CastToBase(&shape_)->InternalSwap(CastToBase(&other->shape_));
+  CastToBase(&tensor_)->InternalSwap(CastToBase(&other->tensor_));
+  CastToBase(&func_)->InternalSwap(CastToBase(&other->func_));
+}
+
+::google::protobuf::Metadata AttrValue_ListValue::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fframework_2fattr_5fvalue_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fframework_2fattr_5fvalue_2eproto[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+void AttrValue::InitAsDefaultInstance() {
+  ::tensorflow::_AttrValue_default_instance_.s_.UnsafeSetDefault(
+      &::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  ::tensorflow::_AttrValue_default_instance_.i_ = PROTOBUF_LONGLONG(0);
+  ::tensorflow::_AttrValue_default_instance_.f_ = 0;
+  ::tensorflow::_AttrValue_default_instance_.b_ = false;
+  ::tensorflow::_AttrValue_default_instance_.type_ = 0;
+  ::tensorflow::_AttrValue_default_instance_.shape_ = const_cast< ::tensorflow::TensorShapeProto*>(
+      ::tensorflow::TensorShapeProto::internal_default_instance());
+  ::tensorflow::_AttrValue_default_instance_.tensor_ = const_cast< ::tensorflow::TensorProto*>(
+      ::tensorflow::TensorProto::internal_default_instance());
+  ::tensorflow::_AttrValue_default_instance_.list_ = const_cast< ::tensorflow::AttrValue_ListValue*>(
+      ::tensorflow::AttrValue_ListValue::internal_default_instance());
+  ::tensorflow::_AttrValue_default_instance_.func_ = const_cast< ::tensorflow::NameAttrList*>(
+      ::tensorflow::NameAttrList::internal_default_instance());
+  ::tensorflow::_AttrValue_default_instance_.placeholder_.UnsafeSetDefault(
+      &::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+class AttrValue::HasBitSetters {
+ public:
+  static const ::tensorflow::TensorShapeProto& shape(const AttrValue* msg);
+  static const ::tensorflow::TensorProto& tensor(const AttrValue* msg);
+  static const ::tensorflow::AttrValue_ListValue& list(const AttrValue* msg);
+  static const ::tensorflow::NameAttrList& func(const AttrValue* msg);
+};
+
+const ::tensorflow::TensorShapeProto&
+AttrValue::HasBitSetters::shape(const AttrValue* msg) {
+  return *msg->value_.shape_;
+}
+const ::tensorflow::TensorProto&
+AttrValue::HasBitSetters::tensor(const AttrValue* msg) {
+  return *msg->value_.tensor_;
+}
+const ::tensorflow::AttrValue_ListValue&
+AttrValue::HasBitSetters::list(const AttrValue* msg) {
+  return *msg->value_.list_;
+}
+const ::tensorflow::NameAttrList&
+AttrValue::HasBitSetters::func(const AttrValue* msg) {
+  return *msg->value_.func_;
+}
+void AttrValue::set_allocated_shape(::tensorflow::TensorShapeProto* shape) {
+  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
+  clear_value();
+  if (shape) {
+    ::google::protobuf::Arena* submessage_arena =
+      reinterpret_cast<::google::protobuf::MessageLite*>(shape)->GetArena();
+    if (message_arena != submessage_arena) {
+      shape = ::google::protobuf::internal::GetOwnedMessage(
+          message_arena, shape, submessage_arena);
+    }
+    set_has_shape();
+    value_.shape_ = shape;
+  }
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.AttrValue.shape)
+}
+void AttrValue::clear_shape() {
+  if (has_shape()) {
+    if (GetArenaNoVirtual() == NULL) {
+      delete value_.shape_;
+    }
+    clear_has_value();
+  }
+}
+void AttrValue::set_allocated_tensor(::tensorflow::TensorProto* tensor) {
+  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
+  clear_value();
+  if (tensor) {
+    ::google::protobuf::Arena* submessage_arena =
+      reinterpret_cast<::google::protobuf::MessageLite*>(tensor)->GetArena();
+    if (message_arena != submessage_arena) {
+      tensor = ::google::protobuf::internal::GetOwnedMessage(
+          message_arena, tensor, submessage_arena);
+    }
+    set_has_tensor();
+    value_.tensor_ = tensor;
+  }
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.AttrValue.tensor)
+}
+void AttrValue::clear_tensor() {
+  if (has_tensor()) {
+    if (GetArenaNoVirtual() == NULL) {
+      delete value_.tensor_;
+    }
+    clear_has_value();
+  }
+}
+void AttrValue::set_allocated_list(::tensorflow::AttrValue_ListValue* list) {
+  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
+  clear_value();
+  if (list) {
+    ::google::protobuf::Arena* submessage_arena =
+      ::google::protobuf::Arena::GetArena(list);
+    if (message_arena != submessage_arena) {
+      list = ::google::protobuf::internal::GetOwnedMessage(
+          message_arena, list, submessage_arena);
+    }
+    set_has_list();
+    value_.list_ = list;
+  }
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.AttrValue.list)
+}
+void AttrValue::set_allocated_func(::tensorflow::NameAttrList* func) {
+  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
+  clear_value();
+  if (func) {
+    ::google::protobuf::Arena* submessage_arena =
+      ::google::protobuf::Arena::GetArena(func);
+    if (message_arena != submessage_arena) {
+      func = ::google::protobuf::internal::GetOwnedMessage(
+          message_arena, func, submessage_arena);
+    }
+    set_has_func();
+    value_.func_ = func;
+  }
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.AttrValue.func)
+}
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int AttrValue::kSFieldNumber;
+const int AttrValue::kIFieldNumber;
+const int AttrValue::kFFieldNumber;
+const int AttrValue::kBFieldNumber;
+const int AttrValue::kTypeFieldNumber;
+const int AttrValue::kShapeFieldNumber;
+const int AttrValue::kTensorFieldNumber;
+const int AttrValue::kListFieldNumber;
+const int AttrValue::kFuncFieldNumber;
+const int AttrValue::kPlaceholderFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+AttrValue::AttrValue()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.AttrValue)
+}
+AttrValue::AttrValue(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.AttrValue)
+}
+AttrValue::AttrValue(const AttrValue& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  clear_has_value();
+  switch (from.value_case()) {
+    case kS: {
+      set_s(from.s());
+      break;
+    }
+    case kI: {
+      set_i(from.i());
+      break;
+    }
+    case kF: {
+      set_f(from.f());
+      break;
+    }
+    case kB: {
+      set_b(from.b());
+      break;
+    }
+    case kType: {
+      set_type(from.type());
+      break;
+    }
+    case kShape: {
+      mutable_shape()->::tensorflow::TensorShapeProto::MergeFrom(from.shape());
+      break;
+    }
+    case kTensor: {
+      mutable_tensor()->::tensorflow::TensorProto::MergeFrom(from.tensor());
+      break;
+    }
+    case kList: {
+      mutable_list()->::tensorflow::AttrValue_ListValue::MergeFrom(from.list());
+      break;
+    }
+    case kFunc: {
+      mutable_func()->::tensorflow::NameAttrList::MergeFrom(from.func());
+      break;
+    }
+    case kPlaceholder: {
+      set_placeholder(from.placeholder());
+      break;
+    }
+    case VALUE_NOT_SET: {
+      break;
+    }
+  }
+  // @@protoc_insertion_point(copy_constructor:tensorflow.AttrValue)
+}
+
+void AttrValue::SharedCtor() {
+  ::google::protobuf::internal::InitSCC(
+      &scc_info_AttrValue_tensorflow_2fcore_2fframework_2fattr_5fvalue_2eproto.base);
+  clear_has_value();
+}
+
+AttrValue::~AttrValue() {
+  // @@protoc_insertion_point(destructor:tensorflow.AttrValue)
+  SharedDtor();
+}
+
+void AttrValue::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+  if (has_value()) {
+    clear_value();
+  }
+}
+
+void AttrValue::ArenaDtor(void* object) {
+  AttrValue* _this = reinterpret_cast< AttrValue* >(object);
+  (void)_this;
+}
+void AttrValue::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void AttrValue::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const AttrValue& AttrValue::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_AttrValue_tensorflow_2fcore_2fframework_2fattr_5fvalue_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void AttrValue::clear_value() {
+// @@protoc_insertion_point(one_of_clear_start:tensorflow.AttrValue)
+  switch (value_case()) {
+    case kS: {
+      value_.s_.Destroy(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+          GetArenaNoVirtual());
+      break;
+    }
+    case kI: {
+      // No need to clear
+      break;
+    }
+    case kF: {
+      // No need to clear
+      break;
+    }
+    case kB: {
+      // No need to clear
+      break;
+    }
+    case kType: {
+      // No need to clear
+      break;
+    }
+    case kShape: {
+      if (GetArenaNoVirtual() == NULL) {
+        delete value_.shape_;
+      }
+      break;
+    }
+    case kTensor: {
+      if (GetArenaNoVirtual() == NULL) {
+        delete value_.tensor_;
+      }
+      break;
+    }
+    case kList: {
+      if (GetArenaNoVirtual() == NULL) {
+        delete value_.list_;
+      }
+      break;
+    }
+    case kFunc: {
+      if (GetArenaNoVirtual() == NULL) {
+        delete value_.func_;
+      }
+      break;
+    }
+    case kPlaceholder: {
+      value_.placeholder_.Destroy(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+          GetArenaNoVirtual());
+      break;
+    }
+    case VALUE_NOT_SET: {
+      break;
+    }
+  }
+  _oneof_case_[0] = VALUE_NOT_SET;
+}
+
+
+void AttrValue::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.AttrValue)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  clear_value();
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* AttrValue::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<AttrValue*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // .tensorflow.AttrValue.ListValue list = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 10) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        parser_till_end = ::tensorflow::AttrValue_ListValue::_InternalParse;
+        object = msg->mutable_list();
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                       ptr, newend);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+        ptr = newend;
+        break;
+      }
+      // bytes s = 2;
+      case 2: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 18) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        parser_till_end = ::google::protobuf::internal::StringParser;
+        ::std::string* str = msg->mutable_s();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        str->append(ptr, size);
+        ptr += size;
+        break;
+      }
+      // int64 i = 3;
+      case 3: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 24) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::google::protobuf::int64 value = val;
+        msg->set_i(value);
+        break;
+      }
+      // float f = 4;
+      case 4: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 37) goto handle_unusual;
+        float val;
+        std::memcpy(&val, ptr, 4);
+        ptr += 4;
+        msg->set_f(val);
+        break;
+      }
+      // bool b = 5;
+      case 5: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 40) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        bool value = val;
+        msg->set_b(value);
+        break;
+      }
+      // .tensorflow.DataType type = 6;
+      case 6: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 48) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::tensorflow::DataType value = static_cast<::tensorflow::DataType>(val);
+        msg->set_type(value);
+        break;
+      }
+      // .tensorflow.TensorShapeProto shape = 7;
+      case 7: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 58) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        parser_till_end = ::tensorflow::TensorShapeProto::_InternalParse;
+        object = msg->mutable_shape();
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                       ptr, newend);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+        ptr = newend;
+        break;
+      }
+      // .tensorflow.TensorProto tensor = 8;
+      case 8: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 66) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        parser_till_end = ::tensorflow::TensorProto::_InternalParse;
+        object = msg->mutable_tensor();
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                       ptr, newend);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+        ptr = newend;
+        break;
+      }
+      // string placeholder = 9;
+      case 9: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 74) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("tensorflow.AttrValue.placeholder");
+        parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+        ::std::string* str = msg->mutable_placeholder();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+        break;
+      }
+      // .tensorflow.NameAttrList func = 10;
+      case 10: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 82) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        parser_till_end = ::tensorflow::NameAttrList::_InternalParse;
+        object = msg->mutable_func();
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                       ptr, newend);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+        ptr = newend;
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool AttrValue::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.AttrValue)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // .tensorflow.AttrValue.ListValue list = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (10 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+               input, mutable_list()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // bytes s = 2;
+      case 2: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (18 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadBytes(
+                input, this->mutable_s()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // int64 i = 3;
+      case 3: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (24 & 0xFF)) {
+          clear_value();
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>(
+                 input, &value_.i_)));
+          set_has_i();
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // float f = 4;
+      case 4: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (37 & 0xFF)) {
+          clear_value();
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>(
+                 input, &value_.f_)));
+          set_has_f();
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // bool b = 5;
+      case 5: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (40 & 0xFF)) {
+          clear_value();
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
+                 input, &value_.b_)));
+          set_has_b();
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // .tensorflow.DataType type = 6;
+      case 6: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (48 & 0xFF)) {
+          int value = 0;
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>(
+                 input, &value)));
+          set_type(static_cast< ::tensorflow::DataType >(value));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // .tensorflow.TensorShapeProto shape = 7;
+      case 7: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (58 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+               input, mutable_shape()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // .tensorflow.TensorProto tensor = 8;
+      case 8: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (66 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+               input, mutable_tensor()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // string placeholder = 9;
+      case 9: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (74 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_placeholder()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->placeholder().data(), static_cast<int>(this->placeholder().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.AttrValue.placeholder"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // .tensorflow.NameAttrList func = 10;
+      case 10: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (82 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+               input, mutable_func()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.AttrValue)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.AttrValue)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void AttrValue::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.AttrValue)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // .tensorflow.AttrValue.ListValue list = 1;
+  if (has_list()) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      1, HasBitSetters::list(this), output);
+  }
+
+  // bytes s = 2;
+  if (has_s()) {
+    ::google::protobuf::internal::WireFormatLite::WriteBytesMaybeAliased(
+      2, this->s(), output);
+  }
+
+  // int64 i = 3;
+  if (has_i()) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt64(3, this->i(), output);
+  }
+
+  // float f = 4;
+  if (has_f()) {
+    ::google::protobuf::internal::WireFormatLite::WriteFloat(4, this->f(), output);
+  }
+
+  // bool b = 5;
+  if (has_b()) {
+    ::google::protobuf::internal::WireFormatLite::WriteBool(5, this->b(), output);
+  }
+
+  // .tensorflow.DataType type = 6;
+  if (has_type()) {
+    ::google::protobuf::internal::WireFormatLite::WriteEnum(
+      6, this->type(), output);
+  }
+
+  // .tensorflow.TensorShapeProto shape = 7;
+  if (has_shape()) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      7, HasBitSetters::shape(this), output);
+  }
+
+  // .tensorflow.TensorProto tensor = 8;
+  if (has_tensor()) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      8, HasBitSetters::tensor(this), output);
+  }
+
+  // string placeholder = 9;
+  if (has_placeholder()) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->placeholder().data(), static_cast<int>(this->placeholder().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.AttrValue.placeholder");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      9, this->placeholder(), output);
+  }
+
+  // .tensorflow.NameAttrList func = 10;
+  if (has_func()) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      10, HasBitSetters::func(this), output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.AttrValue)
+}
+
+::google::protobuf::uint8* AttrValue::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.AttrValue)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // .tensorflow.AttrValue.ListValue list = 1;
+  if (has_list()) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        1, HasBitSetters::list(this), deterministic, target);
+  }
+
+  // bytes s = 2;
+  if (has_s()) {
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteBytesToArray(
+        2, this->s(), target);
+  }
+
+  // int64 i = 3;
+  if (has_i()) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt64ToArray(3, this->i(), target);
+  }
+
+  // float f = 4;
+  if (has_f()) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteFloatToArray(4, this->f(), target);
+  }
+
+  // bool b = 5;
+  if (has_b()) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(5, this->b(), target);
+  }
+
+  // .tensorflow.DataType type = 6;
+  if (has_type()) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteEnumToArray(
+      6, this->type(), target);
+  }
+
+  // .tensorflow.TensorShapeProto shape = 7;
+  if (has_shape()) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        7, HasBitSetters::shape(this), deterministic, target);
+  }
+
+  // .tensorflow.TensorProto tensor = 8;
+  if (has_tensor()) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        8, HasBitSetters::tensor(this), deterministic, target);
+  }
+
+  // string placeholder = 9;
+  if (has_placeholder()) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->placeholder().data(), static_cast<int>(this->placeholder().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.AttrValue.placeholder");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        9, this->placeholder(), target);
+  }
+
+  // .tensorflow.NameAttrList func = 10;
+  if (has_func()) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        10, HasBitSetters::func(this), deterministic, target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.AttrValue)
+  return target;
+}
+
+size_t AttrValue::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.AttrValue)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  switch (value_case()) {
+    // bytes s = 2;
+    case kS: {
+      total_size += 1 +
+        ::google::protobuf::internal::WireFormatLite::BytesSize(
+          this->s());
+      break;
+    }
+    // int64 i = 3;
+    case kI: {
+      total_size += 1 +
+        ::google::protobuf::internal::WireFormatLite::Int64Size(
+          this->i());
+      break;
+    }
+    // float f = 4;
+    case kF: {
+      total_size += 1 + 4;
+      break;
+    }
+    // bool b = 5;
+    case kB: {
+      total_size += 1 + 1;
+      break;
+    }
+    // .tensorflow.DataType type = 6;
+    case kType: {
+      total_size += 1 +
+        ::google::protobuf::internal::WireFormatLite::EnumSize(this->type());
+      break;
+    }
+    // .tensorflow.TensorShapeProto shape = 7;
+    case kShape: {
+      total_size += 1 +
+        ::google::protobuf::internal::WireFormatLite::MessageSize(
+          *value_.shape_);
+      break;
+    }
+    // .tensorflow.TensorProto tensor = 8;
+    case kTensor: {
+      total_size += 1 +
+        ::google::protobuf::internal::WireFormatLite::MessageSize(
+          *value_.tensor_);
+      break;
+    }
+    // .tensorflow.AttrValue.ListValue list = 1;
+    case kList: {
+      total_size += 1 +
+        ::google::protobuf::internal::WireFormatLite::MessageSize(
+          *value_.list_);
+      break;
+    }
+    // .tensorflow.NameAttrList func = 10;
+    case kFunc: {
+      total_size += 1 +
+        ::google::protobuf::internal::WireFormatLite::MessageSize(
+          *value_.func_);
+      break;
+    }
+    // string placeholder = 9;
+    case kPlaceholder: {
+      total_size += 1 +
+        ::google::protobuf::internal::WireFormatLite::StringSize(
+          this->placeholder());
+      break;
+    }
+    case VALUE_NOT_SET: {
+      break;
+    }
+  }
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void AttrValue::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.AttrValue)
+  GOOGLE_DCHECK_NE(&from, this);
+  const AttrValue* source =
+      ::google::protobuf::DynamicCastToGenerated<AttrValue>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.AttrValue)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.AttrValue)
+    MergeFrom(*source);
+  }
+}
+
+void AttrValue::MergeFrom(const AttrValue& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.AttrValue)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  switch (from.value_case()) {
+    case kS: {
+      set_s(from.s());
+      break;
+    }
+    case kI: {
+      set_i(from.i());
+      break;
+    }
+    case kF: {
+      set_f(from.f());
+      break;
+    }
+    case kB: {
+      set_b(from.b());
+      break;
+    }
+    case kType: {
+      set_type(from.type());
+      break;
+    }
+    case kShape: {
+      mutable_shape()->::tensorflow::TensorShapeProto::MergeFrom(from.shape());
+      break;
+    }
+    case kTensor: {
+      mutable_tensor()->::tensorflow::TensorProto::MergeFrom(from.tensor());
+      break;
+    }
+    case kList: {
+      mutable_list()->::tensorflow::AttrValue_ListValue::MergeFrom(from.list());
+      break;
+    }
+    case kFunc: {
+      mutable_func()->::tensorflow::NameAttrList::MergeFrom(from.func());
+      break;
+    }
+    case kPlaceholder: {
+      set_placeholder(from.placeholder());
+      break;
+    }
+    case VALUE_NOT_SET: {
+      break;
+    }
+  }
+}
+
+void AttrValue::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.AttrValue)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void AttrValue::CopyFrom(const AttrValue& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.AttrValue)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool AttrValue::IsInitialized() const {
+  return true;
+}
+
+void AttrValue::Swap(AttrValue* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    AttrValue* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void AttrValue::UnsafeArenaSwap(AttrValue* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void AttrValue::InternalSwap(AttrValue* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  swap(value_, other->value_);
+  swap(_oneof_case_[0], other->_oneof_case_[0]);
+}
+
+::google::protobuf::Metadata AttrValue::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fframework_2fattr_5fvalue_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fframework_2fattr_5fvalue_2eproto[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+NameAttrList_AttrEntry_DoNotUse::NameAttrList_AttrEntry_DoNotUse() {}
+NameAttrList_AttrEntry_DoNotUse::NameAttrList_AttrEntry_DoNotUse(::google::protobuf::Arena* arena)
+    : SuperType(arena) {}
+void NameAttrList_AttrEntry_DoNotUse::MergeFrom(const NameAttrList_AttrEntry_DoNotUse& other) {
+  MergeFromInternal(other);
+}
+::google::protobuf::Metadata NameAttrList_AttrEntry_DoNotUse::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fframework_2fattr_5fvalue_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fframework_2fattr_5fvalue_2eproto[2];
+}
+void NameAttrList_AttrEntry_DoNotUse::MergeFrom(
+    const ::google::protobuf::Message& other) {
+  ::google::protobuf::Message::MergeFrom(other);
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool NameAttrList_AttrEntry_DoNotUse::_ParseMap(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx) {
+  using MF = ::google::protobuf::internal::MapField<
+      NameAttrList_AttrEntry_DoNotUse, EntryKeyType, EntryValueType,
+      kEntryKeyFieldType, kEntryValueFieldType,
+      kEntryDefaultEnumValue>;
+  auto mf = static_cast<MF*>(object);
+  Parser<MF, ::google::protobuf::Map<EntryKeyType, EntryValueType>> parser(mf);
+#define DO_(x) if (!(x)) return false
+  DO_(parser.ParseMap(begin, end));
+  DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+    parser.key().data(), static_cast<int>(parser.key().length()),
+    ::google::protobuf::internal::WireFormatLite::PARSE,
+    "tensorflow.NameAttrList.AttrEntry.key"));
+#undef DO_
+  return true;
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+
+// ===================================================================
+
+void NameAttrList::InitAsDefaultInstance() {
+}
+class NameAttrList::HasBitSetters {
+ public:
+};
+
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int NameAttrList::kNameFieldNumber;
+const int NameAttrList::kAttrFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+NameAttrList::NameAttrList()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.NameAttrList)
+}
+NameAttrList::NameAttrList(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena),
+  attr_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.NameAttrList)
+}
+NameAttrList::NameAttrList(const NameAttrList& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  attr_.MergeFrom(from.attr_);
+  name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.name().size() > 0) {
+    name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.name(),
+      GetArenaNoVirtual());
+  }
+  // @@protoc_insertion_point(copy_constructor:tensorflow.NameAttrList)
+}
+
+void NameAttrList::SharedCtor() {
+  ::google::protobuf::internal::InitSCC(
+      &scc_info_AttrValue_tensorflow_2fcore_2fframework_2fattr_5fvalue_2eproto.base);
+  name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+
+NameAttrList::~NameAttrList() {
+  // @@protoc_insertion_point(destructor:tensorflow.NameAttrList)
+  SharedDtor();
+}
+
+void NameAttrList::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+  name_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+
+void NameAttrList::ArenaDtor(void* object) {
+  NameAttrList* _this = reinterpret_cast< NameAttrList* >(object);
+  (void)_this;
+}
+void NameAttrList::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void NameAttrList::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const NameAttrList& NameAttrList::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_AttrValue_tensorflow_2fcore_2fframework_2fattr_5fvalue_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void NameAttrList::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.NameAttrList)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  attr_.Clear();
+  name_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* NameAttrList::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<NameAttrList*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // string name = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 10) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("tensorflow.NameAttrList.name");
+        parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+        ::std::string* str = msg->mutable_name();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+        break;
+      }
+      // map<string, .tensorflow.AttrValue> attr = 2;
+      case 2: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 18) goto handle_unusual;
+        do {
+          ptr = Varint::Parse32Inline(ptr, &size);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          parser_till_end = ::google::protobuf::internal::SlowMapEntryParser;
+          auto parse_map = ::tensorflow::NameAttrList_AttrEntry_DoNotUse::_ParseMap;
+          ctx->extra_parse_data().payload.clear();
+          ctx->extra_parse_data().parse_map = parse_map;
+          object = &msg->attr_;
+          if (size > end - ptr) goto len_delim_till_end;
+          auto newend = ptr + size;
+          GOOGLE_PROTOBUF_PARSER_ASSERT(parse_map(ptr, newend, object, ctx));
+          ptr = newend;
+          if (ptr >= end) break;
+        } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 18 && (ptr += 1));
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool NameAttrList::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.NameAttrList)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // string name = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (10 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_name()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->name().data(), static_cast<int>(this->name().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.NameAttrList.name"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // map<string, .tensorflow.AttrValue> attr = 2;
+      case 2: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (18 & 0xFF)) {
+          NameAttrList_AttrEntry_DoNotUse::Parser< ::google::protobuf::internal::MapField<
+              NameAttrList_AttrEntry_DoNotUse,
+              ::std::string, ::tensorflow::AttrValue,
+              ::google::protobuf::internal::WireFormatLite::TYPE_STRING,
+              ::google::protobuf::internal::WireFormatLite::TYPE_MESSAGE,
+              0 >,
+            ::google::protobuf::Map< ::std::string, ::tensorflow::AttrValue > > parser(&attr_);
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
+              input, &parser));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            parser.key().data(), static_cast<int>(parser.key().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.NameAttrList.AttrEntry.key"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.NameAttrList)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.NameAttrList)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void NameAttrList::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.NameAttrList)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // string name = 1;
+  if (this->name().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->name().data(), static_cast<int>(this->name().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.NameAttrList.name");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      1, this->name(), output);
+  }
+
+  // map<string, .tensorflow.AttrValue> attr = 2;
+  if (!this->attr().empty()) {
+    typedef ::google::protobuf::Map< ::std::string, ::tensorflow::AttrValue >::const_pointer
+        ConstPtr;
+    typedef ConstPtr SortItem;
+    typedef ::google::protobuf::internal::CompareByDerefFirst<SortItem> Less;
+    struct Utf8Check {
+      static void Check(ConstPtr p) {
+        ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+          p->first.data(), static_cast<int>(p->first.length()),
+          ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+          "tensorflow.NameAttrList.AttrEntry.key");
+      }
+    };
+
+    if (output->IsSerializationDeterministic() &&
+        this->attr().size() > 1) {
+      ::std::unique_ptr<SortItem[]> items(
+          new SortItem[this->attr().size()]);
+      typedef ::google::protobuf::Map< ::std::string, ::tensorflow::AttrValue >::size_type size_type;
+      size_type n = 0;
+      for (::google::protobuf::Map< ::std::string, ::tensorflow::AttrValue >::const_iterator
+          it = this->attr().begin();
+          it != this->attr().end(); ++it, ++n) {
+        items[static_cast<ptrdiff_t>(n)] = SortItem(&*it);
+      }
+      ::std::sort(&items[0], &items[static_cast<ptrdiff_t>(n)], Less());
+      ::std::unique_ptr<NameAttrList_AttrEntry_DoNotUse> entry;
+      for (size_type i = 0; i < n; i++) {
+        entry.reset(attr_.NewEntryWrapper(items[static_cast<ptrdiff_t>(i)]->first, items[static_cast<ptrdiff_t>(i)]->second));
+        ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(2, *entry, output);
+        if (entry->GetArena() != NULL) {
+          entry.release();
+        }
+        Utf8Check::Check(&(*items[static_cast<ptrdiff_t>(i)]));
+      }
+    } else {
+      ::std::unique_ptr<NameAttrList_AttrEntry_DoNotUse> entry;
+      for (::google::protobuf::Map< ::std::string, ::tensorflow::AttrValue >::const_iterator
+          it = this->attr().begin();
+          it != this->attr().end(); ++it) {
+        entry.reset(attr_.NewEntryWrapper(it->first, it->second));
+        ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(2, *entry, output);
+        if (entry->GetArena() != NULL) {
+          entry.release();
+        }
+        Utf8Check::Check(&(*it));
+      }
+    }
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.NameAttrList)
+}
+
+::google::protobuf::uint8* NameAttrList::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.NameAttrList)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // string name = 1;
+  if (this->name().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->name().data(), static_cast<int>(this->name().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.NameAttrList.name");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        1, this->name(), target);
+  }
+
+  // map<string, .tensorflow.AttrValue> attr = 2;
+  if (!this->attr().empty()) {
+    typedef ::google::protobuf::Map< ::std::string, ::tensorflow::AttrValue >::const_pointer
+        ConstPtr;
+    typedef ConstPtr SortItem;
+    typedef ::google::protobuf::internal::CompareByDerefFirst<SortItem> Less;
+    struct Utf8Check {
+      static void Check(ConstPtr p) {
+        ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+          p->first.data(), static_cast<int>(p->first.length()),
+          ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+          "tensorflow.NameAttrList.AttrEntry.key");
+      }
+    };
+
+    if (deterministic &&
+        this->attr().size() > 1) {
+      ::std::unique_ptr<SortItem[]> items(
+          new SortItem[this->attr().size()]);
+      typedef ::google::protobuf::Map< ::std::string, ::tensorflow::AttrValue >::size_type size_type;
+      size_type n = 0;
+      for (::google::protobuf::Map< ::std::string, ::tensorflow::AttrValue >::const_iterator
+          it = this->attr().begin();
+          it != this->attr().end(); ++it, ++n) {
+        items[static_cast<ptrdiff_t>(n)] = SortItem(&*it);
+      }
+      ::std::sort(&items[0], &items[static_cast<ptrdiff_t>(n)], Less());
+      ::std::unique_ptr<NameAttrList_AttrEntry_DoNotUse> entry;
+      for (size_type i = 0; i < n; i++) {
+        entry.reset(attr_.NewEntryWrapper(items[static_cast<ptrdiff_t>(i)]->first, items[static_cast<ptrdiff_t>(i)]->second));
+        target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessageNoVirtualToArray(2, *entry, deterministic, target);
+        if (entry->GetArena() != NULL) {
+          entry.release();
+        }
+        Utf8Check::Check(&(*items[static_cast<ptrdiff_t>(i)]));
+      }
+    } else {
+      ::std::unique_ptr<NameAttrList_AttrEntry_DoNotUse> entry;
+      for (::google::protobuf::Map< ::std::string, ::tensorflow::AttrValue >::const_iterator
+          it = this->attr().begin();
+          it != this->attr().end(); ++it) {
+        entry.reset(attr_.NewEntryWrapper(it->first, it->second));
+        target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessageNoVirtualToArray(2, *entry, deterministic, target);
+        if (entry->GetArena() != NULL) {
+          entry.release();
+        }
+        Utf8Check::Check(&(*it));
+      }
+    }
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.NameAttrList)
+  return target;
+}
+
+size_t NameAttrList::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.NameAttrList)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // map<string, .tensorflow.AttrValue> attr = 2;
+  total_size += 1 *
+      ::google::protobuf::internal::FromIntSize(this->attr_size());
+  {
+    ::std::unique_ptr<NameAttrList_AttrEntry_DoNotUse> entry;
+    for (::google::protobuf::Map< ::std::string, ::tensorflow::AttrValue >::const_iterator
+        it = this->attr().begin();
+        it != this->attr().end(); ++it) {
+      if (entry.get() != NULL && entry->GetArena() != NULL) {
+        entry.release();
+      }
+      entry.reset(attr_.NewEntryWrapper(it->first, it->second));
+      total_size += ::google::protobuf::internal::WireFormatLite::
+          MessageSizeNoVirtual(*entry);
+    }
+    if (entry.get() != NULL && entry->GetArena() != NULL) {
+      entry.release();
+    }
+  }
+
+  // string name = 1;
+  if (this->name().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->name());
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void NameAttrList::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.NameAttrList)
+  GOOGLE_DCHECK_NE(&from, this);
+  const NameAttrList* source =
+      ::google::protobuf::DynamicCastToGenerated<NameAttrList>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.NameAttrList)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.NameAttrList)
+    MergeFrom(*source);
+  }
+}
+
+void NameAttrList::MergeFrom(const NameAttrList& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.NameAttrList)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  attr_.MergeFrom(from.attr_);
+  if (from.name().size() > 0) {
+    set_name(from.name());
+  }
+}
+
+void NameAttrList::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.NameAttrList)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void NameAttrList::CopyFrom(const NameAttrList& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.NameAttrList)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool NameAttrList::IsInitialized() const {
+  return true;
+}
+
+void NameAttrList::Swap(NameAttrList* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    NameAttrList* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void NameAttrList::UnsafeArenaSwap(NameAttrList* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void NameAttrList::InternalSwap(NameAttrList* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  attr_.Swap(&other->attr_);
+  name_.Swap(&other->name_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+}
+
+::google::protobuf::Metadata NameAttrList::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fframework_2fattr_5fvalue_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fframework_2fattr_5fvalue_2eproto[kIndexInFileMessages];
+}
+
+
+// @@protoc_insertion_point(namespace_scope)
+}  // namespace tensorflow
+namespace google {
+namespace protobuf {
+template<> PROTOBUF_NOINLINE ::tensorflow::AttrValue_ListValue* Arena::CreateMaybeMessage< ::tensorflow::AttrValue_ListValue >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::AttrValue_ListValue >(arena);
+}
+template<> PROTOBUF_NOINLINE ::tensorflow::AttrValue* Arena::CreateMaybeMessage< ::tensorflow::AttrValue >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::AttrValue >(arena);
+}
+template<> PROTOBUF_NOINLINE ::tensorflow::NameAttrList_AttrEntry_DoNotUse* Arena::CreateMaybeMessage< ::tensorflow::NameAttrList_AttrEntry_DoNotUse >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::NameAttrList_AttrEntry_DoNotUse >(arena);
+}
+template<> PROTOBUF_NOINLINE ::tensorflow::NameAttrList* Arena::CreateMaybeMessage< ::tensorflow::NameAttrList >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::NameAttrList >(arena);
+}
+}  // namespace protobuf
+}  // namespace google
+
+// @@protoc_insertion_point(global_scope)
+#include <google/protobuf/port_undef.inc>
diff --git a/tensorflow/core/framework/attr_value.pb.h b/tensorflow/core/framework/attr_value.pb.h
new file mode 100644 (file)
index 0000000..4fffbd4
--- /dev/null
@@ -0,0 +1,1817 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: tensorflow/core/framework/attr_value.proto
+
+#ifndef PROTOBUF_INCLUDED_tensorflow_2fcore_2fframework_2fattr_5fvalue_2eproto
+#define PROTOBUF_INCLUDED_tensorflow_2fcore_2fframework_2fattr_5fvalue_2eproto
+
+#include <limits>
+#include <string>
+
+#include <google/protobuf/port_def.inc>
+#if PROTOBUF_VERSION < 3006001
+#error This file was generated by a newer version of protoc which is
+#error incompatible with your Protocol Buffer headers. Please update
+#error your headers.
+#endif
+#if 3006001 < PROTOBUF_MIN_PROTOC_VERSION
+#error This file was generated by an older version of protoc which is
+#error incompatible with your Protocol Buffer headers. Please
+#error regenerate this file with a newer version of protoc.
+#endif
+
+#include <google/protobuf/port_undef.inc>
+#include <google/protobuf/io/coded_stream.h>
+#include <google/protobuf/arena.h>
+#include <google/protobuf/arenastring.h>
+#include <google/protobuf/generated_message_table_driven.h>
+#include <google/protobuf/generated_message_util.h>
+#include <google/protobuf/inlined_string_field.h>
+#include <google/protobuf/metadata.h>
+#include <google/protobuf/message.h>
+#include <google/protobuf/repeated_field.h>  // IWYU pragma: export
+#include <google/protobuf/extension_set.h>  // IWYU pragma: export
+#include <google/protobuf/map.h>  // IWYU pragma: export
+#include <google/protobuf/map_entry.h>
+#include <google/protobuf/map_field_inl.h>
+#include <google/protobuf/unknown_field_set.h>
+#include "tensorflow/core/framework/tensor.pb.h"
+#include "tensorflow/core/framework/tensor_shape.pb.h"
+#include "tensorflow/core/framework/types.pb.h"
+// @@protoc_insertion_point(includes)
+#include <google/protobuf/port_def.inc>
+#define PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fframework_2fattr_5fvalue_2eproto
+
+// Internal implementation detail -- do not use these members.
+struct TableStruct_tensorflow_2fcore_2fframework_2fattr_5fvalue_2eproto {
+  static const ::google::protobuf::internal::ParseTableField entries[]
+    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
+  static const ::google::protobuf::internal::AuxillaryParseTableField aux[]
+    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
+  static const ::google::protobuf::internal::ParseTable schema[4]
+    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
+  static const ::google::protobuf::internal::FieldMetadata field_metadata[];
+  static const ::google::protobuf::internal::SerializationTable serialization_table[];
+  static const ::google::protobuf::uint32 offsets[];
+};
+void AddDescriptors_tensorflow_2fcore_2fframework_2fattr_5fvalue_2eproto();
+namespace tensorflow {
+class AttrValue;
+class AttrValueDefaultTypeInternal;
+extern AttrValueDefaultTypeInternal _AttrValue_default_instance_;
+class AttrValue_ListValue;
+class AttrValue_ListValueDefaultTypeInternal;
+extern AttrValue_ListValueDefaultTypeInternal _AttrValue_ListValue_default_instance_;
+class NameAttrList;
+class NameAttrListDefaultTypeInternal;
+extern NameAttrListDefaultTypeInternal _NameAttrList_default_instance_;
+class NameAttrList_AttrEntry_DoNotUse;
+class NameAttrList_AttrEntry_DoNotUseDefaultTypeInternal;
+extern NameAttrList_AttrEntry_DoNotUseDefaultTypeInternal _NameAttrList_AttrEntry_DoNotUse_default_instance_;
+}  // namespace tensorflow
+namespace google {
+namespace protobuf {
+template<> ::tensorflow::AttrValue* Arena::CreateMaybeMessage<::tensorflow::AttrValue>(Arena*);
+template<> ::tensorflow::AttrValue_ListValue* Arena::CreateMaybeMessage<::tensorflow::AttrValue_ListValue>(Arena*);
+template<> ::tensorflow::NameAttrList* Arena::CreateMaybeMessage<::tensorflow::NameAttrList>(Arena*);
+template<> ::tensorflow::NameAttrList_AttrEntry_DoNotUse* Arena::CreateMaybeMessage<::tensorflow::NameAttrList_AttrEntry_DoNotUse>(Arena*);
+}  // namespace protobuf
+}  // namespace google
+namespace tensorflow {
+
+// ===================================================================
+
+class AttrValue_ListValue : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.AttrValue.ListValue) */ {
+ public:
+  AttrValue_ListValue();
+  virtual ~AttrValue_ListValue();
+
+  AttrValue_ListValue(const AttrValue_ListValue& from);
+
+  inline AttrValue_ListValue& operator=(const AttrValue_ListValue& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  AttrValue_ListValue(AttrValue_ListValue&& from) noexcept
+    : AttrValue_ListValue() {
+    *this = ::std::move(from);
+  }
+
+  inline AttrValue_ListValue& operator=(AttrValue_ListValue&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const AttrValue_ListValue& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const AttrValue_ListValue* internal_default_instance() {
+    return reinterpret_cast<const AttrValue_ListValue*>(
+               &_AttrValue_ListValue_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    0;
+
+  void UnsafeArenaSwap(AttrValue_ListValue* other);
+  void Swap(AttrValue_ListValue* other);
+  friend void swap(AttrValue_ListValue& a, AttrValue_ListValue& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline AttrValue_ListValue* New() const final {
+    return CreateMaybeMessage<AttrValue_ListValue>(NULL);
+  }
+
+  AttrValue_ListValue* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<AttrValue_ListValue>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const AttrValue_ListValue& from);
+  void MergeFrom(const AttrValue_ListValue& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(AttrValue_ListValue* other);
+  protected:
+  explicit AttrValue_ListValue(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // repeated bytes s = 2;
+  int s_size() const;
+  void clear_s();
+  static const int kSFieldNumber = 2;
+  const ::std::string& s(int index) const;
+  ::std::string* mutable_s(int index);
+  void set_s(int index, const ::std::string& value);
+  #if LANG_CXX11
+  void set_s(int index, ::std::string&& value);
+  #endif
+  void set_s(int index, const char* value);
+  void set_s(int index, const void* value, size_t size);
+  ::std::string* add_s();
+  void add_s(const ::std::string& value);
+  #if LANG_CXX11
+  void add_s(::std::string&& value);
+  #endif
+  void add_s(const char* value);
+  void add_s(const void* value, size_t size);
+  const ::google::protobuf::RepeatedPtrField<::std::string>& s() const;
+  ::google::protobuf::RepeatedPtrField<::std::string>* mutable_s();
+
+  // repeated int64 i = 3 [packed = true];
+  int i_size() const;
+  void clear_i();
+  static const int kIFieldNumber = 3;
+  ::google::protobuf::int64 i(int index) const;
+  void set_i(int index, ::google::protobuf::int64 value);
+  void add_i(::google::protobuf::int64 value);
+  const ::google::protobuf::RepeatedField< ::google::protobuf::int64 >&
+      i() const;
+  ::google::protobuf::RepeatedField< ::google::protobuf::int64 >*
+      mutable_i();
+
+  // repeated float f = 4 [packed = true];
+  int f_size() const;
+  void clear_f();
+  static const int kFFieldNumber = 4;
+  float f(int index) const;
+  void set_f(int index, float value);
+  void add_f(float value);
+  const ::google::protobuf::RepeatedField< float >&
+      f() const;
+  ::google::protobuf::RepeatedField< float >*
+      mutable_f();
+
+  // repeated bool b = 5 [packed = true];
+  int b_size() const;
+  void clear_b();
+  static const int kBFieldNumber = 5;
+  bool b(int index) const;
+  void set_b(int index, bool value);
+  void add_b(bool value);
+  const ::google::protobuf::RepeatedField< bool >&
+      b() const;
+  ::google::protobuf::RepeatedField< bool >*
+      mutable_b();
+
+  // repeated .tensorflow.DataType type = 6 [packed = true];
+  int type_size() const;
+  void clear_type();
+  static const int kTypeFieldNumber = 6;
+  ::tensorflow::DataType type(int index) const;
+  void set_type(int index, ::tensorflow::DataType value);
+  void add_type(::tensorflow::DataType value);
+  const ::google::protobuf::RepeatedField<int>& type() const;
+  ::google::protobuf::RepeatedField<int>* mutable_type();
+
+  // repeated .tensorflow.TensorShapeProto shape = 7;
+  int shape_size() const;
+  void clear_shape();
+  static const int kShapeFieldNumber = 7;
+  ::tensorflow::TensorShapeProto* mutable_shape(int index);
+  ::google::protobuf::RepeatedPtrField< ::tensorflow::TensorShapeProto >*
+      mutable_shape();
+  const ::tensorflow::TensorShapeProto& shape(int index) const;
+  ::tensorflow::TensorShapeProto* add_shape();
+  const ::google::protobuf::RepeatedPtrField< ::tensorflow::TensorShapeProto >&
+      shape() const;
+
+  // repeated .tensorflow.TensorProto tensor = 8;
+  int tensor_size() const;
+  void clear_tensor();
+  static const int kTensorFieldNumber = 8;
+  ::tensorflow::TensorProto* mutable_tensor(int index);
+  ::google::protobuf::RepeatedPtrField< ::tensorflow::TensorProto >*
+      mutable_tensor();
+  const ::tensorflow::TensorProto& tensor(int index) const;
+  ::tensorflow::TensorProto* add_tensor();
+  const ::google::protobuf::RepeatedPtrField< ::tensorflow::TensorProto >&
+      tensor() const;
+
+  // repeated .tensorflow.NameAttrList func = 9;
+  int func_size() const;
+  void clear_func();
+  static const int kFuncFieldNumber = 9;
+  ::tensorflow::NameAttrList* mutable_func(int index);
+  ::google::protobuf::RepeatedPtrField< ::tensorflow::NameAttrList >*
+      mutable_func();
+  const ::tensorflow::NameAttrList& func(int index) const;
+  ::tensorflow::NameAttrList* add_func();
+  const ::google::protobuf::RepeatedPtrField< ::tensorflow::NameAttrList >&
+      func() const;
+
+  // @@protoc_insertion_point(class_scope:tensorflow.AttrValue.ListValue)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  ::google::protobuf::RepeatedPtrField<::std::string> s_;
+  ::google::protobuf::RepeatedField< ::google::protobuf::int64 > i_;
+  mutable std::atomic<int> _i_cached_byte_size_;
+  ::google::protobuf::RepeatedField< float > f_;
+  mutable std::atomic<int> _f_cached_byte_size_;
+  ::google::protobuf::RepeatedField< bool > b_;
+  mutable std::atomic<int> _b_cached_byte_size_;
+  ::google::protobuf::RepeatedField<int> type_;
+  mutable std::atomic<int> _type_cached_byte_size_;
+  ::google::protobuf::RepeatedPtrField< ::tensorflow::TensorShapeProto > shape_;
+  ::google::protobuf::RepeatedPtrField< ::tensorflow::TensorProto > tensor_;
+  ::google::protobuf::RepeatedPtrField< ::tensorflow::NameAttrList > func_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fframework_2fattr_5fvalue_2eproto;
+};
+// -------------------------------------------------------------------
+
+class AttrValue : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.AttrValue) */ {
+ public:
+  AttrValue();
+  virtual ~AttrValue();
+
+  AttrValue(const AttrValue& from);
+
+  inline AttrValue& operator=(const AttrValue& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  AttrValue(AttrValue&& from) noexcept
+    : AttrValue() {
+    *this = ::std::move(from);
+  }
+
+  inline AttrValue& operator=(AttrValue&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const AttrValue& default_instance();
+
+  enum ValueCase {
+    kS = 2,
+    kI = 3,
+    kF = 4,
+    kB = 5,
+    kType = 6,
+    kShape = 7,
+    kTensor = 8,
+    kList = 1,
+    kFunc = 10,
+    kPlaceholder = 9,
+    VALUE_NOT_SET = 0,
+  };
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const AttrValue* internal_default_instance() {
+    return reinterpret_cast<const AttrValue*>(
+               &_AttrValue_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    1;
+
+  void UnsafeArenaSwap(AttrValue* other);
+  void Swap(AttrValue* other);
+  friend void swap(AttrValue& a, AttrValue& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline AttrValue* New() const final {
+    return CreateMaybeMessage<AttrValue>(NULL);
+  }
+
+  AttrValue* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<AttrValue>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const AttrValue& from);
+  void MergeFrom(const AttrValue& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(AttrValue* other);
+  protected:
+  explicit AttrValue(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  typedef AttrValue_ListValue ListValue;
+
+  // accessors -------------------------------------------------------
+
+  // bytes s = 2;
+  private:
+  bool has_s() const;
+  public:
+  void clear_s();
+  static const int kSFieldNumber = 2;
+  const ::std::string& s() const;
+  void set_s(const ::std::string& value);
+  #if LANG_CXX11
+  void set_s(::std::string&& value);
+  #endif
+  void set_s(const char* value);
+  void set_s(const void* value, size_t size);
+  ::std::string* mutable_s();
+  ::std::string* release_s();
+  void set_allocated_s(::std::string* s);
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  ::std::string* unsafe_arena_release_s();
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  void unsafe_arena_set_allocated_s(
+      ::std::string* s);
+
+  // int64 i = 3;
+  private:
+  bool has_i() const;
+  public:
+  void clear_i();
+  static const int kIFieldNumber = 3;
+  ::google::protobuf::int64 i() const;
+  void set_i(::google::protobuf::int64 value);
+
+  // float f = 4;
+  private:
+  bool has_f() const;
+  public:
+  void clear_f();
+  static const int kFFieldNumber = 4;
+  float f() const;
+  void set_f(float value);
+
+  // bool b = 5;
+  private:
+  bool has_b() const;
+  public:
+  void clear_b();
+  static const int kBFieldNumber = 5;
+  bool b() const;
+  void set_b(bool value);
+
+  // .tensorflow.DataType type = 6;
+  private:
+  bool has_type() const;
+  public:
+  void clear_type();
+  static const int kTypeFieldNumber = 6;
+  ::tensorflow::DataType type() const;
+  void set_type(::tensorflow::DataType value);
+
+  // .tensorflow.TensorShapeProto shape = 7;
+  bool has_shape() const;
+  void clear_shape();
+  static const int kShapeFieldNumber = 7;
+  const ::tensorflow::TensorShapeProto& shape() const;
+  ::tensorflow::TensorShapeProto* release_shape();
+  ::tensorflow::TensorShapeProto* mutable_shape();
+  void set_allocated_shape(::tensorflow::TensorShapeProto* shape);
+  void unsafe_arena_set_allocated_shape(
+      ::tensorflow::TensorShapeProto* shape);
+  ::tensorflow::TensorShapeProto* unsafe_arena_release_shape();
+
+  // .tensorflow.TensorProto tensor = 8;
+  bool has_tensor() const;
+  void clear_tensor();
+  static const int kTensorFieldNumber = 8;
+  const ::tensorflow::TensorProto& tensor() const;
+  ::tensorflow::TensorProto* release_tensor();
+  ::tensorflow::TensorProto* mutable_tensor();
+  void set_allocated_tensor(::tensorflow::TensorProto* tensor);
+  void unsafe_arena_set_allocated_tensor(
+      ::tensorflow::TensorProto* tensor);
+  ::tensorflow::TensorProto* unsafe_arena_release_tensor();
+
+  // .tensorflow.AttrValue.ListValue list = 1;
+  bool has_list() const;
+  void clear_list();
+  static const int kListFieldNumber = 1;
+  const ::tensorflow::AttrValue_ListValue& list() const;
+  ::tensorflow::AttrValue_ListValue* release_list();
+  ::tensorflow::AttrValue_ListValue* mutable_list();
+  void set_allocated_list(::tensorflow::AttrValue_ListValue* list);
+  void unsafe_arena_set_allocated_list(
+      ::tensorflow::AttrValue_ListValue* list);
+  ::tensorflow::AttrValue_ListValue* unsafe_arena_release_list();
+
+  // .tensorflow.NameAttrList func = 10;
+  bool has_func() const;
+  void clear_func();
+  static const int kFuncFieldNumber = 10;
+  const ::tensorflow::NameAttrList& func() const;
+  ::tensorflow::NameAttrList* release_func();
+  ::tensorflow::NameAttrList* mutable_func();
+  void set_allocated_func(::tensorflow::NameAttrList* func);
+  void unsafe_arena_set_allocated_func(
+      ::tensorflow::NameAttrList* func);
+  ::tensorflow::NameAttrList* unsafe_arena_release_func();
+
+  // string placeholder = 9;
+  private:
+  bool has_placeholder() const;
+  public:
+  void clear_placeholder();
+  static const int kPlaceholderFieldNumber = 9;
+  const ::std::string& placeholder() const;
+  void set_placeholder(const ::std::string& value);
+  #if LANG_CXX11
+  void set_placeholder(::std::string&& value);
+  #endif
+  void set_placeholder(const char* value);
+  void set_placeholder(const char* value, size_t size);
+  ::std::string* mutable_placeholder();
+  ::std::string* release_placeholder();
+  void set_allocated_placeholder(::std::string* placeholder);
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  ::std::string* unsafe_arena_release_placeholder();
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  void unsafe_arena_set_allocated_placeholder(
+      ::std::string* placeholder);
+
+  void clear_value();
+  ValueCase value_case() const;
+  // @@protoc_insertion_point(class_scope:tensorflow.AttrValue)
+ private:
+  class HasBitSetters;
+  void set_has_s();
+  void set_has_i();
+  void set_has_f();
+  void set_has_b();
+  void set_has_type();
+  void set_has_shape();
+  void set_has_tensor();
+  void set_has_list();
+  void set_has_func();
+  void set_has_placeholder();
+
+  inline bool has_value() const;
+  inline void clear_has_value();
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  union ValueUnion {
+    ValueUnion() {}
+    ::google::protobuf::internal::ArenaStringPtr s_;
+    ::google::protobuf::int64 i_;
+    float f_;
+    bool b_;
+    int type_;
+    ::tensorflow::TensorShapeProto* shape_;
+    ::tensorflow::TensorProto* tensor_;
+    ::tensorflow::AttrValue_ListValue* list_;
+    ::tensorflow::NameAttrList* func_;
+    ::google::protobuf::internal::ArenaStringPtr placeholder_;
+  } value_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  ::google::protobuf::uint32 _oneof_case_[1];
+
+  friend struct ::TableStruct_tensorflow_2fcore_2fframework_2fattr_5fvalue_2eproto;
+};
+// -------------------------------------------------------------------
+
+class NameAttrList_AttrEntry_DoNotUse : public ::google::protobuf::internal::MapEntry<NameAttrList_AttrEntry_DoNotUse, 
+    ::std::string, ::tensorflow::AttrValue,
+    ::google::protobuf::internal::WireFormatLite::TYPE_STRING,
+    ::google::protobuf::internal::WireFormatLite::TYPE_MESSAGE,
+    0 > {
+public:
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+static bool _ParseMap(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  typedef ::google::protobuf::internal::MapEntry<NameAttrList_AttrEntry_DoNotUse, 
+    ::std::string, ::tensorflow::AttrValue,
+    ::google::protobuf::internal::WireFormatLite::TYPE_STRING,
+    ::google::protobuf::internal::WireFormatLite::TYPE_MESSAGE,
+    0 > SuperType;
+  NameAttrList_AttrEntry_DoNotUse();
+  NameAttrList_AttrEntry_DoNotUse(::google::protobuf::Arena* arena);
+  void MergeFrom(const NameAttrList_AttrEntry_DoNotUse& other);
+  static const NameAttrList_AttrEntry_DoNotUse* internal_default_instance() { return reinterpret_cast<const NameAttrList_AttrEntry_DoNotUse*>(&_NameAttrList_AttrEntry_DoNotUse_default_instance_); }
+  void MergeFrom(const ::google::protobuf::Message& other) final;
+  ::google::protobuf::Metadata GetMetadata() const;
+};
+
+// -------------------------------------------------------------------
+
+class NameAttrList : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.NameAttrList) */ {
+ public:
+  NameAttrList();
+  virtual ~NameAttrList();
+
+  NameAttrList(const NameAttrList& from);
+
+  inline NameAttrList& operator=(const NameAttrList& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  NameAttrList(NameAttrList&& from) noexcept
+    : NameAttrList() {
+    *this = ::std::move(from);
+  }
+
+  inline NameAttrList& operator=(NameAttrList&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const NameAttrList& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const NameAttrList* internal_default_instance() {
+    return reinterpret_cast<const NameAttrList*>(
+               &_NameAttrList_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    3;
+
+  void UnsafeArenaSwap(NameAttrList* other);
+  void Swap(NameAttrList* other);
+  friend void swap(NameAttrList& a, NameAttrList& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline NameAttrList* New() const final {
+    return CreateMaybeMessage<NameAttrList>(NULL);
+  }
+
+  NameAttrList* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<NameAttrList>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const NameAttrList& from);
+  void MergeFrom(const NameAttrList& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(NameAttrList* other);
+  protected:
+  explicit NameAttrList(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+
+  // accessors -------------------------------------------------------
+
+  // map<string, .tensorflow.AttrValue> attr = 2;
+  int attr_size() const;
+  void clear_attr();
+  static const int kAttrFieldNumber = 2;
+  const ::google::protobuf::Map< ::std::string, ::tensorflow::AttrValue >&
+      attr() const;
+  ::google::protobuf::Map< ::std::string, ::tensorflow::AttrValue >*
+      mutable_attr();
+
+  // string name = 1;
+  void clear_name();
+  static const int kNameFieldNumber = 1;
+  const ::std::string& name() const;
+  void set_name(const ::std::string& value);
+  #if LANG_CXX11
+  void set_name(::std::string&& value);
+  #endif
+  void set_name(const char* value);
+  void set_name(const char* value, size_t size);
+  ::std::string* mutable_name();
+  ::std::string* release_name();
+  void set_allocated_name(::std::string* name);
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  ::std::string* unsafe_arena_release_name();
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  void unsafe_arena_set_allocated_name(
+      ::std::string* name);
+
+  // @@protoc_insertion_point(class_scope:tensorflow.NameAttrList)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  ::google::protobuf::internal::MapField<
+      NameAttrList_AttrEntry_DoNotUse,
+      ::std::string, ::tensorflow::AttrValue,
+      ::google::protobuf::internal::WireFormatLite::TYPE_STRING,
+      ::google::protobuf::internal::WireFormatLite::TYPE_MESSAGE,
+      0 > attr_;
+  ::google::protobuf::internal::ArenaStringPtr name_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fframework_2fattr_5fvalue_2eproto;
+};
+// ===================================================================
+
+
+// ===================================================================
+
+#ifdef __GNUC__
+  #pragma GCC diagnostic push
+  #pragma GCC diagnostic ignored "-Wstrict-aliasing"
+#endif  // __GNUC__
+// AttrValue_ListValue
+
+// repeated bytes s = 2;
+inline int AttrValue_ListValue::s_size() const {
+  return s_.size();
+}
+inline void AttrValue_ListValue::clear_s() {
+  s_.Clear();
+}
+inline const ::std::string& AttrValue_ListValue::s(int index) const {
+  // @@protoc_insertion_point(field_get:tensorflow.AttrValue.ListValue.s)
+  return s_.Get(index);
+}
+inline ::std::string* AttrValue_ListValue::mutable_s(int index) {
+  // @@protoc_insertion_point(field_mutable:tensorflow.AttrValue.ListValue.s)
+  return s_.Mutable(index);
+}
+inline void AttrValue_ListValue::set_s(int index, const ::std::string& value) {
+  // @@protoc_insertion_point(field_set:tensorflow.AttrValue.ListValue.s)
+  s_.Mutable(index)->assign(value);
+}
+#if LANG_CXX11
+inline void AttrValue_ListValue::set_s(int index, ::std::string&& value) {
+  // @@protoc_insertion_point(field_set:tensorflow.AttrValue.ListValue.s)
+  s_.Mutable(index)->assign(std::move(value));
+}
+#endif
+inline void AttrValue_ListValue::set_s(int index, const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  s_.Mutable(index)->assign(value);
+  // @@protoc_insertion_point(field_set_char:tensorflow.AttrValue.ListValue.s)
+}
+inline void AttrValue_ListValue::set_s(int index, const void* value, size_t size) {
+  s_.Mutable(index)->assign(
+    reinterpret_cast<const char*>(value), size);
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.AttrValue.ListValue.s)
+}
+inline ::std::string* AttrValue_ListValue::add_s() {
+  // @@protoc_insertion_point(field_add_mutable:tensorflow.AttrValue.ListValue.s)
+  return s_.Add();
+}
+inline void AttrValue_ListValue::add_s(const ::std::string& value) {
+  s_.Add()->assign(value);
+  // @@protoc_insertion_point(field_add:tensorflow.AttrValue.ListValue.s)
+}
+#if LANG_CXX11
+inline void AttrValue_ListValue::add_s(::std::string&& value) {
+  s_.Add(std::move(value));
+  // @@protoc_insertion_point(field_add:tensorflow.AttrValue.ListValue.s)
+}
+#endif
+inline void AttrValue_ListValue::add_s(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  s_.Add()->assign(value);
+  // @@protoc_insertion_point(field_add_char:tensorflow.AttrValue.ListValue.s)
+}
+inline void AttrValue_ListValue::add_s(const void* value, size_t size) {
+  s_.Add()->assign(reinterpret_cast<const char*>(value), size);
+  // @@protoc_insertion_point(field_add_pointer:tensorflow.AttrValue.ListValue.s)
+}
+inline const ::google::protobuf::RepeatedPtrField<::std::string>&
+AttrValue_ListValue::s() const {
+  // @@protoc_insertion_point(field_list:tensorflow.AttrValue.ListValue.s)
+  return s_;
+}
+inline ::google::protobuf::RepeatedPtrField<::std::string>*
+AttrValue_ListValue::mutable_s() {
+  // @@protoc_insertion_point(field_mutable_list:tensorflow.AttrValue.ListValue.s)
+  return &s_;
+}
+
+// repeated int64 i = 3 [packed = true];
+inline int AttrValue_ListValue::i_size() const {
+  return i_.size();
+}
+inline void AttrValue_ListValue::clear_i() {
+  i_.Clear();
+}
+inline ::google::protobuf::int64 AttrValue_ListValue::i(int index) const {
+  // @@protoc_insertion_point(field_get:tensorflow.AttrValue.ListValue.i)
+  return i_.Get(index);
+}
+inline void AttrValue_ListValue::set_i(int index, ::google::protobuf::int64 value) {
+  i_.Set(index, value);
+  // @@protoc_insertion_point(field_set:tensorflow.AttrValue.ListValue.i)
+}
+inline void AttrValue_ListValue::add_i(::google::protobuf::int64 value) {
+  i_.Add(value);
+  // @@protoc_insertion_point(field_add:tensorflow.AttrValue.ListValue.i)
+}
+inline const ::google::protobuf::RepeatedField< ::google::protobuf::int64 >&
+AttrValue_ListValue::i() const {
+  // @@protoc_insertion_point(field_list:tensorflow.AttrValue.ListValue.i)
+  return i_;
+}
+inline ::google::protobuf::RepeatedField< ::google::protobuf::int64 >*
+AttrValue_ListValue::mutable_i() {
+  // @@protoc_insertion_point(field_mutable_list:tensorflow.AttrValue.ListValue.i)
+  return &i_;
+}
+
+// repeated float f = 4 [packed = true];
+inline int AttrValue_ListValue::f_size() const {
+  return f_.size();
+}
+inline void AttrValue_ListValue::clear_f() {
+  f_.Clear();
+}
+inline float AttrValue_ListValue::f(int index) const {
+  // @@protoc_insertion_point(field_get:tensorflow.AttrValue.ListValue.f)
+  return f_.Get(index);
+}
+inline void AttrValue_ListValue::set_f(int index, float value) {
+  f_.Set(index, value);
+  // @@protoc_insertion_point(field_set:tensorflow.AttrValue.ListValue.f)
+}
+inline void AttrValue_ListValue::add_f(float value) {
+  f_.Add(value);
+  // @@protoc_insertion_point(field_add:tensorflow.AttrValue.ListValue.f)
+}
+inline const ::google::protobuf::RepeatedField< float >&
+AttrValue_ListValue::f() const {
+  // @@protoc_insertion_point(field_list:tensorflow.AttrValue.ListValue.f)
+  return f_;
+}
+inline ::google::protobuf::RepeatedField< float >*
+AttrValue_ListValue::mutable_f() {
+  // @@protoc_insertion_point(field_mutable_list:tensorflow.AttrValue.ListValue.f)
+  return &f_;
+}
+
+// repeated bool b = 5 [packed = true];
+inline int AttrValue_ListValue::b_size() const {
+  return b_.size();
+}
+inline void AttrValue_ListValue::clear_b() {
+  b_.Clear();
+}
+inline bool AttrValue_ListValue::b(int index) const {
+  // @@protoc_insertion_point(field_get:tensorflow.AttrValue.ListValue.b)
+  return b_.Get(index);
+}
+inline void AttrValue_ListValue::set_b(int index, bool value) {
+  b_.Set(index, value);
+  // @@protoc_insertion_point(field_set:tensorflow.AttrValue.ListValue.b)
+}
+inline void AttrValue_ListValue::add_b(bool value) {
+  b_.Add(value);
+  // @@protoc_insertion_point(field_add:tensorflow.AttrValue.ListValue.b)
+}
+inline const ::google::protobuf::RepeatedField< bool >&
+AttrValue_ListValue::b() const {
+  // @@protoc_insertion_point(field_list:tensorflow.AttrValue.ListValue.b)
+  return b_;
+}
+inline ::google::protobuf::RepeatedField< bool >*
+AttrValue_ListValue::mutable_b() {
+  // @@protoc_insertion_point(field_mutable_list:tensorflow.AttrValue.ListValue.b)
+  return &b_;
+}
+
+// repeated .tensorflow.DataType type = 6 [packed = true];
+inline int AttrValue_ListValue::type_size() const {
+  return type_.size();
+}
+inline void AttrValue_ListValue::clear_type() {
+  type_.Clear();
+}
+inline ::tensorflow::DataType AttrValue_ListValue::type(int index) const {
+  // @@protoc_insertion_point(field_get:tensorflow.AttrValue.ListValue.type)
+  return static_cast< ::tensorflow::DataType >(type_.Get(index));
+}
+inline void AttrValue_ListValue::set_type(int index, ::tensorflow::DataType value) {
+  type_.Set(index, value);
+  // @@protoc_insertion_point(field_set:tensorflow.AttrValue.ListValue.type)
+}
+inline void AttrValue_ListValue::add_type(::tensorflow::DataType value) {
+  type_.Add(value);
+  // @@protoc_insertion_point(field_add:tensorflow.AttrValue.ListValue.type)
+}
+inline const ::google::protobuf::RepeatedField<int>&
+AttrValue_ListValue::type() const {
+  // @@protoc_insertion_point(field_list:tensorflow.AttrValue.ListValue.type)
+  return type_;
+}
+inline ::google::protobuf::RepeatedField<int>*
+AttrValue_ListValue::mutable_type() {
+  // @@protoc_insertion_point(field_mutable_list:tensorflow.AttrValue.ListValue.type)
+  return &type_;
+}
+
+// repeated .tensorflow.TensorShapeProto shape = 7;
+inline int AttrValue_ListValue::shape_size() const {
+  return shape_.size();
+}
+inline ::tensorflow::TensorShapeProto* AttrValue_ListValue::mutable_shape(int index) {
+  // @@protoc_insertion_point(field_mutable:tensorflow.AttrValue.ListValue.shape)
+  return shape_.Mutable(index);
+}
+inline ::google::protobuf::RepeatedPtrField< ::tensorflow::TensorShapeProto >*
+AttrValue_ListValue::mutable_shape() {
+  // @@protoc_insertion_point(field_mutable_list:tensorflow.AttrValue.ListValue.shape)
+  return &shape_;
+}
+inline const ::tensorflow::TensorShapeProto& AttrValue_ListValue::shape(int index) const {
+  // @@protoc_insertion_point(field_get:tensorflow.AttrValue.ListValue.shape)
+  return shape_.Get(index);
+}
+inline ::tensorflow::TensorShapeProto* AttrValue_ListValue::add_shape() {
+  // @@protoc_insertion_point(field_add:tensorflow.AttrValue.ListValue.shape)
+  return shape_.Add();
+}
+inline const ::google::protobuf::RepeatedPtrField< ::tensorflow::TensorShapeProto >&
+AttrValue_ListValue::shape() const {
+  // @@protoc_insertion_point(field_list:tensorflow.AttrValue.ListValue.shape)
+  return shape_;
+}
+
+// repeated .tensorflow.TensorProto tensor = 8;
+inline int AttrValue_ListValue::tensor_size() const {
+  return tensor_.size();
+}
+inline ::tensorflow::TensorProto* AttrValue_ListValue::mutable_tensor(int index) {
+  // @@protoc_insertion_point(field_mutable:tensorflow.AttrValue.ListValue.tensor)
+  return tensor_.Mutable(index);
+}
+inline ::google::protobuf::RepeatedPtrField< ::tensorflow::TensorProto >*
+AttrValue_ListValue::mutable_tensor() {
+  // @@protoc_insertion_point(field_mutable_list:tensorflow.AttrValue.ListValue.tensor)
+  return &tensor_;
+}
+inline const ::tensorflow::TensorProto& AttrValue_ListValue::tensor(int index) const {
+  // @@protoc_insertion_point(field_get:tensorflow.AttrValue.ListValue.tensor)
+  return tensor_.Get(index);
+}
+inline ::tensorflow::TensorProto* AttrValue_ListValue::add_tensor() {
+  // @@protoc_insertion_point(field_add:tensorflow.AttrValue.ListValue.tensor)
+  return tensor_.Add();
+}
+inline const ::google::protobuf::RepeatedPtrField< ::tensorflow::TensorProto >&
+AttrValue_ListValue::tensor() const {
+  // @@protoc_insertion_point(field_list:tensorflow.AttrValue.ListValue.tensor)
+  return tensor_;
+}
+
+// repeated .tensorflow.NameAttrList func = 9;
+inline int AttrValue_ListValue::func_size() const {
+  return func_.size();
+}
+inline void AttrValue_ListValue::clear_func() {
+  func_.Clear();
+}
+inline ::tensorflow::NameAttrList* AttrValue_ListValue::mutable_func(int index) {
+  // @@protoc_insertion_point(field_mutable:tensorflow.AttrValue.ListValue.func)
+  return func_.Mutable(index);
+}
+inline ::google::protobuf::RepeatedPtrField< ::tensorflow::NameAttrList >*
+AttrValue_ListValue::mutable_func() {
+  // @@protoc_insertion_point(field_mutable_list:tensorflow.AttrValue.ListValue.func)
+  return &func_;
+}
+inline const ::tensorflow::NameAttrList& AttrValue_ListValue::func(int index) const {
+  // @@protoc_insertion_point(field_get:tensorflow.AttrValue.ListValue.func)
+  return func_.Get(index);
+}
+inline ::tensorflow::NameAttrList* AttrValue_ListValue::add_func() {
+  // @@protoc_insertion_point(field_add:tensorflow.AttrValue.ListValue.func)
+  return func_.Add();
+}
+inline const ::google::protobuf::RepeatedPtrField< ::tensorflow::NameAttrList >&
+AttrValue_ListValue::func() const {
+  // @@protoc_insertion_point(field_list:tensorflow.AttrValue.ListValue.func)
+  return func_;
+}
+
+// -------------------------------------------------------------------
+
+// AttrValue
+
+// bytes s = 2;
+inline bool AttrValue::has_s() const {
+  return value_case() == kS;
+}
+inline void AttrValue::set_has_s() {
+  _oneof_case_[0] = kS;
+}
+inline void AttrValue::clear_s() {
+  if (has_s()) {
+    value_.s_.Destroy(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+        GetArenaNoVirtual());
+    clear_has_value();
+  }
+}
+inline const ::std::string& AttrValue::s() const {
+  // @@protoc_insertion_point(field_get:tensorflow.AttrValue.s)
+  if (has_s()) {
+    return value_.s_.Get();
+  }
+  return *&::google::protobuf::internal::GetEmptyStringAlreadyInited();
+}
+inline void AttrValue::set_s(const ::std::string& value) {
+  if (!has_s()) {
+    clear_value();
+    set_has_s();
+    value_.s_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  }
+  value_.s_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value,
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set:tensorflow.AttrValue.s)
+}
+#if LANG_CXX11
+inline void AttrValue::set_s(::std::string&& value) {
+  // @@protoc_insertion_point(field_set:tensorflow.AttrValue.s)
+  if (!has_s()) {
+    clear_value();
+    set_has_s();
+    value_.s_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  }
+  value_.s_.Set(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.AttrValue.s)
+}
+#endif
+inline void AttrValue::set_s(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  if (!has_s()) {
+    clear_value();
+    set_has_s();
+    value_.s_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  }
+  value_.s_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      ::std::string(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_char:tensorflow.AttrValue.s)
+}
+inline void AttrValue::set_s(const void* value,
+                             size_t size) {
+  if (!has_s()) {
+    clear_value();
+    set_has_s();
+    value_.s_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  }
+  value_.s_.Set(
+      &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
+      reinterpret_cast<const char*>(value), size),
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.AttrValue.s)
+}
+inline ::std::string* AttrValue::mutable_s() {
+  if (!has_s()) {
+    clear_value();
+    set_has_s();
+    value_.s_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  }
+  return value_.s_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_mutable:tensorflow.AttrValue.s)
+}
+inline ::std::string* AttrValue::release_s() {
+  // @@protoc_insertion_point(field_release:tensorflow.AttrValue.s)
+  if (has_s()) {
+    clear_has_value();
+    return value_.s_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+        GetArenaNoVirtual());
+  } else {
+    return NULL;
+  }
+}
+inline void AttrValue::set_allocated_s(::std::string* s) {
+  if (has_value()) {
+    clear_value();
+  }
+  if (s != NULL) {
+    set_has_s();
+    value_.s_.UnsafeSetDefault(s);
+  }
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.AttrValue.s)
+}
+inline ::std::string* AttrValue::unsafe_arena_release_s() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.AttrValue.s)
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (has_s()) {
+    clear_has_value();
+    return value_.s_.UnsafeArenaRelease(
+        &::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+  } else {
+    return NULL;
+  }
+}
+inline void AttrValue::unsafe_arena_set_allocated_s(::std::string* s) {
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (!has_s()) {
+    value_.s_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  }
+  clear_value();
+  if (s) {
+    set_has_s();
+    value_.s_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), s, GetArenaNoVirtual());
+  }
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.AttrValue.s)
+}
+
+// int64 i = 3;
+inline bool AttrValue::has_i() const {
+  return value_case() == kI;
+}
+inline void AttrValue::set_has_i() {
+  _oneof_case_[0] = kI;
+}
+inline void AttrValue::clear_i() {
+  if (has_i()) {
+    value_.i_ = PROTOBUF_LONGLONG(0);
+    clear_has_value();
+  }
+}
+inline ::google::protobuf::int64 AttrValue::i() const {
+  // @@protoc_insertion_point(field_get:tensorflow.AttrValue.i)
+  if (has_i()) {
+    return value_.i_;
+  }
+  return PROTOBUF_LONGLONG(0);
+}
+inline void AttrValue::set_i(::google::protobuf::int64 value) {
+  if (!has_i()) {
+    clear_value();
+    set_has_i();
+  }
+  value_.i_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.AttrValue.i)
+}
+
+// float f = 4;
+inline bool AttrValue::has_f() const {
+  return value_case() == kF;
+}
+inline void AttrValue::set_has_f() {
+  _oneof_case_[0] = kF;
+}
+inline void AttrValue::clear_f() {
+  if (has_f()) {
+    value_.f_ = 0;
+    clear_has_value();
+  }
+}
+inline float AttrValue::f() const {
+  // @@protoc_insertion_point(field_get:tensorflow.AttrValue.f)
+  if (has_f()) {
+    return value_.f_;
+  }
+  return 0;
+}
+inline void AttrValue::set_f(float value) {
+  if (!has_f()) {
+    clear_value();
+    set_has_f();
+  }
+  value_.f_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.AttrValue.f)
+}
+
+// bool b = 5;
+inline bool AttrValue::has_b() const {
+  return value_case() == kB;
+}
+inline void AttrValue::set_has_b() {
+  _oneof_case_[0] = kB;
+}
+inline void AttrValue::clear_b() {
+  if (has_b()) {
+    value_.b_ = false;
+    clear_has_value();
+  }
+}
+inline bool AttrValue::b() const {
+  // @@protoc_insertion_point(field_get:tensorflow.AttrValue.b)
+  if (has_b()) {
+    return value_.b_;
+  }
+  return false;
+}
+inline void AttrValue::set_b(bool value) {
+  if (!has_b()) {
+    clear_value();
+    set_has_b();
+  }
+  value_.b_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.AttrValue.b)
+}
+
+// .tensorflow.DataType type = 6;
+inline bool AttrValue::has_type() const {
+  return value_case() == kType;
+}
+inline void AttrValue::set_has_type() {
+  _oneof_case_[0] = kType;
+}
+inline void AttrValue::clear_type() {
+  if (has_type()) {
+    value_.type_ = 0;
+    clear_has_value();
+  }
+}
+inline ::tensorflow::DataType AttrValue::type() const {
+  // @@protoc_insertion_point(field_get:tensorflow.AttrValue.type)
+  if (has_type()) {
+    return static_cast< ::tensorflow::DataType >(value_.type_);
+  }
+  return static_cast< ::tensorflow::DataType >(0);
+}
+inline void AttrValue::set_type(::tensorflow::DataType value) {
+  if (!has_type()) {
+    clear_value();
+    set_has_type();
+  }
+  value_.type_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.AttrValue.type)
+}
+
+// .tensorflow.TensorShapeProto shape = 7;
+inline bool AttrValue::has_shape() const {
+  return value_case() == kShape;
+}
+inline void AttrValue::set_has_shape() {
+  _oneof_case_[0] = kShape;
+}
+inline ::tensorflow::TensorShapeProto* AttrValue::release_shape() {
+  // @@protoc_insertion_point(field_release:tensorflow.AttrValue.shape)
+  if (has_shape()) {
+    clear_has_value();
+      ::tensorflow::TensorShapeProto* temp = value_.shape_;
+    if (GetArenaNoVirtual() != NULL) {
+      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
+    }
+    value_.shape_ = NULL;
+    return temp;
+  } else {
+    return NULL;
+  }
+}
+inline const ::tensorflow::TensorShapeProto& AttrValue::shape() const {
+  // @@protoc_insertion_point(field_get:tensorflow.AttrValue.shape)
+  return has_shape()
+      ? *value_.shape_
+      : *reinterpret_cast< ::tensorflow::TensorShapeProto*>(&::tensorflow::_TensorShapeProto_default_instance_);
+}
+inline ::tensorflow::TensorShapeProto* AttrValue::unsafe_arena_release_shape() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.AttrValue.shape)
+  if (has_shape()) {
+    clear_has_value();
+    ::tensorflow::TensorShapeProto* temp = value_.shape_;
+    value_.shape_ = NULL;
+    return temp;
+  } else {
+    return NULL;
+  }
+}
+inline void AttrValue::unsafe_arena_set_allocated_shape(::tensorflow::TensorShapeProto* shape) {
+  clear_value();
+  if (shape) {
+    set_has_shape();
+    value_.shape_ = shape;
+  }
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.AttrValue.shape)
+}
+inline ::tensorflow::TensorShapeProto* AttrValue::mutable_shape() {
+  if (!has_shape()) {
+    clear_value();
+    set_has_shape();
+    value_.shape_ = CreateMaybeMessage< ::tensorflow::TensorShapeProto >(
+        GetArenaNoVirtual());
+  }
+  // @@protoc_insertion_point(field_mutable:tensorflow.AttrValue.shape)
+  return value_.shape_;
+}
+
+// .tensorflow.TensorProto tensor = 8;
+inline bool AttrValue::has_tensor() const {
+  return value_case() == kTensor;
+}
+inline void AttrValue::set_has_tensor() {
+  _oneof_case_[0] = kTensor;
+}
+inline ::tensorflow::TensorProto* AttrValue::release_tensor() {
+  // @@protoc_insertion_point(field_release:tensorflow.AttrValue.tensor)
+  if (has_tensor()) {
+    clear_has_value();
+      ::tensorflow::TensorProto* temp = value_.tensor_;
+    if (GetArenaNoVirtual() != NULL) {
+      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
+    }
+    value_.tensor_ = NULL;
+    return temp;
+  } else {
+    return NULL;
+  }
+}
+inline const ::tensorflow::TensorProto& AttrValue::tensor() const {
+  // @@protoc_insertion_point(field_get:tensorflow.AttrValue.tensor)
+  return has_tensor()
+      ? *value_.tensor_
+      : *reinterpret_cast< ::tensorflow::TensorProto*>(&::tensorflow::_TensorProto_default_instance_);
+}
+inline ::tensorflow::TensorProto* AttrValue::unsafe_arena_release_tensor() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.AttrValue.tensor)
+  if (has_tensor()) {
+    clear_has_value();
+    ::tensorflow::TensorProto* temp = value_.tensor_;
+    value_.tensor_ = NULL;
+    return temp;
+  } else {
+    return NULL;
+  }
+}
+inline void AttrValue::unsafe_arena_set_allocated_tensor(::tensorflow::TensorProto* tensor) {
+  clear_value();
+  if (tensor) {
+    set_has_tensor();
+    value_.tensor_ = tensor;
+  }
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.AttrValue.tensor)
+}
+inline ::tensorflow::TensorProto* AttrValue::mutable_tensor() {
+  if (!has_tensor()) {
+    clear_value();
+    set_has_tensor();
+    value_.tensor_ = CreateMaybeMessage< ::tensorflow::TensorProto >(
+        GetArenaNoVirtual());
+  }
+  // @@protoc_insertion_point(field_mutable:tensorflow.AttrValue.tensor)
+  return value_.tensor_;
+}
+
+// .tensorflow.AttrValue.ListValue list = 1;
+inline bool AttrValue::has_list() const {
+  return value_case() == kList;
+}
+inline void AttrValue::set_has_list() {
+  _oneof_case_[0] = kList;
+}
+inline void AttrValue::clear_list() {
+  if (has_list()) {
+    if (GetArenaNoVirtual() == NULL) {
+      delete value_.list_;
+    }
+    clear_has_value();
+  }
+}
+inline ::tensorflow::AttrValue_ListValue* AttrValue::release_list() {
+  // @@protoc_insertion_point(field_release:tensorflow.AttrValue.list)
+  if (has_list()) {
+    clear_has_value();
+      ::tensorflow::AttrValue_ListValue* temp = value_.list_;
+    if (GetArenaNoVirtual() != NULL) {
+      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
+    }
+    value_.list_ = NULL;
+    return temp;
+  } else {
+    return NULL;
+  }
+}
+inline const ::tensorflow::AttrValue_ListValue& AttrValue::list() const {
+  // @@protoc_insertion_point(field_get:tensorflow.AttrValue.list)
+  return has_list()
+      ? *value_.list_
+      : *reinterpret_cast< ::tensorflow::AttrValue_ListValue*>(&::tensorflow::_AttrValue_ListValue_default_instance_);
+}
+inline ::tensorflow::AttrValue_ListValue* AttrValue::unsafe_arena_release_list() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.AttrValue.list)
+  if (has_list()) {
+    clear_has_value();
+    ::tensorflow::AttrValue_ListValue* temp = value_.list_;
+    value_.list_ = NULL;
+    return temp;
+  } else {
+    return NULL;
+  }
+}
+inline void AttrValue::unsafe_arena_set_allocated_list(::tensorflow::AttrValue_ListValue* list) {
+  clear_value();
+  if (list) {
+    set_has_list();
+    value_.list_ = list;
+  }
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.AttrValue.list)
+}
+inline ::tensorflow::AttrValue_ListValue* AttrValue::mutable_list() {
+  if (!has_list()) {
+    clear_value();
+    set_has_list();
+    value_.list_ = CreateMaybeMessage< ::tensorflow::AttrValue_ListValue >(
+        GetArenaNoVirtual());
+  }
+  // @@protoc_insertion_point(field_mutable:tensorflow.AttrValue.list)
+  return value_.list_;
+}
+
+// .tensorflow.NameAttrList func = 10;
+inline bool AttrValue::has_func() const {
+  return value_case() == kFunc;
+}
+inline void AttrValue::set_has_func() {
+  _oneof_case_[0] = kFunc;
+}
+inline void AttrValue::clear_func() {
+  if (has_func()) {
+    if (GetArenaNoVirtual() == NULL) {
+      delete value_.func_;
+    }
+    clear_has_value();
+  }
+}
+inline ::tensorflow::NameAttrList* AttrValue::release_func() {
+  // @@protoc_insertion_point(field_release:tensorflow.AttrValue.func)
+  if (has_func()) {
+    clear_has_value();
+      ::tensorflow::NameAttrList* temp = value_.func_;
+    if (GetArenaNoVirtual() != NULL) {
+      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
+    }
+    value_.func_ = NULL;
+    return temp;
+  } else {
+    return NULL;
+  }
+}
+inline const ::tensorflow::NameAttrList& AttrValue::func() const {
+  // @@protoc_insertion_point(field_get:tensorflow.AttrValue.func)
+  return has_func()
+      ? *value_.func_
+      : *reinterpret_cast< ::tensorflow::NameAttrList*>(&::tensorflow::_NameAttrList_default_instance_);
+}
+inline ::tensorflow::NameAttrList* AttrValue::unsafe_arena_release_func() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.AttrValue.func)
+  if (has_func()) {
+    clear_has_value();
+    ::tensorflow::NameAttrList* temp = value_.func_;
+    value_.func_ = NULL;
+    return temp;
+  } else {
+    return NULL;
+  }
+}
+inline void AttrValue::unsafe_arena_set_allocated_func(::tensorflow::NameAttrList* func) {
+  clear_value();
+  if (func) {
+    set_has_func();
+    value_.func_ = func;
+  }
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.AttrValue.func)
+}
+inline ::tensorflow::NameAttrList* AttrValue::mutable_func() {
+  if (!has_func()) {
+    clear_value();
+    set_has_func();
+    value_.func_ = CreateMaybeMessage< ::tensorflow::NameAttrList >(
+        GetArenaNoVirtual());
+  }
+  // @@protoc_insertion_point(field_mutable:tensorflow.AttrValue.func)
+  return value_.func_;
+}
+
+// string placeholder = 9;
+inline bool AttrValue::has_placeholder() const {
+  return value_case() == kPlaceholder;
+}
+inline void AttrValue::set_has_placeholder() {
+  _oneof_case_[0] = kPlaceholder;
+}
+inline void AttrValue::clear_placeholder() {
+  if (has_placeholder()) {
+    value_.placeholder_.Destroy(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+        GetArenaNoVirtual());
+    clear_has_value();
+  }
+}
+inline const ::std::string& AttrValue::placeholder() const {
+  // @@protoc_insertion_point(field_get:tensorflow.AttrValue.placeholder)
+  if (has_placeholder()) {
+    return value_.placeholder_.Get();
+  }
+  return *&::google::protobuf::internal::GetEmptyStringAlreadyInited();
+}
+inline void AttrValue::set_placeholder(const ::std::string& value) {
+  if (!has_placeholder()) {
+    clear_value();
+    set_has_placeholder();
+    value_.placeholder_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  }
+  value_.placeholder_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value,
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set:tensorflow.AttrValue.placeholder)
+}
+#if LANG_CXX11
+inline void AttrValue::set_placeholder(::std::string&& value) {
+  // @@protoc_insertion_point(field_set:tensorflow.AttrValue.placeholder)
+  if (!has_placeholder()) {
+    clear_value();
+    set_has_placeholder();
+    value_.placeholder_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  }
+  value_.placeholder_.Set(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.AttrValue.placeholder)
+}
+#endif
+inline void AttrValue::set_placeholder(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  if (!has_placeholder()) {
+    clear_value();
+    set_has_placeholder();
+    value_.placeholder_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  }
+  value_.placeholder_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      ::std::string(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_char:tensorflow.AttrValue.placeholder)
+}
+inline void AttrValue::set_placeholder(const char* value,
+                             size_t size) {
+  if (!has_placeholder()) {
+    clear_value();
+    set_has_placeholder();
+    value_.placeholder_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  }
+  value_.placeholder_.Set(
+      &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
+      reinterpret_cast<const char*>(value), size),
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.AttrValue.placeholder)
+}
+inline ::std::string* AttrValue::mutable_placeholder() {
+  if (!has_placeholder()) {
+    clear_value();
+    set_has_placeholder();
+    value_.placeholder_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  }
+  return value_.placeholder_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_mutable:tensorflow.AttrValue.placeholder)
+}
+inline ::std::string* AttrValue::release_placeholder() {
+  // @@protoc_insertion_point(field_release:tensorflow.AttrValue.placeholder)
+  if (has_placeholder()) {
+    clear_has_value();
+    return value_.placeholder_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+        GetArenaNoVirtual());
+  } else {
+    return NULL;
+  }
+}
+inline void AttrValue::set_allocated_placeholder(::std::string* placeholder) {
+  if (has_value()) {
+    clear_value();
+  }
+  if (placeholder != NULL) {
+    set_has_placeholder();
+    value_.placeholder_.UnsafeSetDefault(placeholder);
+  }
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.AttrValue.placeholder)
+}
+inline ::std::string* AttrValue::unsafe_arena_release_placeholder() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.AttrValue.placeholder)
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (has_placeholder()) {
+    clear_has_value();
+    return value_.placeholder_.UnsafeArenaRelease(
+        &::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+  } else {
+    return NULL;
+  }
+}
+inline void AttrValue::unsafe_arena_set_allocated_placeholder(::std::string* placeholder) {
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (!has_placeholder()) {
+    value_.placeholder_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  }
+  clear_value();
+  if (placeholder) {
+    set_has_placeholder();
+    value_.placeholder_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), placeholder, GetArenaNoVirtual());
+  }
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.AttrValue.placeholder)
+}
+
+inline bool AttrValue::has_value() const {
+  return value_case() != VALUE_NOT_SET;
+}
+inline void AttrValue::clear_has_value() {
+  _oneof_case_[0] = VALUE_NOT_SET;
+}
+inline AttrValue::ValueCase AttrValue::value_case() const {
+  return AttrValue::ValueCase(_oneof_case_[0]);
+}
+// -------------------------------------------------------------------
+
+// -------------------------------------------------------------------
+
+// NameAttrList
+
+// string name = 1;
+inline void NameAttrList::clear_name() {
+  name_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline const ::std::string& NameAttrList::name() const {
+  // @@protoc_insertion_point(field_get:tensorflow.NameAttrList.name)
+  return name_.Get();
+}
+inline void NameAttrList::set_name(const ::std::string& value) {
+  
+  name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set:tensorflow.NameAttrList.name)
+}
+#if LANG_CXX11
+inline void NameAttrList::set_name(::std::string&& value) {
+  
+  name_.Set(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.NameAttrList.name)
+}
+#endif
+inline void NameAttrList::set_name(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
+              GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_char:tensorflow.NameAttrList.name)
+}
+inline void NameAttrList::set_name(const char* value,
+    size_t size) {
+  
+  name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
+      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.NameAttrList.name)
+}
+inline ::std::string* NameAttrList::mutable_name() {
+  
+  // @@protoc_insertion_point(field_mutable:tensorflow.NameAttrList.name)
+  return name_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline ::std::string* NameAttrList::release_name() {
+  // @@protoc_insertion_point(field_release:tensorflow.NameAttrList.name)
+  
+  return name_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline void NameAttrList::set_allocated_name(::std::string* name) {
+  if (name != NULL) {
+    
+  } else {
+    
+  }
+  name_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), name,
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.NameAttrList.name)
+}
+inline ::std::string* NameAttrList::unsafe_arena_release_name() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.NameAttrList.name)
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  
+  return name_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      GetArenaNoVirtual());
+}
+inline void NameAttrList::unsafe_arena_set_allocated_name(
+    ::std::string* name) {
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (name != NULL) {
+    
+  } else {
+    
+  }
+  name_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      name, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.NameAttrList.name)
+}
+
+// map<string, .tensorflow.AttrValue> attr = 2;
+inline int NameAttrList::attr_size() const {
+  return attr_.size();
+}
+inline void NameAttrList::clear_attr() {
+  attr_.Clear();
+}
+inline const ::google::protobuf::Map< ::std::string, ::tensorflow::AttrValue >&
+NameAttrList::attr() const {
+  // @@protoc_insertion_point(field_map:tensorflow.NameAttrList.attr)
+  return attr_.GetMap();
+}
+inline ::google::protobuf::Map< ::std::string, ::tensorflow::AttrValue >*
+NameAttrList::mutable_attr() {
+  // @@protoc_insertion_point(field_mutable_map:tensorflow.NameAttrList.attr)
+  return attr_.MutableMap();
+}
+
+#ifdef __GNUC__
+  #pragma GCC diagnostic pop
+#endif  // __GNUC__
+// -------------------------------------------------------------------
+
+// -------------------------------------------------------------------
+
+// -------------------------------------------------------------------
+
+
+// @@protoc_insertion_point(namespace_scope)
+
+}  // namespace tensorflow
+
+// @@protoc_insertion_point(global_scope)
+
+#include <google/protobuf/port_undef.inc>
+#endif  // PROTOBUF_INCLUDED_tensorflow_2fcore_2fframework_2fattr_5fvalue_2eproto
diff --git a/tensorflow/core/framework/attr_value.proto b/tensorflow/core/framework/attr_value.proto
new file mode 100644 (file)
index 0000000..054e3ec
--- /dev/null
@@ -0,0 +1,62 @@
+syntax = "proto3";
+
+package tensorflow;
+option cc_enable_arenas = true;
+option java_outer_classname = "AttrValueProtos";
+option java_multiple_files = true;
+option java_package = "org.tensorflow.framework";
+option go_package = "github.com/tensorflow/tensorflow/tensorflow/go/core/framework";
+import "tensorflow/core/framework/tensor.proto";
+import "tensorflow/core/framework/tensor_shape.proto";
+import "tensorflow/core/framework/types.proto";
+
+// 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.
+message AttrValue {
+  // LINT.IfChange
+  message ListValue {
+    repeated bytes s = 2;                        // "list(string)"
+    repeated int64 i = 3 [packed = true];        // "list(int)"
+    repeated float f = 4 [packed = true];        // "list(float)"
+    repeated bool b = 5 [packed = true];         // "list(bool)"
+    repeated DataType type = 6 [packed = true];  // "list(type)"
+    repeated TensorShapeProto shape = 7;         // "list(shape)"
+    repeated TensorProto tensor = 8;             // "list(tensor)"
+    repeated NameAttrList func = 9;              // "list(attr)"
+  }
+  // LINT.ThenChange(https://www.tensorflow.org/code/tensorflow/c/c_api.cc)
+
+  oneof value {
+    bytes s = 2;                 // "string"
+    int64 i = 3;                 // "int"
+    float f = 4;                 // "float"
+    bool b = 5;                  // "bool"
+    DataType type = 6;           // "type"
+    TensorShapeProto shape = 7;  // "shape"
+    TensorProto tensor = 8;      // "tensor"
+    ListValue list = 1;          // any "list(...)"
+
+    // "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.
+    NameAttrList func = 10;
+
+    // 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".
+    string placeholder = 9;
+  }
+}
+
+// A list of attr names and their values. The whole list is attached
+// with a string name.  E.g., MatMul[T=float].
+message NameAttrList {
+  string name = 1;
+  map<string, AttrValue> attr = 2;
+}
diff --git a/tensorflow/core/framework/cost_graph.pb.cc b/tensorflow/core/framework/cost_graph.pb.cc
new file mode 100644 (file)
index 0000000..d9b27df
--- /dev/null
@@ -0,0 +1,2462 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: tensorflow/core/framework/cost_graph.proto
+
+#include "tensorflow/core/framework/cost_graph.pb.h"
+
+#include <algorithm>
+
+#include <google/protobuf/stubs/common.h>
+#include <google/protobuf/io/coded_stream.h>
+#include <google/protobuf/extension_set.h>
+#include <google/protobuf/wire_format_lite_inl.h>
+#include <google/protobuf/descriptor.h>
+#include <google/protobuf/generated_message_reflection.h>
+#include <google/protobuf/reflection_ops.h>
+#include <google/protobuf/wire_format.h>
+// @@protoc_insertion_point(includes)
+#include <google/protobuf/port_def.inc>
+
+extern PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fframework_2fcost_5fgraph_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_CostGraphDef_Node_InputInfo_tensorflow_2fcore_2fframework_2fcost_5fgraph_2eproto;
+extern PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fframework_2fcost_5fgraph_2eproto ::google::protobuf::internal::SCCInfo<1> scc_info_CostGraphDef_Node_OutputInfo_tensorflow_2fcore_2fframework_2fcost_5fgraph_2eproto;
+extern PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fframework_2fcost_5fgraph_2eproto ::google::protobuf::internal::SCCInfo<2> scc_info_CostGraphDef_Node_tensorflow_2fcore_2fframework_2fcost_5fgraph_2eproto;
+extern PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fframework_2ftensor_5fshape_2eproto ::google::protobuf::internal::SCCInfo<1> scc_info_TensorShapeProto_tensorflow_2fcore_2fframework_2ftensor_5fshape_2eproto;
+namespace tensorflow {
+class CostGraphDef_Node_InputInfoDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<CostGraphDef_Node_InputInfo> _instance;
+} _CostGraphDef_Node_InputInfo_default_instance_;
+class CostGraphDef_Node_OutputInfoDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<CostGraphDef_Node_OutputInfo> _instance;
+} _CostGraphDef_Node_OutputInfo_default_instance_;
+class CostGraphDef_NodeDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<CostGraphDef_Node> _instance;
+} _CostGraphDef_Node_default_instance_;
+class CostGraphDefDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<CostGraphDef> _instance;
+} _CostGraphDef_default_instance_;
+}  // namespace tensorflow
+static void InitDefaultsCostGraphDef_Node_InputInfo_tensorflow_2fcore_2fframework_2fcost_5fgraph_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_CostGraphDef_Node_InputInfo_default_instance_;
+    new (ptr) ::tensorflow::CostGraphDef_Node_InputInfo();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::CostGraphDef_Node_InputInfo::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<0> scc_info_CostGraphDef_Node_InputInfo_tensorflow_2fcore_2fframework_2fcost_5fgraph_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsCostGraphDef_Node_InputInfo_tensorflow_2fcore_2fframework_2fcost_5fgraph_2eproto}, {}};
+
+static void InitDefaultsCostGraphDef_Node_OutputInfo_tensorflow_2fcore_2fframework_2fcost_5fgraph_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_CostGraphDef_Node_OutputInfo_default_instance_;
+    new (ptr) ::tensorflow::CostGraphDef_Node_OutputInfo();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::CostGraphDef_Node_OutputInfo::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<1> scc_info_CostGraphDef_Node_OutputInfo_tensorflow_2fcore_2fframework_2fcost_5fgraph_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsCostGraphDef_Node_OutputInfo_tensorflow_2fcore_2fframework_2fcost_5fgraph_2eproto}, {
+      &scc_info_TensorShapeProto_tensorflow_2fcore_2fframework_2ftensor_5fshape_2eproto.base,}};
+
+static void InitDefaultsCostGraphDef_Node_tensorflow_2fcore_2fframework_2fcost_5fgraph_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_CostGraphDef_Node_default_instance_;
+    new (ptr) ::tensorflow::CostGraphDef_Node();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::CostGraphDef_Node::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<2> scc_info_CostGraphDef_Node_tensorflow_2fcore_2fframework_2fcost_5fgraph_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 2, InitDefaultsCostGraphDef_Node_tensorflow_2fcore_2fframework_2fcost_5fgraph_2eproto}, {
+      &scc_info_CostGraphDef_Node_InputInfo_tensorflow_2fcore_2fframework_2fcost_5fgraph_2eproto.base,
+      &scc_info_CostGraphDef_Node_OutputInfo_tensorflow_2fcore_2fframework_2fcost_5fgraph_2eproto.base,}};
+
+static void InitDefaultsCostGraphDef_tensorflow_2fcore_2fframework_2fcost_5fgraph_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_CostGraphDef_default_instance_;
+    new (ptr) ::tensorflow::CostGraphDef();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::CostGraphDef::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<1> scc_info_CostGraphDef_tensorflow_2fcore_2fframework_2fcost_5fgraph_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsCostGraphDef_tensorflow_2fcore_2fframework_2fcost_5fgraph_2eproto}, {
+      &scc_info_CostGraphDef_Node_tensorflow_2fcore_2fframework_2fcost_5fgraph_2eproto.base,}};
+
+void InitDefaults_tensorflow_2fcore_2fframework_2fcost_5fgraph_2eproto() {
+  ::google::protobuf::internal::InitSCC(&scc_info_CostGraphDef_Node_InputInfo_tensorflow_2fcore_2fframework_2fcost_5fgraph_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_CostGraphDef_Node_OutputInfo_tensorflow_2fcore_2fframework_2fcost_5fgraph_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_CostGraphDef_Node_tensorflow_2fcore_2fframework_2fcost_5fgraph_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_CostGraphDef_tensorflow_2fcore_2fframework_2fcost_5fgraph_2eproto.base);
+}
+
+::google::protobuf::Metadata file_level_metadata_tensorflow_2fcore_2fframework_2fcost_5fgraph_2eproto[4];
+constexpr ::google::protobuf::EnumDescriptor const** file_level_enum_descriptors_tensorflow_2fcore_2fframework_2fcost_5fgraph_2eproto = nullptr;
+constexpr ::google::protobuf::ServiceDescriptor const** file_level_service_descriptors_tensorflow_2fcore_2fframework_2fcost_5fgraph_2eproto = nullptr;
+
+const ::google::protobuf::uint32 TableStruct_tensorflow_2fcore_2fframework_2fcost_5fgraph_2eproto::offsets[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = {
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::CostGraphDef_Node_InputInfo, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::CostGraphDef_Node_InputInfo, preceding_node_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::CostGraphDef_Node_InputInfo, preceding_port_),
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::CostGraphDef_Node_OutputInfo, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::CostGraphDef_Node_OutputInfo, size_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::CostGraphDef_Node_OutputInfo, alias_input_port_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::CostGraphDef_Node_OutputInfo, shape_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::CostGraphDef_Node_OutputInfo, dtype_),
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::CostGraphDef_Node, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::CostGraphDef_Node, name_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::CostGraphDef_Node, device_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::CostGraphDef_Node, id_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::CostGraphDef_Node, input_info_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::CostGraphDef_Node, output_info_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::CostGraphDef_Node, temporary_memory_size_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::CostGraphDef_Node, persistent_memory_size_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::CostGraphDef_Node, host_temp_memory_size_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::CostGraphDef_Node, device_temp_memory_size_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::CostGraphDef_Node, device_persistent_memory_size_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::CostGraphDef_Node, compute_cost_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::CostGraphDef_Node, compute_time_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::CostGraphDef_Node, memory_time_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::CostGraphDef_Node, is_final_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::CostGraphDef_Node, control_input_),
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::CostGraphDef, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::CostGraphDef, node_),
+};
+static const ::google::protobuf::internal::MigrationSchema schemas[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = {
+  { 0, -1, sizeof(::tensorflow::CostGraphDef_Node_InputInfo)},
+  { 7, -1, sizeof(::tensorflow::CostGraphDef_Node_OutputInfo)},
+  { 16, -1, sizeof(::tensorflow::CostGraphDef_Node)},
+  { 36, -1, sizeof(::tensorflow::CostGraphDef)},
+};
+
+static ::google::protobuf::Message const * const file_default_instances[] = {
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_CostGraphDef_Node_InputInfo_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_CostGraphDef_Node_OutputInfo_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_CostGraphDef_Node_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_CostGraphDef_default_instance_),
+};
+
+::google::protobuf::internal::AssignDescriptorsTable assign_descriptors_table_tensorflow_2fcore_2fframework_2fcost_5fgraph_2eproto = {
+  {}, AddDescriptors_tensorflow_2fcore_2fframework_2fcost_5fgraph_2eproto, "tensorflow/core/framework/cost_graph.proto", schemas,
+  file_default_instances, TableStruct_tensorflow_2fcore_2fframework_2fcost_5fgraph_2eproto::offsets,
+  file_level_metadata_tensorflow_2fcore_2fframework_2fcost_5fgraph_2eproto, 4, file_level_enum_descriptors_tensorflow_2fcore_2fframework_2fcost_5fgraph_2eproto, file_level_service_descriptors_tensorflow_2fcore_2fframework_2fcost_5fgraph_2eproto,
+};
+
+::google::protobuf::internal::DescriptorTable descriptor_table_tensorflow_2fcore_2fframework_2fcost_5fgraph_2eproto = {
+  false, InitDefaults_tensorflow_2fcore_2fframework_2fcost_5fgraph_2eproto, 
+  "\n*tensorflow/core/framework/cost_graph.p"
+  "roto\022\ntensorflow\032,tensorflow/core/framew"
+  "ork/tensor_shape.proto\032%tensorflow/core/"
+  "framework/types.proto\"\314\005\n\014CostGraphDef\022+"
+  "\n\004node\030\001 \003(\0132\035.tensorflow.CostGraphDef.N"
+  "ode\032\216\005\n\004Node\022\014\n\004name\030\001 \001(\t\022\016\n\006device\030\002 \001"
+  "(\t\022\n\n\002id\030\003 \001(\005\022;\n\ninput_info\030\004 \003(\0132\'.ten"
+  "sorflow.CostGraphDef.Node.InputInfo\022=\n\013o"
+  "utput_info\030\005 \003(\0132(.tensorflow.CostGraphD"
+  "ef.Node.OutputInfo\022\035\n\025temporary_memory_s"
+  "ize\030\006 \001(\003\022\036\n\026persistent_memory_size\030\014 \001("
+  "\003\022!\n\025host_temp_memory_size\030\n \001(\003B\002\030\001\022#\n\027"
+  "device_temp_memory_size\030\013 \001(\003B\002\030\001\022)\n\035dev"
+  "ice_persistent_memory_size\030\020 \001(\003B\002\030\001\022\024\n\014"
+  "compute_cost\030\t \001(\003\022\024\n\014compute_time\030\016 \001(\003"
+  "\022\023\n\013memory_time\030\017 \001(\003\022\020\n\010is_final\030\007 \001(\010\022"
+  "\025\n\rcontrol_input\030\010 \003(\005\032;\n\tInputInfo\022\026\n\016p"
+  "receding_node\030\001 \001(\005\022\026\n\016preceding_port\030\002 "
+  "\001(\005\032\206\001\n\nOutputInfo\022\014\n\004size\030\001 \001(\003\022\030\n\020alia"
+  "s_input_port\030\002 \001(\003\022+\n\005shape\030\003 \001(\0132\034.tens"
+  "orflow.TensorShapeProto\022#\n\005dtype\030\004 \001(\0162\024"
+  ".tensorflow.DataTypeBo\n\030org.tensorflow.f"
+  "rameworkB\017CostGraphProtosP\001Z=github.com/"
+  "tensorflow/tensorflow/tensorflow/go/core"
+  "/framework\370\001\001b\006proto3"
+,
+  "tensorflow/core/framework/cost_graph.proto", &assign_descriptors_table_tensorflow_2fcore_2fframework_2fcost_5fgraph_2eproto, 981,
+};
+
+void AddDescriptors_tensorflow_2fcore_2fframework_2fcost_5fgraph_2eproto() {
+  static constexpr ::google::protobuf::internal::InitFunc deps[2] =
+  {
+    ::AddDescriptors_tensorflow_2fcore_2fframework_2ftensor_5fshape_2eproto,
+    ::AddDescriptors_tensorflow_2fcore_2fframework_2ftypes_2eproto,
+  };
+ ::google::protobuf::internal::AddDescriptors(&descriptor_table_tensorflow_2fcore_2fframework_2fcost_5fgraph_2eproto, deps, 2);
+}
+
+// Force running AddDescriptors() at dynamic initialization time.
+static bool dynamic_init_dummy_tensorflow_2fcore_2fframework_2fcost_5fgraph_2eproto = []() { AddDescriptors_tensorflow_2fcore_2fframework_2fcost_5fgraph_2eproto(); return true; }();
+namespace tensorflow {
+
+// ===================================================================
+
+void CostGraphDef_Node_InputInfo::InitAsDefaultInstance() {
+}
+class CostGraphDef_Node_InputInfo::HasBitSetters {
+ public:
+};
+
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int CostGraphDef_Node_InputInfo::kPrecedingNodeFieldNumber;
+const int CostGraphDef_Node_InputInfo::kPrecedingPortFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+CostGraphDef_Node_InputInfo::CostGraphDef_Node_InputInfo()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.CostGraphDef.Node.InputInfo)
+}
+CostGraphDef_Node_InputInfo::CostGraphDef_Node_InputInfo(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.CostGraphDef.Node.InputInfo)
+}
+CostGraphDef_Node_InputInfo::CostGraphDef_Node_InputInfo(const CostGraphDef_Node_InputInfo& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::memcpy(&preceding_node_, &from.preceding_node_,
+    static_cast<size_t>(reinterpret_cast<char*>(&preceding_port_) -
+    reinterpret_cast<char*>(&preceding_node_)) + sizeof(preceding_port_));
+  // @@protoc_insertion_point(copy_constructor:tensorflow.CostGraphDef.Node.InputInfo)
+}
+
+void CostGraphDef_Node_InputInfo::SharedCtor() {
+  ::memset(&preceding_node_, 0, static_cast<size_t>(
+      reinterpret_cast<char*>(&preceding_port_) -
+      reinterpret_cast<char*>(&preceding_node_)) + sizeof(preceding_port_));
+}
+
+CostGraphDef_Node_InputInfo::~CostGraphDef_Node_InputInfo() {
+  // @@protoc_insertion_point(destructor:tensorflow.CostGraphDef.Node.InputInfo)
+  SharedDtor();
+}
+
+void CostGraphDef_Node_InputInfo::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+}
+
+void CostGraphDef_Node_InputInfo::ArenaDtor(void* object) {
+  CostGraphDef_Node_InputInfo* _this = reinterpret_cast< CostGraphDef_Node_InputInfo* >(object);
+  (void)_this;
+}
+void CostGraphDef_Node_InputInfo::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void CostGraphDef_Node_InputInfo::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const CostGraphDef_Node_InputInfo& CostGraphDef_Node_InputInfo::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_CostGraphDef_Node_InputInfo_tensorflow_2fcore_2fframework_2fcost_5fgraph_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void CostGraphDef_Node_InputInfo::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.CostGraphDef.Node.InputInfo)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  ::memset(&preceding_node_, 0, static_cast<size_t>(
+      reinterpret_cast<char*>(&preceding_port_) -
+      reinterpret_cast<char*>(&preceding_node_)) + sizeof(preceding_port_));
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* CostGraphDef_Node_InputInfo::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<CostGraphDef_Node_InputInfo*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // int32 preceding_node = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 8) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::google::protobuf::int32 value = val;
+        msg->set_preceding_node(value);
+        break;
+      }
+      // int32 preceding_port = 2;
+      case 2: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 16) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::google::protobuf::int32 value = val;
+        msg->set_preceding_port(value);
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool CostGraphDef_Node_InputInfo::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.CostGraphDef.Node.InputInfo)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // int32 preceding_node = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (8 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
+                 input, &preceding_node_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // int32 preceding_port = 2;
+      case 2: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (16 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
+                 input, &preceding_port_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.CostGraphDef.Node.InputInfo)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.CostGraphDef.Node.InputInfo)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void CostGraphDef_Node_InputInfo::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.CostGraphDef.Node.InputInfo)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // int32 preceding_node = 1;
+  if (this->preceding_node() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt32(1, this->preceding_node(), output);
+  }
+
+  // int32 preceding_port = 2;
+  if (this->preceding_port() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt32(2, this->preceding_port(), output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.CostGraphDef.Node.InputInfo)
+}
+
+::google::protobuf::uint8* CostGraphDef_Node_InputInfo::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.CostGraphDef.Node.InputInfo)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // int32 preceding_node = 1;
+  if (this->preceding_node() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt32ToArray(1, this->preceding_node(), target);
+  }
+
+  // int32 preceding_port = 2;
+  if (this->preceding_port() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt32ToArray(2, this->preceding_port(), target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.CostGraphDef.Node.InputInfo)
+  return target;
+}
+
+size_t CostGraphDef_Node_InputInfo::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.CostGraphDef.Node.InputInfo)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // int32 preceding_node = 1;
+  if (this->preceding_node() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::Int32Size(
+        this->preceding_node());
+  }
+
+  // int32 preceding_port = 2;
+  if (this->preceding_port() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::Int32Size(
+        this->preceding_port());
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void CostGraphDef_Node_InputInfo::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.CostGraphDef.Node.InputInfo)
+  GOOGLE_DCHECK_NE(&from, this);
+  const CostGraphDef_Node_InputInfo* source =
+      ::google::protobuf::DynamicCastToGenerated<CostGraphDef_Node_InputInfo>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.CostGraphDef.Node.InputInfo)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.CostGraphDef.Node.InputInfo)
+    MergeFrom(*source);
+  }
+}
+
+void CostGraphDef_Node_InputInfo::MergeFrom(const CostGraphDef_Node_InputInfo& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.CostGraphDef.Node.InputInfo)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  if (from.preceding_node() != 0) {
+    set_preceding_node(from.preceding_node());
+  }
+  if (from.preceding_port() != 0) {
+    set_preceding_port(from.preceding_port());
+  }
+}
+
+void CostGraphDef_Node_InputInfo::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.CostGraphDef.Node.InputInfo)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void CostGraphDef_Node_InputInfo::CopyFrom(const CostGraphDef_Node_InputInfo& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.CostGraphDef.Node.InputInfo)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool CostGraphDef_Node_InputInfo::IsInitialized() const {
+  return true;
+}
+
+void CostGraphDef_Node_InputInfo::Swap(CostGraphDef_Node_InputInfo* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    CostGraphDef_Node_InputInfo* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void CostGraphDef_Node_InputInfo::UnsafeArenaSwap(CostGraphDef_Node_InputInfo* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void CostGraphDef_Node_InputInfo::InternalSwap(CostGraphDef_Node_InputInfo* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  swap(preceding_node_, other->preceding_node_);
+  swap(preceding_port_, other->preceding_port_);
+}
+
+::google::protobuf::Metadata CostGraphDef_Node_InputInfo::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fframework_2fcost_5fgraph_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fframework_2fcost_5fgraph_2eproto[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+void CostGraphDef_Node_OutputInfo::InitAsDefaultInstance() {
+  ::tensorflow::_CostGraphDef_Node_OutputInfo_default_instance_._instance.get_mutable()->shape_ = const_cast< ::tensorflow::TensorShapeProto*>(
+      ::tensorflow::TensorShapeProto::internal_default_instance());
+}
+class CostGraphDef_Node_OutputInfo::HasBitSetters {
+ public:
+  static const ::tensorflow::TensorShapeProto& shape(const CostGraphDef_Node_OutputInfo* msg);
+};
+
+const ::tensorflow::TensorShapeProto&
+CostGraphDef_Node_OutputInfo::HasBitSetters::shape(const CostGraphDef_Node_OutputInfo* msg) {
+  return *msg->shape_;
+}
+void CostGraphDef_Node_OutputInfo::unsafe_arena_set_allocated_shape(
+    ::tensorflow::TensorShapeProto* shape) {
+  if (GetArenaNoVirtual() == NULL) {
+    delete shape_;
+  }
+  shape_ = shape;
+  if (shape) {
+    
+  } else {
+    
+  }
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.CostGraphDef.Node.OutputInfo.shape)
+}
+void CostGraphDef_Node_OutputInfo::clear_shape() {
+  if (GetArenaNoVirtual() == NULL && shape_ != NULL) {
+    delete shape_;
+  }
+  shape_ = NULL;
+}
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int CostGraphDef_Node_OutputInfo::kSizeFieldNumber;
+const int CostGraphDef_Node_OutputInfo::kAliasInputPortFieldNumber;
+const int CostGraphDef_Node_OutputInfo::kShapeFieldNumber;
+const int CostGraphDef_Node_OutputInfo::kDtypeFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+CostGraphDef_Node_OutputInfo::CostGraphDef_Node_OutputInfo()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.CostGraphDef.Node.OutputInfo)
+}
+CostGraphDef_Node_OutputInfo::CostGraphDef_Node_OutputInfo(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.CostGraphDef.Node.OutputInfo)
+}
+CostGraphDef_Node_OutputInfo::CostGraphDef_Node_OutputInfo(const CostGraphDef_Node_OutputInfo& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  if (from.has_shape()) {
+    shape_ = new ::tensorflow::TensorShapeProto(*from.shape_);
+  } else {
+    shape_ = NULL;
+  }
+  ::memcpy(&size_, &from.size_,
+    static_cast<size_t>(reinterpret_cast<char*>(&dtype_) -
+    reinterpret_cast<char*>(&size_)) + sizeof(dtype_));
+  // @@protoc_insertion_point(copy_constructor:tensorflow.CostGraphDef.Node.OutputInfo)
+}
+
+void CostGraphDef_Node_OutputInfo::SharedCtor() {
+  ::google::protobuf::internal::InitSCC(
+      &scc_info_CostGraphDef_Node_OutputInfo_tensorflow_2fcore_2fframework_2fcost_5fgraph_2eproto.base);
+  ::memset(&shape_, 0, static_cast<size_t>(
+      reinterpret_cast<char*>(&dtype_) -
+      reinterpret_cast<char*>(&shape_)) + sizeof(dtype_));
+}
+
+CostGraphDef_Node_OutputInfo::~CostGraphDef_Node_OutputInfo() {
+  // @@protoc_insertion_point(destructor:tensorflow.CostGraphDef.Node.OutputInfo)
+  SharedDtor();
+}
+
+void CostGraphDef_Node_OutputInfo::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+  if (this != internal_default_instance()) delete shape_;
+}
+
+void CostGraphDef_Node_OutputInfo::ArenaDtor(void* object) {
+  CostGraphDef_Node_OutputInfo* _this = reinterpret_cast< CostGraphDef_Node_OutputInfo* >(object);
+  (void)_this;
+}
+void CostGraphDef_Node_OutputInfo::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void CostGraphDef_Node_OutputInfo::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const CostGraphDef_Node_OutputInfo& CostGraphDef_Node_OutputInfo::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_CostGraphDef_Node_OutputInfo_tensorflow_2fcore_2fframework_2fcost_5fgraph_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void CostGraphDef_Node_OutputInfo::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.CostGraphDef.Node.OutputInfo)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  if (GetArenaNoVirtual() == NULL && shape_ != NULL) {
+    delete shape_;
+  }
+  shape_ = NULL;
+  ::memset(&size_, 0, static_cast<size_t>(
+      reinterpret_cast<char*>(&dtype_) -
+      reinterpret_cast<char*>(&size_)) + sizeof(dtype_));
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* CostGraphDef_Node_OutputInfo::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<CostGraphDef_Node_OutputInfo*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // int64 size = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 8) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::google::protobuf::int64 value = val;
+        msg->set_size(value);
+        break;
+      }
+      // int64 alias_input_port = 2;
+      case 2: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 16) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::google::protobuf::int64 value = val;
+        msg->set_alias_input_port(value);
+        break;
+      }
+      // .tensorflow.TensorShapeProto shape = 3;
+      case 3: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 26) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        parser_till_end = ::tensorflow::TensorShapeProto::_InternalParse;
+        object = msg->mutable_shape();
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                       ptr, newend);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+        ptr = newend;
+        break;
+      }
+      // .tensorflow.DataType dtype = 4;
+      case 4: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 32) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::tensorflow::DataType value = static_cast<::tensorflow::DataType>(val);
+        msg->set_dtype(value);
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool CostGraphDef_Node_OutputInfo::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.CostGraphDef.Node.OutputInfo)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // int64 size = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (8 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>(
+                 input, &size_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // int64 alias_input_port = 2;
+      case 2: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (16 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>(
+                 input, &alias_input_port_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // .tensorflow.TensorShapeProto shape = 3;
+      case 3: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (26 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+               input, mutable_shape()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // .tensorflow.DataType dtype = 4;
+      case 4: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (32 & 0xFF)) {
+          int value = 0;
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>(
+                 input, &value)));
+          set_dtype(static_cast< ::tensorflow::DataType >(value));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.CostGraphDef.Node.OutputInfo)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.CostGraphDef.Node.OutputInfo)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void CostGraphDef_Node_OutputInfo::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.CostGraphDef.Node.OutputInfo)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // int64 size = 1;
+  if (this->size() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt64(1, this->size(), output);
+  }
+
+  // int64 alias_input_port = 2;
+  if (this->alias_input_port() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt64(2, this->alias_input_port(), output);
+  }
+
+  // .tensorflow.TensorShapeProto shape = 3;
+  if (this->has_shape()) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      3, HasBitSetters::shape(this), output);
+  }
+
+  // .tensorflow.DataType dtype = 4;
+  if (this->dtype() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteEnum(
+      4, this->dtype(), output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.CostGraphDef.Node.OutputInfo)
+}
+
+::google::protobuf::uint8* CostGraphDef_Node_OutputInfo::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.CostGraphDef.Node.OutputInfo)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // int64 size = 1;
+  if (this->size() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt64ToArray(1, this->size(), target);
+  }
+
+  // int64 alias_input_port = 2;
+  if (this->alias_input_port() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt64ToArray(2, this->alias_input_port(), target);
+  }
+
+  // .tensorflow.TensorShapeProto shape = 3;
+  if (this->has_shape()) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        3, HasBitSetters::shape(this), deterministic, target);
+  }
+
+  // .tensorflow.DataType dtype = 4;
+  if (this->dtype() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteEnumToArray(
+      4, this->dtype(), target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.CostGraphDef.Node.OutputInfo)
+  return target;
+}
+
+size_t CostGraphDef_Node_OutputInfo::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.CostGraphDef.Node.OutputInfo)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // .tensorflow.TensorShapeProto shape = 3;
+  if (this->has_shape()) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::MessageSize(
+        *shape_);
+  }
+
+  // int64 size = 1;
+  if (this->size() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::Int64Size(
+        this->size());
+  }
+
+  // int64 alias_input_port = 2;
+  if (this->alias_input_port() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::Int64Size(
+        this->alias_input_port());
+  }
+
+  // .tensorflow.DataType dtype = 4;
+  if (this->dtype() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::EnumSize(this->dtype());
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void CostGraphDef_Node_OutputInfo::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.CostGraphDef.Node.OutputInfo)
+  GOOGLE_DCHECK_NE(&from, this);
+  const CostGraphDef_Node_OutputInfo* source =
+      ::google::protobuf::DynamicCastToGenerated<CostGraphDef_Node_OutputInfo>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.CostGraphDef.Node.OutputInfo)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.CostGraphDef.Node.OutputInfo)
+    MergeFrom(*source);
+  }
+}
+
+void CostGraphDef_Node_OutputInfo::MergeFrom(const CostGraphDef_Node_OutputInfo& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.CostGraphDef.Node.OutputInfo)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  if (from.has_shape()) {
+    mutable_shape()->::tensorflow::TensorShapeProto::MergeFrom(from.shape());
+  }
+  if (from.size() != 0) {
+    set_size(from.size());
+  }
+  if (from.alias_input_port() != 0) {
+    set_alias_input_port(from.alias_input_port());
+  }
+  if (from.dtype() != 0) {
+    set_dtype(from.dtype());
+  }
+}
+
+void CostGraphDef_Node_OutputInfo::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.CostGraphDef.Node.OutputInfo)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void CostGraphDef_Node_OutputInfo::CopyFrom(const CostGraphDef_Node_OutputInfo& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.CostGraphDef.Node.OutputInfo)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool CostGraphDef_Node_OutputInfo::IsInitialized() const {
+  return true;
+}
+
+void CostGraphDef_Node_OutputInfo::Swap(CostGraphDef_Node_OutputInfo* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    CostGraphDef_Node_OutputInfo* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void CostGraphDef_Node_OutputInfo::UnsafeArenaSwap(CostGraphDef_Node_OutputInfo* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void CostGraphDef_Node_OutputInfo::InternalSwap(CostGraphDef_Node_OutputInfo* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  swap(shape_, other->shape_);
+  swap(size_, other->size_);
+  swap(alias_input_port_, other->alias_input_port_);
+  swap(dtype_, other->dtype_);
+}
+
+::google::protobuf::Metadata CostGraphDef_Node_OutputInfo::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fframework_2fcost_5fgraph_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fframework_2fcost_5fgraph_2eproto[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+void CostGraphDef_Node::InitAsDefaultInstance() {
+}
+class CostGraphDef_Node::HasBitSetters {
+ public:
+};
+
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int CostGraphDef_Node::kNameFieldNumber;
+const int CostGraphDef_Node::kDeviceFieldNumber;
+const int CostGraphDef_Node::kIdFieldNumber;
+const int CostGraphDef_Node::kInputInfoFieldNumber;
+const int CostGraphDef_Node::kOutputInfoFieldNumber;
+const int CostGraphDef_Node::kTemporaryMemorySizeFieldNumber;
+const int CostGraphDef_Node::kPersistentMemorySizeFieldNumber;
+const int CostGraphDef_Node::kHostTempMemorySizeFieldNumber;
+const int CostGraphDef_Node::kDeviceTempMemorySizeFieldNumber;
+const int CostGraphDef_Node::kDevicePersistentMemorySizeFieldNumber;
+const int CostGraphDef_Node::kComputeCostFieldNumber;
+const int CostGraphDef_Node::kComputeTimeFieldNumber;
+const int CostGraphDef_Node::kMemoryTimeFieldNumber;
+const int CostGraphDef_Node::kIsFinalFieldNumber;
+const int CostGraphDef_Node::kControlInputFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+CostGraphDef_Node::CostGraphDef_Node()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.CostGraphDef.Node)
+}
+CostGraphDef_Node::CostGraphDef_Node(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena),
+  input_info_(arena),
+  output_info_(arena),
+  control_input_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.CostGraphDef.Node)
+}
+CostGraphDef_Node::CostGraphDef_Node(const CostGraphDef_Node& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL),
+      input_info_(from.input_info_),
+      output_info_(from.output_info_),
+      control_input_(from.control_input_) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.name().size() > 0) {
+    name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.name(),
+      GetArenaNoVirtual());
+  }
+  device_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.device().size() > 0) {
+    device_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.device(),
+      GetArenaNoVirtual());
+  }
+  ::memcpy(&id_, &from.id_,
+    static_cast<size_t>(reinterpret_cast<char*>(&device_persistent_memory_size_) -
+    reinterpret_cast<char*>(&id_)) + sizeof(device_persistent_memory_size_));
+  // @@protoc_insertion_point(copy_constructor:tensorflow.CostGraphDef.Node)
+}
+
+void CostGraphDef_Node::SharedCtor() {
+  ::google::protobuf::internal::InitSCC(
+      &scc_info_CostGraphDef_Node_tensorflow_2fcore_2fframework_2fcost_5fgraph_2eproto.base);
+  name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  device_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  ::memset(&id_, 0, static_cast<size_t>(
+      reinterpret_cast<char*>(&device_persistent_memory_size_) -
+      reinterpret_cast<char*>(&id_)) + sizeof(device_persistent_memory_size_));
+}
+
+CostGraphDef_Node::~CostGraphDef_Node() {
+  // @@protoc_insertion_point(destructor:tensorflow.CostGraphDef.Node)
+  SharedDtor();
+}
+
+void CostGraphDef_Node::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+  name_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  device_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+
+void CostGraphDef_Node::ArenaDtor(void* object) {
+  CostGraphDef_Node* _this = reinterpret_cast< CostGraphDef_Node* >(object);
+  (void)_this;
+}
+void CostGraphDef_Node::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void CostGraphDef_Node::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const CostGraphDef_Node& CostGraphDef_Node::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_CostGraphDef_Node_tensorflow_2fcore_2fframework_2fcost_5fgraph_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void CostGraphDef_Node::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.CostGraphDef.Node)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  input_info_.Clear();
+  output_info_.Clear();
+  control_input_.Clear();
+  name_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+  device_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+  ::memset(&id_, 0, static_cast<size_t>(
+      reinterpret_cast<char*>(&device_persistent_memory_size_) -
+      reinterpret_cast<char*>(&id_)) + sizeof(device_persistent_memory_size_));
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* CostGraphDef_Node::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<CostGraphDef_Node*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // string name = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 10) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("tensorflow.CostGraphDef.Node.name");
+        parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+        ::std::string* str = msg->mutable_name();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+        break;
+      }
+      // string device = 2;
+      case 2: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 18) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("tensorflow.CostGraphDef.Node.device");
+        parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+        ::std::string* str = msg->mutable_device();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+        break;
+      }
+      // int32 id = 3;
+      case 3: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 24) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::google::protobuf::int32 value = val;
+        msg->set_id(value);
+        break;
+      }
+      // repeated .tensorflow.CostGraphDef.Node.InputInfo input_info = 4;
+      case 4: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 34) goto handle_unusual;
+        do {
+          ptr = Varint::Parse32Inline(ptr, &size);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          parser_till_end = ::tensorflow::CostGraphDef_Node_InputInfo::_InternalParse;
+          object = msg->add_input_info();
+          if (size > end - ptr) goto len_delim_till_end;
+          auto newend = ptr + size;
+          bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                         ptr, newend);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          ptr = newend;
+          if (ptr >= end) break;
+        } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 34 && (ptr += 1));
+        break;
+      }
+      // repeated .tensorflow.CostGraphDef.Node.OutputInfo output_info = 5;
+      case 5: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 42) goto handle_unusual;
+        do {
+          ptr = Varint::Parse32Inline(ptr, &size);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          parser_till_end = ::tensorflow::CostGraphDef_Node_OutputInfo::_InternalParse;
+          object = msg->add_output_info();
+          if (size > end - ptr) goto len_delim_till_end;
+          auto newend = ptr + size;
+          bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                         ptr, newend);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          ptr = newend;
+          if (ptr >= end) break;
+        } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 42 && (ptr += 1));
+        break;
+      }
+      // int64 temporary_memory_size = 6;
+      case 6: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 48) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::google::protobuf::int64 value = val;
+        msg->set_temporary_memory_size(value);
+        break;
+      }
+      // bool is_final = 7;
+      case 7: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 56) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        bool value = val;
+        msg->set_is_final(value);
+        break;
+      }
+      // repeated int32 control_input = 8;
+      case 8: {
+        if (static_cast<::google::protobuf::uint8>(tag) == 66) {
+          ptr = Varint::Parse32Inline(ptr, &size);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          parser_till_end = ::google::protobuf::internal::PackedInt32Parser;
+          object = msg->mutable_control_input();
+          if (size > end - ptr) goto len_delim_till_end;
+          auto newend = ptr + size;
+          if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+          break;
+        } else if (static_cast<::google::protobuf::uint8>(tag) != 64) goto handle_unusual;
+        do {
+          ::google::protobuf::uint64 val;
+          ptr = Varint::Parse64(ptr, &val);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          ::google::protobuf::int32 value = val;
+          msg->add_control_input(value);
+          if (ptr >= end) break;
+        } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 64 && (ptr += 1));
+        break;
+      }
+      // int64 compute_cost = 9;
+      case 9: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 72) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::google::protobuf::int64 value = val;
+        msg->set_compute_cost(value);
+        break;
+      }
+      // int64 host_temp_memory_size = 10 [deprecated = true];
+      case 10: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 80) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::google::protobuf::int64 value = val;
+        msg->set_host_temp_memory_size(value);
+        break;
+      }
+      // int64 device_temp_memory_size = 11 [deprecated = true];
+      case 11: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 88) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::google::protobuf::int64 value = val;
+        msg->set_device_temp_memory_size(value);
+        break;
+      }
+      // int64 persistent_memory_size = 12;
+      case 12: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 96) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::google::protobuf::int64 value = val;
+        msg->set_persistent_memory_size(value);
+        break;
+      }
+      // int64 compute_time = 14;
+      case 14: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 112) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::google::protobuf::int64 value = val;
+        msg->set_compute_time(value);
+        break;
+      }
+      // int64 memory_time = 15;
+      case 15: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 120) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::google::protobuf::int64 value = val;
+        msg->set_memory_time(value);
+        break;
+      }
+      // int64 device_persistent_memory_size = 16 [deprecated = true];
+      case 16: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 128) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::google::protobuf::int64 value = val;
+        msg->set_device_persistent_memory_size(value);
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool CostGraphDef_Node::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.CostGraphDef.Node)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(16383u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // string name = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (10 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_name()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->name().data(), static_cast<int>(this->name().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.CostGraphDef.Node.name"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // string device = 2;
+      case 2: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (18 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_device()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->device().data(), static_cast<int>(this->device().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.CostGraphDef.Node.device"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // int32 id = 3;
+      case 3: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (24 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
+                 input, &id_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // repeated .tensorflow.CostGraphDef.Node.InputInfo input_info = 4;
+      case 4: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (34 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+                input, add_input_info()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // repeated .tensorflow.CostGraphDef.Node.OutputInfo output_info = 5;
+      case 5: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (42 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+                input, add_output_info()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // int64 temporary_memory_size = 6;
+      case 6: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (48 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>(
+                 input, &temporary_memory_size_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // bool is_final = 7;
+      case 7: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (56 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
+                 input, &is_final_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // repeated int32 control_input = 8;
+      case 8: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (66 & 0xFF)) {
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPackedPrimitive<
+                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
+                 input, this->mutable_control_input())));
+        } else if (static_cast< ::google::protobuf::uint8>(tag) == (64 & 0xFF)) {
+          DO_((::google::protobuf::internal::WireFormatLite::ReadRepeatedPrimitiveNoInline<
+                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
+                 1, 66u, input, this->mutable_control_input())));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // int64 compute_cost = 9;
+      case 9: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (72 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>(
+                 input, &compute_cost_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // int64 host_temp_memory_size = 10 [deprecated = true];
+      case 10: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (80 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>(
+                 input, &host_temp_memory_size_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // int64 device_temp_memory_size = 11 [deprecated = true];
+      case 11: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (88 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>(
+                 input, &device_temp_memory_size_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // int64 persistent_memory_size = 12;
+      case 12: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (96 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>(
+                 input, &persistent_memory_size_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // int64 compute_time = 14;
+      case 14: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (112 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>(
+                 input, &compute_time_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // int64 memory_time = 15;
+      case 15: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (120 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>(
+                 input, &memory_time_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // int64 device_persistent_memory_size = 16 [deprecated = true];
+      case 16: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (128 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>(
+                 input, &device_persistent_memory_size_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.CostGraphDef.Node)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.CostGraphDef.Node)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void CostGraphDef_Node::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.CostGraphDef.Node)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // string name = 1;
+  if (this->name().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->name().data(), static_cast<int>(this->name().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.CostGraphDef.Node.name");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      1, this->name(), output);
+  }
+
+  // string device = 2;
+  if (this->device().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->device().data(), static_cast<int>(this->device().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.CostGraphDef.Node.device");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      2, this->device(), output);
+  }
+
+  // int32 id = 3;
+  if (this->id() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt32(3, this->id(), output);
+  }
+
+  // repeated .tensorflow.CostGraphDef.Node.InputInfo input_info = 4;
+  for (unsigned int i = 0,
+      n = static_cast<unsigned int>(this->input_info_size()); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      4,
+      this->input_info(static_cast<int>(i)),
+      output);
+  }
+
+  // repeated .tensorflow.CostGraphDef.Node.OutputInfo output_info = 5;
+  for (unsigned int i = 0,
+      n = static_cast<unsigned int>(this->output_info_size()); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      5,
+      this->output_info(static_cast<int>(i)),
+      output);
+  }
+
+  // int64 temporary_memory_size = 6;
+  if (this->temporary_memory_size() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt64(6, this->temporary_memory_size(), output);
+  }
+
+  // bool is_final = 7;
+  if (this->is_final() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteBool(7, this->is_final(), output);
+  }
+
+  // repeated int32 control_input = 8;
+  if (this->control_input_size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteTag(8, ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED, output);
+    output->WriteVarint32(_control_input_cached_byte_size_.load(
+        std::memory_order_relaxed));
+  }
+  for (int i = 0, n = this->control_input_size(); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt32NoTag(
+      this->control_input(i), output);
+  }
+
+  // int64 compute_cost = 9;
+  if (this->compute_cost() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt64(9, this->compute_cost(), output);
+  }
+
+  // int64 host_temp_memory_size = 10 [deprecated = true];
+  if (this->host_temp_memory_size() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt64(10, this->host_temp_memory_size(), output);
+  }
+
+  // int64 device_temp_memory_size = 11 [deprecated = true];
+  if (this->device_temp_memory_size() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt64(11, this->device_temp_memory_size(), output);
+  }
+
+  // int64 persistent_memory_size = 12;
+  if (this->persistent_memory_size() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt64(12, this->persistent_memory_size(), output);
+  }
+
+  // int64 compute_time = 14;
+  if (this->compute_time() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt64(14, this->compute_time(), output);
+  }
+
+  // int64 memory_time = 15;
+  if (this->memory_time() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt64(15, this->memory_time(), output);
+  }
+
+  // int64 device_persistent_memory_size = 16 [deprecated = true];
+  if (this->device_persistent_memory_size() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt64(16, this->device_persistent_memory_size(), output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.CostGraphDef.Node)
+}
+
+::google::protobuf::uint8* CostGraphDef_Node::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.CostGraphDef.Node)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // string name = 1;
+  if (this->name().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->name().data(), static_cast<int>(this->name().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.CostGraphDef.Node.name");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        1, this->name(), target);
+  }
+
+  // string device = 2;
+  if (this->device().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->device().data(), static_cast<int>(this->device().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.CostGraphDef.Node.device");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        2, this->device(), target);
+  }
+
+  // int32 id = 3;
+  if (this->id() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt32ToArray(3, this->id(), target);
+  }
+
+  // repeated .tensorflow.CostGraphDef.Node.InputInfo input_info = 4;
+  for (unsigned int i = 0,
+      n = static_cast<unsigned int>(this->input_info_size()); i < n; i++) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        4, this->input_info(static_cast<int>(i)), deterministic, target);
+  }
+
+  // repeated .tensorflow.CostGraphDef.Node.OutputInfo output_info = 5;
+  for (unsigned int i = 0,
+      n = static_cast<unsigned int>(this->output_info_size()); i < n; i++) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        5, this->output_info(static_cast<int>(i)), deterministic, target);
+  }
+
+  // int64 temporary_memory_size = 6;
+  if (this->temporary_memory_size() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt64ToArray(6, this->temporary_memory_size(), target);
+  }
+
+  // bool is_final = 7;
+  if (this->is_final() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(7, this->is_final(), target);
+  }
+
+  // repeated int32 control_input = 8;
+  if (this->control_input_size() > 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteTagToArray(
+      8,
+      ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED,
+      target);
+    target = ::google::protobuf::io::CodedOutputStream::WriteVarint32ToArray(
+        _control_input_cached_byte_size_.load(std::memory_order_relaxed),
+         target);
+    target = ::google::protobuf::internal::WireFormatLite::
+      WriteInt32NoTagToArray(this->control_input_, target);
+  }
+
+  // int64 compute_cost = 9;
+  if (this->compute_cost() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt64ToArray(9, this->compute_cost(), target);
+  }
+
+  // int64 host_temp_memory_size = 10 [deprecated = true];
+  if (this->host_temp_memory_size() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt64ToArray(10, this->host_temp_memory_size(), target);
+  }
+
+  // int64 device_temp_memory_size = 11 [deprecated = true];
+  if (this->device_temp_memory_size() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt64ToArray(11, this->device_temp_memory_size(), target);
+  }
+
+  // int64 persistent_memory_size = 12;
+  if (this->persistent_memory_size() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt64ToArray(12, this->persistent_memory_size(), target);
+  }
+
+  // int64 compute_time = 14;
+  if (this->compute_time() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt64ToArray(14, this->compute_time(), target);
+  }
+
+  // int64 memory_time = 15;
+  if (this->memory_time() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt64ToArray(15, this->memory_time(), target);
+  }
+
+  // int64 device_persistent_memory_size = 16 [deprecated = true];
+  if (this->device_persistent_memory_size() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt64ToArray(16, this->device_persistent_memory_size(), target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.CostGraphDef.Node)
+  return target;
+}
+
+size_t CostGraphDef_Node::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.CostGraphDef.Node)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // repeated .tensorflow.CostGraphDef.Node.InputInfo input_info = 4;
+  {
+    unsigned int count = static_cast<unsigned int>(this->input_info_size());
+    total_size += 1UL * count;
+    for (unsigned int i = 0; i < count; i++) {
+      total_size +=
+        ::google::protobuf::internal::WireFormatLite::MessageSize(
+          this->input_info(static_cast<int>(i)));
+    }
+  }
+
+  // repeated .tensorflow.CostGraphDef.Node.OutputInfo output_info = 5;
+  {
+    unsigned int count = static_cast<unsigned int>(this->output_info_size());
+    total_size += 1UL * count;
+    for (unsigned int i = 0; i < count; i++) {
+      total_size +=
+        ::google::protobuf::internal::WireFormatLite::MessageSize(
+          this->output_info(static_cast<int>(i)));
+    }
+  }
+
+  // repeated int32 control_input = 8;
+  {
+    size_t data_size = ::google::protobuf::internal::WireFormatLite::
+      Int32Size(this->control_input_);
+    if (data_size > 0) {
+      total_size += 1 +
+        ::google::protobuf::internal::WireFormatLite::Int32Size(
+            static_cast<::google::protobuf::int32>(data_size));
+    }
+    int cached_size = ::google::protobuf::internal::ToCachedSize(data_size);
+    _control_input_cached_byte_size_.store(cached_size,
+                                    std::memory_order_relaxed);
+    total_size += data_size;
+  }
+
+  // string name = 1;
+  if (this->name().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->name());
+  }
+
+  // string device = 2;
+  if (this->device().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->device());
+  }
+
+  // int32 id = 3;
+  if (this->id() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::Int32Size(
+        this->id());
+  }
+
+  // bool is_final = 7;
+  if (this->is_final() != 0) {
+    total_size += 1 + 1;
+  }
+
+  // int64 temporary_memory_size = 6;
+  if (this->temporary_memory_size() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::Int64Size(
+        this->temporary_memory_size());
+  }
+
+  // int64 compute_cost = 9;
+  if (this->compute_cost() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::Int64Size(
+        this->compute_cost());
+  }
+
+  // int64 host_temp_memory_size = 10 [deprecated = true];
+  if (this->host_temp_memory_size() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::Int64Size(
+        this->host_temp_memory_size());
+  }
+
+  // int64 device_temp_memory_size = 11 [deprecated = true];
+  if (this->device_temp_memory_size() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::Int64Size(
+        this->device_temp_memory_size());
+  }
+
+  // int64 persistent_memory_size = 12;
+  if (this->persistent_memory_size() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::Int64Size(
+        this->persistent_memory_size());
+  }
+
+  // int64 compute_time = 14;
+  if (this->compute_time() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::Int64Size(
+        this->compute_time());
+  }
+
+  // int64 memory_time = 15;
+  if (this->memory_time() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::Int64Size(
+        this->memory_time());
+  }
+
+  // int64 device_persistent_memory_size = 16 [deprecated = true];
+  if (this->device_persistent_memory_size() != 0) {
+    total_size += 2 +
+      ::google::protobuf::internal::WireFormatLite::Int64Size(
+        this->device_persistent_memory_size());
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void CostGraphDef_Node::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.CostGraphDef.Node)
+  GOOGLE_DCHECK_NE(&from, this);
+  const CostGraphDef_Node* source =
+      ::google::protobuf::DynamicCastToGenerated<CostGraphDef_Node>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.CostGraphDef.Node)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.CostGraphDef.Node)
+    MergeFrom(*source);
+  }
+}
+
+void CostGraphDef_Node::MergeFrom(const CostGraphDef_Node& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.CostGraphDef.Node)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  input_info_.MergeFrom(from.input_info_);
+  output_info_.MergeFrom(from.output_info_);
+  control_input_.MergeFrom(from.control_input_);
+  if (from.name().size() > 0) {
+    set_name(from.name());
+  }
+  if (from.device().size() > 0) {
+    set_device(from.device());
+  }
+  if (from.id() != 0) {
+    set_id(from.id());
+  }
+  if (from.is_final() != 0) {
+    set_is_final(from.is_final());
+  }
+  if (from.temporary_memory_size() != 0) {
+    set_temporary_memory_size(from.temporary_memory_size());
+  }
+  if (from.compute_cost() != 0) {
+    set_compute_cost(from.compute_cost());
+  }
+  if (from.host_temp_memory_size() != 0) {
+    set_host_temp_memory_size(from.host_temp_memory_size());
+  }
+  if (from.device_temp_memory_size() != 0) {
+    set_device_temp_memory_size(from.device_temp_memory_size());
+  }
+  if (from.persistent_memory_size() != 0) {
+    set_persistent_memory_size(from.persistent_memory_size());
+  }
+  if (from.compute_time() != 0) {
+    set_compute_time(from.compute_time());
+  }
+  if (from.memory_time() != 0) {
+    set_memory_time(from.memory_time());
+  }
+  if (from.device_persistent_memory_size() != 0) {
+    set_device_persistent_memory_size(from.device_persistent_memory_size());
+  }
+}
+
+void CostGraphDef_Node::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.CostGraphDef.Node)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void CostGraphDef_Node::CopyFrom(const CostGraphDef_Node& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.CostGraphDef.Node)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool CostGraphDef_Node::IsInitialized() const {
+  return true;
+}
+
+void CostGraphDef_Node::Swap(CostGraphDef_Node* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    CostGraphDef_Node* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void CostGraphDef_Node::UnsafeArenaSwap(CostGraphDef_Node* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void CostGraphDef_Node::InternalSwap(CostGraphDef_Node* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  CastToBase(&input_info_)->InternalSwap(CastToBase(&other->input_info_));
+  CastToBase(&output_info_)->InternalSwap(CastToBase(&other->output_info_));
+  control_input_.InternalSwap(&other->control_input_);
+  name_.Swap(&other->name_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+  device_.Swap(&other->device_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+  swap(id_, other->id_);
+  swap(is_final_, other->is_final_);
+  swap(temporary_memory_size_, other->temporary_memory_size_);
+  swap(compute_cost_, other->compute_cost_);
+  swap(host_temp_memory_size_, other->host_temp_memory_size_);
+  swap(device_temp_memory_size_, other->device_temp_memory_size_);
+  swap(persistent_memory_size_, other->persistent_memory_size_);
+  swap(compute_time_, other->compute_time_);
+  swap(memory_time_, other->memory_time_);
+  swap(device_persistent_memory_size_, other->device_persistent_memory_size_);
+}
+
+::google::protobuf::Metadata CostGraphDef_Node::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fframework_2fcost_5fgraph_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fframework_2fcost_5fgraph_2eproto[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+void CostGraphDef::InitAsDefaultInstance() {
+}
+class CostGraphDef::HasBitSetters {
+ public:
+};
+
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int CostGraphDef::kNodeFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+CostGraphDef::CostGraphDef()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.CostGraphDef)
+}
+CostGraphDef::CostGraphDef(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena),
+  node_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.CostGraphDef)
+}
+CostGraphDef::CostGraphDef(const CostGraphDef& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL),
+      node_(from.node_) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  // @@protoc_insertion_point(copy_constructor:tensorflow.CostGraphDef)
+}
+
+void CostGraphDef::SharedCtor() {
+  ::google::protobuf::internal::InitSCC(
+      &scc_info_CostGraphDef_tensorflow_2fcore_2fframework_2fcost_5fgraph_2eproto.base);
+}
+
+CostGraphDef::~CostGraphDef() {
+  // @@protoc_insertion_point(destructor:tensorflow.CostGraphDef)
+  SharedDtor();
+}
+
+void CostGraphDef::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+}
+
+void CostGraphDef::ArenaDtor(void* object) {
+  CostGraphDef* _this = reinterpret_cast< CostGraphDef* >(object);
+  (void)_this;
+}
+void CostGraphDef::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void CostGraphDef::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const CostGraphDef& CostGraphDef::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_CostGraphDef_tensorflow_2fcore_2fframework_2fcost_5fgraph_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void CostGraphDef::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.CostGraphDef)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  node_.Clear();
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* CostGraphDef::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<CostGraphDef*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // repeated .tensorflow.CostGraphDef.Node node = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 10) goto handle_unusual;
+        do {
+          ptr = Varint::Parse32Inline(ptr, &size);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          parser_till_end = ::tensorflow::CostGraphDef_Node::_InternalParse;
+          object = msg->add_node();
+          if (size > end - ptr) goto len_delim_till_end;
+          auto newend = ptr + size;
+          bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                         ptr, newend);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          ptr = newend;
+          if (ptr >= end) break;
+        } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 10 && (ptr += 1));
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool CostGraphDef::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.CostGraphDef)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // repeated .tensorflow.CostGraphDef.Node node = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (10 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+                input, add_node()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.CostGraphDef)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.CostGraphDef)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void CostGraphDef::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.CostGraphDef)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // repeated .tensorflow.CostGraphDef.Node node = 1;
+  for (unsigned int i = 0,
+      n = static_cast<unsigned int>(this->node_size()); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      1,
+      this->node(static_cast<int>(i)),
+      output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.CostGraphDef)
+}
+
+::google::protobuf::uint8* CostGraphDef::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.CostGraphDef)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // repeated .tensorflow.CostGraphDef.Node node = 1;
+  for (unsigned int i = 0,
+      n = static_cast<unsigned int>(this->node_size()); i < n; i++) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        1, this->node(static_cast<int>(i)), deterministic, target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.CostGraphDef)
+  return target;
+}
+
+size_t CostGraphDef::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.CostGraphDef)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // repeated .tensorflow.CostGraphDef.Node node = 1;
+  {
+    unsigned int count = static_cast<unsigned int>(this->node_size());
+    total_size += 1UL * count;
+    for (unsigned int i = 0; i < count; i++) {
+      total_size +=
+        ::google::protobuf::internal::WireFormatLite::MessageSize(
+          this->node(static_cast<int>(i)));
+    }
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void CostGraphDef::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.CostGraphDef)
+  GOOGLE_DCHECK_NE(&from, this);
+  const CostGraphDef* source =
+      ::google::protobuf::DynamicCastToGenerated<CostGraphDef>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.CostGraphDef)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.CostGraphDef)
+    MergeFrom(*source);
+  }
+}
+
+void CostGraphDef::MergeFrom(const CostGraphDef& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.CostGraphDef)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  node_.MergeFrom(from.node_);
+}
+
+void CostGraphDef::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.CostGraphDef)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void CostGraphDef::CopyFrom(const CostGraphDef& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.CostGraphDef)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool CostGraphDef::IsInitialized() const {
+  return true;
+}
+
+void CostGraphDef::Swap(CostGraphDef* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    CostGraphDef* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void CostGraphDef::UnsafeArenaSwap(CostGraphDef* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void CostGraphDef::InternalSwap(CostGraphDef* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  CastToBase(&node_)->InternalSwap(CastToBase(&other->node_));
+}
+
+::google::protobuf::Metadata CostGraphDef::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fframework_2fcost_5fgraph_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fframework_2fcost_5fgraph_2eproto[kIndexInFileMessages];
+}
+
+
+// @@protoc_insertion_point(namespace_scope)
+}  // namespace tensorflow
+namespace google {
+namespace protobuf {
+template<> PROTOBUF_NOINLINE ::tensorflow::CostGraphDef_Node_InputInfo* Arena::CreateMaybeMessage< ::tensorflow::CostGraphDef_Node_InputInfo >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::CostGraphDef_Node_InputInfo >(arena);
+}
+template<> PROTOBUF_NOINLINE ::tensorflow::CostGraphDef_Node_OutputInfo* Arena::CreateMaybeMessage< ::tensorflow::CostGraphDef_Node_OutputInfo >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::CostGraphDef_Node_OutputInfo >(arena);
+}
+template<> PROTOBUF_NOINLINE ::tensorflow::CostGraphDef_Node* Arena::CreateMaybeMessage< ::tensorflow::CostGraphDef_Node >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::CostGraphDef_Node >(arena);
+}
+template<> PROTOBUF_NOINLINE ::tensorflow::CostGraphDef* Arena::CreateMaybeMessage< ::tensorflow::CostGraphDef >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::CostGraphDef >(arena);
+}
+}  // namespace protobuf
+}  // namespace google
+
+// @@protoc_insertion_point(global_scope)
+#include <google/protobuf/port_undef.inc>
diff --git a/tensorflow/core/framework/cost_graph.pb.h b/tensorflow/core/framework/cost_graph.pb.h
new file mode 100644 (file)
index 0000000..f71fbeb
--- /dev/null
@@ -0,0 +1,1353 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: tensorflow/core/framework/cost_graph.proto
+
+#ifndef PROTOBUF_INCLUDED_tensorflow_2fcore_2fframework_2fcost_5fgraph_2eproto
+#define PROTOBUF_INCLUDED_tensorflow_2fcore_2fframework_2fcost_5fgraph_2eproto
+
+#include <limits>
+#include <string>
+
+#include <google/protobuf/port_def.inc>
+#if PROTOBUF_VERSION < 3006001
+#error This file was generated by a newer version of protoc which is
+#error incompatible with your Protocol Buffer headers. Please update
+#error your headers.
+#endif
+#if 3006001 < PROTOBUF_MIN_PROTOC_VERSION
+#error This file was generated by an older version of protoc which is
+#error incompatible with your Protocol Buffer headers. Please
+#error regenerate this file with a newer version of protoc.
+#endif
+
+#include <google/protobuf/port_undef.inc>
+#include <google/protobuf/io/coded_stream.h>
+#include <google/protobuf/arena.h>
+#include <google/protobuf/arenastring.h>
+#include <google/protobuf/generated_message_table_driven.h>
+#include <google/protobuf/generated_message_util.h>
+#include <google/protobuf/inlined_string_field.h>
+#include <google/protobuf/metadata.h>
+#include <google/protobuf/message.h>
+#include <google/protobuf/repeated_field.h>  // IWYU pragma: export
+#include <google/protobuf/extension_set.h>  // IWYU pragma: export
+#include <google/protobuf/unknown_field_set.h>
+#include "tensorflow/core/framework/tensor_shape.pb.h"
+#include "tensorflow/core/framework/types.pb.h"
+// @@protoc_insertion_point(includes)
+#include <google/protobuf/port_def.inc>
+#define PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fframework_2fcost_5fgraph_2eproto
+
+// Internal implementation detail -- do not use these members.
+struct TableStruct_tensorflow_2fcore_2fframework_2fcost_5fgraph_2eproto {
+  static const ::google::protobuf::internal::ParseTableField entries[]
+    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
+  static const ::google::protobuf::internal::AuxillaryParseTableField aux[]
+    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
+  static const ::google::protobuf::internal::ParseTable schema[4]
+    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
+  static const ::google::protobuf::internal::FieldMetadata field_metadata[];
+  static const ::google::protobuf::internal::SerializationTable serialization_table[];
+  static const ::google::protobuf::uint32 offsets[];
+};
+void AddDescriptors_tensorflow_2fcore_2fframework_2fcost_5fgraph_2eproto();
+namespace tensorflow {
+class CostGraphDef;
+class CostGraphDefDefaultTypeInternal;
+extern CostGraphDefDefaultTypeInternal _CostGraphDef_default_instance_;
+class CostGraphDef_Node;
+class CostGraphDef_NodeDefaultTypeInternal;
+extern CostGraphDef_NodeDefaultTypeInternal _CostGraphDef_Node_default_instance_;
+class CostGraphDef_Node_InputInfo;
+class CostGraphDef_Node_InputInfoDefaultTypeInternal;
+extern CostGraphDef_Node_InputInfoDefaultTypeInternal _CostGraphDef_Node_InputInfo_default_instance_;
+class CostGraphDef_Node_OutputInfo;
+class CostGraphDef_Node_OutputInfoDefaultTypeInternal;
+extern CostGraphDef_Node_OutputInfoDefaultTypeInternal _CostGraphDef_Node_OutputInfo_default_instance_;
+}  // namespace tensorflow
+namespace google {
+namespace protobuf {
+template<> ::tensorflow::CostGraphDef* Arena::CreateMaybeMessage<::tensorflow::CostGraphDef>(Arena*);
+template<> ::tensorflow::CostGraphDef_Node* Arena::CreateMaybeMessage<::tensorflow::CostGraphDef_Node>(Arena*);
+template<> ::tensorflow::CostGraphDef_Node_InputInfo* Arena::CreateMaybeMessage<::tensorflow::CostGraphDef_Node_InputInfo>(Arena*);
+template<> ::tensorflow::CostGraphDef_Node_OutputInfo* Arena::CreateMaybeMessage<::tensorflow::CostGraphDef_Node_OutputInfo>(Arena*);
+}  // namespace protobuf
+}  // namespace google
+namespace tensorflow {
+
+// ===================================================================
+
+class CostGraphDef_Node_InputInfo : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.CostGraphDef.Node.InputInfo) */ {
+ public:
+  CostGraphDef_Node_InputInfo();
+  virtual ~CostGraphDef_Node_InputInfo();
+
+  CostGraphDef_Node_InputInfo(const CostGraphDef_Node_InputInfo& from);
+
+  inline CostGraphDef_Node_InputInfo& operator=(const CostGraphDef_Node_InputInfo& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  CostGraphDef_Node_InputInfo(CostGraphDef_Node_InputInfo&& from) noexcept
+    : CostGraphDef_Node_InputInfo() {
+    *this = ::std::move(from);
+  }
+
+  inline CostGraphDef_Node_InputInfo& operator=(CostGraphDef_Node_InputInfo&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const CostGraphDef_Node_InputInfo& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const CostGraphDef_Node_InputInfo* internal_default_instance() {
+    return reinterpret_cast<const CostGraphDef_Node_InputInfo*>(
+               &_CostGraphDef_Node_InputInfo_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    0;
+
+  void UnsafeArenaSwap(CostGraphDef_Node_InputInfo* other);
+  void Swap(CostGraphDef_Node_InputInfo* other);
+  friend void swap(CostGraphDef_Node_InputInfo& a, CostGraphDef_Node_InputInfo& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline CostGraphDef_Node_InputInfo* New() const final {
+    return CreateMaybeMessage<CostGraphDef_Node_InputInfo>(NULL);
+  }
+
+  CostGraphDef_Node_InputInfo* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<CostGraphDef_Node_InputInfo>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const CostGraphDef_Node_InputInfo& from);
+  void MergeFrom(const CostGraphDef_Node_InputInfo& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(CostGraphDef_Node_InputInfo* other);
+  protected:
+  explicit CostGraphDef_Node_InputInfo(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // int32 preceding_node = 1;
+  void clear_preceding_node();
+  static const int kPrecedingNodeFieldNumber = 1;
+  ::google::protobuf::int32 preceding_node() const;
+  void set_preceding_node(::google::protobuf::int32 value);
+
+  // int32 preceding_port = 2;
+  void clear_preceding_port();
+  static const int kPrecedingPortFieldNumber = 2;
+  ::google::protobuf::int32 preceding_port() const;
+  void set_preceding_port(::google::protobuf::int32 value);
+
+  // @@protoc_insertion_point(class_scope:tensorflow.CostGraphDef.Node.InputInfo)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  ::google::protobuf::int32 preceding_node_;
+  ::google::protobuf::int32 preceding_port_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fframework_2fcost_5fgraph_2eproto;
+};
+// -------------------------------------------------------------------
+
+class CostGraphDef_Node_OutputInfo : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.CostGraphDef.Node.OutputInfo) */ {
+ public:
+  CostGraphDef_Node_OutputInfo();
+  virtual ~CostGraphDef_Node_OutputInfo();
+
+  CostGraphDef_Node_OutputInfo(const CostGraphDef_Node_OutputInfo& from);
+
+  inline CostGraphDef_Node_OutputInfo& operator=(const CostGraphDef_Node_OutputInfo& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  CostGraphDef_Node_OutputInfo(CostGraphDef_Node_OutputInfo&& from) noexcept
+    : CostGraphDef_Node_OutputInfo() {
+    *this = ::std::move(from);
+  }
+
+  inline CostGraphDef_Node_OutputInfo& operator=(CostGraphDef_Node_OutputInfo&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const CostGraphDef_Node_OutputInfo& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const CostGraphDef_Node_OutputInfo* internal_default_instance() {
+    return reinterpret_cast<const CostGraphDef_Node_OutputInfo*>(
+               &_CostGraphDef_Node_OutputInfo_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    1;
+
+  void UnsafeArenaSwap(CostGraphDef_Node_OutputInfo* other);
+  void Swap(CostGraphDef_Node_OutputInfo* other);
+  friend void swap(CostGraphDef_Node_OutputInfo& a, CostGraphDef_Node_OutputInfo& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline CostGraphDef_Node_OutputInfo* New() const final {
+    return CreateMaybeMessage<CostGraphDef_Node_OutputInfo>(NULL);
+  }
+
+  CostGraphDef_Node_OutputInfo* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<CostGraphDef_Node_OutputInfo>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const CostGraphDef_Node_OutputInfo& from);
+  void MergeFrom(const CostGraphDef_Node_OutputInfo& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(CostGraphDef_Node_OutputInfo* other);
+  protected:
+  explicit CostGraphDef_Node_OutputInfo(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // .tensorflow.TensorShapeProto shape = 3;
+  bool has_shape() const;
+  void clear_shape();
+  static const int kShapeFieldNumber = 3;
+  const ::tensorflow::TensorShapeProto& shape() const;
+  ::tensorflow::TensorShapeProto* release_shape();
+  ::tensorflow::TensorShapeProto* mutable_shape();
+  void set_allocated_shape(::tensorflow::TensorShapeProto* shape);
+  void unsafe_arena_set_allocated_shape(
+      ::tensorflow::TensorShapeProto* shape);
+  ::tensorflow::TensorShapeProto* unsafe_arena_release_shape();
+
+  // int64 size = 1;
+  void clear_size();
+  static const int kSizeFieldNumber = 1;
+  ::google::protobuf::int64 size() const;
+  void set_size(::google::protobuf::int64 value);
+
+  // int64 alias_input_port = 2;
+  void clear_alias_input_port();
+  static const int kAliasInputPortFieldNumber = 2;
+  ::google::protobuf::int64 alias_input_port() const;
+  void set_alias_input_port(::google::protobuf::int64 value);
+
+  // .tensorflow.DataType dtype = 4;
+  void clear_dtype();
+  static const int kDtypeFieldNumber = 4;
+  ::tensorflow::DataType dtype() const;
+  void set_dtype(::tensorflow::DataType value);
+
+  // @@protoc_insertion_point(class_scope:tensorflow.CostGraphDef.Node.OutputInfo)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  ::tensorflow::TensorShapeProto* shape_;
+  ::google::protobuf::int64 size_;
+  ::google::protobuf::int64 alias_input_port_;
+  int dtype_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fframework_2fcost_5fgraph_2eproto;
+};
+// -------------------------------------------------------------------
+
+class CostGraphDef_Node : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.CostGraphDef.Node) */ {
+ public:
+  CostGraphDef_Node();
+  virtual ~CostGraphDef_Node();
+
+  CostGraphDef_Node(const CostGraphDef_Node& from);
+
+  inline CostGraphDef_Node& operator=(const CostGraphDef_Node& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  CostGraphDef_Node(CostGraphDef_Node&& from) noexcept
+    : CostGraphDef_Node() {
+    *this = ::std::move(from);
+  }
+
+  inline CostGraphDef_Node& operator=(CostGraphDef_Node&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const CostGraphDef_Node& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const CostGraphDef_Node* internal_default_instance() {
+    return reinterpret_cast<const CostGraphDef_Node*>(
+               &_CostGraphDef_Node_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    2;
+
+  void UnsafeArenaSwap(CostGraphDef_Node* other);
+  void Swap(CostGraphDef_Node* other);
+  friend void swap(CostGraphDef_Node& a, CostGraphDef_Node& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline CostGraphDef_Node* New() const final {
+    return CreateMaybeMessage<CostGraphDef_Node>(NULL);
+  }
+
+  CostGraphDef_Node* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<CostGraphDef_Node>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const CostGraphDef_Node& from);
+  void MergeFrom(const CostGraphDef_Node& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(CostGraphDef_Node* other);
+  protected:
+  explicit CostGraphDef_Node(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  typedef CostGraphDef_Node_InputInfo InputInfo;
+  typedef CostGraphDef_Node_OutputInfo OutputInfo;
+
+  // accessors -------------------------------------------------------
+
+  // repeated .tensorflow.CostGraphDef.Node.InputInfo input_info = 4;
+  int input_info_size() const;
+  void clear_input_info();
+  static const int kInputInfoFieldNumber = 4;
+  ::tensorflow::CostGraphDef_Node_InputInfo* mutable_input_info(int index);
+  ::google::protobuf::RepeatedPtrField< ::tensorflow::CostGraphDef_Node_InputInfo >*
+      mutable_input_info();
+  const ::tensorflow::CostGraphDef_Node_InputInfo& input_info(int index) const;
+  ::tensorflow::CostGraphDef_Node_InputInfo* add_input_info();
+  const ::google::protobuf::RepeatedPtrField< ::tensorflow::CostGraphDef_Node_InputInfo >&
+      input_info() const;
+
+  // repeated .tensorflow.CostGraphDef.Node.OutputInfo output_info = 5;
+  int output_info_size() const;
+  void clear_output_info();
+  static const int kOutputInfoFieldNumber = 5;
+  ::tensorflow::CostGraphDef_Node_OutputInfo* mutable_output_info(int index);
+  ::google::protobuf::RepeatedPtrField< ::tensorflow::CostGraphDef_Node_OutputInfo >*
+      mutable_output_info();
+  const ::tensorflow::CostGraphDef_Node_OutputInfo& output_info(int index) const;
+  ::tensorflow::CostGraphDef_Node_OutputInfo* add_output_info();
+  const ::google::protobuf::RepeatedPtrField< ::tensorflow::CostGraphDef_Node_OutputInfo >&
+      output_info() const;
+
+  // repeated int32 control_input = 8;
+  int control_input_size() const;
+  void clear_control_input();
+  static const int kControlInputFieldNumber = 8;
+  ::google::protobuf::int32 control_input(int index) const;
+  void set_control_input(int index, ::google::protobuf::int32 value);
+  void add_control_input(::google::protobuf::int32 value);
+  const ::google::protobuf::RepeatedField< ::google::protobuf::int32 >&
+      control_input() const;
+  ::google::protobuf::RepeatedField< ::google::protobuf::int32 >*
+      mutable_control_input();
+
+  // string name = 1;
+  void clear_name();
+  static const int kNameFieldNumber = 1;
+  const ::std::string& name() const;
+  void set_name(const ::std::string& value);
+  #if LANG_CXX11
+  void set_name(::std::string&& value);
+  #endif
+  void set_name(const char* value);
+  void set_name(const char* value, size_t size);
+  ::std::string* mutable_name();
+  ::std::string* release_name();
+  void set_allocated_name(::std::string* name);
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  ::std::string* unsafe_arena_release_name();
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  void unsafe_arena_set_allocated_name(
+      ::std::string* name);
+
+  // string device = 2;
+  void clear_device();
+  static const int kDeviceFieldNumber = 2;
+  const ::std::string& device() const;
+  void set_device(const ::std::string& value);
+  #if LANG_CXX11
+  void set_device(::std::string&& value);
+  #endif
+  void set_device(const char* value);
+  void set_device(const char* value, size_t size);
+  ::std::string* mutable_device();
+  ::std::string* release_device();
+  void set_allocated_device(::std::string* device);
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  ::std::string* unsafe_arena_release_device();
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  void unsafe_arena_set_allocated_device(
+      ::std::string* device);
+
+  // int32 id = 3;
+  void clear_id();
+  static const int kIdFieldNumber = 3;
+  ::google::protobuf::int32 id() const;
+  void set_id(::google::protobuf::int32 value);
+
+  // bool is_final = 7;
+  void clear_is_final();
+  static const int kIsFinalFieldNumber = 7;
+  bool is_final() const;
+  void set_is_final(bool value);
+
+  // int64 temporary_memory_size = 6;
+  void clear_temporary_memory_size();
+  static const int kTemporaryMemorySizeFieldNumber = 6;
+  ::google::protobuf::int64 temporary_memory_size() const;
+  void set_temporary_memory_size(::google::protobuf::int64 value);
+
+  // int64 compute_cost = 9;
+  void clear_compute_cost();
+  static const int kComputeCostFieldNumber = 9;
+  ::google::protobuf::int64 compute_cost() const;
+  void set_compute_cost(::google::protobuf::int64 value);
+
+  // int64 host_temp_memory_size = 10 [deprecated = true];
+  PROTOBUF_DEPRECATED void clear_host_temp_memory_size();
+  PROTOBUF_DEPRECATED static const int kHostTempMemorySizeFieldNumber = 10;
+  PROTOBUF_DEPRECATED ::google::protobuf::int64 host_temp_memory_size() const;
+  PROTOBUF_DEPRECATED void set_host_temp_memory_size(::google::protobuf::int64 value);
+
+  // int64 device_temp_memory_size = 11 [deprecated = true];
+  PROTOBUF_DEPRECATED void clear_device_temp_memory_size();
+  PROTOBUF_DEPRECATED static const int kDeviceTempMemorySizeFieldNumber = 11;
+  PROTOBUF_DEPRECATED ::google::protobuf::int64 device_temp_memory_size() const;
+  PROTOBUF_DEPRECATED void set_device_temp_memory_size(::google::protobuf::int64 value);
+
+  // int64 persistent_memory_size = 12;
+  void clear_persistent_memory_size();
+  static const int kPersistentMemorySizeFieldNumber = 12;
+  ::google::protobuf::int64 persistent_memory_size() const;
+  void set_persistent_memory_size(::google::protobuf::int64 value);
+
+  // int64 compute_time = 14;
+  void clear_compute_time();
+  static const int kComputeTimeFieldNumber = 14;
+  ::google::protobuf::int64 compute_time() const;
+  void set_compute_time(::google::protobuf::int64 value);
+
+  // int64 memory_time = 15;
+  void clear_memory_time();
+  static const int kMemoryTimeFieldNumber = 15;
+  ::google::protobuf::int64 memory_time() const;
+  void set_memory_time(::google::protobuf::int64 value);
+
+  // int64 device_persistent_memory_size = 16 [deprecated = true];
+  PROTOBUF_DEPRECATED void clear_device_persistent_memory_size();
+  PROTOBUF_DEPRECATED static const int kDevicePersistentMemorySizeFieldNumber = 16;
+  PROTOBUF_DEPRECATED ::google::protobuf::int64 device_persistent_memory_size() const;
+  PROTOBUF_DEPRECATED void set_device_persistent_memory_size(::google::protobuf::int64 value);
+
+  // @@protoc_insertion_point(class_scope:tensorflow.CostGraphDef.Node)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  ::google::protobuf::RepeatedPtrField< ::tensorflow::CostGraphDef_Node_InputInfo > input_info_;
+  ::google::protobuf::RepeatedPtrField< ::tensorflow::CostGraphDef_Node_OutputInfo > output_info_;
+  ::google::protobuf::RepeatedField< ::google::protobuf::int32 > control_input_;
+  mutable std::atomic<int> _control_input_cached_byte_size_;
+  ::google::protobuf::internal::ArenaStringPtr name_;
+  ::google::protobuf::internal::ArenaStringPtr device_;
+  ::google::protobuf::int32 id_;
+  bool is_final_;
+  ::google::protobuf::int64 temporary_memory_size_;
+  ::google::protobuf::int64 compute_cost_;
+  ::google::protobuf::int64 host_temp_memory_size_;
+  ::google::protobuf::int64 device_temp_memory_size_;
+  ::google::protobuf::int64 persistent_memory_size_;
+  ::google::protobuf::int64 compute_time_;
+  ::google::protobuf::int64 memory_time_;
+  ::google::protobuf::int64 device_persistent_memory_size_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fframework_2fcost_5fgraph_2eproto;
+};
+// -------------------------------------------------------------------
+
+class CostGraphDef : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.CostGraphDef) */ {
+ public:
+  CostGraphDef();
+  virtual ~CostGraphDef();
+
+  CostGraphDef(const CostGraphDef& from);
+
+  inline CostGraphDef& operator=(const CostGraphDef& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  CostGraphDef(CostGraphDef&& from) noexcept
+    : CostGraphDef() {
+    *this = ::std::move(from);
+  }
+
+  inline CostGraphDef& operator=(CostGraphDef&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const CostGraphDef& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const CostGraphDef* internal_default_instance() {
+    return reinterpret_cast<const CostGraphDef*>(
+               &_CostGraphDef_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    3;
+
+  void UnsafeArenaSwap(CostGraphDef* other);
+  void Swap(CostGraphDef* other);
+  friend void swap(CostGraphDef& a, CostGraphDef& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline CostGraphDef* New() const final {
+    return CreateMaybeMessage<CostGraphDef>(NULL);
+  }
+
+  CostGraphDef* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<CostGraphDef>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const CostGraphDef& from);
+  void MergeFrom(const CostGraphDef& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(CostGraphDef* other);
+  protected:
+  explicit CostGraphDef(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  typedef CostGraphDef_Node Node;
+
+  // accessors -------------------------------------------------------
+
+  // repeated .tensorflow.CostGraphDef.Node node = 1;
+  int node_size() const;
+  void clear_node();
+  static const int kNodeFieldNumber = 1;
+  ::tensorflow::CostGraphDef_Node* mutable_node(int index);
+  ::google::protobuf::RepeatedPtrField< ::tensorflow::CostGraphDef_Node >*
+      mutable_node();
+  const ::tensorflow::CostGraphDef_Node& node(int index) const;
+  ::tensorflow::CostGraphDef_Node* add_node();
+  const ::google::protobuf::RepeatedPtrField< ::tensorflow::CostGraphDef_Node >&
+      node() const;
+
+  // @@protoc_insertion_point(class_scope:tensorflow.CostGraphDef)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  ::google::protobuf::RepeatedPtrField< ::tensorflow::CostGraphDef_Node > node_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fframework_2fcost_5fgraph_2eproto;
+};
+// ===================================================================
+
+
+// ===================================================================
+
+#ifdef __GNUC__
+  #pragma GCC diagnostic push
+  #pragma GCC diagnostic ignored "-Wstrict-aliasing"
+#endif  // __GNUC__
+// CostGraphDef_Node_InputInfo
+
+// int32 preceding_node = 1;
+inline void CostGraphDef_Node_InputInfo::clear_preceding_node() {
+  preceding_node_ = 0;
+}
+inline ::google::protobuf::int32 CostGraphDef_Node_InputInfo::preceding_node() const {
+  // @@protoc_insertion_point(field_get:tensorflow.CostGraphDef.Node.InputInfo.preceding_node)
+  return preceding_node_;
+}
+inline void CostGraphDef_Node_InputInfo::set_preceding_node(::google::protobuf::int32 value) {
+  
+  preceding_node_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.CostGraphDef.Node.InputInfo.preceding_node)
+}
+
+// int32 preceding_port = 2;
+inline void CostGraphDef_Node_InputInfo::clear_preceding_port() {
+  preceding_port_ = 0;
+}
+inline ::google::protobuf::int32 CostGraphDef_Node_InputInfo::preceding_port() const {
+  // @@protoc_insertion_point(field_get:tensorflow.CostGraphDef.Node.InputInfo.preceding_port)
+  return preceding_port_;
+}
+inline void CostGraphDef_Node_InputInfo::set_preceding_port(::google::protobuf::int32 value) {
+  
+  preceding_port_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.CostGraphDef.Node.InputInfo.preceding_port)
+}
+
+// -------------------------------------------------------------------
+
+// CostGraphDef_Node_OutputInfo
+
+// int64 size = 1;
+inline void CostGraphDef_Node_OutputInfo::clear_size() {
+  size_ = PROTOBUF_LONGLONG(0);
+}
+inline ::google::protobuf::int64 CostGraphDef_Node_OutputInfo::size() const {
+  // @@protoc_insertion_point(field_get:tensorflow.CostGraphDef.Node.OutputInfo.size)
+  return size_;
+}
+inline void CostGraphDef_Node_OutputInfo::set_size(::google::protobuf::int64 value) {
+  
+  size_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.CostGraphDef.Node.OutputInfo.size)
+}
+
+// int64 alias_input_port = 2;
+inline void CostGraphDef_Node_OutputInfo::clear_alias_input_port() {
+  alias_input_port_ = PROTOBUF_LONGLONG(0);
+}
+inline ::google::protobuf::int64 CostGraphDef_Node_OutputInfo::alias_input_port() const {
+  // @@protoc_insertion_point(field_get:tensorflow.CostGraphDef.Node.OutputInfo.alias_input_port)
+  return alias_input_port_;
+}
+inline void CostGraphDef_Node_OutputInfo::set_alias_input_port(::google::protobuf::int64 value) {
+  
+  alias_input_port_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.CostGraphDef.Node.OutputInfo.alias_input_port)
+}
+
+// .tensorflow.TensorShapeProto shape = 3;
+inline bool CostGraphDef_Node_OutputInfo::has_shape() const {
+  return this != internal_default_instance() && shape_ != NULL;
+}
+inline const ::tensorflow::TensorShapeProto& CostGraphDef_Node_OutputInfo::shape() const {
+  const ::tensorflow::TensorShapeProto* p = shape_;
+  // @@protoc_insertion_point(field_get:tensorflow.CostGraphDef.Node.OutputInfo.shape)
+  return p != NULL ? *p : *reinterpret_cast<const ::tensorflow::TensorShapeProto*>(
+      &::tensorflow::_TensorShapeProto_default_instance_);
+}
+inline ::tensorflow::TensorShapeProto* CostGraphDef_Node_OutputInfo::release_shape() {
+  // @@protoc_insertion_point(field_release:tensorflow.CostGraphDef.Node.OutputInfo.shape)
+  
+  ::tensorflow::TensorShapeProto* temp = shape_;
+  if (GetArenaNoVirtual() != NULL) {
+    temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
+  }
+  shape_ = NULL;
+  return temp;
+}
+inline ::tensorflow::TensorShapeProto* CostGraphDef_Node_OutputInfo::unsafe_arena_release_shape() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.CostGraphDef.Node.OutputInfo.shape)
+  
+  ::tensorflow::TensorShapeProto* temp = shape_;
+  shape_ = NULL;
+  return temp;
+}
+inline ::tensorflow::TensorShapeProto* CostGraphDef_Node_OutputInfo::mutable_shape() {
+  
+  if (shape_ == NULL) {
+    auto* p = CreateMaybeMessage<::tensorflow::TensorShapeProto>(GetArenaNoVirtual());
+    shape_ = p;
+  }
+  // @@protoc_insertion_point(field_mutable:tensorflow.CostGraphDef.Node.OutputInfo.shape)
+  return shape_;
+}
+inline void CostGraphDef_Node_OutputInfo::set_allocated_shape(::tensorflow::TensorShapeProto* shape) {
+  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
+  if (message_arena == NULL) {
+    delete reinterpret_cast< ::google::protobuf::MessageLite*>(shape_);
+  }
+  if (shape) {
+    ::google::protobuf::Arena* submessage_arena =
+      reinterpret_cast<::google::protobuf::MessageLite*>(shape)->GetArena();
+    if (message_arena != submessage_arena) {
+      shape = ::google::protobuf::internal::GetOwnedMessage(
+          message_arena, shape, submessage_arena);
+    }
+    
+  } else {
+    
+  }
+  shape_ = shape;
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.CostGraphDef.Node.OutputInfo.shape)
+}
+
+// .tensorflow.DataType dtype = 4;
+inline void CostGraphDef_Node_OutputInfo::clear_dtype() {
+  dtype_ = 0;
+}
+inline ::tensorflow::DataType CostGraphDef_Node_OutputInfo::dtype() const {
+  // @@protoc_insertion_point(field_get:tensorflow.CostGraphDef.Node.OutputInfo.dtype)
+  return static_cast< ::tensorflow::DataType >(dtype_);
+}
+inline void CostGraphDef_Node_OutputInfo::set_dtype(::tensorflow::DataType value) {
+  
+  dtype_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.CostGraphDef.Node.OutputInfo.dtype)
+}
+
+// -------------------------------------------------------------------
+
+// CostGraphDef_Node
+
+// string name = 1;
+inline void CostGraphDef_Node::clear_name() {
+  name_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline const ::std::string& CostGraphDef_Node::name() const {
+  // @@protoc_insertion_point(field_get:tensorflow.CostGraphDef.Node.name)
+  return name_.Get();
+}
+inline void CostGraphDef_Node::set_name(const ::std::string& value) {
+  
+  name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set:tensorflow.CostGraphDef.Node.name)
+}
+#if LANG_CXX11
+inline void CostGraphDef_Node::set_name(::std::string&& value) {
+  
+  name_.Set(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.CostGraphDef.Node.name)
+}
+#endif
+inline void CostGraphDef_Node::set_name(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
+              GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_char:tensorflow.CostGraphDef.Node.name)
+}
+inline void CostGraphDef_Node::set_name(const char* value,
+    size_t size) {
+  
+  name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
+      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.CostGraphDef.Node.name)
+}
+inline ::std::string* CostGraphDef_Node::mutable_name() {
+  
+  // @@protoc_insertion_point(field_mutable:tensorflow.CostGraphDef.Node.name)
+  return name_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline ::std::string* CostGraphDef_Node::release_name() {
+  // @@protoc_insertion_point(field_release:tensorflow.CostGraphDef.Node.name)
+  
+  return name_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline void CostGraphDef_Node::set_allocated_name(::std::string* name) {
+  if (name != NULL) {
+    
+  } else {
+    
+  }
+  name_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), name,
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.CostGraphDef.Node.name)
+}
+inline ::std::string* CostGraphDef_Node::unsafe_arena_release_name() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.CostGraphDef.Node.name)
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  
+  return name_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      GetArenaNoVirtual());
+}
+inline void CostGraphDef_Node::unsafe_arena_set_allocated_name(
+    ::std::string* name) {
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (name != NULL) {
+    
+  } else {
+    
+  }
+  name_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      name, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.CostGraphDef.Node.name)
+}
+
+// string device = 2;
+inline void CostGraphDef_Node::clear_device() {
+  device_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline const ::std::string& CostGraphDef_Node::device() const {
+  // @@protoc_insertion_point(field_get:tensorflow.CostGraphDef.Node.device)
+  return device_.Get();
+}
+inline void CostGraphDef_Node::set_device(const ::std::string& value) {
+  
+  device_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set:tensorflow.CostGraphDef.Node.device)
+}
+#if LANG_CXX11
+inline void CostGraphDef_Node::set_device(::std::string&& value) {
+  
+  device_.Set(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.CostGraphDef.Node.device)
+}
+#endif
+inline void CostGraphDef_Node::set_device(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  device_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
+              GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_char:tensorflow.CostGraphDef.Node.device)
+}
+inline void CostGraphDef_Node::set_device(const char* value,
+    size_t size) {
+  
+  device_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
+      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.CostGraphDef.Node.device)
+}
+inline ::std::string* CostGraphDef_Node::mutable_device() {
+  
+  // @@protoc_insertion_point(field_mutable:tensorflow.CostGraphDef.Node.device)
+  return device_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline ::std::string* CostGraphDef_Node::release_device() {
+  // @@protoc_insertion_point(field_release:tensorflow.CostGraphDef.Node.device)
+  
+  return device_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline void CostGraphDef_Node::set_allocated_device(::std::string* device) {
+  if (device != NULL) {
+    
+  } else {
+    
+  }
+  device_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), device,
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.CostGraphDef.Node.device)
+}
+inline ::std::string* CostGraphDef_Node::unsafe_arena_release_device() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.CostGraphDef.Node.device)
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  
+  return device_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      GetArenaNoVirtual());
+}
+inline void CostGraphDef_Node::unsafe_arena_set_allocated_device(
+    ::std::string* device) {
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (device != NULL) {
+    
+  } else {
+    
+  }
+  device_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      device, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.CostGraphDef.Node.device)
+}
+
+// int32 id = 3;
+inline void CostGraphDef_Node::clear_id() {
+  id_ = 0;
+}
+inline ::google::protobuf::int32 CostGraphDef_Node::id() const {
+  // @@protoc_insertion_point(field_get:tensorflow.CostGraphDef.Node.id)
+  return id_;
+}
+inline void CostGraphDef_Node::set_id(::google::protobuf::int32 value) {
+  
+  id_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.CostGraphDef.Node.id)
+}
+
+// repeated .tensorflow.CostGraphDef.Node.InputInfo input_info = 4;
+inline int CostGraphDef_Node::input_info_size() const {
+  return input_info_.size();
+}
+inline void CostGraphDef_Node::clear_input_info() {
+  input_info_.Clear();
+}
+inline ::tensorflow::CostGraphDef_Node_InputInfo* CostGraphDef_Node::mutable_input_info(int index) {
+  // @@protoc_insertion_point(field_mutable:tensorflow.CostGraphDef.Node.input_info)
+  return input_info_.Mutable(index);
+}
+inline ::google::protobuf::RepeatedPtrField< ::tensorflow::CostGraphDef_Node_InputInfo >*
+CostGraphDef_Node::mutable_input_info() {
+  // @@protoc_insertion_point(field_mutable_list:tensorflow.CostGraphDef.Node.input_info)
+  return &input_info_;
+}
+inline const ::tensorflow::CostGraphDef_Node_InputInfo& CostGraphDef_Node::input_info(int index) const {
+  // @@protoc_insertion_point(field_get:tensorflow.CostGraphDef.Node.input_info)
+  return input_info_.Get(index);
+}
+inline ::tensorflow::CostGraphDef_Node_InputInfo* CostGraphDef_Node::add_input_info() {
+  // @@protoc_insertion_point(field_add:tensorflow.CostGraphDef.Node.input_info)
+  return input_info_.Add();
+}
+inline const ::google::protobuf::RepeatedPtrField< ::tensorflow::CostGraphDef_Node_InputInfo >&
+CostGraphDef_Node::input_info() const {
+  // @@protoc_insertion_point(field_list:tensorflow.CostGraphDef.Node.input_info)
+  return input_info_;
+}
+
+// repeated .tensorflow.CostGraphDef.Node.OutputInfo output_info = 5;
+inline int CostGraphDef_Node::output_info_size() const {
+  return output_info_.size();
+}
+inline void CostGraphDef_Node::clear_output_info() {
+  output_info_.Clear();
+}
+inline ::tensorflow::CostGraphDef_Node_OutputInfo* CostGraphDef_Node::mutable_output_info(int index) {
+  // @@protoc_insertion_point(field_mutable:tensorflow.CostGraphDef.Node.output_info)
+  return output_info_.Mutable(index);
+}
+inline ::google::protobuf::RepeatedPtrField< ::tensorflow::CostGraphDef_Node_OutputInfo >*
+CostGraphDef_Node::mutable_output_info() {
+  // @@protoc_insertion_point(field_mutable_list:tensorflow.CostGraphDef.Node.output_info)
+  return &output_info_;
+}
+inline const ::tensorflow::CostGraphDef_Node_OutputInfo& CostGraphDef_Node::output_info(int index) const {
+  // @@protoc_insertion_point(field_get:tensorflow.CostGraphDef.Node.output_info)
+  return output_info_.Get(index);
+}
+inline ::tensorflow::CostGraphDef_Node_OutputInfo* CostGraphDef_Node::add_output_info() {
+  // @@protoc_insertion_point(field_add:tensorflow.CostGraphDef.Node.output_info)
+  return output_info_.Add();
+}
+inline const ::google::protobuf::RepeatedPtrField< ::tensorflow::CostGraphDef_Node_OutputInfo >&
+CostGraphDef_Node::output_info() const {
+  // @@protoc_insertion_point(field_list:tensorflow.CostGraphDef.Node.output_info)
+  return output_info_;
+}
+
+// int64 temporary_memory_size = 6;
+inline void CostGraphDef_Node::clear_temporary_memory_size() {
+  temporary_memory_size_ = PROTOBUF_LONGLONG(0);
+}
+inline ::google::protobuf::int64 CostGraphDef_Node::temporary_memory_size() const {
+  // @@protoc_insertion_point(field_get:tensorflow.CostGraphDef.Node.temporary_memory_size)
+  return temporary_memory_size_;
+}
+inline void CostGraphDef_Node::set_temporary_memory_size(::google::protobuf::int64 value) {
+  
+  temporary_memory_size_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.CostGraphDef.Node.temporary_memory_size)
+}
+
+// int64 persistent_memory_size = 12;
+inline void CostGraphDef_Node::clear_persistent_memory_size() {
+  persistent_memory_size_ = PROTOBUF_LONGLONG(0);
+}
+inline ::google::protobuf::int64 CostGraphDef_Node::persistent_memory_size() const {
+  // @@protoc_insertion_point(field_get:tensorflow.CostGraphDef.Node.persistent_memory_size)
+  return persistent_memory_size_;
+}
+inline void CostGraphDef_Node::set_persistent_memory_size(::google::protobuf::int64 value) {
+  
+  persistent_memory_size_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.CostGraphDef.Node.persistent_memory_size)
+}
+
+// int64 host_temp_memory_size = 10 [deprecated = true];
+inline void CostGraphDef_Node::clear_host_temp_memory_size() {
+  host_temp_memory_size_ = PROTOBUF_LONGLONG(0);
+}
+inline ::google::protobuf::int64 CostGraphDef_Node::host_temp_memory_size() const {
+  // @@protoc_insertion_point(field_get:tensorflow.CostGraphDef.Node.host_temp_memory_size)
+  return host_temp_memory_size_;
+}
+inline void CostGraphDef_Node::set_host_temp_memory_size(::google::protobuf::int64 value) {
+  
+  host_temp_memory_size_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.CostGraphDef.Node.host_temp_memory_size)
+}
+
+// int64 device_temp_memory_size = 11 [deprecated = true];
+inline void CostGraphDef_Node::clear_device_temp_memory_size() {
+  device_temp_memory_size_ = PROTOBUF_LONGLONG(0);
+}
+inline ::google::protobuf::int64 CostGraphDef_Node::device_temp_memory_size() const {
+  // @@protoc_insertion_point(field_get:tensorflow.CostGraphDef.Node.device_temp_memory_size)
+  return device_temp_memory_size_;
+}
+inline void CostGraphDef_Node::set_device_temp_memory_size(::google::protobuf::int64 value) {
+  
+  device_temp_memory_size_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.CostGraphDef.Node.device_temp_memory_size)
+}
+
+// int64 device_persistent_memory_size = 16 [deprecated = true];
+inline void CostGraphDef_Node::clear_device_persistent_memory_size() {
+  device_persistent_memory_size_ = PROTOBUF_LONGLONG(0);
+}
+inline ::google::protobuf::int64 CostGraphDef_Node::device_persistent_memory_size() const {
+  // @@protoc_insertion_point(field_get:tensorflow.CostGraphDef.Node.device_persistent_memory_size)
+  return device_persistent_memory_size_;
+}
+inline void CostGraphDef_Node::set_device_persistent_memory_size(::google::protobuf::int64 value) {
+  
+  device_persistent_memory_size_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.CostGraphDef.Node.device_persistent_memory_size)
+}
+
+// int64 compute_cost = 9;
+inline void CostGraphDef_Node::clear_compute_cost() {
+  compute_cost_ = PROTOBUF_LONGLONG(0);
+}
+inline ::google::protobuf::int64 CostGraphDef_Node::compute_cost() const {
+  // @@protoc_insertion_point(field_get:tensorflow.CostGraphDef.Node.compute_cost)
+  return compute_cost_;
+}
+inline void CostGraphDef_Node::set_compute_cost(::google::protobuf::int64 value) {
+  
+  compute_cost_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.CostGraphDef.Node.compute_cost)
+}
+
+// int64 compute_time = 14;
+inline void CostGraphDef_Node::clear_compute_time() {
+  compute_time_ = PROTOBUF_LONGLONG(0);
+}
+inline ::google::protobuf::int64 CostGraphDef_Node::compute_time() const {
+  // @@protoc_insertion_point(field_get:tensorflow.CostGraphDef.Node.compute_time)
+  return compute_time_;
+}
+inline void CostGraphDef_Node::set_compute_time(::google::protobuf::int64 value) {
+  
+  compute_time_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.CostGraphDef.Node.compute_time)
+}
+
+// int64 memory_time = 15;
+inline void CostGraphDef_Node::clear_memory_time() {
+  memory_time_ = PROTOBUF_LONGLONG(0);
+}
+inline ::google::protobuf::int64 CostGraphDef_Node::memory_time() const {
+  // @@protoc_insertion_point(field_get:tensorflow.CostGraphDef.Node.memory_time)
+  return memory_time_;
+}
+inline void CostGraphDef_Node::set_memory_time(::google::protobuf::int64 value) {
+  
+  memory_time_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.CostGraphDef.Node.memory_time)
+}
+
+// bool is_final = 7;
+inline void CostGraphDef_Node::clear_is_final() {
+  is_final_ = false;
+}
+inline bool CostGraphDef_Node::is_final() const {
+  // @@protoc_insertion_point(field_get:tensorflow.CostGraphDef.Node.is_final)
+  return is_final_;
+}
+inline void CostGraphDef_Node::set_is_final(bool value) {
+  
+  is_final_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.CostGraphDef.Node.is_final)
+}
+
+// repeated int32 control_input = 8;
+inline int CostGraphDef_Node::control_input_size() const {
+  return control_input_.size();
+}
+inline void CostGraphDef_Node::clear_control_input() {
+  control_input_.Clear();
+}
+inline ::google::protobuf::int32 CostGraphDef_Node::control_input(int index) const {
+  // @@protoc_insertion_point(field_get:tensorflow.CostGraphDef.Node.control_input)
+  return control_input_.Get(index);
+}
+inline void CostGraphDef_Node::set_control_input(int index, ::google::protobuf::int32 value) {
+  control_input_.Set(index, value);
+  // @@protoc_insertion_point(field_set:tensorflow.CostGraphDef.Node.control_input)
+}
+inline void CostGraphDef_Node::add_control_input(::google::protobuf::int32 value) {
+  control_input_.Add(value);
+  // @@protoc_insertion_point(field_add:tensorflow.CostGraphDef.Node.control_input)
+}
+inline const ::google::protobuf::RepeatedField< ::google::protobuf::int32 >&
+CostGraphDef_Node::control_input() const {
+  // @@protoc_insertion_point(field_list:tensorflow.CostGraphDef.Node.control_input)
+  return control_input_;
+}
+inline ::google::protobuf::RepeatedField< ::google::protobuf::int32 >*
+CostGraphDef_Node::mutable_control_input() {
+  // @@protoc_insertion_point(field_mutable_list:tensorflow.CostGraphDef.Node.control_input)
+  return &control_input_;
+}
+
+// -------------------------------------------------------------------
+
+// CostGraphDef
+
+// repeated .tensorflow.CostGraphDef.Node node = 1;
+inline int CostGraphDef::node_size() const {
+  return node_.size();
+}
+inline void CostGraphDef::clear_node() {
+  node_.Clear();
+}
+inline ::tensorflow::CostGraphDef_Node* CostGraphDef::mutable_node(int index) {
+  // @@protoc_insertion_point(field_mutable:tensorflow.CostGraphDef.node)
+  return node_.Mutable(index);
+}
+inline ::google::protobuf::RepeatedPtrField< ::tensorflow::CostGraphDef_Node >*
+CostGraphDef::mutable_node() {
+  // @@protoc_insertion_point(field_mutable_list:tensorflow.CostGraphDef.node)
+  return &node_;
+}
+inline const ::tensorflow::CostGraphDef_Node& CostGraphDef::node(int index) const {
+  // @@protoc_insertion_point(field_get:tensorflow.CostGraphDef.node)
+  return node_.Get(index);
+}
+inline ::tensorflow::CostGraphDef_Node* CostGraphDef::add_node() {
+  // @@protoc_insertion_point(field_add:tensorflow.CostGraphDef.node)
+  return node_.Add();
+}
+inline const ::google::protobuf::RepeatedPtrField< ::tensorflow::CostGraphDef_Node >&
+CostGraphDef::node() const {
+  // @@protoc_insertion_point(field_list:tensorflow.CostGraphDef.node)
+  return node_;
+}
+
+#ifdef __GNUC__
+  #pragma GCC diagnostic pop
+#endif  // __GNUC__
+// -------------------------------------------------------------------
+
+// -------------------------------------------------------------------
+
+// -------------------------------------------------------------------
+
+
+// @@protoc_insertion_point(namespace_scope)
+
+}  // namespace tensorflow
+
+// @@protoc_insertion_point(global_scope)
+
+#include <google/protobuf/port_undef.inc>
+#endif  // PROTOBUF_INCLUDED_tensorflow_2fcore_2fframework_2fcost_5fgraph_2eproto
diff --git a/tensorflow/core/framework/cost_graph.proto b/tensorflow/core/framework/cost_graph.proto
new file mode 100644 (file)
index 0000000..19d765c
--- /dev/null
@@ -0,0 +1,74 @@
+syntax = "proto3";
+
+package tensorflow;
+option cc_enable_arenas = true;
+option java_outer_classname = "CostGraphProtos";
+option java_multiple_files = true;
+option java_package = "org.tensorflow.framework";
+option go_package = "github.com/tensorflow/tensorflow/tensorflow/go/core/framework";
+import "tensorflow/core/framework/tensor_shape.proto";
+import "tensorflow/core/framework/types.proto";
+
+message CostGraphDef {
+  message Node {
+    // The name of the node. Names are globally unique.
+    string name = 1;
+
+    // The device of the node. Can be empty if the node is mapped to the
+    // default partition or partitioning hasn't been run yet.
+    string device = 2;
+
+    // The id of the node. Node ids are only unique inside a partition.
+    int32 id = 3;
+
+    // Inputs of this node. They must be executed before this node can be
+    // executed. An input is a particular output of another node, specified
+    // by the node id and the output index.
+    message InputInfo {
+      int32 preceding_node = 1;
+      int32 preceding_port = 2;
+    }
+    repeated InputInfo input_info = 4;
+
+    // Outputs of this node.
+    message OutputInfo {
+      int64 size = 1;
+      // If >= 0, the output is an alias of an input. Note that an alias input
+      // may itself be an alias. The algorithm will therefore need to follow
+      // those pointers.
+      int64 alias_input_port = 2;
+      TensorShapeProto shape = 3;
+      DataType dtype = 4;
+    }
+    repeated OutputInfo output_info = 5;
+
+    // Temporary memory used by this node.
+    int64 temporary_memory_size = 6;
+
+    // Persistent memory used by this node.
+    int64 persistent_memory_size = 12;
+
+    int64 host_temp_memory_size = 10 [deprecated = true];
+    int64 device_temp_memory_size = 11 [deprecated = true];
+    int64 device_persistent_memory_size = 16 [deprecated = true];
+
+    // Estimate of the computational cost of this node, in microseconds.
+    int64 compute_cost = 9;
+
+    // Analytical estimate of the computational cost of this node, in
+    // microseconds.
+    int64 compute_time = 14;
+
+    // Analytical estimate of the memory access cost of this node, in
+    // microseconds.
+    int64 memory_time = 15;
+
+    // If true, the output is permanent: it can't be discarded, because this
+    // node is part of the "final output". Nodes may depend on final nodes.
+    bool is_final = 7;
+
+    // Ids of the control inputs for this node.
+    repeated int32 control_input = 8;
+  }
+  repeated Node node = 1;
+}
diff --git a/tensorflow/core/framework/device_attributes.pb.cc b/tensorflow/core/framework/device_attributes.pb.cc
new file mode 100644 (file)
index 0000000..01aee78
--- /dev/null
@@ -0,0 +1,2044 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: tensorflow/core/framework/device_attributes.proto
+
+#include "tensorflow/core/framework/device_attributes.pb.h"
+
+#include <algorithm>
+
+#include <google/protobuf/stubs/common.h>
+#include <google/protobuf/io/coded_stream.h>
+#include <google/protobuf/extension_set.h>
+#include <google/protobuf/wire_format_lite_inl.h>
+#include <google/protobuf/descriptor.h>
+#include <google/protobuf/generated_message_reflection.h>
+#include <google/protobuf/reflection_ops.h>
+#include <google/protobuf/wire_format.h>
+// @@protoc_insertion_point(includes)
+#include <google/protobuf/port_def.inc>
+
+extern PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fframework_2fdevice_5fattributes_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_InterconnectLink_tensorflow_2fcore_2fframework_2fdevice_5fattributes_2eproto;
+extern PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fframework_2fdevice_5fattributes_2eproto ::google::protobuf::internal::SCCInfo<1> scc_info_DeviceLocality_tensorflow_2fcore_2fframework_2fdevice_5fattributes_2eproto;
+extern PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fframework_2fdevice_5fattributes_2eproto ::google::protobuf::internal::SCCInfo<1> scc_info_LocalLinks_tensorflow_2fcore_2fframework_2fdevice_5fattributes_2eproto;
+namespace tensorflow {
+class InterconnectLinkDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<InterconnectLink> _instance;
+} _InterconnectLink_default_instance_;
+class LocalLinksDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<LocalLinks> _instance;
+} _LocalLinks_default_instance_;
+class DeviceLocalityDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<DeviceLocality> _instance;
+} _DeviceLocality_default_instance_;
+class DeviceAttributesDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<DeviceAttributes> _instance;
+} _DeviceAttributes_default_instance_;
+}  // namespace tensorflow
+static void InitDefaultsInterconnectLink_tensorflow_2fcore_2fframework_2fdevice_5fattributes_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_InterconnectLink_default_instance_;
+    new (ptr) ::tensorflow::InterconnectLink();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::InterconnectLink::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<0> scc_info_InterconnectLink_tensorflow_2fcore_2fframework_2fdevice_5fattributes_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsInterconnectLink_tensorflow_2fcore_2fframework_2fdevice_5fattributes_2eproto}, {}};
+
+static void InitDefaultsLocalLinks_tensorflow_2fcore_2fframework_2fdevice_5fattributes_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_LocalLinks_default_instance_;
+    new (ptr) ::tensorflow::LocalLinks();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::LocalLinks::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<1> scc_info_LocalLinks_tensorflow_2fcore_2fframework_2fdevice_5fattributes_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsLocalLinks_tensorflow_2fcore_2fframework_2fdevice_5fattributes_2eproto}, {
+      &scc_info_InterconnectLink_tensorflow_2fcore_2fframework_2fdevice_5fattributes_2eproto.base,}};
+
+static void InitDefaultsDeviceLocality_tensorflow_2fcore_2fframework_2fdevice_5fattributes_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_DeviceLocality_default_instance_;
+    new (ptr) ::tensorflow::DeviceLocality();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::DeviceLocality::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<1> scc_info_DeviceLocality_tensorflow_2fcore_2fframework_2fdevice_5fattributes_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsDeviceLocality_tensorflow_2fcore_2fframework_2fdevice_5fattributes_2eproto}, {
+      &scc_info_LocalLinks_tensorflow_2fcore_2fframework_2fdevice_5fattributes_2eproto.base,}};
+
+static void InitDefaultsDeviceAttributes_tensorflow_2fcore_2fframework_2fdevice_5fattributes_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_DeviceAttributes_default_instance_;
+    new (ptr) ::tensorflow::DeviceAttributes();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::DeviceAttributes::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<1> scc_info_DeviceAttributes_tensorflow_2fcore_2fframework_2fdevice_5fattributes_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsDeviceAttributes_tensorflow_2fcore_2fframework_2fdevice_5fattributes_2eproto}, {
+      &scc_info_DeviceLocality_tensorflow_2fcore_2fframework_2fdevice_5fattributes_2eproto.base,}};
+
+void InitDefaults_tensorflow_2fcore_2fframework_2fdevice_5fattributes_2eproto() {
+  ::google::protobuf::internal::InitSCC(&scc_info_InterconnectLink_tensorflow_2fcore_2fframework_2fdevice_5fattributes_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_LocalLinks_tensorflow_2fcore_2fframework_2fdevice_5fattributes_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_DeviceLocality_tensorflow_2fcore_2fframework_2fdevice_5fattributes_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_DeviceAttributes_tensorflow_2fcore_2fframework_2fdevice_5fattributes_2eproto.base);
+}
+
+::google::protobuf::Metadata file_level_metadata_tensorflow_2fcore_2fframework_2fdevice_5fattributes_2eproto[4];
+constexpr ::google::protobuf::EnumDescriptor const** file_level_enum_descriptors_tensorflow_2fcore_2fframework_2fdevice_5fattributes_2eproto = nullptr;
+constexpr ::google::protobuf::ServiceDescriptor const** file_level_service_descriptors_tensorflow_2fcore_2fframework_2fdevice_5fattributes_2eproto = nullptr;
+
+const ::google::protobuf::uint32 TableStruct_tensorflow_2fcore_2fframework_2fdevice_5fattributes_2eproto::offsets[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = {
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::InterconnectLink, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::InterconnectLink, device_id_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::InterconnectLink, type_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::InterconnectLink, strength_),
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::LocalLinks, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::LocalLinks, link_),
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::DeviceLocality, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::DeviceLocality, bus_id_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::DeviceLocality, numa_node_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::DeviceLocality, links_),
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::DeviceAttributes, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::DeviceAttributes, name_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::DeviceAttributes, device_type_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::DeviceAttributes, memory_limit_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::DeviceAttributes, locality_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::DeviceAttributes, incarnation_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::DeviceAttributes, physical_device_desc_),
+};
+static const ::google::protobuf::internal::MigrationSchema schemas[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = {
+  { 0, -1, sizeof(::tensorflow::InterconnectLink)},
+  { 8, -1, sizeof(::tensorflow::LocalLinks)},
+  { 14, -1, sizeof(::tensorflow::DeviceLocality)},
+  { 22, -1, sizeof(::tensorflow::DeviceAttributes)},
+};
+
+static ::google::protobuf::Message const * const file_default_instances[] = {
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_InterconnectLink_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_LocalLinks_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_DeviceLocality_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_DeviceAttributes_default_instance_),
+};
+
+::google::protobuf::internal::AssignDescriptorsTable assign_descriptors_table_tensorflow_2fcore_2fframework_2fdevice_5fattributes_2eproto = {
+  {}, AddDescriptors_tensorflow_2fcore_2fframework_2fdevice_5fattributes_2eproto, "tensorflow/core/framework/device_attributes.proto", schemas,
+  file_default_instances, TableStruct_tensorflow_2fcore_2fframework_2fdevice_5fattributes_2eproto::offsets,
+  file_level_metadata_tensorflow_2fcore_2fframework_2fdevice_5fattributes_2eproto, 4, file_level_enum_descriptors_tensorflow_2fcore_2fframework_2fdevice_5fattributes_2eproto, file_level_service_descriptors_tensorflow_2fcore_2fframework_2fdevice_5fattributes_2eproto,
+};
+
+::google::protobuf::internal::DescriptorTable descriptor_table_tensorflow_2fcore_2fframework_2fdevice_5fattributes_2eproto = {
+  false, InitDefaults_tensorflow_2fcore_2fframework_2fdevice_5fattributes_2eproto, 
+  "\n1tensorflow/core/framework/device_attri"
+  "butes.proto\022\ntensorflow\"E\n\020InterconnectL"
+  "ink\022\021\n\tdevice_id\030\001 \001(\005\022\014\n\004type\030\002 \001(\t\022\020\n\010"
+  "strength\030\003 \001(\005\"8\n\nLocalLinks\022*\n\004link\030\001 \003"
+  "(\0132\034.tensorflow.InterconnectLink\"Z\n\016Devi"
+  "ceLocality\022\016\n\006bus_id\030\001 \001(\005\022\021\n\tnuma_node\030"
+  "\002 \001(\005\022%\n\005links\030\003 \001(\0132\026.tensorflow.LocalL"
+  "inks\"\254\001\n\020DeviceAttributes\022\014\n\004name\030\001 \001(\t\022"
+  "\023\n\013device_type\030\002 \001(\t\022\024\n\014memory_limit\030\004 \001"
+  "(\003\022,\n\010locality\030\005 \001(\0132\032.tensorflow.Device"
+  "Locality\022\023\n\013incarnation\030\006 \001(\006\022\034\n\024physica"
+  "l_device_desc\030\007 \001(\tBv\n\030org.tensorflow.fr"
+  "ameworkB\026DeviceAttributesProtosP\001Z=githu"
+  "b.com/tensorflow/tensorflow/tensorflow/g"
+  "o/core/framework\370\001\001b\006proto3"
+,
+  "tensorflow/core/framework/device_attributes.proto", &assign_descriptors_table_tensorflow_2fcore_2fframework_2fdevice_5fattributes_2eproto, 587,
+};
+
+void AddDescriptors_tensorflow_2fcore_2fframework_2fdevice_5fattributes_2eproto() {
+  static constexpr ::google::protobuf::internal::InitFunc deps[1] =
+  {
+  };
+ ::google::protobuf::internal::AddDescriptors(&descriptor_table_tensorflow_2fcore_2fframework_2fdevice_5fattributes_2eproto, deps, 0);
+}
+
+// Force running AddDescriptors() at dynamic initialization time.
+static bool dynamic_init_dummy_tensorflow_2fcore_2fframework_2fdevice_5fattributes_2eproto = []() { AddDescriptors_tensorflow_2fcore_2fframework_2fdevice_5fattributes_2eproto(); return true; }();
+namespace tensorflow {
+
+// ===================================================================
+
+void InterconnectLink::InitAsDefaultInstance() {
+}
+class InterconnectLink::HasBitSetters {
+ public:
+};
+
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int InterconnectLink::kDeviceIdFieldNumber;
+const int InterconnectLink::kTypeFieldNumber;
+const int InterconnectLink::kStrengthFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+InterconnectLink::InterconnectLink()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.InterconnectLink)
+}
+InterconnectLink::InterconnectLink(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.InterconnectLink)
+}
+InterconnectLink::InterconnectLink(const InterconnectLink& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  type_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.type().size() > 0) {
+    type_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.type(),
+      GetArenaNoVirtual());
+  }
+  ::memcpy(&device_id_, &from.device_id_,
+    static_cast<size_t>(reinterpret_cast<char*>(&strength_) -
+    reinterpret_cast<char*>(&device_id_)) + sizeof(strength_));
+  // @@protoc_insertion_point(copy_constructor:tensorflow.InterconnectLink)
+}
+
+void InterconnectLink::SharedCtor() {
+  ::google::protobuf::internal::InitSCC(
+      &scc_info_InterconnectLink_tensorflow_2fcore_2fframework_2fdevice_5fattributes_2eproto.base);
+  type_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  ::memset(&device_id_, 0, static_cast<size_t>(
+      reinterpret_cast<char*>(&strength_) -
+      reinterpret_cast<char*>(&device_id_)) + sizeof(strength_));
+}
+
+InterconnectLink::~InterconnectLink() {
+  // @@protoc_insertion_point(destructor:tensorflow.InterconnectLink)
+  SharedDtor();
+}
+
+void InterconnectLink::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+  type_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+
+void InterconnectLink::ArenaDtor(void* object) {
+  InterconnectLink* _this = reinterpret_cast< InterconnectLink* >(object);
+  (void)_this;
+}
+void InterconnectLink::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void InterconnectLink::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const InterconnectLink& InterconnectLink::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_InterconnectLink_tensorflow_2fcore_2fframework_2fdevice_5fattributes_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void InterconnectLink::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.InterconnectLink)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  type_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+  ::memset(&device_id_, 0, static_cast<size_t>(
+      reinterpret_cast<char*>(&strength_) -
+      reinterpret_cast<char*>(&device_id_)) + sizeof(strength_));
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* InterconnectLink::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<InterconnectLink*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // int32 device_id = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 8) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::google::protobuf::int32 value = val;
+        msg->set_device_id(value);
+        break;
+      }
+      // string type = 2;
+      case 2: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 18) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("tensorflow.InterconnectLink.type");
+        parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+        ::std::string* str = msg->mutable_type();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+        break;
+      }
+      // int32 strength = 3;
+      case 3: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 24) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::google::protobuf::int32 value = val;
+        msg->set_strength(value);
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool InterconnectLink::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.InterconnectLink)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // int32 device_id = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (8 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
+                 input, &device_id_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // string type = 2;
+      case 2: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (18 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_type()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->type().data(), static_cast<int>(this->type().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.InterconnectLink.type"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // int32 strength = 3;
+      case 3: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (24 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
+                 input, &strength_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.InterconnectLink)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.InterconnectLink)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void InterconnectLink::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.InterconnectLink)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // int32 device_id = 1;
+  if (this->device_id() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt32(1, this->device_id(), output);
+  }
+
+  // string type = 2;
+  if (this->type().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->type().data(), static_cast<int>(this->type().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.InterconnectLink.type");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      2, this->type(), output);
+  }
+
+  // int32 strength = 3;
+  if (this->strength() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt32(3, this->strength(), output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.InterconnectLink)
+}
+
+::google::protobuf::uint8* InterconnectLink::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.InterconnectLink)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // int32 device_id = 1;
+  if (this->device_id() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt32ToArray(1, this->device_id(), target);
+  }
+
+  // string type = 2;
+  if (this->type().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->type().data(), static_cast<int>(this->type().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.InterconnectLink.type");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        2, this->type(), target);
+  }
+
+  // int32 strength = 3;
+  if (this->strength() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt32ToArray(3, this->strength(), target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.InterconnectLink)
+  return target;
+}
+
+size_t InterconnectLink::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.InterconnectLink)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // string type = 2;
+  if (this->type().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->type());
+  }
+
+  // int32 device_id = 1;
+  if (this->device_id() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::Int32Size(
+        this->device_id());
+  }
+
+  // int32 strength = 3;
+  if (this->strength() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::Int32Size(
+        this->strength());
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void InterconnectLink::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.InterconnectLink)
+  GOOGLE_DCHECK_NE(&from, this);
+  const InterconnectLink* source =
+      ::google::protobuf::DynamicCastToGenerated<InterconnectLink>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.InterconnectLink)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.InterconnectLink)
+    MergeFrom(*source);
+  }
+}
+
+void InterconnectLink::MergeFrom(const InterconnectLink& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.InterconnectLink)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  if (from.type().size() > 0) {
+    set_type(from.type());
+  }
+  if (from.device_id() != 0) {
+    set_device_id(from.device_id());
+  }
+  if (from.strength() != 0) {
+    set_strength(from.strength());
+  }
+}
+
+void InterconnectLink::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.InterconnectLink)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void InterconnectLink::CopyFrom(const InterconnectLink& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.InterconnectLink)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool InterconnectLink::IsInitialized() const {
+  return true;
+}
+
+void InterconnectLink::Swap(InterconnectLink* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    InterconnectLink* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void InterconnectLink::UnsafeArenaSwap(InterconnectLink* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void InterconnectLink::InternalSwap(InterconnectLink* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  type_.Swap(&other->type_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+  swap(device_id_, other->device_id_);
+  swap(strength_, other->strength_);
+}
+
+::google::protobuf::Metadata InterconnectLink::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fframework_2fdevice_5fattributes_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fframework_2fdevice_5fattributes_2eproto[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+void LocalLinks::InitAsDefaultInstance() {
+}
+class LocalLinks::HasBitSetters {
+ public:
+};
+
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int LocalLinks::kLinkFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+LocalLinks::LocalLinks()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.LocalLinks)
+}
+LocalLinks::LocalLinks(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena),
+  link_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.LocalLinks)
+}
+LocalLinks::LocalLinks(const LocalLinks& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL),
+      link_(from.link_) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  // @@protoc_insertion_point(copy_constructor:tensorflow.LocalLinks)
+}
+
+void LocalLinks::SharedCtor() {
+  ::google::protobuf::internal::InitSCC(
+      &scc_info_LocalLinks_tensorflow_2fcore_2fframework_2fdevice_5fattributes_2eproto.base);
+}
+
+LocalLinks::~LocalLinks() {
+  // @@protoc_insertion_point(destructor:tensorflow.LocalLinks)
+  SharedDtor();
+}
+
+void LocalLinks::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+}
+
+void LocalLinks::ArenaDtor(void* object) {
+  LocalLinks* _this = reinterpret_cast< LocalLinks* >(object);
+  (void)_this;
+}
+void LocalLinks::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void LocalLinks::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const LocalLinks& LocalLinks::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_LocalLinks_tensorflow_2fcore_2fframework_2fdevice_5fattributes_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void LocalLinks::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.LocalLinks)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  link_.Clear();
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* LocalLinks::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<LocalLinks*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // repeated .tensorflow.InterconnectLink link = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 10) goto handle_unusual;
+        do {
+          ptr = Varint::Parse32Inline(ptr, &size);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          parser_till_end = ::tensorflow::InterconnectLink::_InternalParse;
+          object = msg->add_link();
+          if (size > end - ptr) goto len_delim_till_end;
+          auto newend = ptr + size;
+          bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                         ptr, newend);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          ptr = newend;
+          if (ptr >= end) break;
+        } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 10 && (ptr += 1));
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool LocalLinks::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.LocalLinks)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // repeated .tensorflow.InterconnectLink link = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (10 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+                input, add_link()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.LocalLinks)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.LocalLinks)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void LocalLinks::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.LocalLinks)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // repeated .tensorflow.InterconnectLink link = 1;
+  for (unsigned int i = 0,
+      n = static_cast<unsigned int>(this->link_size()); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      1,
+      this->link(static_cast<int>(i)),
+      output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.LocalLinks)
+}
+
+::google::protobuf::uint8* LocalLinks::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.LocalLinks)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // repeated .tensorflow.InterconnectLink link = 1;
+  for (unsigned int i = 0,
+      n = static_cast<unsigned int>(this->link_size()); i < n; i++) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        1, this->link(static_cast<int>(i)), deterministic, target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.LocalLinks)
+  return target;
+}
+
+size_t LocalLinks::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.LocalLinks)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // repeated .tensorflow.InterconnectLink link = 1;
+  {
+    unsigned int count = static_cast<unsigned int>(this->link_size());
+    total_size += 1UL * count;
+    for (unsigned int i = 0; i < count; i++) {
+      total_size +=
+        ::google::protobuf::internal::WireFormatLite::MessageSize(
+          this->link(static_cast<int>(i)));
+    }
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void LocalLinks::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.LocalLinks)
+  GOOGLE_DCHECK_NE(&from, this);
+  const LocalLinks* source =
+      ::google::protobuf::DynamicCastToGenerated<LocalLinks>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.LocalLinks)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.LocalLinks)
+    MergeFrom(*source);
+  }
+}
+
+void LocalLinks::MergeFrom(const LocalLinks& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.LocalLinks)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  link_.MergeFrom(from.link_);
+}
+
+void LocalLinks::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.LocalLinks)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void LocalLinks::CopyFrom(const LocalLinks& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.LocalLinks)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool LocalLinks::IsInitialized() const {
+  return true;
+}
+
+void LocalLinks::Swap(LocalLinks* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    LocalLinks* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void LocalLinks::UnsafeArenaSwap(LocalLinks* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void LocalLinks::InternalSwap(LocalLinks* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  CastToBase(&link_)->InternalSwap(CastToBase(&other->link_));
+}
+
+::google::protobuf::Metadata LocalLinks::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fframework_2fdevice_5fattributes_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fframework_2fdevice_5fattributes_2eproto[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+void DeviceLocality::InitAsDefaultInstance() {
+  ::tensorflow::_DeviceLocality_default_instance_._instance.get_mutable()->links_ = const_cast< ::tensorflow::LocalLinks*>(
+      ::tensorflow::LocalLinks::internal_default_instance());
+}
+class DeviceLocality::HasBitSetters {
+ public:
+  static const ::tensorflow::LocalLinks& links(const DeviceLocality* msg);
+};
+
+const ::tensorflow::LocalLinks&
+DeviceLocality::HasBitSetters::links(const DeviceLocality* msg) {
+  return *msg->links_;
+}
+void DeviceLocality::unsafe_arena_set_allocated_links(
+    ::tensorflow::LocalLinks* links) {
+  if (GetArenaNoVirtual() == NULL) {
+    delete links_;
+  }
+  links_ = links;
+  if (links) {
+    
+  } else {
+    
+  }
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.DeviceLocality.links)
+}
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int DeviceLocality::kBusIdFieldNumber;
+const int DeviceLocality::kNumaNodeFieldNumber;
+const int DeviceLocality::kLinksFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+DeviceLocality::DeviceLocality()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.DeviceLocality)
+}
+DeviceLocality::DeviceLocality(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.DeviceLocality)
+}
+DeviceLocality::DeviceLocality(const DeviceLocality& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  if (from.has_links()) {
+    links_ = new ::tensorflow::LocalLinks(*from.links_);
+  } else {
+    links_ = NULL;
+  }
+  ::memcpy(&bus_id_, &from.bus_id_,
+    static_cast<size_t>(reinterpret_cast<char*>(&numa_node_) -
+    reinterpret_cast<char*>(&bus_id_)) + sizeof(numa_node_));
+  // @@protoc_insertion_point(copy_constructor:tensorflow.DeviceLocality)
+}
+
+void DeviceLocality::SharedCtor() {
+  ::google::protobuf::internal::InitSCC(
+      &scc_info_DeviceLocality_tensorflow_2fcore_2fframework_2fdevice_5fattributes_2eproto.base);
+  ::memset(&links_, 0, static_cast<size_t>(
+      reinterpret_cast<char*>(&numa_node_) -
+      reinterpret_cast<char*>(&links_)) + sizeof(numa_node_));
+}
+
+DeviceLocality::~DeviceLocality() {
+  // @@protoc_insertion_point(destructor:tensorflow.DeviceLocality)
+  SharedDtor();
+}
+
+void DeviceLocality::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+  if (this != internal_default_instance()) delete links_;
+}
+
+void DeviceLocality::ArenaDtor(void* object) {
+  DeviceLocality* _this = reinterpret_cast< DeviceLocality* >(object);
+  (void)_this;
+}
+void DeviceLocality::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void DeviceLocality::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const DeviceLocality& DeviceLocality::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_DeviceLocality_tensorflow_2fcore_2fframework_2fdevice_5fattributes_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void DeviceLocality::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.DeviceLocality)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  if (GetArenaNoVirtual() == NULL && links_ != NULL) {
+    delete links_;
+  }
+  links_ = NULL;
+  ::memset(&bus_id_, 0, static_cast<size_t>(
+      reinterpret_cast<char*>(&numa_node_) -
+      reinterpret_cast<char*>(&bus_id_)) + sizeof(numa_node_));
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* DeviceLocality::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<DeviceLocality*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // int32 bus_id = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 8) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::google::protobuf::int32 value = val;
+        msg->set_bus_id(value);
+        break;
+      }
+      // int32 numa_node = 2;
+      case 2: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 16) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::google::protobuf::int32 value = val;
+        msg->set_numa_node(value);
+        break;
+      }
+      // .tensorflow.LocalLinks links = 3;
+      case 3: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 26) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        parser_till_end = ::tensorflow::LocalLinks::_InternalParse;
+        object = msg->mutable_links();
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                       ptr, newend);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+        ptr = newend;
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool DeviceLocality::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.DeviceLocality)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // int32 bus_id = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (8 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
+                 input, &bus_id_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // int32 numa_node = 2;
+      case 2: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (16 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
+                 input, &numa_node_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // .tensorflow.LocalLinks links = 3;
+      case 3: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (26 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+               input, mutable_links()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.DeviceLocality)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.DeviceLocality)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void DeviceLocality::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.DeviceLocality)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // int32 bus_id = 1;
+  if (this->bus_id() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt32(1, this->bus_id(), output);
+  }
+
+  // int32 numa_node = 2;
+  if (this->numa_node() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt32(2, this->numa_node(), output);
+  }
+
+  // .tensorflow.LocalLinks links = 3;
+  if (this->has_links()) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      3, HasBitSetters::links(this), output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.DeviceLocality)
+}
+
+::google::protobuf::uint8* DeviceLocality::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.DeviceLocality)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // int32 bus_id = 1;
+  if (this->bus_id() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt32ToArray(1, this->bus_id(), target);
+  }
+
+  // int32 numa_node = 2;
+  if (this->numa_node() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt32ToArray(2, this->numa_node(), target);
+  }
+
+  // .tensorflow.LocalLinks links = 3;
+  if (this->has_links()) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        3, HasBitSetters::links(this), deterministic, target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.DeviceLocality)
+  return target;
+}
+
+size_t DeviceLocality::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.DeviceLocality)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // .tensorflow.LocalLinks links = 3;
+  if (this->has_links()) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::MessageSize(
+        *links_);
+  }
+
+  // int32 bus_id = 1;
+  if (this->bus_id() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::Int32Size(
+        this->bus_id());
+  }
+
+  // int32 numa_node = 2;
+  if (this->numa_node() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::Int32Size(
+        this->numa_node());
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void DeviceLocality::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.DeviceLocality)
+  GOOGLE_DCHECK_NE(&from, this);
+  const DeviceLocality* source =
+      ::google::protobuf::DynamicCastToGenerated<DeviceLocality>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.DeviceLocality)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.DeviceLocality)
+    MergeFrom(*source);
+  }
+}
+
+void DeviceLocality::MergeFrom(const DeviceLocality& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.DeviceLocality)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  if (from.has_links()) {
+    mutable_links()->::tensorflow::LocalLinks::MergeFrom(from.links());
+  }
+  if (from.bus_id() != 0) {
+    set_bus_id(from.bus_id());
+  }
+  if (from.numa_node() != 0) {
+    set_numa_node(from.numa_node());
+  }
+}
+
+void DeviceLocality::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.DeviceLocality)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void DeviceLocality::CopyFrom(const DeviceLocality& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.DeviceLocality)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool DeviceLocality::IsInitialized() const {
+  return true;
+}
+
+void DeviceLocality::Swap(DeviceLocality* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    DeviceLocality* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void DeviceLocality::UnsafeArenaSwap(DeviceLocality* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void DeviceLocality::InternalSwap(DeviceLocality* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  swap(links_, other->links_);
+  swap(bus_id_, other->bus_id_);
+  swap(numa_node_, other->numa_node_);
+}
+
+::google::protobuf::Metadata DeviceLocality::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fframework_2fdevice_5fattributes_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fframework_2fdevice_5fattributes_2eproto[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+void DeviceAttributes::InitAsDefaultInstance() {
+  ::tensorflow::_DeviceAttributes_default_instance_._instance.get_mutable()->locality_ = const_cast< ::tensorflow::DeviceLocality*>(
+      ::tensorflow::DeviceLocality::internal_default_instance());
+}
+class DeviceAttributes::HasBitSetters {
+ public:
+  static const ::tensorflow::DeviceLocality& locality(const DeviceAttributes* msg);
+};
+
+const ::tensorflow::DeviceLocality&
+DeviceAttributes::HasBitSetters::locality(const DeviceAttributes* msg) {
+  return *msg->locality_;
+}
+void DeviceAttributes::unsafe_arena_set_allocated_locality(
+    ::tensorflow::DeviceLocality* locality) {
+  if (GetArenaNoVirtual() == NULL) {
+    delete locality_;
+  }
+  locality_ = locality;
+  if (locality) {
+    
+  } else {
+    
+  }
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.DeviceAttributes.locality)
+}
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int DeviceAttributes::kNameFieldNumber;
+const int DeviceAttributes::kDeviceTypeFieldNumber;
+const int DeviceAttributes::kMemoryLimitFieldNumber;
+const int DeviceAttributes::kLocalityFieldNumber;
+const int DeviceAttributes::kIncarnationFieldNumber;
+const int DeviceAttributes::kPhysicalDeviceDescFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+DeviceAttributes::DeviceAttributes()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.DeviceAttributes)
+}
+DeviceAttributes::DeviceAttributes(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.DeviceAttributes)
+}
+DeviceAttributes::DeviceAttributes(const DeviceAttributes& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.name().size() > 0) {
+    name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.name(),
+      GetArenaNoVirtual());
+  }
+  device_type_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.device_type().size() > 0) {
+    device_type_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.device_type(),
+      GetArenaNoVirtual());
+  }
+  physical_device_desc_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.physical_device_desc().size() > 0) {
+    physical_device_desc_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.physical_device_desc(),
+      GetArenaNoVirtual());
+  }
+  if (from.has_locality()) {
+    locality_ = new ::tensorflow::DeviceLocality(*from.locality_);
+  } else {
+    locality_ = NULL;
+  }
+  ::memcpy(&memory_limit_, &from.memory_limit_,
+    static_cast<size_t>(reinterpret_cast<char*>(&incarnation_) -
+    reinterpret_cast<char*>(&memory_limit_)) + sizeof(incarnation_));
+  // @@protoc_insertion_point(copy_constructor:tensorflow.DeviceAttributes)
+}
+
+void DeviceAttributes::SharedCtor() {
+  ::google::protobuf::internal::InitSCC(
+      &scc_info_DeviceAttributes_tensorflow_2fcore_2fframework_2fdevice_5fattributes_2eproto.base);
+  name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  device_type_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  physical_device_desc_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  ::memset(&locality_, 0, static_cast<size_t>(
+      reinterpret_cast<char*>(&incarnation_) -
+      reinterpret_cast<char*>(&locality_)) + sizeof(incarnation_));
+}
+
+DeviceAttributes::~DeviceAttributes() {
+  // @@protoc_insertion_point(destructor:tensorflow.DeviceAttributes)
+  SharedDtor();
+}
+
+void DeviceAttributes::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+  name_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  device_type_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  physical_device_desc_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (this != internal_default_instance()) delete locality_;
+}
+
+void DeviceAttributes::ArenaDtor(void* object) {
+  DeviceAttributes* _this = reinterpret_cast< DeviceAttributes* >(object);
+  (void)_this;
+}
+void DeviceAttributes::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void DeviceAttributes::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const DeviceAttributes& DeviceAttributes::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_DeviceAttributes_tensorflow_2fcore_2fframework_2fdevice_5fattributes_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void DeviceAttributes::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.DeviceAttributes)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  name_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+  device_type_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+  physical_device_desc_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+  if (GetArenaNoVirtual() == NULL && locality_ != NULL) {
+    delete locality_;
+  }
+  locality_ = NULL;
+  ::memset(&memory_limit_, 0, static_cast<size_t>(
+      reinterpret_cast<char*>(&incarnation_) -
+      reinterpret_cast<char*>(&memory_limit_)) + sizeof(incarnation_));
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* DeviceAttributes::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<DeviceAttributes*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // string name = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 10) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("tensorflow.DeviceAttributes.name");
+        parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+        ::std::string* str = msg->mutable_name();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+        break;
+      }
+      // string device_type = 2;
+      case 2: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 18) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("tensorflow.DeviceAttributes.device_type");
+        parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+        ::std::string* str = msg->mutable_device_type();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+        break;
+      }
+      // int64 memory_limit = 4;
+      case 4: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 32) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::google::protobuf::int64 value = val;
+        msg->set_memory_limit(value);
+        break;
+      }
+      // .tensorflow.DeviceLocality locality = 5;
+      case 5: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 42) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        parser_till_end = ::tensorflow::DeviceLocality::_InternalParse;
+        object = msg->mutable_locality();
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                       ptr, newend);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+        ptr = newend;
+        break;
+      }
+      // fixed64 incarnation = 6;
+      case 6: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 49) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ::std::memcpy(&val, ptr, 8);
+        ptr += 8;
+        msg->set_incarnation(val);
+        break;
+      }
+      // string physical_device_desc = 7;
+      case 7: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 58) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("tensorflow.DeviceAttributes.physical_device_desc");
+        parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+        ::std::string* str = msg->mutable_physical_device_desc();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool DeviceAttributes::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.DeviceAttributes)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // string name = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (10 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_name()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->name().data(), static_cast<int>(this->name().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.DeviceAttributes.name"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // string device_type = 2;
+      case 2: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (18 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_device_type()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->device_type().data(), static_cast<int>(this->device_type().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.DeviceAttributes.device_type"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // int64 memory_limit = 4;
+      case 4: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (32 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>(
+                 input, &memory_limit_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // .tensorflow.DeviceLocality locality = 5;
+      case 5: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (42 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+               input, mutable_locality()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // fixed64 incarnation = 6;
+      case 6: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (49 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_FIXED64>(
+                 input, &incarnation_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // string physical_device_desc = 7;
+      case 7: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (58 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_physical_device_desc()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->physical_device_desc().data(), static_cast<int>(this->physical_device_desc().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.DeviceAttributes.physical_device_desc"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.DeviceAttributes)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.DeviceAttributes)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void DeviceAttributes::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.DeviceAttributes)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // string name = 1;
+  if (this->name().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->name().data(), static_cast<int>(this->name().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.DeviceAttributes.name");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      1, this->name(), output);
+  }
+
+  // string device_type = 2;
+  if (this->device_type().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->device_type().data(), static_cast<int>(this->device_type().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.DeviceAttributes.device_type");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      2, this->device_type(), output);
+  }
+
+  // int64 memory_limit = 4;
+  if (this->memory_limit() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt64(4, this->memory_limit(), output);
+  }
+
+  // .tensorflow.DeviceLocality locality = 5;
+  if (this->has_locality()) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      5, HasBitSetters::locality(this), output);
+  }
+
+  // fixed64 incarnation = 6;
+  if (this->incarnation() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteFixed64(6, this->incarnation(), output);
+  }
+
+  // string physical_device_desc = 7;
+  if (this->physical_device_desc().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->physical_device_desc().data(), static_cast<int>(this->physical_device_desc().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.DeviceAttributes.physical_device_desc");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      7, this->physical_device_desc(), output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.DeviceAttributes)
+}
+
+::google::protobuf::uint8* DeviceAttributes::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.DeviceAttributes)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // string name = 1;
+  if (this->name().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->name().data(), static_cast<int>(this->name().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.DeviceAttributes.name");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        1, this->name(), target);
+  }
+
+  // string device_type = 2;
+  if (this->device_type().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->device_type().data(), static_cast<int>(this->device_type().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.DeviceAttributes.device_type");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        2, this->device_type(), target);
+  }
+
+  // int64 memory_limit = 4;
+  if (this->memory_limit() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt64ToArray(4, this->memory_limit(), target);
+  }
+
+  // .tensorflow.DeviceLocality locality = 5;
+  if (this->has_locality()) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        5, HasBitSetters::locality(this), deterministic, target);
+  }
+
+  // fixed64 incarnation = 6;
+  if (this->incarnation() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteFixed64ToArray(6, this->incarnation(), target);
+  }
+
+  // string physical_device_desc = 7;
+  if (this->physical_device_desc().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->physical_device_desc().data(), static_cast<int>(this->physical_device_desc().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.DeviceAttributes.physical_device_desc");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        7, this->physical_device_desc(), target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.DeviceAttributes)
+  return target;
+}
+
+size_t DeviceAttributes::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.DeviceAttributes)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // string name = 1;
+  if (this->name().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->name());
+  }
+
+  // string device_type = 2;
+  if (this->device_type().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->device_type());
+  }
+
+  // string physical_device_desc = 7;
+  if (this->physical_device_desc().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->physical_device_desc());
+  }
+
+  // .tensorflow.DeviceLocality locality = 5;
+  if (this->has_locality()) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::MessageSize(
+        *locality_);
+  }
+
+  // int64 memory_limit = 4;
+  if (this->memory_limit() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::Int64Size(
+        this->memory_limit());
+  }
+
+  // fixed64 incarnation = 6;
+  if (this->incarnation() != 0) {
+    total_size += 1 + 8;
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void DeviceAttributes::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.DeviceAttributes)
+  GOOGLE_DCHECK_NE(&from, this);
+  const DeviceAttributes* source =
+      ::google::protobuf::DynamicCastToGenerated<DeviceAttributes>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.DeviceAttributes)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.DeviceAttributes)
+    MergeFrom(*source);
+  }
+}
+
+void DeviceAttributes::MergeFrom(const DeviceAttributes& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.DeviceAttributes)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  if (from.name().size() > 0) {
+    set_name(from.name());
+  }
+  if (from.device_type().size() > 0) {
+    set_device_type(from.device_type());
+  }
+  if (from.physical_device_desc().size() > 0) {
+    set_physical_device_desc(from.physical_device_desc());
+  }
+  if (from.has_locality()) {
+    mutable_locality()->::tensorflow::DeviceLocality::MergeFrom(from.locality());
+  }
+  if (from.memory_limit() != 0) {
+    set_memory_limit(from.memory_limit());
+  }
+  if (from.incarnation() != 0) {
+    set_incarnation(from.incarnation());
+  }
+}
+
+void DeviceAttributes::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.DeviceAttributes)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void DeviceAttributes::CopyFrom(const DeviceAttributes& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.DeviceAttributes)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool DeviceAttributes::IsInitialized() const {
+  return true;
+}
+
+void DeviceAttributes::Swap(DeviceAttributes* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    DeviceAttributes* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void DeviceAttributes::UnsafeArenaSwap(DeviceAttributes* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void DeviceAttributes::InternalSwap(DeviceAttributes* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  name_.Swap(&other->name_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+  device_type_.Swap(&other->device_type_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+  physical_device_desc_.Swap(&other->physical_device_desc_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+  swap(locality_, other->locality_);
+  swap(memory_limit_, other->memory_limit_);
+  swap(incarnation_, other->incarnation_);
+}
+
+::google::protobuf::Metadata DeviceAttributes::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fframework_2fdevice_5fattributes_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fframework_2fdevice_5fattributes_2eproto[kIndexInFileMessages];
+}
+
+
+// @@protoc_insertion_point(namespace_scope)
+}  // namespace tensorflow
+namespace google {
+namespace protobuf {
+template<> PROTOBUF_NOINLINE ::tensorflow::InterconnectLink* Arena::CreateMaybeMessage< ::tensorflow::InterconnectLink >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::InterconnectLink >(arena);
+}
+template<> PROTOBUF_NOINLINE ::tensorflow::LocalLinks* Arena::CreateMaybeMessage< ::tensorflow::LocalLinks >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::LocalLinks >(arena);
+}
+template<> PROTOBUF_NOINLINE ::tensorflow::DeviceLocality* Arena::CreateMaybeMessage< ::tensorflow::DeviceLocality >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::DeviceLocality >(arena);
+}
+template<> PROTOBUF_NOINLINE ::tensorflow::DeviceAttributes* Arena::CreateMaybeMessage< ::tensorflow::DeviceAttributes >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::DeviceAttributes >(arena);
+}
+}  // namespace protobuf
+}  // namespace google
+
+// @@protoc_insertion_point(global_scope)
+#include <google/protobuf/port_undef.inc>
diff --git a/tensorflow/core/framework/device_attributes.pb.h b/tensorflow/core/framework/device_attributes.pb.h
new file mode 100644 (file)
index 0000000..444a7b4
--- /dev/null
@@ -0,0 +1,1306 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: tensorflow/core/framework/device_attributes.proto
+
+#ifndef PROTOBUF_INCLUDED_tensorflow_2fcore_2fframework_2fdevice_5fattributes_2eproto
+#define PROTOBUF_INCLUDED_tensorflow_2fcore_2fframework_2fdevice_5fattributes_2eproto
+
+#include <limits>
+#include <string>
+
+#include <google/protobuf/port_def.inc>
+#if PROTOBUF_VERSION < 3006001
+#error This file was generated by a newer version of protoc which is
+#error incompatible with your Protocol Buffer headers. Please update
+#error your headers.
+#endif
+#if 3006001 < PROTOBUF_MIN_PROTOC_VERSION
+#error This file was generated by an older version of protoc which is
+#error incompatible with your Protocol Buffer headers. Please
+#error regenerate this file with a newer version of protoc.
+#endif
+
+#include <google/protobuf/port_undef.inc>
+#include <google/protobuf/io/coded_stream.h>
+#include <google/protobuf/arena.h>
+#include <google/protobuf/arenastring.h>
+#include <google/protobuf/generated_message_table_driven.h>
+#include <google/protobuf/generated_message_util.h>
+#include <google/protobuf/inlined_string_field.h>
+#include <google/protobuf/metadata.h>
+#include <google/protobuf/message.h>
+#include <google/protobuf/repeated_field.h>  // IWYU pragma: export
+#include <google/protobuf/extension_set.h>  // IWYU pragma: export
+#include <google/protobuf/unknown_field_set.h>
+// @@protoc_insertion_point(includes)
+#include <google/protobuf/port_def.inc>
+#define PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fframework_2fdevice_5fattributes_2eproto
+
+// Internal implementation detail -- do not use these members.
+struct TableStruct_tensorflow_2fcore_2fframework_2fdevice_5fattributes_2eproto {
+  static const ::google::protobuf::internal::ParseTableField entries[]
+    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
+  static const ::google::protobuf::internal::AuxillaryParseTableField aux[]
+    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
+  static const ::google::protobuf::internal::ParseTable schema[4]
+    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
+  static const ::google::protobuf::internal::FieldMetadata field_metadata[];
+  static const ::google::protobuf::internal::SerializationTable serialization_table[];
+  static const ::google::protobuf::uint32 offsets[];
+};
+void AddDescriptors_tensorflow_2fcore_2fframework_2fdevice_5fattributes_2eproto();
+namespace tensorflow {
+class DeviceAttributes;
+class DeviceAttributesDefaultTypeInternal;
+extern DeviceAttributesDefaultTypeInternal _DeviceAttributes_default_instance_;
+class DeviceLocality;
+class DeviceLocalityDefaultTypeInternal;
+extern DeviceLocalityDefaultTypeInternal _DeviceLocality_default_instance_;
+class InterconnectLink;
+class InterconnectLinkDefaultTypeInternal;
+extern InterconnectLinkDefaultTypeInternal _InterconnectLink_default_instance_;
+class LocalLinks;
+class LocalLinksDefaultTypeInternal;
+extern LocalLinksDefaultTypeInternal _LocalLinks_default_instance_;
+}  // namespace tensorflow
+namespace google {
+namespace protobuf {
+template<> ::tensorflow::DeviceAttributes* Arena::CreateMaybeMessage<::tensorflow::DeviceAttributes>(Arena*);
+template<> ::tensorflow::DeviceLocality* Arena::CreateMaybeMessage<::tensorflow::DeviceLocality>(Arena*);
+template<> ::tensorflow::InterconnectLink* Arena::CreateMaybeMessage<::tensorflow::InterconnectLink>(Arena*);
+template<> ::tensorflow::LocalLinks* Arena::CreateMaybeMessage<::tensorflow::LocalLinks>(Arena*);
+}  // namespace protobuf
+}  // namespace google
+namespace tensorflow {
+
+// ===================================================================
+
+class InterconnectLink : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.InterconnectLink) */ {
+ public:
+  InterconnectLink();
+  virtual ~InterconnectLink();
+
+  InterconnectLink(const InterconnectLink& from);
+
+  inline InterconnectLink& operator=(const InterconnectLink& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  InterconnectLink(InterconnectLink&& from) noexcept
+    : InterconnectLink() {
+    *this = ::std::move(from);
+  }
+
+  inline InterconnectLink& operator=(InterconnectLink&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const InterconnectLink& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const InterconnectLink* internal_default_instance() {
+    return reinterpret_cast<const InterconnectLink*>(
+               &_InterconnectLink_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    0;
+
+  void UnsafeArenaSwap(InterconnectLink* other);
+  void Swap(InterconnectLink* other);
+  friend void swap(InterconnectLink& a, InterconnectLink& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline InterconnectLink* New() const final {
+    return CreateMaybeMessage<InterconnectLink>(NULL);
+  }
+
+  InterconnectLink* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<InterconnectLink>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const InterconnectLink& from);
+  void MergeFrom(const InterconnectLink& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(InterconnectLink* other);
+  protected:
+  explicit InterconnectLink(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // string type = 2;
+  void clear_type();
+  static const int kTypeFieldNumber = 2;
+  const ::std::string& type() const;
+  void set_type(const ::std::string& value);
+  #if LANG_CXX11
+  void set_type(::std::string&& value);
+  #endif
+  void set_type(const char* value);
+  void set_type(const char* value, size_t size);
+  ::std::string* mutable_type();
+  ::std::string* release_type();
+  void set_allocated_type(::std::string* type);
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  ::std::string* unsafe_arena_release_type();
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  void unsafe_arena_set_allocated_type(
+      ::std::string* type);
+
+  // int32 device_id = 1;
+  void clear_device_id();
+  static const int kDeviceIdFieldNumber = 1;
+  ::google::protobuf::int32 device_id() const;
+  void set_device_id(::google::protobuf::int32 value);
+
+  // int32 strength = 3;
+  void clear_strength();
+  static const int kStrengthFieldNumber = 3;
+  ::google::protobuf::int32 strength() const;
+  void set_strength(::google::protobuf::int32 value);
+
+  // @@protoc_insertion_point(class_scope:tensorflow.InterconnectLink)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  ::google::protobuf::internal::ArenaStringPtr type_;
+  ::google::protobuf::int32 device_id_;
+  ::google::protobuf::int32 strength_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fframework_2fdevice_5fattributes_2eproto;
+};
+// -------------------------------------------------------------------
+
+class LocalLinks : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.LocalLinks) */ {
+ public:
+  LocalLinks();
+  virtual ~LocalLinks();
+
+  LocalLinks(const LocalLinks& from);
+
+  inline LocalLinks& operator=(const LocalLinks& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  LocalLinks(LocalLinks&& from) noexcept
+    : LocalLinks() {
+    *this = ::std::move(from);
+  }
+
+  inline LocalLinks& operator=(LocalLinks&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const LocalLinks& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const LocalLinks* internal_default_instance() {
+    return reinterpret_cast<const LocalLinks*>(
+               &_LocalLinks_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    1;
+
+  void UnsafeArenaSwap(LocalLinks* other);
+  void Swap(LocalLinks* other);
+  friend void swap(LocalLinks& a, LocalLinks& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline LocalLinks* New() const final {
+    return CreateMaybeMessage<LocalLinks>(NULL);
+  }
+
+  LocalLinks* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<LocalLinks>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const LocalLinks& from);
+  void MergeFrom(const LocalLinks& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(LocalLinks* other);
+  protected:
+  explicit LocalLinks(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // repeated .tensorflow.InterconnectLink link = 1;
+  int link_size() const;
+  void clear_link();
+  static const int kLinkFieldNumber = 1;
+  ::tensorflow::InterconnectLink* mutable_link(int index);
+  ::google::protobuf::RepeatedPtrField< ::tensorflow::InterconnectLink >*
+      mutable_link();
+  const ::tensorflow::InterconnectLink& link(int index) const;
+  ::tensorflow::InterconnectLink* add_link();
+  const ::google::protobuf::RepeatedPtrField< ::tensorflow::InterconnectLink >&
+      link() const;
+
+  // @@protoc_insertion_point(class_scope:tensorflow.LocalLinks)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  ::google::protobuf::RepeatedPtrField< ::tensorflow::InterconnectLink > link_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fframework_2fdevice_5fattributes_2eproto;
+};
+// -------------------------------------------------------------------
+
+class DeviceLocality : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.DeviceLocality) */ {
+ public:
+  DeviceLocality();
+  virtual ~DeviceLocality();
+
+  DeviceLocality(const DeviceLocality& from);
+
+  inline DeviceLocality& operator=(const DeviceLocality& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  DeviceLocality(DeviceLocality&& from) noexcept
+    : DeviceLocality() {
+    *this = ::std::move(from);
+  }
+
+  inline DeviceLocality& operator=(DeviceLocality&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const DeviceLocality& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const DeviceLocality* internal_default_instance() {
+    return reinterpret_cast<const DeviceLocality*>(
+               &_DeviceLocality_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    2;
+
+  void UnsafeArenaSwap(DeviceLocality* other);
+  void Swap(DeviceLocality* other);
+  friend void swap(DeviceLocality& a, DeviceLocality& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline DeviceLocality* New() const final {
+    return CreateMaybeMessage<DeviceLocality>(NULL);
+  }
+
+  DeviceLocality* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<DeviceLocality>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const DeviceLocality& from);
+  void MergeFrom(const DeviceLocality& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(DeviceLocality* other);
+  protected:
+  explicit DeviceLocality(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // .tensorflow.LocalLinks links = 3;
+  bool has_links() const;
+  void clear_links();
+  static const int kLinksFieldNumber = 3;
+  const ::tensorflow::LocalLinks& links() const;
+  ::tensorflow::LocalLinks* release_links();
+  ::tensorflow::LocalLinks* mutable_links();
+  void set_allocated_links(::tensorflow::LocalLinks* links);
+  void unsafe_arena_set_allocated_links(
+      ::tensorflow::LocalLinks* links);
+  ::tensorflow::LocalLinks* unsafe_arena_release_links();
+
+  // int32 bus_id = 1;
+  void clear_bus_id();
+  static const int kBusIdFieldNumber = 1;
+  ::google::protobuf::int32 bus_id() const;
+  void set_bus_id(::google::protobuf::int32 value);
+
+  // int32 numa_node = 2;
+  void clear_numa_node();
+  static const int kNumaNodeFieldNumber = 2;
+  ::google::protobuf::int32 numa_node() const;
+  void set_numa_node(::google::protobuf::int32 value);
+
+  // @@protoc_insertion_point(class_scope:tensorflow.DeviceLocality)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  ::tensorflow::LocalLinks* links_;
+  ::google::protobuf::int32 bus_id_;
+  ::google::protobuf::int32 numa_node_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fframework_2fdevice_5fattributes_2eproto;
+};
+// -------------------------------------------------------------------
+
+class DeviceAttributes : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.DeviceAttributes) */ {
+ public:
+  DeviceAttributes();
+  virtual ~DeviceAttributes();
+
+  DeviceAttributes(const DeviceAttributes& from);
+
+  inline DeviceAttributes& operator=(const DeviceAttributes& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  DeviceAttributes(DeviceAttributes&& from) noexcept
+    : DeviceAttributes() {
+    *this = ::std::move(from);
+  }
+
+  inline DeviceAttributes& operator=(DeviceAttributes&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const DeviceAttributes& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const DeviceAttributes* internal_default_instance() {
+    return reinterpret_cast<const DeviceAttributes*>(
+               &_DeviceAttributes_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    3;
+
+  void UnsafeArenaSwap(DeviceAttributes* other);
+  void Swap(DeviceAttributes* other);
+  friend void swap(DeviceAttributes& a, DeviceAttributes& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline DeviceAttributes* New() const final {
+    return CreateMaybeMessage<DeviceAttributes>(NULL);
+  }
+
+  DeviceAttributes* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<DeviceAttributes>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const DeviceAttributes& from);
+  void MergeFrom(const DeviceAttributes& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(DeviceAttributes* other);
+  protected:
+  explicit DeviceAttributes(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // string name = 1;
+  void clear_name();
+  static const int kNameFieldNumber = 1;
+  const ::std::string& name() const;
+  void set_name(const ::std::string& value);
+  #if LANG_CXX11
+  void set_name(::std::string&& value);
+  #endif
+  void set_name(const char* value);
+  void set_name(const char* value, size_t size);
+  ::std::string* mutable_name();
+  ::std::string* release_name();
+  void set_allocated_name(::std::string* name);
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  ::std::string* unsafe_arena_release_name();
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  void unsafe_arena_set_allocated_name(
+      ::std::string* name);
+
+  // string device_type = 2;
+  void clear_device_type();
+  static const int kDeviceTypeFieldNumber = 2;
+  const ::std::string& device_type() const;
+  void set_device_type(const ::std::string& value);
+  #if LANG_CXX11
+  void set_device_type(::std::string&& value);
+  #endif
+  void set_device_type(const char* value);
+  void set_device_type(const char* value, size_t size);
+  ::std::string* mutable_device_type();
+  ::std::string* release_device_type();
+  void set_allocated_device_type(::std::string* device_type);
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  ::std::string* unsafe_arena_release_device_type();
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  void unsafe_arena_set_allocated_device_type(
+      ::std::string* device_type);
+
+  // string physical_device_desc = 7;
+  void clear_physical_device_desc();
+  static const int kPhysicalDeviceDescFieldNumber = 7;
+  const ::std::string& physical_device_desc() const;
+  void set_physical_device_desc(const ::std::string& value);
+  #if LANG_CXX11
+  void set_physical_device_desc(::std::string&& value);
+  #endif
+  void set_physical_device_desc(const char* value);
+  void set_physical_device_desc(const char* value, size_t size);
+  ::std::string* mutable_physical_device_desc();
+  ::std::string* release_physical_device_desc();
+  void set_allocated_physical_device_desc(::std::string* physical_device_desc);
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  ::std::string* unsafe_arena_release_physical_device_desc();
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  void unsafe_arena_set_allocated_physical_device_desc(
+      ::std::string* physical_device_desc);
+
+  // .tensorflow.DeviceLocality locality = 5;
+  bool has_locality() const;
+  void clear_locality();
+  static const int kLocalityFieldNumber = 5;
+  const ::tensorflow::DeviceLocality& locality() const;
+  ::tensorflow::DeviceLocality* release_locality();
+  ::tensorflow::DeviceLocality* mutable_locality();
+  void set_allocated_locality(::tensorflow::DeviceLocality* locality);
+  void unsafe_arena_set_allocated_locality(
+      ::tensorflow::DeviceLocality* locality);
+  ::tensorflow::DeviceLocality* unsafe_arena_release_locality();
+
+  // int64 memory_limit = 4;
+  void clear_memory_limit();
+  static const int kMemoryLimitFieldNumber = 4;
+  ::google::protobuf::int64 memory_limit() const;
+  void set_memory_limit(::google::protobuf::int64 value);
+
+  // fixed64 incarnation = 6;
+  void clear_incarnation();
+  static const int kIncarnationFieldNumber = 6;
+  ::google::protobuf::uint64 incarnation() const;
+  void set_incarnation(::google::protobuf::uint64 value);
+
+  // @@protoc_insertion_point(class_scope:tensorflow.DeviceAttributes)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  ::google::protobuf::internal::ArenaStringPtr name_;
+  ::google::protobuf::internal::ArenaStringPtr device_type_;
+  ::google::protobuf::internal::ArenaStringPtr physical_device_desc_;
+  ::tensorflow::DeviceLocality* locality_;
+  ::google::protobuf::int64 memory_limit_;
+  ::google::protobuf::uint64 incarnation_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fframework_2fdevice_5fattributes_2eproto;
+};
+// ===================================================================
+
+
+// ===================================================================
+
+#ifdef __GNUC__
+  #pragma GCC diagnostic push
+  #pragma GCC diagnostic ignored "-Wstrict-aliasing"
+#endif  // __GNUC__
+// InterconnectLink
+
+// int32 device_id = 1;
+inline void InterconnectLink::clear_device_id() {
+  device_id_ = 0;
+}
+inline ::google::protobuf::int32 InterconnectLink::device_id() const {
+  // @@protoc_insertion_point(field_get:tensorflow.InterconnectLink.device_id)
+  return device_id_;
+}
+inline void InterconnectLink::set_device_id(::google::protobuf::int32 value) {
+  
+  device_id_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.InterconnectLink.device_id)
+}
+
+// string type = 2;
+inline void InterconnectLink::clear_type() {
+  type_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline const ::std::string& InterconnectLink::type() const {
+  // @@protoc_insertion_point(field_get:tensorflow.InterconnectLink.type)
+  return type_.Get();
+}
+inline void InterconnectLink::set_type(const ::std::string& value) {
+  
+  type_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set:tensorflow.InterconnectLink.type)
+}
+#if LANG_CXX11
+inline void InterconnectLink::set_type(::std::string&& value) {
+  
+  type_.Set(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.InterconnectLink.type)
+}
+#endif
+inline void InterconnectLink::set_type(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  type_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
+              GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_char:tensorflow.InterconnectLink.type)
+}
+inline void InterconnectLink::set_type(const char* value,
+    size_t size) {
+  
+  type_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
+      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.InterconnectLink.type)
+}
+inline ::std::string* InterconnectLink::mutable_type() {
+  
+  // @@protoc_insertion_point(field_mutable:tensorflow.InterconnectLink.type)
+  return type_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline ::std::string* InterconnectLink::release_type() {
+  // @@protoc_insertion_point(field_release:tensorflow.InterconnectLink.type)
+  
+  return type_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline void InterconnectLink::set_allocated_type(::std::string* type) {
+  if (type != NULL) {
+    
+  } else {
+    
+  }
+  type_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), type,
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.InterconnectLink.type)
+}
+inline ::std::string* InterconnectLink::unsafe_arena_release_type() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.InterconnectLink.type)
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  
+  return type_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      GetArenaNoVirtual());
+}
+inline void InterconnectLink::unsafe_arena_set_allocated_type(
+    ::std::string* type) {
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (type != NULL) {
+    
+  } else {
+    
+  }
+  type_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      type, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.InterconnectLink.type)
+}
+
+// int32 strength = 3;
+inline void InterconnectLink::clear_strength() {
+  strength_ = 0;
+}
+inline ::google::protobuf::int32 InterconnectLink::strength() const {
+  // @@protoc_insertion_point(field_get:tensorflow.InterconnectLink.strength)
+  return strength_;
+}
+inline void InterconnectLink::set_strength(::google::protobuf::int32 value) {
+  
+  strength_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.InterconnectLink.strength)
+}
+
+// -------------------------------------------------------------------
+
+// LocalLinks
+
+// repeated .tensorflow.InterconnectLink link = 1;
+inline int LocalLinks::link_size() const {
+  return link_.size();
+}
+inline void LocalLinks::clear_link() {
+  link_.Clear();
+}
+inline ::tensorflow::InterconnectLink* LocalLinks::mutable_link(int index) {
+  // @@protoc_insertion_point(field_mutable:tensorflow.LocalLinks.link)
+  return link_.Mutable(index);
+}
+inline ::google::protobuf::RepeatedPtrField< ::tensorflow::InterconnectLink >*
+LocalLinks::mutable_link() {
+  // @@protoc_insertion_point(field_mutable_list:tensorflow.LocalLinks.link)
+  return &link_;
+}
+inline const ::tensorflow::InterconnectLink& LocalLinks::link(int index) const {
+  // @@protoc_insertion_point(field_get:tensorflow.LocalLinks.link)
+  return link_.Get(index);
+}
+inline ::tensorflow::InterconnectLink* LocalLinks::add_link() {
+  // @@protoc_insertion_point(field_add:tensorflow.LocalLinks.link)
+  return link_.Add();
+}
+inline const ::google::protobuf::RepeatedPtrField< ::tensorflow::InterconnectLink >&
+LocalLinks::link() const {
+  // @@protoc_insertion_point(field_list:tensorflow.LocalLinks.link)
+  return link_;
+}
+
+// -------------------------------------------------------------------
+
+// DeviceLocality
+
+// int32 bus_id = 1;
+inline void DeviceLocality::clear_bus_id() {
+  bus_id_ = 0;
+}
+inline ::google::protobuf::int32 DeviceLocality::bus_id() const {
+  // @@protoc_insertion_point(field_get:tensorflow.DeviceLocality.bus_id)
+  return bus_id_;
+}
+inline void DeviceLocality::set_bus_id(::google::protobuf::int32 value) {
+  
+  bus_id_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.DeviceLocality.bus_id)
+}
+
+// int32 numa_node = 2;
+inline void DeviceLocality::clear_numa_node() {
+  numa_node_ = 0;
+}
+inline ::google::protobuf::int32 DeviceLocality::numa_node() const {
+  // @@protoc_insertion_point(field_get:tensorflow.DeviceLocality.numa_node)
+  return numa_node_;
+}
+inline void DeviceLocality::set_numa_node(::google::protobuf::int32 value) {
+  
+  numa_node_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.DeviceLocality.numa_node)
+}
+
+// .tensorflow.LocalLinks links = 3;
+inline bool DeviceLocality::has_links() const {
+  return this != internal_default_instance() && links_ != NULL;
+}
+inline void DeviceLocality::clear_links() {
+  if (GetArenaNoVirtual() == NULL && links_ != NULL) {
+    delete links_;
+  }
+  links_ = NULL;
+}
+inline const ::tensorflow::LocalLinks& DeviceLocality::links() const {
+  const ::tensorflow::LocalLinks* p = links_;
+  // @@protoc_insertion_point(field_get:tensorflow.DeviceLocality.links)
+  return p != NULL ? *p : *reinterpret_cast<const ::tensorflow::LocalLinks*>(
+      &::tensorflow::_LocalLinks_default_instance_);
+}
+inline ::tensorflow::LocalLinks* DeviceLocality::release_links() {
+  // @@protoc_insertion_point(field_release:tensorflow.DeviceLocality.links)
+  
+  ::tensorflow::LocalLinks* temp = links_;
+  if (GetArenaNoVirtual() != NULL) {
+    temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
+  }
+  links_ = NULL;
+  return temp;
+}
+inline ::tensorflow::LocalLinks* DeviceLocality::unsafe_arena_release_links() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.DeviceLocality.links)
+  
+  ::tensorflow::LocalLinks* temp = links_;
+  links_ = NULL;
+  return temp;
+}
+inline ::tensorflow::LocalLinks* DeviceLocality::mutable_links() {
+  
+  if (links_ == NULL) {
+    auto* p = CreateMaybeMessage<::tensorflow::LocalLinks>(GetArenaNoVirtual());
+    links_ = p;
+  }
+  // @@protoc_insertion_point(field_mutable:tensorflow.DeviceLocality.links)
+  return links_;
+}
+inline void DeviceLocality::set_allocated_links(::tensorflow::LocalLinks* links) {
+  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
+  if (message_arena == NULL) {
+    delete links_;
+  }
+  if (links) {
+    ::google::protobuf::Arena* submessage_arena =
+      ::google::protobuf::Arena::GetArena(links);
+    if (message_arena != submessage_arena) {
+      links = ::google::protobuf::internal::GetOwnedMessage(
+          message_arena, links, submessage_arena);
+    }
+    
+  } else {
+    
+  }
+  links_ = links;
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.DeviceLocality.links)
+}
+
+// -------------------------------------------------------------------
+
+// DeviceAttributes
+
+// string name = 1;
+inline void DeviceAttributes::clear_name() {
+  name_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline const ::std::string& DeviceAttributes::name() const {
+  // @@protoc_insertion_point(field_get:tensorflow.DeviceAttributes.name)
+  return name_.Get();
+}
+inline void DeviceAttributes::set_name(const ::std::string& value) {
+  
+  name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set:tensorflow.DeviceAttributes.name)
+}
+#if LANG_CXX11
+inline void DeviceAttributes::set_name(::std::string&& value) {
+  
+  name_.Set(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.DeviceAttributes.name)
+}
+#endif
+inline void DeviceAttributes::set_name(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
+              GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_char:tensorflow.DeviceAttributes.name)
+}
+inline void DeviceAttributes::set_name(const char* value,
+    size_t size) {
+  
+  name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
+      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.DeviceAttributes.name)
+}
+inline ::std::string* DeviceAttributes::mutable_name() {
+  
+  // @@protoc_insertion_point(field_mutable:tensorflow.DeviceAttributes.name)
+  return name_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline ::std::string* DeviceAttributes::release_name() {
+  // @@protoc_insertion_point(field_release:tensorflow.DeviceAttributes.name)
+  
+  return name_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline void DeviceAttributes::set_allocated_name(::std::string* name) {
+  if (name != NULL) {
+    
+  } else {
+    
+  }
+  name_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), name,
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.DeviceAttributes.name)
+}
+inline ::std::string* DeviceAttributes::unsafe_arena_release_name() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.DeviceAttributes.name)
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  
+  return name_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      GetArenaNoVirtual());
+}
+inline void DeviceAttributes::unsafe_arena_set_allocated_name(
+    ::std::string* name) {
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (name != NULL) {
+    
+  } else {
+    
+  }
+  name_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      name, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.DeviceAttributes.name)
+}
+
+// string device_type = 2;
+inline void DeviceAttributes::clear_device_type() {
+  device_type_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline const ::std::string& DeviceAttributes::device_type() const {
+  // @@protoc_insertion_point(field_get:tensorflow.DeviceAttributes.device_type)
+  return device_type_.Get();
+}
+inline void DeviceAttributes::set_device_type(const ::std::string& value) {
+  
+  device_type_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set:tensorflow.DeviceAttributes.device_type)
+}
+#if LANG_CXX11
+inline void DeviceAttributes::set_device_type(::std::string&& value) {
+  
+  device_type_.Set(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.DeviceAttributes.device_type)
+}
+#endif
+inline void DeviceAttributes::set_device_type(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  device_type_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
+              GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_char:tensorflow.DeviceAttributes.device_type)
+}
+inline void DeviceAttributes::set_device_type(const char* value,
+    size_t size) {
+  
+  device_type_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
+      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.DeviceAttributes.device_type)
+}
+inline ::std::string* DeviceAttributes::mutable_device_type() {
+  
+  // @@protoc_insertion_point(field_mutable:tensorflow.DeviceAttributes.device_type)
+  return device_type_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline ::std::string* DeviceAttributes::release_device_type() {
+  // @@protoc_insertion_point(field_release:tensorflow.DeviceAttributes.device_type)
+  
+  return device_type_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline void DeviceAttributes::set_allocated_device_type(::std::string* device_type) {
+  if (device_type != NULL) {
+    
+  } else {
+    
+  }
+  device_type_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), device_type,
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.DeviceAttributes.device_type)
+}
+inline ::std::string* DeviceAttributes::unsafe_arena_release_device_type() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.DeviceAttributes.device_type)
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  
+  return device_type_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      GetArenaNoVirtual());
+}
+inline void DeviceAttributes::unsafe_arena_set_allocated_device_type(
+    ::std::string* device_type) {
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (device_type != NULL) {
+    
+  } else {
+    
+  }
+  device_type_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      device_type, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.DeviceAttributes.device_type)
+}
+
+// int64 memory_limit = 4;
+inline void DeviceAttributes::clear_memory_limit() {
+  memory_limit_ = PROTOBUF_LONGLONG(0);
+}
+inline ::google::protobuf::int64 DeviceAttributes::memory_limit() const {
+  // @@protoc_insertion_point(field_get:tensorflow.DeviceAttributes.memory_limit)
+  return memory_limit_;
+}
+inline void DeviceAttributes::set_memory_limit(::google::protobuf::int64 value) {
+  
+  memory_limit_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.DeviceAttributes.memory_limit)
+}
+
+// .tensorflow.DeviceLocality locality = 5;
+inline bool DeviceAttributes::has_locality() const {
+  return this != internal_default_instance() && locality_ != NULL;
+}
+inline void DeviceAttributes::clear_locality() {
+  if (GetArenaNoVirtual() == NULL && locality_ != NULL) {
+    delete locality_;
+  }
+  locality_ = NULL;
+}
+inline const ::tensorflow::DeviceLocality& DeviceAttributes::locality() const {
+  const ::tensorflow::DeviceLocality* p = locality_;
+  // @@protoc_insertion_point(field_get:tensorflow.DeviceAttributes.locality)
+  return p != NULL ? *p : *reinterpret_cast<const ::tensorflow::DeviceLocality*>(
+      &::tensorflow::_DeviceLocality_default_instance_);
+}
+inline ::tensorflow::DeviceLocality* DeviceAttributes::release_locality() {
+  // @@protoc_insertion_point(field_release:tensorflow.DeviceAttributes.locality)
+  
+  ::tensorflow::DeviceLocality* temp = locality_;
+  if (GetArenaNoVirtual() != NULL) {
+    temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
+  }
+  locality_ = NULL;
+  return temp;
+}
+inline ::tensorflow::DeviceLocality* DeviceAttributes::unsafe_arena_release_locality() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.DeviceAttributes.locality)
+  
+  ::tensorflow::DeviceLocality* temp = locality_;
+  locality_ = NULL;
+  return temp;
+}
+inline ::tensorflow::DeviceLocality* DeviceAttributes::mutable_locality() {
+  
+  if (locality_ == NULL) {
+    auto* p = CreateMaybeMessage<::tensorflow::DeviceLocality>(GetArenaNoVirtual());
+    locality_ = p;
+  }
+  // @@protoc_insertion_point(field_mutable:tensorflow.DeviceAttributes.locality)
+  return locality_;
+}
+inline void DeviceAttributes::set_allocated_locality(::tensorflow::DeviceLocality* locality) {
+  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
+  if (message_arena == NULL) {
+    delete locality_;
+  }
+  if (locality) {
+    ::google::protobuf::Arena* submessage_arena =
+      ::google::protobuf::Arena::GetArena(locality);
+    if (message_arena != submessage_arena) {
+      locality = ::google::protobuf::internal::GetOwnedMessage(
+          message_arena, locality, submessage_arena);
+    }
+    
+  } else {
+    
+  }
+  locality_ = locality;
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.DeviceAttributes.locality)
+}
+
+// fixed64 incarnation = 6;
+inline void DeviceAttributes::clear_incarnation() {
+  incarnation_ = PROTOBUF_ULONGLONG(0);
+}
+inline ::google::protobuf::uint64 DeviceAttributes::incarnation() const {
+  // @@protoc_insertion_point(field_get:tensorflow.DeviceAttributes.incarnation)
+  return incarnation_;
+}
+inline void DeviceAttributes::set_incarnation(::google::protobuf::uint64 value) {
+  
+  incarnation_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.DeviceAttributes.incarnation)
+}
+
+// string physical_device_desc = 7;
+inline void DeviceAttributes::clear_physical_device_desc() {
+  physical_device_desc_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline const ::std::string& DeviceAttributes::physical_device_desc() const {
+  // @@protoc_insertion_point(field_get:tensorflow.DeviceAttributes.physical_device_desc)
+  return physical_device_desc_.Get();
+}
+inline void DeviceAttributes::set_physical_device_desc(const ::std::string& value) {
+  
+  physical_device_desc_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set:tensorflow.DeviceAttributes.physical_device_desc)
+}
+#if LANG_CXX11
+inline void DeviceAttributes::set_physical_device_desc(::std::string&& value) {
+  
+  physical_device_desc_.Set(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.DeviceAttributes.physical_device_desc)
+}
+#endif
+inline void DeviceAttributes::set_physical_device_desc(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  physical_device_desc_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
+              GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_char:tensorflow.DeviceAttributes.physical_device_desc)
+}
+inline void DeviceAttributes::set_physical_device_desc(const char* value,
+    size_t size) {
+  
+  physical_device_desc_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
+      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.DeviceAttributes.physical_device_desc)
+}
+inline ::std::string* DeviceAttributes::mutable_physical_device_desc() {
+  
+  // @@protoc_insertion_point(field_mutable:tensorflow.DeviceAttributes.physical_device_desc)
+  return physical_device_desc_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline ::std::string* DeviceAttributes::release_physical_device_desc() {
+  // @@protoc_insertion_point(field_release:tensorflow.DeviceAttributes.physical_device_desc)
+  
+  return physical_device_desc_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline void DeviceAttributes::set_allocated_physical_device_desc(::std::string* physical_device_desc) {
+  if (physical_device_desc != NULL) {
+    
+  } else {
+    
+  }
+  physical_device_desc_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), physical_device_desc,
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.DeviceAttributes.physical_device_desc)
+}
+inline ::std::string* DeviceAttributes::unsafe_arena_release_physical_device_desc() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.DeviceAttributes.physical_device_desc)
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  
+  return physical_device_desc_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      GetArenaNoVirtual());
+}
+inline void DeviceAttributes::unsafe_arena_set_allocated_physical_device_desc(
+    ::std::string* physical_device_desc) {
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (physical_device_desc != NULL) {
+    
+  } else {
+    
+  }
+  physical_device_desc_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      physical_device_desc, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.DeviceAttributes.physical_device_desc)
+}
+
+#ifdef __GNUC__
+  #pragma GCC diagnostic pop
+#endif  // __GNUC__
+// -------------------------------------------------------------------
+
+// -------------------------------------------------------------------
+
+// -------------------------------------------------------------------
+
+
+// @@protoc_insertion_point(namespace_scope)
+
+}  // namespace tensorflow
+
+// @@protoc_insertion_point(global_scope)
+
+#include <google/protobuf/port_undef.inc>
+#endif  // PROTOBUF_INCLUDED_tensorflow_2fcore_2fframework_2fdevice_5fattributes_2eproto
diff --git a/tensorflow/core/framework/device_attributes.proto b/tensorflow/core/framework/device_attributes.proto
new file mode 100644 (file)
index 0000000..44236ca
--- /dev/null
@@ -0,0 +1,52 @@
+syntax = "proto3";
+
+package tensorflow;
+option cc_enable_arenas = true;
+option java_outer_classname = "DeviceAttributesProtos";
+option java_multiple_files = true;
+option java_package = "org.tensorflow.framework";
+option go_package = "github.com/tensorflow/tensorflow/tensorflow/go/core/framework";
+
+message InterconnectLink {
+  int32 device_id = 1;
+  string type = 2;
+  int32 strength = 3;
+};
+
+message LocalLinks {
+  repeated InterconnectLink link = 1;
+};
+
+message DeviceLocality {
+  // Optional bus locality of device.  Default value of 0 means
+  // no specific locality.  Specific localities are indexed from 1.
+  int32 bus_id = 1;
+
+  // Optional NUMA locality of device.
+  int32 numa_node = 2;
+
+  // Optional local interconnect links to other devices.
+  LocalLinks links = 3;
+};
+
+message DeviceAttributes {
+  // Fully specified name of the device within a cluster.
+  string name = 1;
+
+  // String representation of device_type.
+  string device_type = 2;
+
+  // Memory capacity of device in bytes.
+  int64 memory_limit = 4;
+
+  // Platform-specific data about device that may be useful
+  // for supporting efficient data transfers.
+  DeviceLocality locality = 5;
+
+  // A device is assigned a global unique number each time it is
+  // initialized. "incarnation" should never be 0.
+  fixed64 incarnation = 6;
+
+  // String representation of the physical device that this device maps to.
+  string physical_device_desc = 7;
+}
diff --git a/tensorflow/core/framework/function.pb.cc b/tensorflow/core/framework/function.pb.cc
new file mode 100644 (file)
index 0000000..b136186
--- /dev/null
@@ -0,0 +1,1882 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: tensorflow/core/framework/function.proto
+
+#include "tensorflow/core/framework/function.pb.h"
+
+#include <algorithm>
+
+#include <google/protobuf/stubs/common.h>
+#include <google/protobuf/io/coded_stream.h>
+#include <google/protobuf/extension_set.h>
+#include <google/protobuf/wire_format_lite_inl.h>
+#include <google/protobuf/descriptor.h>
+#include <google/protobuf/generated_message_reflection.h>
+#include <google/protobuf/reflection_ops.h>
+#include <google/protobuf/wire_format.h>
+// @@protoc_insertion_point(includes)
+#include <google/protobuf/port_def.inc>
+
+extern PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fframework_2fattr_5fvalue_2eproto ::google::protobuf::internal::SCCInfo<2> scc_info_AttrValue_tensorflow_2fcore_2fframework_2fattr_5fvalue_2eproto;
+extern PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fframework_2ffunction_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_FunctionDef_RetEntry_DoNotUse_tensorflow_2fcore_2fframework_2ffunction_2eproto;
+extern PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fframework_2ffunction_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_GradientDef_tensorflow_2fcore_2fframework_2ffunction_2eproto;
+extern PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fframework_2ffunction_2eproto ::google::protobuf::internal::SCCInfo<1> scc_info_FunctionDef_AttrEntry_DoNotUse_tensorflow_2fcore_2fframework_2ffunction_2eproto;
+extern PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fframework_2ffunction_2eproto ::google::protobuf::internal::SCCInfo<4> scc_info_FunctionDef_tensorflow_2fcore_2fframework_2ffunction_2eproto;
+extern PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fframework_2fnode_5fdef_2eproto ::google::protobuf::internal::SCCInfo<1> scc_info_NodeDef_tensorflow_2fcore_2fframework_2fnode_5fdef_2eproto;
+extern PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fframework_2fop_5fdef_2eproto ::google::protobuf::internal::SCCInfo<3> scc_info_OpDef_tensorflow_2fcore_2fframework_2fop_5fdef_2eproto;
+namespace tensorflow {
+class FunctionDefLibraryDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<FunctionDefLibrary> _instance;
+} _FunctionDefLibrary_default_instance_;
+class FunctionDef_AttrEntry_DoNotUseDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<FunctionDef_AttrEntry_DoNotUse> _instance;
+} _FunctionDef_AttrEntry_DoNotUse_default_instance_;
+class FunctionDef_RetEntry_DoNotUseDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<FunctionDef_RetEntry_DoNotUse> _instance;
+} _FunctionDef_RetEntry_DoNotUse_default_instance_;
+class FunctionDefDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<FunctionDef> _instance;
+} _FunctionDef_default_instance_;
+class GradientDefDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<GradientDef> _instance;
+} _GradientDef_default_instance_;
+}  // namespace tensorflow
+static void InitDefaultsFunctionDefLibrary_tensorflow_2fcore_2fframework_2ffunction_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_FunctionDefLibrary_default_instance_;
+    new (ptr) ::tensorflow::FunctionDefLibrary();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::FunctionDefLibrary::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<2> scc_info_FunctionDefLibrary_tensorflow_2fcore_2fframework_2ffunction_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 2, InitDefaultsFunctionDefLibrary_tensorflow_2fcore_2fframework_2ffunction_2eproto}, {
+      &scc_info_FunctionDef_tensorflow_2fcore_2fframework_2ffunction_2eproto.base,
+      &scc_info_GradientDef_tensorflow_2fcore_2fframework_2ffunction_2eproto.base,}};
+
+static void InitDefaultsFunctionDef_AttrEntry_DoNotUse_tensorflow_2fcore_2fframework_2ffunction_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_FunctionDef_AttrEntry_DoNotUse_default_instance_;
+    new (ptr) ::tensorflow::FunctionDef_AttrEntry_DoNotUse();
+  }
+  ::tensorflow::FunctionDef_AttrEntry_DoNotUse::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<1> scc_info_FunctionDef_AttrEntry_DoNotUse_tensorflow_2fcore_2fframework_2ffunction_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsFunctionDef_AttrEntry_DoNotUse_tensorflow_2fcore_2fframework_2ffunction_2eproto}, {
+      &scc_info_AttrValue_tensorflow_2fcore_2fframework_2fattr_5fvalue_2eproto.base,}};
+
+static void InitDefaultsFunctionDef_RetEntry_DoNotUse_tensorflow_2fcore_2fframework_2ffunction_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_FunctionDef_RetEntry_DoNotUse_default_instance_;
+    new (ptr) ::tensorflow::FunctionDef_RetEntry_DoNotUse();
+  }
+  ::tensorflow::FunctionDef_RetEntry_DoNotUse::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<0> scc_info_FunctionDef_RetEntry_DoNotUse_tensorflow_2fcore_2fframework_2ffunction_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsFunctionDef_RetEntry_DoNotUse_tensorflow_2fcore_2fframework_2ffunction_2eproto}, {}};
+
+static void InitDefaultsFunctionDef_tensorflow_2fcore_2fframework_2ffunction_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_FunctionDef_default_instance_;
+    new (ptr) ::tensorflow::FunctionDef();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::FunctionDef::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<4> scc_info_FunctionDef_tensorflow_2fcore_2fframework_2ffunction_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 4, InitDefaultsFunctionDef_tensorflow_2fcore_2fframework_2ffunction_2eproto}, {
+      &scc_info_OpDef_tensorflow_2fcore_2fframework_2fop_5fdef_2eproto.base,
+      &scc_info_FunctionDef_AttrEntry_DoNotUse_tensorflow_2fcore_2fframework_2ffunction_2eproto.base,
+      &scc_info_NodeDef_tensorflow_2fcore_2fframework_2fnode_5fdef_2eproto.base,
+      &scc_info_FunctionDef_RetEntry_DoNotUse_tensorflow_2fcore_2fframework_2ffunction_2eproto.base,}};
+
+static void InitDefaultsGradientDef_tensorflow_2fcore_2fframework_2ffunction_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_GradientDef_default_instance_;
+    new (ptr) ::tensorflow::GradientDef();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::GradientDef::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<0> scc_info_GradientDef_tensorflow_2fcore_2fframework_2ffunction_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsGradientDef_tensorflow_2fcore_2fframework_2ffunction_2eproto}, {}};
+
+void InitDefaults_tensorflow_2fcore_2fframework_2ffunction_2eproto() {
+  ::google::protobuf::internal::InitSCC(&scc_info_FunctionDefLibrary_tensorflow_2fcore_2fframework_2ffunction_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_FunctionDef_AttrEntry_DoNotUse_tensorflow_2fcore_2fframework_2ffunction_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_FunctionDef_RetEntry_DoNotUse_tensorflow_2fcore_2fframework_2ffunction_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_FunctionDef_tensorflow_2fcore_2fframework_2ffunction_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_GradientDef_tensorflow_2fcore_2fframework_2ffunction_2eproto.base);
+}
+
+::google::protobuf::Metadata file_level_metadata_tensorflow_2fcore_2fframework_2ffunction_2eproto[5];
+constexpr ::google::protobuf::EnumDescriptor const** file_level_enum_descriptors_tensorflow_2fcore_2fframework_2ffunction_2eproto = nullptr;
+constexpr ::google::protobuf::ServiceDescriptor const** file_level_service_descriptors_tensorflow_2fcore_2fframework_2ffunction_2eproto = nullptr;
+
+const ::google::protobuf::uint32 TableStruct_tensorflow_2fcore_2fframework_2ffunction_2eproto::offsets[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = {
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::FunctionDefLibrary, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::FunctionDefLibrary, function_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::FunctionDefLibrary, gradient_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::FunctionDef_AttrEntry_DoNotUse, _has_bits_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::FunctionDef_AttrEntry_DoNotUse, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::FunctionDef_AttrEntry_DoNotUse, key_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::FunctionDef_AttrEntry_DoNotUse, value_),
+  0,
+  1,
+  PROTOBUF_FIELD_OFFSET(::tensorflow::FunctionDef_RetEntry_DoNotUse, _has_bits_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::FunctionDef_RetEntry_DoNotUse, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::FunctionDef_RetEntry_DoNotUse, key_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::FunctionDef_RetEntry_DoNotUse, value_),
+  0,
+  1,
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::FunctionDef, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::FunctionDef, signature_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::FunctionDef, attr_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::FunctionDef, node_def_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::FunctionDef, ret_),
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::GradientDef, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::GradientDef, function_name_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::GradientDef, gradient_func_),
+};
+static const ::google::protobuf::internal::MigrationSchema schemas[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = {
+  { 0, -1, sizeof(::tensorflow::FunctionDefLibrary)},
+  { 7, 14, sizeof(::tensorflow::FunctionDef_AttrEntry_DoNotUse)},
+  { 16, 23, sizeof(::tensorflow::FunctionDef_RetEntry_DoNotUse)},
+  { 25, -1, sizeof(::tensorflow::FunctionDef)},
+  { 34, -1, sizeof(::tensorflow::GradientDef)},
+};
+
+static ::google::protobuf::Message const * const file_default_instances[] = {
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_FunctionDefLibrary_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_FunctionDef_AttrEntry_DoNotUse_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_FunctionDef_RetEntry_DoNotUse_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_FunctionDef_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_GradientDef_default_instance_),
+};
+
+::google::protobuf::internal::AssignDescriptorsTable assign_descriptors_table_tensorflow_2fcore_2fframework_2ffunction_2eproto = {
+  {}, AddDescriptors_tensorflow_2fcore_2fframework_2ffunction_2eproto, "tensorflow/core/framework/function.proto", schemas,
+  file_default_instances, TableStruct_tensorflow_2fcore_2fframework_2ffunction_2eproto::offsets,
+  file_level_metadata_tensorflow_2fcore_2fframework_2ffunction_2eproto, 5, file_level_enum_descriptors_tensorflow_2fcore_2fframework_2ffunction_2eproto, file_level_service_descriptors_tensorflow_2fcore_2fframework_2ffunction_2eproto,
+};
+
+::google::protobuf::internal::DescriptorTable descriptor_table_tensorflow_2fcore_2fframework_2ffunction_2eproto = {
+  false, InitDefaults_tensorflow_2fcore_2fframework_2ffunction_2eproto, 
+  "\n(tensorflow/core/framework/function.pro"
+  "to\022\ntensorflow\032*tensorflow/core/framewor"
+  "k/attr_value.proto\032(tensorflow/core/fram"
+  "ework/node_def.proto\032&tensorflow/core/fr"
+  "amework/op_def.proto\"j\n\022FunctionDefLibra"
+  "ry\022)\n\010function\030\001 \003(\0132\027.tensorflow.Functi"
+  "onDef\022)\n\010gradient\030\002 \003(\0132\027.tensorflow.Gra"
+  "dientDef\"\260\002\n\013FunctionDef\022$\n\tsignature\030\001 "
+  "\001(\0132\021.tensorflow.OpDef\022/\n\004attr\030\005 \003(\0132!.t"
+  "ensorflow.FunctionDef.AttrEntry\022%\n\010node_"
+  "def\030\003 \003(\0132\023.tensorflow.NodeDef\022-\n\003ret\030\004 "
+  "\003(\0132 .tensorflow.FunctionDef.RetEntry\032B\n"
+  "\tAttrEntry\022\013\n\003key\030\001 \001(\t\022$\n\005value\030\002 \001(\0132\025"
+  ".tensorflow.AttrValue:\0028\001\032*\n\010RetEntry\022\013\n"
+  "\003key\030\001 \001(\t\022\r\n\005value\030\002 \001(\t:\0028\001J\004\010\002\020\003\";\n\013G"
+  "radientDef\022\025\n\rfunction_name\030\001 \001(\t\022\025\n\rgra"
+  "dient_func\030\002 \001(\tBn\n\030org.tensorflow.frame"
+  "workB\016FunctionProtosP\001Z=github.com/tenso"
+  "rflow/tensorflow/tensorflow/go/core/fram"
+  "ework\370\001\001b\006proto3"
+,
+  "tensorflow/core/framework/function.proto", &assign_descriptors_table_tensorflow_2fcore_2fframework_2ffunction_2eproto, 776,
+};
+
+void AddDescriptors_tensorflow_2fcore_2fframework_2ffunction_2eproto() {
+  static constexpr ::google::protobuf::internal::InitFunc deps[3] =
+  {
+    ::AddDescriptors_tensorflow_2fcore_2fframework_2fattr_5fvalue_2eproto,
+    ::AddDescriptors_tensorflow_2fcore_2fframework_2fnode_5fdef_2eproto,
+    ::AddDescriptors_tensorflow_2fcore_2fframework_2fop_5fdef_2eproto,
+  };
+ ::google::protobuf::internal::AddDescriptors(&descriptor_table_tensorflow_2fcore_2fframework_2ffunction_2eproto, deps, 3);
+}
+
+// Force running AddDescriptors() at dynamic initialization time.
+static bool dynamic_init_dummy_tensorflow_2fcore_2fframework_2ffunction_2eproto = []() { AddDescriptors_tensorflow_2fcore_2fframework_2ffunction_2eproto(); return true; }();
+namespace tensorflow {
+
+// ===================================================================
+
+void FunctionDefLibrary::InitAsDefaultInstance() {
+}
+class FunctionDefLibrary::HasBitSetters {
+ public:
+};
+
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int FunctionDefLibrary::kFunctionFieldNumber;
+const int FunctionDefLibrary::kGradientFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+FunctionDefLibrary::FunctionDefLibrary()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.FunctionDefLibrary)
+}
+FunctionDefLibrary::FunctionDefLibrary(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena),
+  function_(arena),
+  gradient_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.FunctionDefLibrary)
+}
+FunctionDefLibrary::FunctionDefLibrary(const FunctionDefLibrary& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL),
+      function_(from.function_),
+      gradient_(from.gradient_) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  // @@protoc_insertion_point(copy_constructor:tensorflow.FunctionDefLibrary)
+}
+
+void FunctionDefLibrary::SharedCtor() {
+  ::google::protobuf::internal::InitSCC(
+      &scc_info_FunctionDefLibrary_tensorflow_2fcore_2fframework_2ffunction_2eproto.base);
+}
+
+FunctionDefLibrary::~FunctionDefLibrary() {
+  // @@protoc_insertion_point(destructor:tensorflow.FunctionDefLibrary)
+  SharedDtor();
+}
+
+void FunctionDefLibrary::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+}
+
+void FunctionDefLibrary::ArenaDtor(void* object) {
+  FunctionDefLibrary* _this = reinterpret_cast< FunctionDefLibrary* >(object);
+  (void)_this;
+}
+void FunctionDefLibrary::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void FunctionDefLibrary::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const FunctionDefLibrary& FunctionDefLibrary::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_FunctionDefLibrary_tensorflow_2fcore_2fframework_2ffunction_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void FunctionDefLibrary::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.FunctionDefLibrary)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  function_.Clear();
+  gradient_.Clear();
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* FunctionDefLibrary::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<FunctionDefLibrary*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // repeated .tensorflow.FunctionDef function = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 10) goto handle_unusual;
+        do {
+          ptr = Varint::Parse32Inline(ptr, &size);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          parser_till_end = ::tensorflow::FunctionDef::_InternalParse;
+          object = msg->add_function();
+          if (size > end - ptr) goto len_delim_till_end;
+          auto newend = ptr + size;
+          bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                         ptr, newend);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          ptr = newend;
+          if (ptr >= end) break;
+        } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 10 && (ptr += 1));
+        break;
+      }
+      // repeated .tensorflow.GradientDef gradient = 2;
+      case 2: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 18) goto handle_unusual;
+        do {
+          ptr = Varint::Parse32Inline(ptr, &size);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          parser_till_end = ::tensorflow::GradientDef::_InternalParse;
+          object = msg->add_gradient();
+          if (size > end - ptr) goto len_delim_till_end;
+          auto newend = ptr + size;
+          bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                         ptr, newend);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          ptr = newend;
+          if (ptr >= end) break;
+        } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 18 && (ptr += 1));
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool FunctionDefLibrary::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.FunctionDefLibrary)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // repeated .tensorflow.FunctionDef function = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (10 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+                input, add_function()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // repeated .tensorflow.GradientDef gradient = 2;
+      case 2: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (18 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+                input, add_gradient()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.FunctionDefLibrary)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.FunctionDefLibrary)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void FunctionDefLibrary::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.FunctionDefLibrary)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // repeated .tensorflow.FunctionDef function = 1;
+  for (unsigned int i = 0,
+      n = static_cast<unsigned int>(this->function_size()); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      1,
+      this->function(static_cast<int>(i)),
+      output);
+  }
+
+  // repeated .tensorflow.GradientDef gradient = 2;
+  for (unsigned int i = 0,
+      n = static_cast<unsigned int>(this->gradient_size()); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      2,
+      this->gradient(static_cast<int>(i)),
+      output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.FunctionDefLibrary)
+}
+
+::google::protobuf::uint8* FunctionDefLibrary::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.FunctionDefLibrary)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // repeated .tensorflow.FunctionDef function = 1;
+  for (unsigned int i = 0,
+      n = static_cast<unsigned int>(this->function_size()); i < n; i++) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        1, this->function(static_cast<int>(i)), deterministic, target);
+  }
+
+  // repeated .tensorflow.GradientDef gradient = 2;
+  for (unsigned int i = 0,
+      n = static_cast<unsigned int>(this->gradient_size()); i < n; i++) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        2, this->gradient(static_cast<int>(i)), deterministic, target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.FunctionDefLibrary)
+  return target;
+}
+
+size_t FunctionDefLibrary::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.FunctionDefLibrary)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // repeated .tensorflow.FunctionDef function = 1;
+  {
+    unsigned int count = static_cast<unsigned int>(this->function_size());
+    total_size += 1UL * count;
+    for (unsigned int i = 0; i < count; i++) {
+      total_size +=
+        ::google::protobuf::internal::WireFormatLite::MessageSize(
+          this->function(static_cast<int>(i)));
+    }
+  }
+
+  // repeated .tensorflow.GradientDef gradient = 2;
+  {
+    unsigned int count = static_cast<unsigned int>(this->gradient_size());
+    total_size += 1UL * count;
+    for (unsigned int i = 0; i < count; i++) {
+      total_size +=
+        ::google::protobuf::internal::WireFormatLite::MessageSize(
+          this->gradient(static_cast<int>(i)));
+    }
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void FunctionDefLibrary::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.FunctionDefLibrary)
+  GOOGLE_DCHECK_NE(&from, this);
+  const FunctionDefLibrary* source =
+      ::google::protobuf::DynamicCastToGenerated<FunctionDefLibrary>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.FunctionDefLibrary)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.FunctionDefLibrary)
+    MergeFrom(*source);
+  }
+}
+
+void FunctionDefLibrary::MergeFrom(const FunctionDefLibrary& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.FunctionDefLibrary)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  function_.MergeFrom(from.function_);
+  gradient_.MergeFrom(from.gradient_);
+}
+
+void FunctionDefLibrary::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.FunctionDefLibrary)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void FunctionDefLibrary::CopyFrom(const FunctionDefLibrary& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.FunctionDefLibrary)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool FunctionDefLibrary::IsInitialized() const {
+  return true;
+}
+
+void FunctionDefLibrary::Swap(FunctionDefLibrary* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    FunctionDefLibrary* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void FunctionDefLibrary::UnsafeArenaSwap(FunctionDefLibrary* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void FunctionDefLibrary::InternalSwap(FunctionDefLibrary* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  CastToBase(&function_)->InternalSwap(CastToBase(&other->function_));
+  CastToBase(&gradient_)->InternalSwap(CastToBase(&other->gradient_));
+}
+
+::google::protobuf::Metadata FunctionDefLibrary::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fframework_2ffunction_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fframework_2ffunction_2eproto[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+FunctionDef_AttrEntry_DoNotUse::FunctionDef_AttrEntry_DoNotUse() {}
+FunctionDef_AttrEntry_DoNotUse::FunctionDef_AttrEntry_DoNotUse(::google::protobuf::Arena* arena)
+    : SuperType(arena) {}
+void FunctionDef_AttrEntry_DoNotUse::MergeFrom(const FunctionDef_AttrEntry_DoNotUse& other) {
+  MergeFromInternal(other);
+}
+::google::protobuf::Metadata FunctionDef_AttrEntry_DoNotUse::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fframework_2ffunction_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fframework_2ffunction_2eproto[1];
+}
+void FunctionDef_AttrEntry_DoNotUse::MergeFrom(
+    const ::google::protobuf::Message& other) {
+  ::google::protobuf::Message::MergeFrom(other);
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool FunctionDef_AttrEntry_DoNotUse::_ParseMap(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx) {
+  using MF = ::google::protobuf::internal::MapField<
+      FunctionDef_AttrEntry_DoNotUse, EntryKeyType, EntryValueType,
+      kEntryKeyFieldType, kEntryValueFieldType,
+      kEntryDefaultEnumValue>;
+  auto mf = static_cast<MF*>(object);
+  Parser<MF, ::google::protobuf::Map<EntryKeyType, EntryValueType>> parser(mf);
+#define DO_(x) if (!(x)) return false
+  DO_(parser.ParseMap(begin, end));
+  DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+    parser.key().data(), static_cast<int>(parser.key().length()),
+    ::google::protobuf::internal::WireFormatLite::PARSE,
+    "tensorflow.FunctionDef.AttrEntry.key"));
+#undef DO_
+  return true;
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+
+// ===================================================================
+
+FunctionDef_RetEntry_DoNotUse::FunctionDef_RetEntry_DoNotUse() {}
+FunctionDef_RetEntry_DoNotUse::FunctionDef_RetEntry_DoNotUse(::google::protobuf::Arena* arena)
+    : SuperType(arena) {}
+void FunctionDef_RetEntry_DoNotUse::MergeFrom(const FunctionDef_RetEntry_DoNotUse& other) {
+  MergeFromInternal(other);
+}
+::google::protobuf::Metadata FunctionDef_RetEntry_DoNotUse::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fframework_2ffunction_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fframework_2ffunction_2eproto[2];
+}
+void FunctionDef_RetEntry_DoNotUse::MergeFrom(
+    const ::google::protobuf::Message& other) {
+  ::google::protobuf::Message::MergeFrom(other);
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool FunctionDef_RetEntry_DoNotUse::_ParseMap(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx) {
+  using MF = ::google::protobuf::internal::MapField<
+      FunctionDef_RetEntry_DoNotUse, EntryKeyType, EntryValueType,
+      kEntryKeyFieldType, kEntryValueFieldType,
+      kEntryDefaultEnumValue>;
+  auto mf = static_cast<MF*>(object);
+  Parser<MF, ::google::protobuf::Map<EntryKeyType, EntryValueType>> parser(mf);
+#define DO_(x) if (!(x)) return false
+  DO_(parser.ParseMap(begin, end));
+  DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+    parser.key().data(), static_cast<int>(parser.key().length()),
+    ::google::protobuf::internal::WireFormatLite::PARSE,
+    "tensorflow.FunctionDef.RetEntry.key"));
+  DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+    parser.value().data(), static_cast<int>(parser.value().length()),
+    ::google::protobuf::internal::WireFormatLite::PARSE,
+    "tensorflow.FunctionDef.RetEntry.value"));
+#undef DO_
+  return true;
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+
+// ===================================================================
+
+void FunctionDef::InitAsDefaultInstance() {
+  ::tensorflow::_FunctionDef_default_instance_._instance.get_mutable()->signature_ = const_cast< ::tensorflow::OpDef*>(
+      ::tensorflow::OpDef::internal_default_instance());
+}
+class FunctionDef::HasBitSetters {
+ public:
+  static const ::tensorflow::OpDef& signature(const FunctionDef* msg);
+};
+
+const ::tensorflow::OpDef&
+FunctionDef::HasBitSetters::signature(const FunctionDef* msg) {
+  return *msg->signature_;
+}
+void FunctionDef::unsafe_arena_set_allocated_signature(
+    ::tensorflow::OpDef* signature) {
+  if (GetArenaNoVirtual() == NULL) {
+    delete signature_;
+  }
+  signature_ = signature;
+  if (signature) {
+    
+  } else {
+    
+  }
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.FunctionDef.signature)
+}
+void FunctionDef::clear_signature() {
+  if (GetArenaNoVirtual() == NULL && signature_ != NULL) {
+    delete signature_;
+  }
+  signature_ = NULL;
+}
+void FunctionDef::clear_attr() {
+  attr_.Clear();
+}
+void FunctionDef::clear_node_def() {
+  node_def_.Clear();
+}
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int FunctionDef::kSignatureFieldNumber;
+const int FunctionDef::kAttrFieldNumber;
+const int FunctionDef::kNodeDefFieldNumber;
+const int FunctionDef::kRetFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+FunctionDef::FunctionDef()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.FunctionDef)
+}
+FunctionDef::FunctionDef(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena),
+  node_def_(arena),
+  ret_(arena),
+  attr_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.FunctionDef)
+}
+FunctionDef::FunctionDef(const FunctionDef& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL),
+      node_def_(from.node_def_) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ret_.MergeFrom(from.ret_);
+  attr_.MergeFrom(from.attr_);
+  if (from.has_signature()) {
+    signature_ = new ::tensorflow::OpDef(*from.signature_);
+  } else {
+    signature_ = NULL;
+  }
+  // @@protoc_insertion_point(copy_constructor:tensorflow.FunctionDef)
+}
+
+void FunctionDef::SharedCtor() {
+  ::google::protobuf::internal::InitSCC(
+      &scc_info_FunctionDef_tensorflow_2fcore_2fframework_2ffunction_2eproto.base);
+  signature_ = NULL;
+}
+
+FunctionDef::~FunctionDef() {
+  // @@protoc_insertion_point(destructor:tensorflow.FunctionDef)
+  SharedDtor();
+}
+
+void FunctionDef::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+  if (this != internal_default_instance()) delete signature_;
+}
+
+void FunctionDef::ArenaDtor(void* object) {
+  FunctionDef* _this = reinterpret_cast< FunctionDef* >(object);
+  (void)_this;
+}
+void FunctionDef::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void FunctionDef::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const FunctionDef& FunctionDef::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_FunctionDef_tensorflow_2fcore_2fframework_2ffunction_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void FunctionDef::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.FunctionDef)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  node_def_.Clear();
+  ret_.Clear();
+  attr_.Clear();
+  if (GetArenaNoVirtual() == NULL && signature_ != NULL) {
+    delete signature_;
+  }
+  signature_ = NULL;
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* FunctionDef::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<FunctionDef*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // .tensorflow.OpDef signature = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 10) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        parser_till_end = ::tensorflow::OpDef::_InternalParse;
+        object = msg->mutable_signature();
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                       ptr, newend);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+        ptr = newend;
+        break;
+      }
+      // repeated .tensorflow.NodeDef node_def = 3;
+      case 3: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 26) goto handle_unusual;
+        do {
+          ptr = Varint::Parse32Inline(ptr, &size);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          parser_till_end = ::tensorflow::NodeDef::_InternalParse;
+          object = msg->add_node_def();
+          if (size > end - ptr) goto len_delim_till_end;
+          auto newend = ptr + size;
+          bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                         ptr, newend);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          ptr = newend;
+          if (ptr >= end) break;
+        } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 26 && (ptr += 1));
+        break;
+      }
+      // map<string, string> ret = 4;
+      case 4: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 34) goto handle_unusual;
+        do {
+          ptr = Varint::Parse32Inline(ptr, &size);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          parser_till_end = ::google::protobuf::internal::SlowMapEntryParser;
+          auto parse_map = ::tensorflow::FunctionDef_RetEntry_DoNotUse::_ParseMap;
+          ctx->extra_parse_data().payload.clear();
+          ctx->extra_parse_data().parse_map = parse_map;
+          object = &msg->ret_;
+          if (size > end - ptr) goto len_delim_till_end;
+          auto newend = ptr + size;
+          GOOGLE_PROTOBUF_PARSER_ASSERT(parse_map(ptr, newend, object, ctx));
+          ptr = newend;
+          if (ptr >= end) break;
+        } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 34 && (ptr += 1));
+        break;
+      }
+      // map<string, .tensorflow.AttrValue> attr = 5;
+      case 5: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 42) goto handle_unusual;
+        do {
+          ptr = Varint::Parse32Inline(ptr, &size);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          parser_till_end = ::google::protobuf::internal::SlowMapEntryParser;
+          auto parse_map = ::tensorflow::FunctionDef_AttrEntry_DoNotUse::_ParseMap;
+          ctx->extra_parse_data().payload.clear();
+          ctx->extra_parse_data().parse_map = parse_map;
+          object = &msg->attr_;
+          if (size > end - ptr) goto len_delim_till_end;
+          auto newend = ptr + size;
+          GOOGLE_PROTOBUF_PARSER_ASSERT(parse_map(ptr, newend, object, ctx));
+          ptr = newend;
+          if (ptr >= end) break;
+        } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 42 && (ptr += 1));
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool FunctionDef::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.FunctionDef)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // .tensorflow.OpDef signature = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (10 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+               input, mutable_signature()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // repeated .tensorflow.NodeDef node_def = 3;
+      case 3: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (26 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+                input, add_node_def()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // map<string, string> ret = 4;
+      case 4: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (34 & 0xFF)) {
+          FunctionDef_RetEntry_DoNotUse::Parser< ::google::protobuf::internal::MapField<
+              FunctionDef_RetEntry_DoNotUse,
+              ::std::string, ::std::string,
+              ::google::protobuf::internal::WireFormatLite::TYPE_STRING,
+              ::google::protobuf::internal::WireFormatLite::TYPE_STRING,
+              0 >,
+            ::google::protobuf::Map< ::std::string, ::std::string > > parser(&ret_);
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
+              input, &parser));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            parser.key().data(), static_cast<int>(parser.key().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.FunctionDef.RetEntry.key"));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            parser.value().data(), static_cast<int>(parser.value().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.FunctionDef.RetEntry.value"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // map<string, .tensorflow.AttrValue> attr = 5;
+      case 5: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (42 & 0xFF)) {
+          FunctionDef_AttrEntry_DoNotUse::Parser< ::google::protobuf::internal::MapField<
+              FunctionDef_AttrEntry_DoNotUse,
+              ::std::string, ::tensorflow::AttrValue,
+              ::google::protobuf::internal::WireFormatLite::TYPE_STRING,
+              ::google::protobuf::internal::WireFormatLite::TYPE_MESSAGE,
+              0 >,
+            ::google::protobuf::Map< ::std::string, ::tensorflow::AttrValue > > parser(&attr_);
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
+              input, &parser));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            parser.key().data(), static_cast<int>(parser.key().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.FunctionDef.AttrEntry.key"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.FunctionDef)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.FunctionDef)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void FunctionDef::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.FunctionDef)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // .tensorflow.OpDef signature = 1;
+  if (this->has_signature()) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      1, HasBitSetters::signature(this), output);
+  }
+
+  // repeated .tensorflow.NodeDef node_def = 3;
+  for (unsigned int i = 0,
+      n = static_cast<unsigned int>(this->node_def_size()); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      3,
+      this->node_def(static_cast<int>(i)),
+      output);
+  }
+
+  // map<string, string> ret = 4;
+  if (!this->ret().empty()) {
+    typedef ::google::protobuf::Map< ::std::string, ::std::string >::const_pointer
+        ConstPtr;
+    typedef ConstPtr SortItem;
+    typedef ::google::protobuf::internal::CompareByDerefFirst<SortItem> Less;
+    struct Utf8Check {
+      static void Check(ConstPtr p) {
+        ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+          p->first.data(), static_cast<int>(p->first.length()),
+          ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+          "tensorflow.FunctionDef.RetEntry.key");
+        ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+          p->second.data(), static_cast<int>(p->second.length()),
+          ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+          "tensorflow.FunctionDef.RetEntry.value");
+      }
+    };
+
+    if (output->IsSerializationDeterministic() &&
+        this->ret().size() > 1) {
+      ::std::unique_ptr<SortItem[]> items(
+          new SortItem[this->ret().size()]);
+      typedef ::google::protobuf::Map< ::std::string, ::std::string >::size_type size_type;
+      size_type n = 0;
+      for (::google::protobuf::Map< ::std::string, ::std::string >::const_iterator
+          it = this->ret().begin();
+          it != this->ret().end(); ++it, ++n) {
+        items[static_cast<ptrdiff_t>(n)] = SortItem(&*it);
+      }
+      ::std::sort(&items[0], &items[static_cast<ptrdiff_t>(n)], Less());
+      ::std::unique_ptr<FunctionDef_RetEntry_DoNotUse> entry;
+      for (size_type i = 0; i < n; i++) {
+        entry.reset(ret_.NewEntryWrapper(items[static_cast<ptrdiff_t>(i)]->first, items[static_cast<ptrdiff_t>(i)]->second));
+        ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(4, *entry, output);
+        if (entry->GetArena() != NULL) {
+          entry.release();
+        }
+        Utf8Check::Check(&(*items[static_cast<ptrdiff_t>(i)]));
+      }
+    } else {
+      ::std::unique_ptr<FunctionDef_RetEntry_DoNotUse> entry;
+      for (::google::protobuf::Map< ::std::string, ::std::string >::const_iterator
+          it = this->ret().begin();
+          it != this->ret().end(); ++it) {
+        entry.reset(ret_.NewEntryWrapper(it->first, it->second));
+        ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(4, *entry, output);
+        if (entry->GetArena() != NULL) {
+          entry.release();
+        }
+        Utf8Check::Check(&(*it));
+      }
+    }
+  }
+
+  // map<string, .tensorflow.AttrValue> attr = 5;
+  if (!this->attr().empty()) {
+    typedef ::google::protobuf::Map< ::std::string, ::tensorflow::AttrValue >::const_pointer
+        ConstPtr;
+    typedef ConstPtr SortItem;
+    typedef ::google::protobuf::internal::CompareByDerefFirst<SortItem> Less;
+    struct Utf8Check {
+      static void Check(ConstPtr p) {
+        ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+          p->first.data(), static_cast<int>(p->first.length()),
+          ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+          "tensorflow.FunctionDef.AttrEntry.key");
+      }
+    };
+
+    if (output->IsSerializationDeterministic() &&
+        this->attr().size() > 1) {
+      ::std::unique_ptr<SortItem[]> items(
+          new SortItem[this->attr().size()]);
+      typedef ::google::protobuf::Map< ::std::string, ::tensorflow::AttrValue >::size_type size_type;
+      size_type n = 0;
+      for (::google::protobuf::Map< ::std::string, ::tensorflow::AttrValue >::const_iterator
+          it = this->attr().begin();
+          it != this->attr().end(); ++it, ++n) {
+        items[static_cast<ptrdiff_t>(n)] = SortItem(&*it);
+      }
+      ::std::sort(&items[0], &items[static_cast<ptrdiff_t>(n)], Less());
+      ::std::unique_ptr<FunctionDef_AttrEntry_DoNotUse> entry;
+      for (size_type i = 0; i < n; i++) {
+        entry.reset(attr_.NewEntryWrapper(items[static_cast<ptrdiff_t>(i)]->first, items[static_cast<ptrdiff_t>(i)]->second));
+        ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(5, *entry, output);
+        if (entry->GetArena() != NULL) {
+          entry.release();
+        }
+        Utf8Check::Check(&(*items[static_cast<ptrdiff_t>(i)]));
+      }
+    } else {
+      ::std::unique_ptr<FunctionDef_AttrEntry_DoNotUse> entry;
+      for (::google::protobuf::Map< ::std::string, ::tensorflow::AttrValue >::const_iterator
+          it = this->attr().begin();
+          it != this->attr().end(); ++it) {
+        entry.reset(attr_.NewEntryWrapper(it->first, it->second));
+        ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(5, *entry, output);
+        if (entry->GetArena() != NULL) {
+          entry.release();
+        }
+        Utf8Check::Check(&(*it));
+      }
+    }
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.FunctionDef)
+}
+
+::google::protobuf::uint8* FunctionDef::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.FunctionDef)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // .tensorflow.OpDef signature = 1;
+  if (this->has_signature()) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        1, HasBitSetters::signature(this), deterministic, target);
+  }
+
+  // repeated .tensorflow.NodeDef node_def = 3;
+  for (unsigned int i = 0,
+      n = static_cast<unsigned int>(this->node_def_size()); i < n; i++) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        3, this->node_def(static_cast<int>(i)), deterministic, target);
+  }
+
+  // map<string, string> ret = 4;
+  if (!this->ret().empty()) {
+    typedef ::google::protobuf::Map< ::std::string, ::std::string >::const_pointer
+        ConstPtr;
+    typedef ConstPtr SortItem;
+    typedef ::google::protobuf::internal::CompareByDerefFirst<SortItem> Less;
+    struct Utf8Check {
+      static void Check(ConstPtr p) {
+        ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+          p->first.data(), static_cast<int>(p->first.length()),
+          ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+          "tensorflow.FunctionDef.RetEntry.key");
+        ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+          p->second.data(), static_cast<int>(p->second.length()),
+          ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+          "tensorflow.FunctionDef.RetEntry.value");
+      }
+    };
+
+    if (deterministic &&
+        this->ret().size() > 1) {
+      ::std::unique_ptr<SortItem[]> items(
+          new SortItem[this->ret().size()]);
+      typedef ::google::protobuf::Map< ::std::string, ::std::string >::size_type size_type;
+      size_type n = 0;
+      for (::google::protobuf::Map< ::std::string, ::std::string >::const_iterator
+          it = this->ret().begin();
+          it != this->ret().end(); ++it, ++n) {
+        items[static_cast<ptrdiff_t>(n)] = SortItem(&*it);
+      }
+      ::std::sort(&items[0], &items[static_cast<ptrdiff_t>(n)], Less());
+      ::std::unique_ptr<FunctionDef_RetEntry_DoNotUse> entry;
+      for (size_type i = 0; i < n; i++) {
+        entry.reset(ret_.NewEntryWrapper(items[static_cast<ptrdiff_t>(i)]->first, items[static_cast<ptrdiff_t>(i)]->second));
+        target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessageNoVirtualToArray(4, *entry, deterministic, target);
+        if (entry->GetArena() != NULL) {
+          entry.release();
+        }
+        Utf8Check::Check(&(*items[static_cast<ptrdiff_t>(i)]));
+      }
+    } else {
+      ::std::unique_ptr<FunctionDef_RetEntry_DoNotUse> entry;
+      for (::google::protobuf::Map< ::std::string, ::std::string >::const_iterator
+          it = this->ret().begin();
+          it != this->ret().end(); ++it) {
+        entry.reset(ret_.NewEntryWrapper(it->first, it->second));
+        target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessageNoVirtualToArray(4, *entry, deterministic, target);
+        if (entry->GetArena() != NULL) {
+          entry.release();
+        }
+        Utf8Check::Check(&(*it));
+      }
+    }
+  }
+
+  // map<string, .tensorflow.AttrValue> attr = 5;
+  if (!this->attr().empty()) {
+    typedef ::google::protobuf::Map< ::std::string, ::tensorflow::AttrValue >::const_pointer
+        ConstPtr;
+    typedef ConstPtr SortItem;
+    typedef ::google::protobuf::internal::CompareByDerefFirst<SortItem> Less;
+    struct Utf8Check {
+      static void Check(ConstPtr p) {
+        ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+          p->first.data(), static_cast<int>(p->first.length()),
+          ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+          "tensorflow.FunctionDef.AttrEntry.key");
+      }
+    };
+
+    if (deterministic &&
+        this->attr().size() > 1) {
+      ::std::unique_ptr<SortItem[]> items(
+          new SortItem[this->attr().size()]);
+      typedef ::google::protobuf::Map< ::std::string, ::tensorflow::AttrValue >::size_type size_type;
+      size_type n = 0;
+      for (::google::protobuf::Map< ::std::string, ::tensorflow::AttrValue >::const_iterator
+          it = this->attr().begin();
+          it != this->attr().end(); ++it, ++n) {
+        items[static_cast<ptrdiff_t>(n)] = SortItem(&*it);
+      }
+      ::std::sort(&items[0], &items[static_cast<ptrdiff_t>(n)], Less());
+      ::std::unique_ptr<FunctionDef_AttrEntry_DoNotUse> entry;
+      for (size_type i = 0; i < n; i++) {
+        entry.reset(attr_.NewEntryWrapper(items[static_cast<ptrdiff_t>(i)]->first, items[static_cast<ptrdiff_t>(i)]->second));
+        target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessageNoVirtualToArray(5, *entry, deterministic, target);
+        if (entry->GetArena() != NULL) {
+          entry.release();
+        }
+        Utf8Check::Check(&(*items[static_cast<ptrdiff_t>(i)]));
+      }
+    } else {
+      ::std::unique_ptr<FunctionDef_AttrEntry_DoNotUse> entry;
+      for (::google::protobuf::Map< ::std::string, ::tensorflow::AttrValue >::const_iterator
+          it = this->attr().begin();
+          it != this->attr().end(); ++it) {
+        entry.reset(attr_.NewEntryWrapper(it->first, it->second));
+        target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessageNoVirtualToArray(5, *entry, deterministic, target);
+        if (entry->GetArena() != NULL) {
+          entry.release();
+        }
+        Utf8Check::Check(&(*it));
+      }
+    }
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.FunctionDef)
+  return target;
+}
+
+size_t FunctionDef::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.FunctionDef)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // repeated .tensorflow.NodeDef node_def = 3;
+  {
+    unsigned int count = static_cast<unsigned int>(this->node_def_size());
+    total_size += 1UL * count;
+    for (unsigned int i = 0; i < count; i++) {
+      total_size +=
+        ::google::protobuf::internal::WireFormatLite::MessageSize(
+          this->node_def(static_cast<int>(i)));
+    }
+  }
+
+  // map<string, string> ret = 4;
+  total_size += 1 *
+      ::google::protobuf::internal::FromIntSize(this->ret_size());
+  {
+    ::std::unique_ptr<FunctionDef_RetEntry_DoNotUse> entry;
+    for (::google::protobuf::Map< ::std::string, ::std::string >::const_iterator
+        it = this->ret().begin();
+        it != this->ret().end(); ++it) {
+      if (entry.get() != NULL && entry->GetArena() != NULL) {
+        entry.release();
+      }
+      entry.reset(ret_.NewEntryWrapper(it->first, it->second));
+      total_size += ::google::protobuf::internal::WireFormatLite::
+          MessageSizeNoVirtual(*entry);
+    }
+    if (entry.get() != NULL && entry->GetArena() != NULL) {
+      entry.release();
+    }
+  }
+
+  // map<string, .tensorflow.AttrValue> attr = 5;
+  total_size += 1 *
+      ::google::protobuf::internal::FromIntSize(this->attr_size());
+  {
+    ::std::unique_ptr<FunctionDef_AttrEntry_DoNotUse> entry;
+    for (::google::protobuf::Map< ::std::string, ::tensorflow::AttrValue >::const_iterator
+        it = this->attr().begin();
+        it != this->attr().end(); ++it) {
+      if (entry.get() != NULL && entry->GetArena() != NULL) {
+        entry.release();
+      }
+      entry.reset(attr_.NewEntryWrapper(it->first, it->second));
+      total_size += ::google::protobuf::internal::WireFormatLite::
+          MessageSizeNoVirtual(*entry);
+    }
+    if (entry.get() != NULL && entry->GetArena() != NULL) {
+      entry.release();
+    }
+  }
+
+  // .tensorflow.OpDef signature = 1;
+  if (this->has_signature()) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::MessageSize(
+        *signature_);
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void FunctionDef::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.FunctionDef)
+  GOOGLE_DCHECK_NE(&from, this);
+  const FunctionDef* source =
+      ::google::protobuf::DynamicCastToGenerated<FunctionDef>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.FunctionDef)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.FunctionDef)
+    MergeFrom(*source);
+  }
+}
+
+void FunctionDef::MergeFrom(const FunctionDef& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.FunctionDef)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  node_def_.MergeFrom(from.node_def_);
+  ret_.MergeFrom(from.ret_);
+  attr_.MergeFrom(from.attr_);
+  if (from.has_signature()) {
+    mutable_signature()->::tensorflow::OpDef::MergeFrom(from.signature());
+  }
+}
+
+void FunctionDef::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.FunctionDef)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void FunctionDef::CopyFrom(const FunctionDef& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.FunctionDef)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool FunctionDef::IsInitialized() const {
+  return true;
+}
+
+void FunctionDef::Swap(FunctionDef* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    FunctionDef* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void FunctionDef::UnsafeArenaSwap(FunctionDef* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void FunctionDef::InternalSwap(FunctionDef* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  CastToBase(&node_def_)->InternalSwap(CastToBase(&other->node_def_));
+  ret_.Swap(&other->ret_);
+  attr_.Swap(&other->attr_);
+  swap(signature_, other->signature_);
+}
+
+::google::protobuf::Metadata FunctionDef::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fframework_2ffunction_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fframework_2ffunction_2eproto[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+void GradientDef::InitAsDefaultInstance() {
+}
+class GradientDef::HasBitSetters {
+ public:
+};
+
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int GradientDef::kFunctionNameFieldNumber;
+const int GradientDef::kGradientFuncFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+GradientDef::GradientDef()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.GradientDef)
+}
+GradientDef::GradientDef(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.GradientDef)
+}
+GradientDef::GradientDef(const GradientDef& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  function_name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.function_name().size() > 0) {
+    function_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.function_name(),
+      GetArenaNoVirtual());
+  }
+  gradient_func_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.gradient_func().size() > 0) {
+    gradient_func_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.gradient_func(),
+      GetArenaNoVirtual());
+  }
+  // @@protoc_insertion_point(copy_constructor:tensorflow.GradientDef)
+}
+
+void GradientDef::SharedCtor() {
+  ::google::protobuf::internal::InitSCC(
+      &scc_info_GradientDef_tensorflow_2fcore_2fframework_2ffunction_2eproto.base);
+  function_name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  gradient_func_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+
+GradientDef::~GradientDef() {
+  // @@protoc_insertion_point(destructor:tensorflow.GradientDef)
+  SharedDtor();
+}
+
+void GradientDef::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+  function_name_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  gradient_func_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+
+void GradientDef::ArenaDtor(void* object) {
+  GradientDef* _this = reinterpret_cast< GradientDef* >(object);
+  (void)_this;
+}
+void GradientDef::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void GradientDef::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const GradientDef& GradientDef::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_GradientDef_tensorflow_2fcore_2fframework_2ffunction_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void GradientDef::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.GradientDef)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  function_name_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+  gradient_func_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* GradientDef::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<GradientDef*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // string function_name = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 10) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("tensorflow.GradientDef.function_name");
+        parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+        ::std::string* str = msg->mutable_function_name();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+        break;
+      }
+      // string gradient_func = 2;
+      case 2: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 18) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("tensorflow.GradientDef.gradient_func");
+        parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+        ::std::string* str = msg->mutable_gradient_func();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool GradientDef::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.GradientDef)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // string function_name = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (10 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_function_name()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->function_name().data(), static_cast<int>(this->function_name().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.GradientDef.function_name"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // string gradient_func = 2;
+      case 2: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (18 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_gradient_func()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->gradient_func().data(), static_cast<int>(this->gradient_func().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.GradientDef.gradient_func"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.GradientDef)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.GradientDef)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void GradientDef::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.GradientDef)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // string function_name = 1;
+  if (this->function_name().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->function_name().data(), static_cast<int>(this->function_name().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.GradientDef.function_name");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      1, this->function_name(), output);
+  }
+
+  // string gradient_func = 2;
+  if (this->gradient_func().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->gradient_func().data(), static_cast<int>(this->gradient_func().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.GradientDef.gradient_func");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      2, this->gradient_func(), output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.GradientDef)
+}
+
+::google::protobuf::uint8* GradientDef::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.GradientDef)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // string function_name = 1;
+  if (this->function_name().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->function_name().data(), static_cast<int>(this->function_name().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.GradientDef.function_name");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        1, this->function_name(), target);
+  }
+
+  // string gradient_func = 2;
+  if (this->gradient_func().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->gradient_func().data(), static_cast<int>(this->gradient_func().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.GradientDef.gradient_func");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        2, this->gradient_func(), target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.GradientDef)
+  return target;
+}
+
+size_t GradientDef::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.GradientDef)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // string function_name = 1;
+  if (this->function_name().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->function_name());
+  }
+
+  // string gradient_func = 2;
+  if (this->gradient_func().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->gradient_func());
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void GradientDef::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.GradientDef)
+  GOOGLE_DCHECK_NE(&from, this);
+  const GradientDef* source =
+      ::google::protobuf::DynamicCastToGenerated<GradientDef>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.GradientDef)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.GradientDef)
+    MergeFrom(*source);
+  }
+}
+
+void GradientDef::MergeFrom(const GradientDef& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.GradientDef)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  if (from.function_name().size() > 0) {
+    set_function_name(from.function_name());
+  }
+  if (from.gradient_func().size() > 0) {
+    set_gradient_func(from.gradient_func());
+  }
+}
+
+void GradientDef::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.GradientDef)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void GradientDef::CopyFrom(const GradientDef& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.GradientDef)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool GradientDef::IsInitialized() const {
+  return true;
+}
+
+void GradientDef::Swap(GradientDef* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    GradientDef* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void GradientDef::UnsafeArenaSwap(GradientDef* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void GradientDef::InternalSwap(GradientDef* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  function_name_.Swap(&other->function_name_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+  gradient_func_.Swap(&other->gradient_func_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+}
+
+::google::protobuf::Metadata GradientDef::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fframework_2ffunction_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fframework_2ffunction_2eproto[kIndexInFileMessages];
+}
+
+
+// @@protoc_insertion_point(namespace_scope)
+}  // namespace tensorflow
+namespace google {
+namespace protobuf {
+template<> PROTOBUF_NOINLINE ::tensorflow::FunctionDefLibrary* Arena::CreateMaybeMessage< ::tensorflow::FunctionDefLibrary >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::FunctionDefLibrary >(arena);
+}
+template<> PROTOBUF_NOINLINE ::tensorflow::FunctionDef_AttrEntry_DoNotUse* Arena::CreateMaybeMessage< ::tensorflow::FunctionDef_AttrEntry_DoNotUse >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::FunctionDef_AttrEntry_DoNotUse >(arena);
+}
+template<> PROTOBUF_NOINLINE ::tensorflow::FunctionDef_RetEntry_DoNotUse* Arena::CreateMaybeMessage< ::tensorflow::FunctionDef_RetEntry_DoNotUse >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::FunctionDef_RetEntry_DoNotUse >(arena);
+}
+template<> PROTOBUF_NOINLINE ::tensorflow::FunctionDef* Arena::CreateMaybeMessage< ::tensorflow::FunctionDef >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::FunctionDef >(arena);
+}
+template<> PROTOBUF_NOINLINE ::tensorflow::GradientDef* Arena::CreateMaybeMessage< ::tensorflow::GradientDef >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::GradientDef >(arena);
+}
+}  // namespace protobuf
+}  // namespace google
+
+// @@protoc_insertion_point(global_scope)
+#include <google/protobuf/port_undef.inc>
diff --git a/tensorflow/core/framework/function.pb.h b/tensorflow/core/framework/function.pb.h
new file mode 100644 (file)
index 0000000..2fac560
--- /dev/null
@@ -0,0 +1,989 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: tensorflow/core/framework/function.proto
+
+#ifndef PROTOBUF_INCLUDED_tensorflow_2fcore_2fframework_2ffunction_2eproto
+#define PROTOBUF_INCLUDED_tensorflow_2fcore_2fframework_2ffunction_2eproto
+
+#include <limits>
+#include <string>
+
+#include <google/protobuf/port_def.inc>
+#if PROTOBUF_VERSION < 3006001
+#error This file was generated by a newer version of protoc which is
+#error incompatible with your Protocol Buffer headers. Please update
+#error your headers.
+#endif
+#if 3006001 < PROTOBUF_MIN_PROTOC_VERSION
+#error This file was generated by an older version of protoc which is
+#error incompatible with your Protocol Buffer headers. Please
+#error regenerate this file with a newer version of protoc.
+#endif
+
+#include <google/protobuf/port_undef.inc>
+#include <google/protobuf/io/coded_stream.h>
+#include <google/protobuf/arena.h>
+#include <google/protobuf/arenastring.h>
+#include <google/protobuf/generated_message_table_driven.h>
+#include <google/protobuf/generated_message_util.h>
+#include <google/protobuf/inlined_string_field.h>
+#include <google/protobuf/metadata.h>
+#include <google/protobuf/message.h>
+#include <google/protobuf/repeated_field.h>  // IWYU pragma: export
+#include <google/protobuf/extension_set.h>  // IWYU pragma: export
+#include <google/protobuf/map.h>  // IWYU pragma: export
+#include <google/protobuf/map_entry.h>
+#include <google/protobuf/map_field_inl.h>
+#include <google/protobuf/unknown_field_set.h>
+#include "tensorflow/core/framework/attr_value.pb.h"
+#include "tensorflow/core/framework/node_def.pb.h"
+#include "tensorflow/core/framework/op_def.pb.h"
+// @@protoc_insertion_point(includes)
+#include <google/protobuf/port_def.inc>
+#define PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fframework_2ffunction_2eproto
+
+// Internal implementation detail -- do not use these members.
+struct TableStruct_tensorflow_2fcore_2fframework_2ffunction_2eproto {
+  static const ::google::protobuf::internal::ParseTableField entries[]
+    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
+  static const ::google::protobuf::internal::AuxillaryParseTableField aux[]
+    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
+  static const ::google::protobuf::internal::ParseTable schema[5]
+    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
+  static const ::google::protobuf::internal::FieldMetadata field_metadata[];
+  static const ::google::protobuf::internal::SerializationTable serialization_table[];
+  static const ::google::protobuf::uint32 offsets[];
+};
+void AddDescriptors_tensorflow_2fcore_2fframework_2ffunction_2eproto();
+namespace tensorflow {
+class FunctionDef;
+class FunctionDefDefaultTypeInternal;
+extern FunctionDefDefaultTypeInternal _FunctionDef_default_instance_;
+class FunctionDefLibrary;
+class FunctionDefLibraryDefaultTypeInternal;
+extern FunctionDefLibraryDefaultTypeInternal _FunctionDefLibrary_default_instance_;
+class FunctionDef_AttrEntry_DoNotUse;
+class FunctionDef_AttrEntry_DoNotUseDefaultTypeInternal;
+extern FunctionDef_AttrEntry_DoNotUseDefaultTypeInternal _FunctionDef_AttrEntry_DoNotUse_default_instance_;
+class FunctionDef_RetEntry_DoNotUse;
+class FunctionDef_RetEntry_DoNotUseDefaultTypeInternal;
+extern FunctionDef_RetEntry_DoNotUseDefaultTypeInternal _FunctionDef_RetEntry_DoNotUse_default_instance_;
+class GradientDef;
+class GradientDefDefaultTypeInternal;
+extern GradientDefDefaultTypeInternal _GradientDef_default_instance_;
+}  // namespace tensorflow
+namespace google {
+namespace protobuf {
+template<> ::tensorflow::FunctionDef* Arena::CreateMaybeMessage<::tensorflow::FunctionDef>(Arena*);
+template<> ::tensorflow::FunctionDefLibrary* Arena::CreateMaybeMessage<::tensorflow::FunctionDefLibrary>(Arena*);
+template<> ::tensorflow::FunctionDef_AttrEntry_DoNotUse* Arena::CreateMaybeMessage<::tensorflow::FunctionDef_AttrEntry_DoNotUse>(Arena*);
+template<> ::tensorflow::FunctionDef_RetEntry_DoNotUse* Arena::CreateMaybeMessage<::tensorflow::FunctionDef_RetEntry_DoNotUse>(Arena*);
+template<> ::tensorflow::GradientDef* Arena::CreateMaybeMessage<::tensorflow::GradientDef>(Arena*);
+}  // namespace protobuf
+}  // namespace google
+namespace tensorflow {
+
+// ===================================================================
+
+class FunctionDefLibrary : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.FunctionDefLibrary) */ {
+ public:
+  FunctionDefLibrary();
+  virtual ~FunctionDefLibrary();
+
+  FunctionDefLibrary(const FunctionDefLibrary& from);
+
+  inline FunctionDefLibrary& operator=(const FunctionDefLibrary& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  FunctionDefLibrary(FunctionDefLibrary&& from) noexcept
+    : FunctionDefLibrary() {
+    *this = ::std::move(from);
+  }
+
+  inline FunctionDefLibrary& operator=(FunctionDefLibrary&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const FunctionDefLibrary& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const FunctionDefLibrary* internal_default_instance() {
+    return reinterpret_cast<const FunctionDefLibrary*>(
+               &_FunctionDefLibrary_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    0;
+
+  void UnsafeArenaSwap(FunctionDefLibrary* other);
+  void Swap(FunctionDefLibrary* other);
+  friend void swap(FunctionDefLibrary& a, FunctionDefLibrary& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline FunctionDefLibrary* New() const final {
+    return CreateMaybeMessage<FunctionDefLibrary>(NULL);
+  }
+
+  FunctionDefLibrary* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<FunctionDefLibrary>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const FunctionDefLibrary& from);
+  void MergeFrom(const FunctionDefLibrary& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(FunctionDefLibrary* other);
+  protected:
+  explicit FunctionDefLibrary(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // repeated .tensorflow.FunctionDef function = 1;
+  int function_size() const;
+  void clear_function();
+  static const int kFunctionFieldNumber = 1;
+  ::tensorflow::FunctionDef* mutable_function(int index);
+  ::google::protobuf::RepeatedPtrField< ::tensorflow::FunctionDef >*
+      mutable_function();
+  const ::tensorflow::FunctionDef& function(int index) const;
+  ::tensorflow::FunctionDef* add_function();
+  const ::google::protobuf::RepeatedPtrField< ::tensorflow::FunctionDef >&
+      function() const;
+
+  // repeated .tensorflow.GradientDef gradient = 2;
+  int gradient_size() const;
+  void clear_gradient();
+  static const int kGradientFieldNumber = 2;
+  ::tensorflow::GradientDef* mutable_gradient(int index);
+  ::google::protobuf::RepeatedPtrField< ::tensorflow::GradientDef >*
+      mutable_gradient();
+  const ::tensorflow::GradientDef& gradient(int index) const;
+  ::tensorflow::GradientDef* add_gradient();
+  const ::google::protobuf::RepeatedPtrField< ::tensorflow::GradientDef >&
+      gradient() const;
+
+  // @@protoc_insertion_point(class_scope:tensorflow.FunctionDefLibrary)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  ::google::protobuf::RepeatedPtrField< ::tensorflow::FunctionDef > function_;
+  ::google::protobuf::RepeatedPtrField< ::tensorflow::GradientDef > gradient_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fframework_2ffunction_2eproto;
+};
+// -------------------------------------------------------------------
+
+class FunctionDef_AttrEntry_DoNotUse : public ::google::protobuf::internal::MapEntry<FunctionDef_AttrEntry_DoNotUse, 
+    ::std::string, ::tensorflow::AttrValue,
+    ::google::protobuf::internal::WireFormatLite::TYPE_STRING,
+    ::google::protobuf::internal::WireFormatLite::TYPE_MESSAGE,
+    0 > {
+public:
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+static bool _ParseMap(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  typedef ::google::protobuf::internal::MapEntry<FunctionDef_AttrEntry_DoNotUse, 
+    ::std::string, ::tensorflow::AttrValue,
+    ::google::protobuf::internal::WireFormatLite::TYPE_STRING,
+    ::google::protobuf::internal::WireFormatLite::TYPE_MESSAGE,
+    0 > SuperType;
+  FunctionDef_AttrEntry_DoNotUse();
+  FunctionDef_AttrEntry_DoNotUse(::google::protobuf::Arena* arena);
+  void MergeFrom(const FunctionDef_AttrEntry_DoNotUse& other);
+  static const FunctionDef_AttrEntry_DoNotUse* internal_default_instance() { return reinterpret_cast<const FunctionDef_AttrEntry_DoNotUse*>(&_FunctionDef_AttrEntry_DoNotUse_default_instance_); }
+  void MergeFrom(const ::google::protobuf::Message& other) final;
+  ::google::protobuf::Metadata GetMetadata() const;
+};
+
+// -------------------------------------------------------------------
+
+class FunctionDef_RetEntry_DoNotUse : public ::google::protobuf::internal::MapEntry<FunctionDef_RetEntry_DoNotUse, 
+    ::std::string, ::std::string,
+    ::google::protobuf::internal::WireFormatLite::TYPE_STRING,
+    ::google::protobuf::internal::WireFormatLite::TYPE_STRING,
+    0 > {
+public:
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+static bool _ParseMap(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  typedef ::google::protobuf::internal::MapEntry<FunctionDef_RetEntry_DoNotUse, 
+    ::std::string, ::std::string,
+    ::google::protobuf::internal::WireFormatLite::TYPE_STRING,
+    ::google::protobuf::internal::WireFormatLite::TYPE_STRING,
+    0 > SuperType;
+  FunctionDef_RetEntry_DoNotUse();
+  FunctionDef_RetEntry_DoNotUse(::google::protobuf::Arena* arena);
+  void MergeFrom(const FunctionDef_RetEntry_DoNotUse& other);
+  static const FunctionDef_RetEntry_DoNotUse* internal_default_instance() { return reinterpret_cast<const FunctionDef_RetEntry_DoNotUse*>(&_FunctionDef_RetEntry_DoNotUse_default_instance_); }
+  void MergeFrom(const ::google::protobuf::Message& other) final;
+  ::google::protobuf::Metadata GetMetadata() const;
+};
+
+// -------------------------------------------------------------------
+
+class FunctionDef : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.FunctionDef) */ {
+ public:
+  FunctionDef();
+  virtual ~FunctionDef();
+
+  FunctionDef(const FunctionDef& from);
+
+  inline FunctionDef& operator=(const FunctionDef& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  FunctionDef(FunctionDef&& from) noexcept
+    : FunctionDef() {
+    *this = ::std::move(from);
+  }
+
+  inline FunctionDef& operator=(FunctionDef&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const FunctionDef& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const FunctionDef* internal_default_instance() {
+    return reinterpret_cast<const FunctionDef*>(
+               &_FunctionDef_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    3;
+
+  void UnsafeArenaSwap(FunctionDef* other);
+  void Swap(FunctionDef* other);
+  friend void swap(FunctionDef& a, FunctionDef& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline FunctionDef* New() const final {
+    return CreateMaybeMessage<FunctionDef>(NULL);
+  }
+
+  FunctionDef* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<FunctionDef>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const FunctionDef& from);
+  void MergeFrom(const FunctionDef& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(FunctionDef* other);
+  protected:
+  explicit FunctionDef(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+
+  // accessors -------------------------------------------------------
+
+  // repeated .tensorflow.NodeDef node_def = 3;
+  int node_def_size() const;
+  void clear_node_def();
+  static const int kNodeDefFieldNumber = 3;
+  ::tensorflow::NodeDef* mutable_node_def(int index);
+  ::google::protobuf::RepeatedPtrField< ::tensorflow::NodeDef >*
+      mutable_node_def();
+  const ::tensorflow::NodeDef& node_def(int index) const;
+  ::tensorflow::NodeDef* add_node_def();
+  const ::google::protobuf::RepeatedPtrField< ::tensorflow::NodeDef >&
+      node_def() const;
+
+  // map<string, string> ret = 4;
+  int ret_size() const;
+  void clear_ret();
+  static const int kRetFieldNumber = 4;
+  const ::google::protobuf::Map< ::std::string, ::std::string >&
+      ret() const;
+  ::google::protobuf::Map< ::std::string, ::std::string >*
+      mutable_ret();
+
+  // map<string, .tensorflow.AttrValue> attr = 5;
+  int attr_size() const;
+  void clear_attr();
+  static const int kAttrFieldNumber = 5;
+  const ::google::protobuf::Map< ::std::string, ::tensorflow::AttrValue >&
+      attr() const;
+  ::google::protobuf::Map< ::std::string, ::tensorflow::AttrValue >*
+      mutable_attr();
+
+  // .tensorflow.OpDef signature = 1;
+  bool has_signature() const;
+  void clear_signature();
+  static const int kSignatureFieldNumber = 1;
+  const ::tensorflow::OpDef& signature() const;
+  ::tensorflow::OpDef* release_signature();
+  ::tensorflow::OpDef* mutable_signature();
+  void set_allocated_signature(::tensorflow::OpDef* signature);
+  void unsafe_arena_set_allocated_signature(
+      ::tensorflow::OpDef* signature);
+  ::tensorflow::OpDef* unsafe_arena_release_signature();
+
+  // @@protoc_insertion_point(class_scope:tensorflow.FunctionDef)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  ::google::protobuf::RepeatedPtrField< ::tensorflow::NodeDef > node_def_;
+  ::google::protobuf::internal::MapField<
+      FunctionDef_RetEntry_DoNotUse,
+      ::std::string, ::std::string,
+      ::google::protobuf::internal::WireFormatLite::TYPE_STRING,
+      ::google::protobuf::internal::WireFormatLite::TYPE_STRING,
+      0 > ret_;
+  ::google::protobuf::internal::MapField<
+      FunctionDef_AttrEntry_DoNotUse,
+      ::std::string, ::tensorflow::AttrValue,
+      ::google::protobuf::internal::WireFormatLite::TYPE_STRING,
+      ::google::protobuf::internal::WireFormatLite::TYPE_MESSAGE,
+      0 > attr_;
+  ::tensorflow::OpDef* signature_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fframework_2ffunction_2eproto;
+};
+// -------------------------------------------------------------------
+
+class GradientDef : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.GradientDef) */ {
+ public:
+  GradientDef();
+  virtual ~GradientDef();
+
+  GradientDef(const GradientDef& from);
+
+  inline GradientDef& operator=(const GradientDef& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  GradientDef(GradientDef&& from) noexcept
+    : GradientDef() {
+    *this = ::std::move(from);
+  }
+
+  inline GradientDef& operator=(GradientDef&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const GradientDef& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const GradientDef* internal_default_instance() {
+    return reinterpret_cast<const GradientDef*>(
+               &_GradientDef_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    4;
+
+  void UnsafeArenaSwap(GradientDef* other);
+  void Swap(GradientDef* other);
+  friend void swap(GradientDef& a, GradientDef& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline GradientDef* New() const final {
+    return CreateMaybeMessage<GradientDef>(NULL);
+  }
+
+  GradientDef* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<GradientDef>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const GradientDef& from);
+  void MergeFrom(const GradientDef& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(GradientDef* other);
+  protected:
+  explicit GradientDef(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // string function_name = 1;
+  void clear_function_name();
+  static const int kFunctionNameFieldNumber = 1;
+  const ::std::string& function_name() const;
+  void set_function_name(const ::std::string& value);
+  #if LANG_CXX11
+  void set_function_name(::std::string&& value);
+  #endif
+  void set_function_name(const char* value);
+  void set_function_name(const char* value, size_t size);
+  ::std::string* mutable_function_name();
+  ::std::string* release_function_name();
+  void set_allocated_function_name(::std::string* function_name);
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  ::std::string* unsafe_arena_release_function_name();
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  void unsafe_arena_set_allocated_function_name(
+      ::std::string* function_name);
+
+  // string gradient_func = 2;
+  void clear_gradient_func();
+  static const int kGradientFuncFieldNumber = 2;
+  const ::std::string& gradient_func() const;
+  void set_gradient_func(const ::std::string& value);
+  #if LANG_CXX11
+  void set_gradient_func(::std::string&& value);
+  #endif
+  void set_gradient_func(const char* value);
+  void set_gradient_func(const char* value, size_t size);
+  ::std::string* mutable_gradient_func();
+  ::std::string* release_gradient_func();
+  void set_allocated_gradient_func(::std::string* gradient_func);
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  ::std::string* unsafe_arena_release_gradient_func();
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  void unsafe_arena_set_allocated_gradient_func(
+      ::std::string* gradient_func);
+
+  // @@protoc_insertion_point(class_scope:tensorflow.GradientDef)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  ::google::protobuf::internal::ArenaStringPtr function_name_;
+  ::google::protobuf::internal::ArenaStringPtr gradient_func_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fframework_2ffunction_2eproto;
+};
+// ===================================================================
+
+
+// ===================================================================
+
+#ifdef __GNUC__
+  #pragma GCC diagnostic push
+  #pragma GCC diagnostic ignored "-Wstrict-aliasing"
+#endif  // __GNUC__
+// FunctionDefLibrary
+
+// repeated .tensorflow.FunctionDef function = 1;
+inline int FunctionDefLibrary::function_size() const {
+  return function_.size();
+}
+inline void FunctionDefLibrary::clear_function() {
+  function_.Clear();
+}
+inline ::tensorflow::FunctionDef* FunctionDefLibrary::mutable_function(int index) {
+  // @@protoc_insertion_point(field_mutable:tensorflow.FunctionDefLibrary.function)
+  return function_.Mutable(index);
+}
+inline ::google::protobuf::RepeatedPtrField< ::tensorflow::FunctionDef >*
+FunctionDefLibrary::mutable_function() {
+  // @@protoc_insertion_point(field_mutable_list:tensorflow.FunctionDefLibrary.function)
+  return &function_;
+}
+inline const ::tensorflow::FunctionDef& FunctionDefLibrary::function(int index) const {
+  // @@protoc_insertion_point(field_get:tensorflow.FunctionDefLibrary.function)
+  return function_.Get(index);
+}
+inline ::tensorflow::FunctionDef* FunctionDefLibrary::add_function() {
+  // @@protoc_insertion_point(field_add:tensorflow.FunctionDefLibrary.function)
+  return function_.Add();
+}
+inline const ::google::protobuf::RepeatedPtrField< ::tensorflow::FunctionDef >&
+FunctionDefLibrary::function() const {
+  // @@protoc_insertion_point(field_list:tensorflow.FunctionDefLibrary.function)
+  return function_;
+}
+
+// repeated .tensorflow.GradientDef gradient = 2;
+inline int FunctionDefLibrary::gradient_size() const {
+  return gradient_.size();
+}
+inline void FunctionDefLibrary::clear_gradient() {
+  gradient_.Clear();
+}
+inline ::tensorflow::GradientDef* FunctionDefLibrary::mutable_gradient(int index) {
+  // @@protoc_insertion_point(field_mutable:tensorflow.FunctionDefLibrary.gradient)
+  return gradient_.Mutable(index);
+}
+inline ::google::protobuf::RepeatedPtrField< ::tensorflow::GradientDef >*
+FunctionDefLibrary::mutable_gradient() {
+  // @@protoc_insertion_point(field_mutable_list:tensorflow.FunctionDefLibrary.gradient)
+  return &gradient_;
+}
+inline const ::tensorflow::GradientDef& FunctionDefLibrary::gradient(int index) const {
+  // @@protoc_insertion_point(field_get:tensorflow.FunctionDefLibrary.gradient)
+  return gradient_.Get(index);
+}
+inline ::tensorflow::GradientDef* FunctionDefLibrary::add_gradient() {
+  // @@protoc_insertion_point(field_add:tensorflow.FunctionDefLibrary.gradient)
+  return gradient_.Add();
+}
+inline const ::google::protobuf::RepeatedPtrField< ::tensorflow::GradientDef >&
+FunctionDefLibrary::gradient() const {
+  // @@protoc_insertion_point(field_list:tensorflow.FunctionDefLibrary.gradient)
+  return gradient_;
+}
+
+// -------------------------------------------------------------------
+
+// -------------------------------------------------------------------
+
+// -------------------------------------------------------------------
+
+// FunctionDef
+
+// .tensorflow.OpDef signature = 1;
+inline bool FunctionDef::has_signature() const {
+  return this != internal_default_instance() && signature_ != NULL;
+}
+inline const ::tensorflow::OpDef& FunctionDef::signature() const {
+  const ::tensorflow::OpDef* p = signature_;
+  // @@protoc_insertion_point(field_get:tensorflow.FunctionDef.signature)
+  return p != NULL ? *p : *reinterpret_cast<const ::tensorflow::OpDef*>(
+      &::tensorflow::_OpDef_default_instance_);
+}
+inline ::tensorflow::OpDef* FunctionDef::release_signature() {
+  // @@protoc_insertion_point(field_release:tensorflow.FunctionDef.signature)
+  
+  ::tensorflow::OpDef* temp = signature_;
+  if (GetArenaNoVirtual() != NULL) {
+    temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
+  }
+  signature_ = NULL;
+  return temp;
+}
+inline ::tensorflow::OpDef* FunctionDef::unsafe_arena_release_signature() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.FunctionDef.signature)
+  
+  ::tensorflow::OpDef* temp = signature_;
+  signature_ = NULL;
+  return temp;
+}
+inline ::tensorflow::OpDef* FunctionDef::mutable_signature() {
+  
+  if (signature_ == NULL) {
+    auto* p = CreateMaybeMessage<::tensorflow::OpDef>(GetArenaNoVirtual());
+    signature_ = p;
+  }
+  // @@protoc_insertion_point(field_mutable:tensorflow.FunctionDef.signature)
+  return signature_;
+}
+inline void FunctionDef::set_allocated_signature(::tensorflow::OpDef* signature) {
+  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
+  if (message_arena == NULL) {
+    delete reinterpret_cast< ::google::protobuf::MessageLite*>(signature_);
+  }
+  if (signature) {
+    ::google::protobuf::Arena* submessage_arena =
+      reinterpret_cast<::google::protobuf::MessageLite*>(signature)->GetArena();
+    if (message_arena != submessage_arena) {
+      signature = ::google::protobuf::internal::GetOwnedMessage(
+          message_arena, signature, submessage_arena);
+    }
+    
+  } else {
+    
+  }
+  signature_ = signature;
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.FunctionDef.signature)
+}
+
+// map<string, .tensorflow.AttrValue> attr = 5;
+inline int FunctionDef::attr_size() const {
+  return attr_.size();
+}
+inline const ::google::protobuf::Map< ::std::string, ::tensorflow::AttrValue >&
+FunctionDef::attr() const {
+  // @@protoc_insertion_point(field_map:tensorflow.FunctionDef.attr)
+  return attr_.GetMap();
+}
+inline ::google::protobuf::Map< ::std::string, ::tensorflow::AttrValue >*
+FunctionDef::mutable_attr() {
+  // @@protoc_insertion_point(field_mutable_map:tensorflow.FunctionDef.attr)
+  return attr_.MutableMap();
+}
+
+// repeated .tensorflow.NodeDef node_def = 3;
+inline int FunctionDef::node_def_size() const {
+  return node_def_.size();
+}
+inline ::tensorflow::NodeDef* FunctionDef::mutable_node_def(int index) {
+  // @@protoc_insertion_point(field_mutable:tensorflow.FunctionDef.node_def)
+  return node_def_.Mutable(index);
+}
+inline ::google::protobuf::RepeatedPtrField< ::tensorflow::NodeDef >*
+FunctionDef::mutable_node_def() {
+  // @@protoc_insertion_point(field_mutable_list:tensorflow.FunctionDef.node_def)
+  return &node_def_;
+}
+inline const ::tensorflow::NodeDef& FunctionDef::node_def(int index) const {
+  // @@protoc_insertion_point(field_get:tensorflow.FunctionDef.node_def)
+  return node_def_.Get(index);
+}
+inline ::tensorflow::NodeDef* FunctionDef::add_node_def() {
+  // @@protoc_insertion_point(field_add:tensorflow.FunctionDef.node_def)
+  return node_def_.Add();
+}
+inline const ::google::protobuf::RepeatedPtrField< ::tensorflow::NodeDef >&
+FunctionDef::node_def() const {
+  // @@protoc_insertion_point(field_list:tensorflow.FunctionDef.node_def)
+  return node_def_;
+}
+
+// map<string, string> ret = 4;
+inline int FunctionDef::ret_size() const {
+  return ret_.size();
+}
+inline void FunctionDef::clear_ret() {
+  ret_.Clear();
+}
+inline const ::google::protobuf::Map< ::std::string, ::std::string >&
+FunctionDef::ret() const {
+  // @@protoc_insertion_point(field_map:tensorflow.FunctionDef.ret)
+  return ret_.GetMap();
+}
+inline ::google::protobuf::Map< ::std::string, ::std::string >*
+FunctionDef::mutable_ret() {
+  // @@protoc_insertion_point(field_mutable_map:tensorflow.FunctionDef.ret)
+  return ret_.MutableMap();
+}
+
+// -------------------------------------------------------------------
+
+// GradientDef
+
+// string function_name = 1;
+inline void GradientDef::clear_function_name() {
+  function_name_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline const ::std::string& GradientDef::function_name() const {
+  // @@protoc_insertion_point(field_get:tensorflow.GradientDef.function_name)
+  return function_name_.Get();
+}
+inline void GradientDef::set_function_name(const ::std::string& value) {
+  
+  function_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set:tensorflow.GradientDef.function_name)
+}
+#if LANG_CXX11
+inline void GradientDef::set_function_name(::std::string&& value) {
+  
+  function_name_.Set(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.GradientDef.function_name)
+}
+#endif
+inline void GradientDef::set_function_name(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  function_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
+              GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_char:tensorflow.GradientDef.function_name)
+}
+inline void GradientDef::set_function_name(const char* value,
+    size_t size) {
+  
+  function_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
+      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.GradientDef.function_name)
+}
+inline ::std::string* GradientDef::mutable_function_name() {
+  
+  // @@protoc_insertion_point(field_mutable:tensorflow.GradientDef.function_name)
+  return function_name_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline ::std::string* GradientDef::release_function_name() {
+  // @@protoc_insertion_point(field_release:tensorflow.GradientDef.function_name)
+  
+  return function_name_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline void GradientDef::set_allocated_function_name(::std::string* function_name) {
+  if (function_name != NULL) {
+    
+  } else {
+    
+  }
+  function_name_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), function_name,
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.GradientDef.function_name)
+}
+inline ::std::string* GradientDef::unsafe_arena_release_function_name() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.GradientDef.function_name)
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  
+  return function_name_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      GetArenaNoVirtual());
+}
+inline void GradientDef::unsafe_arena_set_allocated_function_name(
+    ::std::string* function_name) {
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (function_name != NULL) {
+    
+  } else {
+    
+  }
+  function_name_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      function_name, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.GradientDef.function_name)
+}
+
+// string gradient_func = 2;
+inline void GradientDef::clear_gradient_func() {
+  gradient_func_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline const ::std::string& GradientDef::gradient_func() const {
+  // @@protoc_insertion_point(field_get:tensorflow.GradientDef.gradient_func)
+  return gradient_func_.Get();
+}
+inline void GradientDef::set_gradient_func(const ::std::string& value) {
+  
+  gradient_func_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set:tensorflow.GradientDef.gradient_func)
+}
+#if LANG_CXX11
+inline void GradientDef::set_gradient_func(::std::string&& value) {
+  
+  gradient_func_.Set(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.GradientDef.gradient_func)
+}
+#endif
+inline void GradientDef::set_gradient_func(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  gradient_func_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
+              GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_char:tensorflow.GradientDef.gradient_func)
+}
+inline void GradientDef::set_gradient_func(const char* value,
+    size_t size) {
+  
+  gradient_func_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
+      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.GradientDef.gradient_func)
+}
+inline ::std::string* GradientDef::mutable_gradient_func() {
+  
+  // @@protoc_insertion_point(field_mutable:tensorflow.GradientDef.gradient_func)
+  return gradient_func_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline ::std::string* GradientDef::release_gradient_func() {
+  // @@protoc_insertion_point(field_release:tensorflow.GradientDef.gradient_func)
+  
+  return gradient_func_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline void GradientDef::set_allocated_gradient_func(::std::string* gradient_func) {
+  if (gradient_func != NULL) {
+    
+  } else {
+    
+  }
+  gradient_func_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), gradient_func,
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.GradientDef.gradient_func)
+}
+inline ::std::string* GradientDef::unsafe_arena_release_gradient_func() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.GradientDef.gradient_func)
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  
+  return gradient_func_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      GetArenaNoVirtual());
+}
+inline void GradientDef::unsafe_arena_set_allocated_gradient_func(
+    ::std::string* gradient_func) {
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (gradient_func != NULL) {
+    
+  } else {
+    
+  }
+  gradient_func_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      gradient_func, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.GradientDef.gradient_func)
+}
+
+#ifdef __GNUC__
+  #pragma GCC diagnostic pop
+#endif  // __GNUC__
+// -------------------------------------------------------------------
+
+// -------------------------------------------------------------------
+
+// -------------------------------------------------------------------
+
+// -------------------------------------------------------------------
+
+
+// @@protoc_insertion_point(namespace_scope)
+
+}  // namespace tensorflow
+
+// @@protoc_insertion_point(global_scope)
+
+#include <google/protobuf/port_undef.inc>
+#endif  // PROTOBUF_INCLUDED_tensorflow_2fcore_2fframework_2ffunction_2eproto
diff --git a/tensorflow/core/framework/function.proto b/tensorflow/core/framework/function.proto
new file mode 100644 (file)
index 0000000..e69d393
--- /dev/null
@@ -0,0 +1,102 @@
+syntax = "proto3";
+
+package tensorflow;
+option cc_enable_arenas = true;
+option java_outer_classname = "FunctionProtos";
+option java_multiple_files = true;
+option java_package = "org.tensorflow.framework";
+option go_package = "github.com/tensorflow/tensorflow/tensorflow/go/core/framework";
+import "tensorflow/core/framework/attr_value.proto";
+import "tensorflow/core/framework/node_def.proto";
+import "tensorflow/core/framework/op_def.proto";
+
+// A library is a set of named functions.
+message FunctionDefLibrary {
+  repeated FunctionDef function = 1;
+  repeated GradientDef gradient = 2;
+}
+
+// A function can be instantiated when the runtime can bind every attr
+// with a value. When a GraphDef has a call to a function, it must
+// have binding for every attr defined in the signature.
+//
+// TODO(zhifengc):
+//   * device spec, etc.
+message FunctionDef {
+  // The definition of the function's name, arguments, return values,
+  // attrs etc.
+  OpDef signature = 1;
+
+  // Attributes specific to this function definition.
+  map<string, AttrValue> attr = 5;
+
+  // NOTE: field id 2 deleted on Jan 11, 2017, GraphDef version 21.
+  reserved 2;
+
+  // In both of the following fields, there is the need to specify an
+  // output that is used as either the input to another node (in
+  // `node_def`) or as a return value of the function (in `ret`).
+  // Unlike the NodeDefs in GraphDef, we need to be able to specify a
+  // list in some cases (instead of just single outputs).  Also, we
+  // need to be able to deal with lists of unknown length (so the
+  // output index may not be known at function definition time).  So
+  // we use the following format instead:
+  // * "fun_in" where "fun_in" is the name of a function input arg in
+  //   the `signature` field above.  This represents that input, whether
+  //   it is a single tensor or a list.
+  // * "fun_in:0" gives the first element of a function input arg (a
+  //   non-list input is considered a list of length 1 for these
+  //   purposes).
+  // * "node:out" where "node" is the name of a node in `node_def` and
+  //   "out" is the name one of its op's output arguments (the name
+  //   comes from the OpDef of the node's op). This represents that
+  //   node's output, whether it is a single tensor or a list.
+  //   Note: We enforce that an op's output arguments are never
+  //   renamed in the backwards-compatibility test.
+  // * "node:out:0" gives the first element of a node output arg (a
+  //   non-list output is considered a list of length 1 for these
+  //   purposes).
+  //
+  // NOT CURRENTLY SUPPORTED (but may be in the future):
+  // * "node:out:-1" gives last element in a node output list
+  // * "node:out:1:" gives a list with all but the first element in a
+  //   node output list
+  // * "node:out::-1" gives a list with all but the last element in a
+  //   node output list
+
+  // The body of the function.  Unlike the NodeDefs in a GraphDef, attrs
+  // may have values of type `placeholder` and the `input` field uses
+  // the "output" format above.
+
+  // By convention, "op" in node_def is resolved by consulting with a
+  // user-defined library first. If not resolved, "func" is assumed to
+  // be a builtin op.
+  repeated NodeDef node_def = 3;
+
+  // A mapping from the output arg names from `signature` to the
+  // outputs from `node_def` that should be returned by the function.
+  map<string, string> ret = 4;
+}
+
+// GradientDef defines the gradient function of a function defined in
+// a function library.
+//
+// A gradient function g (specified by gradient_func) for a function f
+// (specified by function_name) must follow the following:
+//
+// The function 'f' must be a numerical function which takes N inputs
+// and produces M outputs. Its gradient function 'g', which is a
+// function taking N + M inputs and produces N outputs.
+//
+// I.e. if we have
+//    (y1, y2, ..., y_M) = f(x1, x2, ..., x_N),
+// then, g is
+//    (dL/dx1, dL/dx2, ..., dL/dx_N) = g(x1, x2, ..., x_N,
+//                                      dL/dy1, dL/dy2, ..., dL/dy_M),
+// where L is a scalar-value function of (x1, x2, ..., xN) (e.g., the
+// loss function). dL/dx_i is the partial derivative of L with respect
+// to x_i.
+message GradientDef {
+  string function_name = 1;  // The function name.
+  string gradient_func = 2;  // The gradient function's name.
+}
diff --git a/tensorflow/core/framework/graph.pb.cc b/tensorflow/core/framework/graph.pb.cc
new file mode 100644 (file)
index 0000000..83dce11
--- /dev/null
@@ -0,0 +1,665 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: tensorflow/core/framework/graph.proto
+
+#include "tensorflow/core/framework/graph.pb.h"
+
+#include <algorithm>
+
+#include <google/protobuf/stubs/common.h>
+#include <google/protobuf/io/coded_stream.h>
+#include <google/protobuf/extension_set.h>
+#include <google/protobuf/wire_format_lite_inl.h>
+#include <google/protobuf/descriptor.h>
+#include <google/protobuf/generated_message_reflection.h>
+#include <google/protobuf/reflection_ops.h>
+#include <google/protobuf/wire_format.h>
+// @@protoc_insertion_point(includes)
+#include <google/protobuf/port_def.inc>
+
+extern PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fframework_2ffunction_2eproto ::google::protobuf::internal::SCCInfo<2> scc_info_FunctionDefLibrary_tensorflow_2fcore_2fframework_2ffunction_2eproto;
+extern PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fframework_2fnode_5fdef_2eproto ::google::protobuf::internal::SCCInfo<1> scc_info_NodeDef_tensorflow_2fcore_2fframework_2fnode_5fdef_2eproto;
+extern PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fframework_2fversions_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_VersionDef_tensorflow_2fcore_2fframework_2fversions_2eproto;
+namespace tensorflow {
+class GraphDefDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<GraphDef> _instance;
+} _GraphDef_default_instance_;
+}  // namespace tensorflow
+static void InitDefaultsGraphDef_tensorflow_2fcore_2fframework_2fgraph_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_GraphDef_default_instance_;
+    new (ptr) ::tensorflow::GraphDef();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::GraphDef::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<3> scc_info_GraphDef_tensorflow_2fcore_2fframework_2fgraph_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 3, InitDefaultsGraphDef_tensorflow_2fcore_2fframework_2fgraph_2eproto}, {
+      &scc_info_NodeDef_tensorflow_2fcore_2fframework_2fnode_5fdef_2eproto.base,
+      &scc_info_VersionDef_tensorflow_2fcore_2fframework_2fversions_2eproto.base,
+      &scc_info_FunctionDefLibrary_tensorflow_2fcore_2fframework_2ffunction_2eproto.base,}};
+
+void InitDefaults_tensorflow_2fcore_2fframework_2fgraph_2eproto() {
+  ::google::protobuf::internal::InitSCC(&scc_info_GraphDef_tensorflow_2fcore_2fframework_2fgraph_2eproto.base);
+}
+
+::google::protobuf::Metadata file_level_metadata_tensorflow_2fcore_2fframework_2fgraph_2eproto[1];
+constexpr ::google::protobuf::EnumDescriptor const** file_level_enum_descriptors_tensorflow_2fcore_2fframework_2fgraph_2eproto = nullptr;
+constexpr ::google::protobuf::ServiceDescriptor const** file_level_service_descriptors_tensorflow_2fcore_2fframework_2fgraph_2eproto = nullptr;
+
+const ::google::protobuf::uint32 TableStruct_tensorflow_2fcore_2fframework_2fgraph_2eproto::offsets[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = {
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::GraphDef, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::GraphDef, node_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::GraphDef, versions_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::GraphDef, version_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::GraphDef, library_),
+};
+static const ::google::protobuf::internal::MigrationSchema schemas[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = {
+  { 0, -1, sizeof(::tensorflow::GraphDef)},
+};
+
+static ::google::protobuf::Message const * const file_default_instances[] = {
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_GraphDef_default_instance_),
+};
+
+::google::protobuf::internal::AssignDescriptorsTable assign_descriptors_table_tensorflow_2fcore_2fframework_2fgraph_2eproto = {
+  {}, AddDescriptors_tensorflow_2fcore_2fframework_2fgraph_2eproto, "tensorflow/core/framework/graph.proto", schemas,
+  file_default_instances, TableStruct_tensorflow_2fcore_2fframework_2fgraph_2eproto::offsets,
+  file_level_metadata_tensorflow_2fcore_2fframework_2fgraph_2eproto, 1, file_level_enum_descriptors_tensorflow_2fcore_2fframework_2fgraph_2eproto, file_level_service_descriptors_tensorflow_2fcore_2fframework_2fgraph_2eproto,
+};
+
+::google::protobuf::internal::DescriptorTable descriptor_table_tensorflow_2fcore_2fframework_2fgraph_2eproto = {
+  false, InitDefaults_tensorflow_2fcore_2fframework_2fgraph_2eproto, 
+  "\n%tensorflow/core/framework/graph.proto\022"
+  "\ntensorflow\032(tensorflow/core/framework/n"
+  "ode_def.proto\032(tensorflow/core/framework"
+  "/function.proto\032(tensorflow/core/framewo"
+  "rk/versions.proto\"\235\001\n\010GraphDef\022!\n\004node\030\001"
+  " \003(\0132\023.tensorflow.NodeDef\022(\n\010versions\030\004 "
+  "\001(\0132\026.tensorflow.VersionDef\022\023\n\007version\030\003"
+  " \001(\005B\002\030\001\022/\n\007library\030\002 \001(\0132\036.tensorflow.F"
+  "unctionDefLibraryBk\n\030org.tensorflow.fram"
+  "eworkB\013GraphProtosP\001Z=github.com/tensorf"
+  "low/tensorflow/tensorflow/go/core/framew"
+  "ork\370\001\001b\006proto3"
+,
+  "tensorflow/core/framework/graph.proto", &assign_descriptors_table_tensorflow_2fcore_2fframework_2fgraph_2eproto, 454,
+};
+
+void AddDescriptors_tensorflow_2fcore_2fframework_2fgraph_2eproto() {
+  static constexpr ::google::protobuf::internal::InitFunc deps[3] =
+  {
+    ::AddDescriptors_tensorflow_2fcore_2fframework_2fnode_5fdef_2eproto,
+    ::AddDescriptors_tensorflow_2fcore_2fframework_2ffunction_2eproto,
+    ::AddDescriptors_tensorflow_2fcore_2fframework_2fversions_2eproto,
+  };
+ ::google::protobuf::internal::AddDescriptors(&descriptor_table_tensorflow_2fcore_2fframework_2fgraph_2eproto, deps, 3);
+}
+
+// Force running AddDescriptors() at dynamic initialization time.
+static bool dynamic_init_dummy_tensorflow_2fcore_2fframework_2fgraph_2eproto = []() { AddDescriptors_tensorflow_2fcore_2fframework_2fgraph_2eproto(); return true; }();
+namespace tensorflow {
+
+// ===================================================================
+
+void GraphDef::InitAsDefaultInstance() {
+  ::tensorflow::_GraphDef_default_instance_._instance.get_mutable()->versions_ = const_cast< ::tensorflow::VersionDef*>(
+      ::tensorflow::VersionDef::internal_default_instance());
+  ::tensorflow::_GraphDef_default_instance_._instance.get_mutable()->library_ = const_cast< ::tensorflow::FunctionDefLibrary*>(
+      ::tensorflow::FunctionDefLibrary::internal_default_instance());
+}
+class GraphDef::HasBitSetters {
+ public:
+  static const ::tensorflow::VersionDef& versions(const GraphDef* msg);
+  static const ::tensorflow::FunctionDefLibrary& library(const GraphDef* msg);
+};
+
+const ::tensorflow::VersionDef&
+GraphDef::HasBitSetters::versions(const GraphDef* msg) {
+  return *msg->versions_;
+}
+const ::tensorflow::FunctionDefLibrary&
+GraphDef::HasBitSetters::library(const GraphDef* msg) {
+  return *msg->library_;
+}
+void GraphDef::clear_node() {
+  node_.Clear();
+}
+void GraphDef::unsafe_arena_set_allocated_versions(
+    ::tensorflow::VersionDef* versions) {
+  if (GetArenaNoVirtual() == NULL) {
+    delete versions_;
+  }
+  versions_ = versions;
+  if (versions) {
+    
+  } else {
+    
+  }
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.GraphDef.versions)
+}
+void GraphDef::clear_versions() {
+  if (GetArenaNoVirtual() == NULL && versions_ != NULL) {
+    delete versions_;
+  }
+  versions_ = NULL;
+}
+void GraphDef::unsafe_arena_set_allocated_library(
+    ::tensorflow::FunctionDefLibrary* library) {
+  if (GetArenaNoVirtual() == NULL) {
+    delete library_;
+  }
+  library_ = library;
+  if (library) {
+    
+  } else {
+    
+  }
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.GraphDef.library)
+}
+void GraphDef::clear_library() {
+  if (GetArenaNoVirtual() == NULL && library_ != NULL) {
+    delete library_;
+  }
+  library_ = NULL;
+}
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int GraphDef::kNodeFieldNumber;
+const int GraphDef::kVersionsFieldNumber;
+const int GraphDef::kVersionFieldNumber;
+const int GraphDef::kLibraryFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+GraphDef::GraphDef()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.GraphDef)
+}
+GraphDef::GraphDef(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena),
+  node_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.GraphDef)
+}
+GraphDef::GraphDef(const GraphDef& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL),
+      node_(from.node_) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  if (from.has_library()) {
+    library_ = new ::tensorflow::FunctionDefLibrary(*from.library_);
+  } else {
+    library_ = NULL;
+  }
+  if (from.has_versions()) {
+    versions_ = new ::tensorflow::VersionDef(*from.versions_);
+  } else {
+    versions_ = NULL;
+  }
+  version_ = from.version_;
+  // @@protoc_insertion_point(copy_constructor:tensorflow.GraphDef)
+}
+
+void GraphDef::SharedCtor() {
+  ::google::protobuf::internal::InitSCC(
+      &scc_info_GraphDef_tensorflow_2fcore_2fframework_2fgraph_2eproto.base);
+  ::memset(&library_, 0, static_cast<size_t>(
+      reinterpret_cast<char*>(&version_) -
+      reinterpret_cast<char*>(&library_)) + sizeof(version_));
+}
+
+GraphDef::~GraphDef() {
+  // @@protoc_insertion_point(destructor:tensorflow.GraphDef)
+  SharedDtor();
+}
+
+void GraphDef::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+  if (this != internal_default_instance()) delete library_;
+  if (this != internal_default_instance()) delete versions_;
+}
+
+void GraphDef::ArenaDtor(void* object) {
+  GraphDef* _this = reinterpret_cast< GraphDef* >(object);
+  (void)_this;
+}
+void GraphDef::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void GraphDef::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const GraphDef& GraphDef::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_GraphDef_tensorflow_2fcore_2fframework_2fgraph_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void GraphDef::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.GraphDef)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  node_.Clear();
+  if (GetArenaNoVirtual() == NULL && library_ != NULL) {
+    delete library_;
+  }
+  library_ = NULL;
+  if (GetArenaNoVirtual() == NULL && versions_ != NULL) {
+    delete versions_;
+  }
+  versions_ = NULL;
+  version_ = 0;
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* GraphDef::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<GraphDef*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // repeated .tensorflow.NodeDef node = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 10) goto handle_unusual;
+        do {
+          ptr = Varint::Parse32Inline(ptr, &size);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          parser_till_end = ::tensorflow::NodeDef::_InternalParse;
+          object = msg->add_node();
+          if (size > end - ptr) goto len_delim_till_end;
+          auto newend = ptr + size;
+          bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                         ptr, newend);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          ptr = newend;
+          if (ptr >= end) break;
+        } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 10 && (ptr += 1));
+        break;
+      }
+      // .tensorflow.FunctionDefLibrary library = 2;
+      case 2: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 18) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        parser_till_end = ::tensorflow::FunctionDefLibrary::_InternalParse;
+        object = msg->mutable_library();
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                       ptr, newend);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+        ptr = newend;
+        break;
+      }
+      // int32 version = 3 [deprecated = true];
+      case 3: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 24) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::google::protobuf::int32 value = val;
+        msg->set_version(value);
+        break;
+      }
+      // .tensorflow.VersionDef versions = 4;
+      case 4: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 34) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        parser_till_end = ::tensorflow::VersionDef::_InternalParse;
+        object = msg->mutable_versions();
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                       ptr, newend);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+        ptr = newend;
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool GraphDef::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.GraphDef)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // repeated .tensorflow.NodeDef node = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (10 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+                input, add_node()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // .tensorflow.FunctionDefLibrary library = 2;
+      case 2: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (18 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+               input, mutable_library()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // int32 version = 3 [deprecated = true];
+      case 3: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (24 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
+                 input, &version_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // .tensorflow.VersionDef versions = 4;
+      case 4: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (34 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+               input, mutable_versions()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.GraphDef)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.GraphDef)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void GraphDef::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.GraphDef)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // repeated .tensorflow.NodeDef node = 1;
+  for (unsigned int i = 0,
+      n = static_cast<unsigned int>(this->node_size()); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      1,
+      this->node(static_cast<int>(i)),
+      output);
+  }
+
+  // .tensorflow.FunctionDefLibrary library = 2;
+  if (this->has_library()) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      2, HasBitSetters::library(this), output);
+  }
+
+  // int32 version = 3 [deprecated = true];
+  if (this->version() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt32(3, this->version(), output);
+  }
+
+  // .tensorflow.VersionDef versions = 4;
+  if (this->has_versions()) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      4, HasBitSetters::versions(this), output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.GraphDef)
+}
+
+::google::protobuf::uint8* GraphDef::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.GraphDef)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // repeated .tensorflow.NodeDef node = 1;
+  for (unsigned int i = 0,
+      n = static_cast<unsigned int>(this->node_size()); i < n; i++) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        1, this->node(static_cast<int>(i)), deterministic, target);
+  }
+
+  // .tensorflow.FunctionDefLibrary library = 2;
+  if (this->has_library()) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        2, HasBitSetters::library(this), deterministic, target);
+  }
+
+  // int32 version = 3 [deprecated = true];
+  if (this->version() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt32ToArray(3, this->version(), target);
+  }
+
+  // .tensorflow.VersionDef versions = 4;
+  if (this->has_versions()) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        4, HasBitSetters::versions(this), deterministic, target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.GraphDef)
+  return target;
+}
+
+size_t GraphDef::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.GraphDef)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // repeated .tensorflow.NodeDef node = 1;
+  {
+    unsigned int count = static_cast<unsigned int>(this->node_size());
+    total_size += 1UL * count;
+    for (unsigned int i = 0; i < count; i++) {
+      total_size +=
+        ::google::protobuf::internal::WireFormatLite::MessageSize(
+          this->node(static_cast<int>(i)));
+    }
+  }
+
+  // .tensorflow.FunctionDefLibrary library = 2;
+  if (this->has_library()) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::MessageSize(
+        *library_);
+  }
+
+  // .tensorflow.VersionDef versions = 4;
+  if (this->has_versions()) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::MessageSize(
+        *versions_);
+  }
+
+  // int32 version = 3 [deprecated = true];
+  if (this->version() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::Int32Size(
+        this->version());
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void GraphDef::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.GraphDef)
+  GOOGLE_DCHECK_NE(&from, this);
+  const GraphDef* source =
+      ::google::protobuf::DynamicCastToGenerated<GraphDef>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.GraphDef)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.GraphDef)
+    MergeFrom(*source);
+  }
+}
+
+void GraphDef::MergeFrom(const GraphDef& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.GraphDef)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  node_.MergeFrom(from.node_);
+  if (from.has_library()) {
+    mutable_library()->::tensorflow::FunctionDefLibrary::MergeFrom(from.library());
+  }
+  if (from.has_versions()) {
+    mutable_versions()->::tensorflow::VersionDef::MergeFrom(from.versions());
+  }
+  if (from.version() != 0) {
+    set_version(from.version());
+  }
+}
+
+void GraphDef::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.GraphDef)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void GraphDef::CopyFrom(const GraphDef& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.GraphDef)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool GraphDef::IsInitialized() const {
+  return true;
+}
+
+void GraphDef::Swap(GraphDef* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    GraphDef* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void GraphDef::UnsafeArenaSwap(GraphDef* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void GraphDef::InternalSwap(GraphDef* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  CastToBase(&node_)->InternalSwap(CastToBase(&other->node_));
+  swap(library_, other->library_);
+  swap(versions_, other->versions_);
+  swap(version_, other->version_);
+}
+
+::google::protobuf::Metadata GraphDef::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fframework_2fgraph_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fframework_2fgraph_2eproto[kIndexInFileMessages];
+}
+
+
+// @@protoc_insertion_point(namespace_scope)
+}  // namespace tensorflow
+namespace google {
+namespace protobuf {
+template<> PROTOBUF_NOINLINE ::tensorflow::GraphDef* Arena::CreateMaybeMessage< ::tensorflow::GraphDef >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::GraphDef >(arena);
+}
+}  // namespace protobuf
+}  // namespace google
+
+// @@protoc_insertion_point(global_scope)
+#include <google/protobuf/port_undef.inc>
diff --git a/tensorflow/core/framework/graph.pb.h b/tensorflow/core/framework/graph.pb.h
new file mode 100644 (file)
index 0000000..199de27
--- /dev/null
@@ -0,0 +1,406 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: tensorflow/core/framework/graph.proto
+
+#ifndef PROTOBUF_INCLUDED_tensorflow_2fcore_2fframework_2fgraph_2eproto
+#define PROTOBUF_INCLUDED_tensorflow_2fcore_2fframework_2fgraph_2eproto
+
+#include <limits>
+#include <string>
+
+#include <google/protobuf/port_def.inc>
+#if PROTOBUF_VERSION < 3006001
+#error This file was generated by a newer version of protoc which is
+#error incompatible with your Protocol Buffer headers. Please update
+#error your headers.
+#endif
+#if 3006001 < PROTOBUF_MIN_PROTOC_VERSION
+#error This file was generated by an older version of protoc which is
+#error incompatible with your Protocol Buffer headers. Please
+#error regenerate this file with a newer version of protoc.
+#endif
+
+#include <google/protobuf/port_undef.inc>
+#include <google/protobuf/io/coded_stream.h>
+#include <google/protobuf/arena.h>
+#include <google/protobuf/arenastring.h>
+#include <google/protobuf/generated_message_table_driven.h>
+#include <google/protobuf/generated_message_util.h>
+#include <google/protobuf/inlined_string_field.h>
+#include <google/protobuf/metadata.h>
+#include <google/protobuf/message.h>
+#include <google/protobuf/repeated_field.h>  // IWYU pragma: export
+#include <google/protobuf/extension_set.h>  // IWYU pragma: export
+#include <google/protobuf/unknown_field_set.h>
+#include "tensorflow/core/framework/node_def.pb.h"
+#include "tensorflow/core/framework/function.pb.h"
+#include "tensorflow/core/framework/versions.pb.h"
+// @@protoc_insertion_point(includes)
+#include <google/protobuf/port_def.inc>
+#define PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fframework_2fgraph_2eproto
+
+// Internal implementation detail -- do not use these members.
+struct TableStruct_tensorflow_2fcore_2fframework_2fgraph_2eproto {
+  static const ::google::protobuf::internal::ParseTableField entries[]
+    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
+  static const ::google::protobuf::internal::AuxillaryParseTableField aux[]
+    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
+  static const ::google::protobuf::internal::ParseTable schema[1]
+    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
+  static const ::google::protobuf::internal::FieldMetadata field_metadata[];
+  static const ::google::protobuf::internal::SerializationTable serialization_table[];
+  static const ::google::protobuf::uint32 offsets[];
+};
+void AddDescriptors_tensorflow_2fcore_2fframework_2fgraph_2eproto();
+namespace tensorflow {
+class GraphDef;
+class GraphDefDefaultTypeInternal;
+extern GraphDefDefaultTypeInternal _GraphDef_default_instance_;
+}  // namespace tensorflow
+namespace google {
+namespace protobuf {
+template<> ::tensorflow::GraphDef* Arena::CreateMaybeMessage<::tensorflow::GraphDef>(Arena*);
+}  // namespace protobuf
+}  // namespace google
+namespace tensorflow {
+
+// ===================================================================
+
+class GraphDef : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.GraphDef) */ {
+ public:
+  GraphDef();
+  virtual ~GraphDef();
+
+  GraphDef(const GraphDef& from);
+
+  inline GraphDef& operator=(const GraphDef& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  GraphDef(GraphDef&& from) noexcept
+    : GraphDef() {
+    *this = ::std::move(from);
+  }
+
+  inline GraphDef& operator=(GraphDef&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const GraphDef& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const GraphDef* internal_default_instance() {
+    return reinterpret_cast<const GraphDef*>(
+               &_GraphDef_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    0;
+
+  void UnsafeArenaSwap(GraphDef* other);
+  void Swap(GraphDef* other);
+  friend void swap(GraphDef& a, GraphDef& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline GraphDef* New() const final {
+    return CreateMaybeMessage<GraphDef>(NULL);
+  }
+
+  GraphDef* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<GraphDef>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const GraphDef& from);
+  void MergeFrom(const GraphDef& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(GraphDef* other);
+  protected:
+  explicit GraphDef(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // repeated .tensorflow.NodeDef node = 1;
+  int node_size() const;
+  void clear_node();
+  static const int kNodeFieldNumber = 1;
+  ::tensorflow::NodeDef* mutable_node(int index);
+  ::google::protobuf::RepeatedPtrField< ::tensorflow::NodeDef >*
+      mutable_node();
+  const ::tensorflow::NodeDef& node(int index) const;
+  ::tensorflow::NodeDef* add_node();
+  const ::google::protobuf::RepeatedPtrField< ::tensorflow::NodeDef >&
+      node() const;
+
+  // .tensorflow.FunctionDefLibrary library = 2;
+  bool has_library() const;
+  void clear_library();
+  static const int kLibraryFieldNumber = 2;
+  const ::tensorflow::FunctionDefLibrary& library() const;
+  ::tensorflow::FunctionDefLibrary* release_library();
+  ::tensorflow::FunctionDefLibrary* mutable_library();
+  void set_allocated_library(::tensorflow::FunctionDefLibrary* library);
+  void unsafe_arena_set_allocated_library(
+      ::tensorflow::FunctionDefLibrary* library);
+  ::tensorflow::FunctionDefLibrary* unsafe_arena_release_library();
+
+  // .tensorflow.VersionDef versions = 4;
+  bool has_versions() const;
+  void clear_versions();
+  static const int kVersionsFieldNumber = 4;
+  const ::tensorflow::VersionDef& versions() const;
+  ::tensorflow::VersionDef* release_versions();
+  ::tensorflow::VersionDef* mutable_versions();
+  void set_allocated_versions(::tensorflow::VersionDef* versions);
+  void unsafe_arena_set_allocated_versions(
+      ::tensorflow::VersionDef* versions);
+  ::tensorflow::VersionDef* unsafe_arena_release_versions();
+
+  // int32 version = 3 [deprecated = true];
+  PROTOBUF_DEPRECATED void clear_version();
+  PROTOBUF_DEPRECATED static const int kVersionFieldNumber = 3;
+  PROTOBUF_DEPRECATED ::google::protobuf::int32 version() const;
+  PROTOBUF_DEPRECATED void set_version(::google::protobuf::int32 value);
+
+  // @@protoc_insertion_point(class_scope:tensorflow.GraphDef)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  ::google::protobuf::RepeatedPtrField< ::tensorflow::NodeDef > node_;
+  ::tensorflow::FunctionDefLibrary* library_;
+  ::tensorflow::VersionDef* versions_;
+  ::google::protobuf::int32 version_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fframework_2fgraph_2eproto;
+};
+// ===================================================================
+
+
+// ===================================================================
+
+#ifdef __GNUC__
+  #pragma GCC diagnostic push
+  #pragma GCC diagnostic ignored "-Wstrict-aliasing"
+#endif  // __GNUC__
+// GraphDef
+
+// repeated .tensorflow.NodeDef node = 1;
+inline int GraphDef::node_size() const {
+  return node_.size();
+}
+inline ::tensorflow::NodeDef* GraphDef::mutable_node(int index) {
+  // @@protoc_insertion_point(field_mutable:tensorflow.GraphDef.node)
+  return node_.Mutable(index);
+}
+inline ::google::protobuf::RepeatedPtrField< ::tensorflow::NodeDef >*
+GraphDef::mutable_node() {
+  // @@protoc_insertion_point(field_mutable_list:tensorflow.GraphDef.node)
+  return &node_;
+}
+inline const ::tensorflow::NodeDef& GraphDef::node(int index) const {
+  // @@protoc_insertion_point(field_get:tensorflow.GraphDef.node)
+  return node_.Get(index);
+}
+inline ::tensorflow::NodeDef* GraphDef::add_node() {
+  // @@protoc_insertion_point(field_add:tensorflow.GraphDef.node)
+  return node_.Add();
+}
+inline const ::google::protobuf::RepeatedPtrField< ::tensorflow::NodeDef >&
+GraphDef::node() const {
+  // @@protoc_insertion_point(field_list:tensorflow.GraphDef.node)
+  return node_;
+}
+
+// .tensorflow.VersionDef versions = 4;
+inline bool GraphDef::has_versions() const {
+  return this != internal_default_instance() && versions_ != NULL;
+}
+inline const ::tensorflow::VersionDef& GraphDef::versions() const {
+  const ::tensorflow::VersionDef* p = versions_;
+  // @@protoc_insertion_point(field_get:tensorflow.GraphDef.versions)
+  return p != NULL ? *p : *reinterpret_cast<const ::tensorflow::VersionDef*>(
+      &::tensorflow::_VersionDef_default_instance_);
+}
+inline ::tensorflow::VersionDef* GraphDef::release_versions() {
+  // @@protoc_insertion_point(field_release:tensorflow.GraphDef.versions)
+  
+  ::tensorflow::VersionDef* temp = versions_;
+  if (GetArenaNoVirtual() != NULL) {
+    temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
+  }
+  versions_ = NULL;
+  return temp;
+}
+inline ::tensorflow::VersionDef* GraphDef::unsafe_arena_release_versions() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.GraphDef.versions)
+  
+  ::tensorflow::VersionDef* temp = versions_;
+  versions_ = NULL;
+  return temp;
+}
+inline ::tensorflow::VersionDef* GraphDef::mutable_versions() {
+  
+  if (versions_ == NULL) {
+    auto* p = CreateMaybeMessage<::tensorflow::VersionDef>(GetArenaNoVirtual());
+    versions_ = p;
+  }
+  // @@protoc_insertion_point(field_mutable:tensorflow.GraphDef.versions)
+  return versions_;
+}
+inline void GraphDef::set_allocated_versions(::tensorflow::VersionDef* versions) {
+  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
+  if (message_arena == NULL) {
+    delete reinterpret_cast< ::google::protobuf::MessageLite*>(versions_);
+  }
+  if (versions) {
+    ::google::protobuf::Arena* submessage_arena =
+      reinterpret_cast<::google::protobuf::MessageLite*>(versions)->GetArena();
+    if (message_arena != submessage_arena) {
+      versions = ::google::protobuf::internal::GetOwnedMessage(
+          message_arena, versions, submessage_arena);
+    }
+    
+  } else {
+    
+  }
+  versions_ = versions;
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.GraphDef.versions)
+}
+
+// int32 version = 3 [deprecated = true];
+inline void GraphDef::clear_version() {
+  version_ = 0;
+}
+inline ::google::protobuf::int32 GraphDef::version() const {
+  // @@protoc_insertion_point(field_get:tensorflow.GraphDef.version)
+  return version_;
+}
+inline void GraphDef::set_version(::google::protobuf::int32 value) {
+  
+  version_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.GraphDef.version)
+}
+
+// .tensorflow.FunctionDefLibrary library = 2;
+inline bool GraphDef::has_library() const {
+  return this != internal_default_instance() && library_ != NULL;
+}
+inline const ::tensorflow::FunctionDefLibrary& GraphDef::library() const {
+  const ::tensorflow::FunctionDefLibrary* p = library_;
+  // @@protoc_insertion_point(field_get:tensorflow.GraphDef.library)
+  return p != NULL ? *p : *reinterpret_cast<const ::tensorflow::FunctionDefLibrary*>(
+      &::tensorflow::_FunctionDefLibrary_default_instance_);
+}
+inline ::tensorflow::FunctionDefLibrary* GraphDef::release_library() {
+  // @@protoc_insertion_point(field_release:tensorflow.GraphDef.library)
+  
+  ::tensorflow::FunctionDefLibrary* temp = library_;
+  if (GetArenaNoVirtual() != NULL) {
+    temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
+  }
+  library_ = NULL;
+  return temp;
+}
+inline ::tensorflow::FunctionDefLibrary* GraphDef::unsafe_arena_release_library() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.GraphDef.library)
+  
+  ::tensorflow::FunctionDefLibrary* temp = library_;
+  library_ = NULL;
+  return temp;
+}
+inline ::tensorflow::FunctionDefLibrary* GraphDef::mutable_library() {
+  
+  if (library_ == NULL) {
+    auto* p = CreateMaybeMessage<::tensorflow::FunctionDefLibrary>(GetArenaNoVirtual());
+    library_ = p;
+  }
+  // @@protoc_insertion_point(field_mutable:tensorflow.GraphDef.library)
+  return library_;
+}
+inline void GraphDef::set_allocated_library(::tensorflow::FunctionDefLibrary* library) {
+  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
+  if (message_arena == NULL) {
+    delete reinterpret_cast< ::google::protobuf::MessageLite*>(library_);
+  }
+  if (library) {
+    ::google::protobuf::Arena* submessage_arena =
+      reinterpret_cast<::google::protobuf::MessageLite*>(library)->GetArena();
+    if (message_arena != submessage_arena) {
+      library = ::google::protobuf::internal::GetOwnedMessage(
+          message_arena, library, submessage_arena);
+    }
+    
+  } else {
+    
+  }
+  library_ = library;
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.GraphDef.library)
+}
+
+#ifdef __GNUC__
+  #pragma GCC diagnostic pop
+#endif  // __GNUC__
+
+// @@protoc_insertion_point(namespace_scope)
+
+}  // namespace tensorflow
+
+// @@protoc_insertion_point(global_scope)
+
+#include <google/protobuf/port_undef.inc>
+#endif  // PROTOBUF_INCLUDED_tensorflow_2fcore_2fframework_2fgraph_2eproto
diff --git a/tensorflow/core/framework/graph.proto b/tensorflow/core/framework/graph.proto
new file mode 100644 (file)
index 0000000..76d3589
--- /dev/null
@@ -0,0 +1,56 @@
+syntax = "proto3";
+
+package tensorflow;
+option cc_enable_arenas = true;
+option java_outer_classname = "GraphProtos";
+option java_multiple_files = true;
+option java_package = "org.tensorflow.framework";
+option go_package = "github.com/tensorflow/tensorflow/tensorflow/go/core/framework";
+import "tensorflow/core/framework/node_def.proto";
+import "tensorflow/core/framework/function.proto";
+import "tensorflow/core/framework/versions.proto";
+
+// Represents the graph of operations
+message GraphDef {
+  repeated NodeDef node = 1;
+
+  // Compatibility versions of the graph.  See core/public/version.h for version
+  // history.  The GraphDef version is distinct from the TensorFlow version, and
+  // each release of TensorFlow will support a range of GraphDef versions.
+  VersionDef versions = 4;
+
+  // Deprecated single version field; use versions above instead.  Since all
+  // GraphDef changes before "versions" was introduced were forward
+  // compatible, this field is entirely ignored.
+  int32 version = 3 [deprecated = true];
+
+  // EXPERIMENTAL. DO NOT USE OR DEPEND ON THIS YET.
+  //
+  // "library" provides user-defined functions.
+  //
+  // Naming:
+  //   * library.function.name are in a flat namespace.
+  //     NOTE: We may need to change it to be hierarchical to support
+  //     different orgs. E.g.,
+  //     { "/google/nn", { ... }},
+  //     { "/google/vision", { ... }}
+  //     { "/org_foo/module_bar", { ... }}
+  //     map<string, FunctionDefLib> named_lib;
+  //   * If node[i].op is the name of one function in "library",
+  //     node[i] is deemed as a function call. Otherwise, node[i].op
+  //     must be a primitive operation supported by the runtime.
+  //
+  //
+  // Function call semantics:
+  //
+  //   * The callee may start execution as soon as some of its inputs
+  //     are ready. The caller may want to use Tuple() mechanism to
+  //     ensure all inputs are ready in the same time.
+  //
+  //   * The consumer of return values may start executing as soon as
+  //     the return values the consumer depends on are ready.  The
+  //     consumer may want to use Tuple() mechanism to ensure the
+  //     consumer does not start until all return values of the callee
+  //     function are ready.
+  FunctionDefLibrary library = 2;
+};
diff --git a/tensorflow/core/framework/graph_transfer_info.pb.cc b/tensorflow/core/framework/graph_transfer_info.pb.cc
new file mode 100644 (file)
index 0000000..2fdaf37
--- /dev/null
@@ -0,0 +1,4313 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: tensorflow/core/framework/graph_transfer_info.proto
+
+#include "tensorflow/core/framework/graph_transfer_info.pb.h"
+
+#include <algorithm>
+
+#include <google/protobuf/stubs/common.h>
+#include <google/protobuf/io/coded_stream.h>
+#include <google/protobuf/extension_set.h>
+#include <google/protobuf/wire_format_lite_inl.h>
+#include <google/protobuf/descriptor.h>
+#include <google/protobuf/generated_message_reflection.h>
+#include <google/protobuf/reflection_ops.h>
+#include <google/protobuf/wire_format.h>
+// @@protoc_insertion_point(includes)
+#include <google/protobuf/port_def.inc>
+
+extern PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fframework_2fgraph_5ftransfer_5finfo_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_GraphTransferConstNodeInfo_tensorflow_2fcore_2fframework_2fgraph_5ftransfer_5finfo_2eproto;
+extern PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fframework_2fgraph_5ftransfer_5finfo_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_GraphTransferGraphInputNodeInfo_tensorflow_2fcore_2fframework_2fgraph_5ftransfer_5finfo_2eproto;
+extern PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fframework_2fgraph_5ftransfer_5finfo_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_GraphTransferGraphOutputNodeInfo_tensorflow_2fcore_2fframework_2fgraph_5ftransfer_5finfo_2eproto;
+extern PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fframework_2fgraph_5ftransfer_5finfo_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_GraphTransferNodeInfo_tensorflow_2fcore_2fframework_2fgraph_5ftransfer_5finfo_2eproto;
+extern PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fframework_2fgraph_5ftransfer_5finfo_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_GraphTransferNodeInput_tensorflow_2fcore_2fframework_2fgraph_5ftransfer_5finfo_2eproto;
+extern PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fframework_2fgraph_5ftransfer_5finfo_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_GraphTransferNodeOutputInfo_tensorflow_2fcore_2fframework_2fgraph_5ftransfer_5finfo_2eproto;
+extern PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fframework_2fgraph_5ftransfer_5finfo_2eproto ::google::protobuf::internal::SCCInfo<1> scc_info_GraphTransferNodeInputInfo_tensorflow_2fcore_2fframework_2fgraph_5ftransfer_5finfo_2eproto;
+namespace tensorflow {
+class GraphTransferNodeInputDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<GraphTransferNodeInput> _instance;
+} _GraphTransferNodeInput_default_instance_;
+class GraphTransferNodeInfoDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<GraphTransferNodeInfo> _instance;
+} _GraphTransferNodeInfo_default_instance_;
+class GraphTransferConstNodeInfoDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<GraphTransferConstNodeInfo> _instance;
+} _GraphTransferConstNodeInfo_default_instance_;
+class GraphTransferNodeInputInfoDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<GraphTransferNodeInputInfo> _instance;
+} _GraphTransferNodeInputInfo_default_instance_;
+class GraphTransferNodeOutputInfoDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<GraphTransferNodeOutputInfo> _instance;
+} _GraphTransferNodeOutputInfo_default_instance_;
+class GraphTransferGraphInputNodeInfoDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<GraphTransferGraphInputNodeInfo> _instance;
+} _GraphTransferGraphInputNodeInfo_default_instance_;
+class GraphTransferGraphOutputNodeInfoDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<GraphTransferGraphOutputNodeInfo> _instance;
+} _GraphTransferGraphOutputNodeInfo_default_instance_;
+class GraphTransferInfoDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<GraphTransferInfo> _instance;
+} _GraphTransferInfo_default_instance_;
+}  // namespace tensorflow
+static void InitDefaultsGraphTransferNodeInput_tensorflow_2fcore_2fframework_2fgraph_5ftransfer_5finfo_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_GraphTransferNodeInput_default_instance_;
+    new (ptr) ::tensorflow::GraphTransferNodeInput();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::GraphTransferNodeInput::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<0> scc_info_GraphTransferNodeInput_tensorflow_2fcore_2fframework_2fgraph_5ftransfer_5finfo_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsGraphTransferNodeInput_tensorflow_2fcore_2fframework_2fgraph_5ftransfer_5finfo_2eproto}, {}};
+
+static void InitDefaultsGraphTransferNodeInfo_tensorflow_2fcore_2fframework_2fgraph_5ftransfer_5finfo_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_GraphTransferNodeInfo_default_instance_;
+    new (ptr) ::tensorflow::GraphTransferNodeInfo();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::GraphTransferNodeInfo::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<0> scc_info_GraphTransferNodeInfo_tensorflow_2fcore_2fframework_2fgraph_5ftransfer_5finfo_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsGraphTransferNodeInfo_tensorflow_2fcore_2fframework_2fgraph_5ftransfer_5finfo_2eproto}, {}};
+
+static void InitDefaultsGraphTransferConstNodeInfo_tensorflow_2fcore_2fframework_2fgraph_5ftransfer_5finfo_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_GraphTransferConstNodeInfo_default_instance_;
+    new (ptr) ::tensorflow::GraphTransferConstNodeInfo();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::GraphTransferConstNodeInfo::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<0> scc_info_GraphTransferConstNodeInfo_tensorflow_2fcore_2fframework_2fgraph_5ftransfer_5finfo_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsGraphTransferConstNodeInfo_tensorflow_2fcore_2fframework_2fgraph_5ftransfer_5finfo_2eproto}, {}};
+
+static void InitDefaultsGraphTransferNodeInputInfo_tensorflow_2fcore_2fframework_2fgraph_5ftransfer_5finfo_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_GraphTransferNodeInputInfo_default_instance_;
+    new (ptr) ::tensorflow::GraphTransferNodeInputInfo();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::GraphTransferNodeInputInfo::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<1> scc_info_GraphTransferNodeInputInfo_tensorflow_2fcore_2fframework_2fgraph_5ftransfer_5finfo_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsGraphTransferNodeInputInfo_tensorflow_2fcore_2fframework_2fgraph_5ftransfer_5finfo_2eproto}, {
+      &scc_info_GraphTransferNodeInput_tensorflow_2fcore_2fframework_2fgraph_5ftransfer_5finfo_2eproto.base,}};
+
+static void InitDefaultsGraphTransferNodeOutputInfo_tensorflow_2fcore_2fframework_2fgraph_5ftransfer_5finfo_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_GraphTransferNodeOutputInfo_default_instance_;
+    new (ptr) ::tensorflow::GraphTransferNodeOutputInfo();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::GraphTransferNodeOutputInfo::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<0> scc_info_GraphTransferNodeOutputInfo_tensorflow_2fcore_2fframework_2fgraph_5ftransfer_5finfo_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsGraphTransferNodeOutputInfo_tensorflow_2fcore_2fframework_2fgraph_5ftransfer_5finfo_2eproto}, {}};
+
+static void InitDefaultsGraphTransferGraphInputNodeInfo_tensorflow_2fcore_2fframework_2fgraph_5ftransfer_5finfo_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_GraphTransferGraphInputNodeInfo_default_instance_;
+    new (ptr) ::tensorflow::GraphTransferGraphInputNodeInfo();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::GraphTransferGraphInputNodeInfo::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<0> scc_info_GraphTransferGraphInputNodeInfo_tensorflow_2fcore_2fframework_2fgraph_5ftransfer_5finfo_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsGraphTransferGraphInputNodeInfo_tensorflow_2fcore_2fframework_2fgraph_5ftransfer_5finfo_2eproto}, {}};
+
+static void InitDefaultsGraphTransferGraphOutputNodeInfo_tensorflow_2fcore_2fframework_2fgraph_5ftransfer_5finfo_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_GraphTransferGraphOutputNodeInfo_default_instance_;
+    new (ptr) ::tensorflow::GraphTransferGraphOutputNodeInfo();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::GraphTransferGraphOutputNodeInfo::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<0> scc_info_GraphTransferGraphOutputNodeInfo_tensorflow_2fcore_2fframework_2fgraph_5ftransfer_5finfo_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsGraphTransferGraphOutputNodeInfo_tensorflow_2fcore_2fframework_2fgraph_5ftransfer_5finfo_2eproto}, {}};
+
+static void InitDefaultsGraphTransferInfo_tensorflow_2fcore_2fframework_2fgraph_5ftransfer_5finfo_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_GraphTransferInfo_default_instance_;
+    new (ptr) ::tensorflow::GraphTransferInfo();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::GraphTransferInfo::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<6> scc_info_GraphTransferInfo_tensorflow_2fcore_2fframework_2fgraph_5ftransfer_5finfo_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 6, InitDefaultsGraphTransferInfo_tensorflow_2fcore_2fframework_2fgraph_5ftransfer_5finfo_2eproto}, {
+      &scc_info_GraphTransferNodeInfo_tensorflow_2fcore_2fframework_2fgraph_5ftransfer_5finfo_2eproto.base,
+      &scc_info_GraphTransferConstNodeInfo_tensorflow_2fcore_2fframework_2fgraph_5ftransfer_5finfo_2eproto.base,
+      &scc_info_GraphTransferNodeInputInfo_tensorflow_2fcore_2fframework_2fgraph_5ftransfer_5finfo_2eproto.base,
+      &scc_info_GraphTransferNodeOutputInfo_tensorflow_2fcore_2fframework_2fgraph_5ftransfer_5finfo_2eproto.base,
+      &scc_info_GraphTransferGraphInputNodeInfo_tensorflow_2fcore_2fframework_2fgraph_5ftransfer_5finfo_2eproto.base,
+      &scc_info_GraphTransferGraphOutputNodeInfo_tensorflow_2fcore_2fframework_2fgraph_5ftransfer_5finfo_2eproto.base,}};
+
+void InitDefaults_tensorflow_2fcore_2fframework_2fgraph_5ftransfer_5finfo_2eproto() {
+  ::google::protobuf::internal::InitSCC(&scc_info_GraphTransferNodeInput_tensorflow_2fcore_2fframework_2fgraph_5ftransfer_5finfo_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_GraphTransferNodeInfo_tensorflow_2fcore_2fframework_2fgraph_5ftransfer_5finfo_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_GraphTransferConstNodeInfo_tensorflow_2fcore_2fframework_2fgraph_5ftransfer_5finfo_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_GraphTransferNodeInputInfo_tensorflow_2fcore_2fframework_2fgraph_5ftransfer_5finfo_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_GraphTransferNodeOutputInfo_tensorflow_2fcore_2fframework_2fgraph_5ftransfer_5finfo_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_GraphTransferGraphInputNodeInfo_tensorflow_2fcore_2fframework_2fgraph_5ftransfer_5finfo_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_GraphTransferGraphOutputNodeInfo_tensorflow_2fcore_2fframework_2fgraph_5ftransfer_5finfo_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_GraphTransferInfo_tensorflow_2fcore_2fframework_2fgraph_5ftransfer_5finfo_2eproto.base);
+}
+
+::google::protobuf::Metadata file_level_metadata_tensorflow_2fcore_2fframework_2fgraph_5ftransfer_5finfo_2eproto[8];
+const ::google::protobuf::EnumDescriptor* file_level_enum_descriptors_tensorflow_2fcore_2fframework_2fgraph_5ftransfer_5finfo_2eproto[1];
+constexpr ::google::protobuf::ServiceDescriptor const** file_level_service_descriptors_tensorflow_2fcore_2fframework_2fgraph_5ftransfer_5finfo_2eproto = nullptr;
+
+const ::google::protobuf::uint32 TableStruct_tensorflow_2fcore_2fframework_2fgraph_5ftransfer_5finfo_2eproto::offsets[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = {
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::GraphTransferNodeInput, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::GraphTransferNodeInput, node_id_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::GraphTransferNodeInput, output_port_),
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::GraphTransferNodeInfo, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::GraphTransferNodeInfo, name_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::GraphTransferNodeInfo, node_id_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::GraphTransferNodeInfo, type_name_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::GraphTransferNodeInfo, soc_op_id_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::GraphTransferNodeInfo, padding_id_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::GraphTransferNodeInfo, input_count_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::GraphTransferNodeInfo, output_count_),
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::GraphTransferConstNodeInfo, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::GraphTransferConstNodeInfo, name_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::GraphTransferConstNodeInfo, node_id_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::GraphTransferConstNodeInfo, shape_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::GraphTransferConstNodeInfo, data_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::GraphTransferConstNodeInfo, dtype_),
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::GraphTransferNodeInputInfo, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::GraphTransferNodeInputInfo, node_id_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::GraphTransferNodeInputInfo, node_input_),
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::GraphTransferNodeOutputInfo, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::GraphTransferNodeOutputInfo, node_id_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::GraphTransferNodeOutputInfo, max_byte_size_),
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::GraphTransferGraphInputNodeInfo, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::GraphTransferGraphInputNodeInfo, name_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::GraphTransferGraphInputNodeInfo, shape_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::GraphTransferGraphInputNodeInfo, dtype_),
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::GraphTransferGraphOutputNodeInfo, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::GraphTransferGraphOutputNodeInfo, name_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::GraphTransferGraphOutputNodeInfo, shape_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::GraphTransferGraphOutputNodeInfo, dtype_),
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::GraphTransferInfo, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::GraphTransferInfo, node_info_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::GraphTransferInfo, const_node_info_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::GraphTransferInfo, node_input_info_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::GraphTransferInfo, node_output_info_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::GraphTransferInfo, graph_input_node_info_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::GraphTransferInfo, graph_output_node_info_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::GraphTransferInfo, destination_),
+};
+static const ::google::protobuf::internal::MigrationSchema schemas[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = {
+  { 0, -1, sizeof(::tensorflow::GraphTransferNodeInput)},
+  { 7, -1, sizeof(::tensorflow::GraphTransferNodeInfo)},
+  { 19, -1, sizeof(::tensorflow::GraphTransferConstNodeInfo)},
+  { 29, -1, sizeof(::tensorflow::GraphTransferNodeInputInfo)},
+  { 36, -1, sizeof(::tensorflow::GraphTransferNodeOutputInfo)},
+  { 43, -1, sizeof(::tensorflow::GraphTransferGraphInputNodeInfo)},
+  { 51, -1, sizeof(::tensorflow::GraphTransferGraphOutputNodeInfo)},
+  { 59, -1, sizeof(::tensorflow::GraphTransferInfo)},
+};
+
+static ::google::protobuf::Message const * const file_default_instances[] = {
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_GraphTransferNodeInput_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_GraphTransferNodeInfo_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_GraphTransferConstNodeInfo_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_GraphTransferNodeInputInfo_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_GraphTransferNodeOutputInfo_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_GraphTransferGraphInputNodeInfo_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_GraphTransferGraphOutputNodeInfo_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_GraphTransferInfo_default_instance_),
+};
+
+::google::protobuf::internal::AssignDescriptorsTable assign_descriptors_table_tensorflow_2fcore_2fframework_2fgraph_5ftransfer_5finfo_2eproto = {
+  {}, AddDescriptors_tensorflow_2fcore_2fframework_2fgraph_5ftransfer_5finfo_2eproto, "tensorflow/core/framework/graph_transfer_info.proto", schemas,
+  file_default_instances, TableStruct_tensorflow_2fcore_2fframework_2fgraph_5ftransfer_5finfo_2eproto::offsets,
+  file_level_metadata_tensorflow_2fcore_2fframework_2fgraph_5ftransfer_5finfo_2eproto, 8, file_level_enum_descriptors_tensorflow_2fcore_2fframework_2fgraph_5ftransfer_5finfo_2eproto, file_level_service_descriptors_tensorflow_2fcore_2fframework_2fgraph_5ftransfer_5finfo_2eproto,
+};
+
+::google::protobuf::internal::DescriptorTable descriptor_table_tensorflow_2fcore_2fframework_2fgraph_5ftransfer_5finfo_2eproto = {
+  false, InitDefaults_tensorflow_2fcore_2fframework_2fgraph_5ftransfer_5finfo_2eproto, 
+  "\n3tensorflow/core/framework/graph_transf"
+  "er_info.proto\022\ntensorflow\032%tensorflow/co"
+  "re/framework/types.proto\">\n\026GraphTransfe"
+  "rNodeInput\022\017\n\007node_id\030\001 \001(\005\022\023\n\013output_po"
+  "rt\030\002 \001(\005\"\233\001\n\025GraphTransferNodeInfo\022\014\n\004na"
+  "me\030\001 \001(\t\022\017\n\007node_id\030\002 \001(\005\022\021\n\ttype_name\030\003"
+  " \001(\t\022\021\n\tsoc_op_id\030\004 \001(\005\022\022\n\npadding_id\030\005 "
+  "\001(\005\022\023\n\013input_count\030\006 \001(\005\022\024\n\014output_count"
+  "\030\007 \001(\005\"}\n\032GraphTransferConstNodeInfo\022\014\n\004"
+  "name\030\001 \001(\t\022\017\n\007node_id\030\002 \001(\005\022\r\n\005shape\030\003 \003"
+  "(\003\022\014\n\004data\030\004 \001(\014\022#\n\005dtype\030\005 \001(\0162\024.tensor"
+  "flow.DataType\"e\n\032GraphTransferNodeInputI"
+  "nfo\022\017\n\007node_id\030\001 \001(\005\0226\n\nnode_input\030\002 \003(\013"
+  "2\".tensorflow.GraphTransferNodeInput\"E\n\033"
+  "GraphTransferNodeOutputInfo\022\017\n\007node_id\030\001"
+  " \001(\005\022\025\n\rmax_byte_size\030\002 \003(\005\"c\n\037GraphTran"
+  "sferGraphInputNodeInfo\022\014\n\004name\030\001 \001(\t\022\r\n\005"
+  "shape\030\002 \003(\003\022#\n\005dtype\030\003 \001(\0162\024.tensorflow."
+  "DataType\"d\n GraphTransferGraphOutputNode"
+  "Info\022\014\n\004name\030\001 \001(\t\022\r\n\005shape\030\002 \003(\003\022#\n\005dty"
+  "pe\030\003 \001(\0162\024.tensorflow.DataType\"\215\004\n\021Graph"
+  "TransferInfo\0224\n\tnode_info\030\001 \003(\0132!.tensor"
+  "flow.GraphTransferNodeInfo\022\?\n\017const_node"
+  "_info\030\002 \003(\0132&.tensorflow.GraphTransferCo"
+  "nstNodeInfo\022\?\n\017node_input_info\030\003 \003(\0132&.t"
+  "ensorflow.GraphTransferNodeInputInfo\022A\n\020"
+  "node_output_info\030\004 \003(\0132\'.tensorflow.Grap"
+  "hTransferNodeOutputInfo\022J\n\025graph_input_n"
+  "ode_info\030\005 \003(\0132+.tensorflow.GraphTransfe"
+  "rGraphInputNodeInfo\022L\n\026graph_output_node"
+  "_info\030\006 \003(\0132,.tensorflow.GraphTransferGr"
+  "aphOutputNodeInfo\022>\n\013destination\030\007 \001(\0162)"
+  ".tensorflow.GraphTransferInfo.Destinatio"
+  "n\"#\n\013Destination\022\007\n\003NOP\020\000\022\013\n\007HEXAGON\020\001Bv"
+  "\n\030org.tensorflow.frameworkB\026GraphTransfe"
+  "rInfoProtoP\001Z=github.com/tensorflow/tens"
+  "orflow/tensorflow/go/core/framework\370\001\001b\006"
+  "proto3"
+,
+  "tensorflow/core/framework/graph_transfer_info.proto", &assign_descriptors_table_tensorflow_2fcore_2fframework_2fgraph_5ftransfer_5finfo_2eproto, 1486,
+};
+
+void AddDescriptors_tensorflow_2fcore_2fframework_2fgraph_5ftransfer_5finfo_2eproto() {
+  static constexpr ::google::protobuf::internal::InitFunc deps[1] =
+  {
+    ::AddDescriptors_tensorflow_2fcore_2fframework_2ftypes_2eproto,
+  };
+ ::google::protobuf::internal::AddDescriptors(&descriptor_table_tensorflow_2fcore_2fframework_2fgraph_5ftransfer_5finfo_2eproto, deps, 1);
+}
+
+// Force running AddDescriptors() at dynamic initialization time.
+static bool dynamic_init_dummy_tensorflow_2fcore_2fframework_2fgraph_5ftransfer_5finfo_2eproto = []() { AddDescriptors_tensorflow_2fcore_2fframework_2fgraph_5ftransfer_5finfo_2eproto(); return true; }();
+namespace tensorflow {
+const ::google::protobuf::EnumDescriptor* GraphTransferInfo_Destination_descriptor() {
+  ::google::protobuf::internal::AssignDescriptors(&assign_descriptors_table_tensorflow_2fcore_2fframework_2fgraph_5ftransfer_5finfo_2eproto);
+  return file_level_enum_descriptors_tensorflow_2fcore_2fframework_2fgraph_5ftransfer_5finfo_2eproto[0];
+}
+bool GraphTransferInfo_Destination_IsValid(int value) {
+  switch (value) {
+    case 0:
+    case 1:
+      return true;
+    default:
+      return false;
+  }
+}
+
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const GraphTransferInfo_Destination GraphTransferInfo::NOP;
+const GraphTransferInfo_Destination GraphTransferInfo::HEXAGON;
+const GraphTransferInfo_Destination GraphTransferInfo::Destination_MIN;
+const GraphTransferInfo_Destination GraphTransferInfo::Destination_MAX;
+const int GraphTransferInfo::Destination_ARRAYSIZE;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+// ===================================================================
+
+void GraphTransferNodeInput::InitAsDefaultInstance() {
+}
+class GraphTransferNodeInput::HasBitSetters {
+ public:
+};
+
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int GraphTransferNodeInput::kNodeIdFieldNumber;
+const int GraphTransferNodeInput::kOutputPortFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+GraphTransferNodeInput::GraphTransferNodeInput()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.GraphTransferNodeInput)
+}
+GraphTransferNodeInput::GraphTransferNodeInput(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.GraphTransferNodeInput)
+}
+GraphTransferNodeInput::GraphTransferNodeInput(const GraphTransferNodeInput& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::memcpy(&node_id_, &from.node_id_,
+    static_cast<size_t>(reinterpret_cast<char*>(&output_port_) -
+    reinterpret_cast<char*>(&node_id_)) + sizeof(output_port_));
+  // @@protoc_insertion_point(copy_constructor:tensorflow.GraphTransferNodeInput)
+}
+
+void GraphTransferNodeInput::SharedCtor() {
+  ::memset(&node_id_, 0, static_cast<size_t>(
+      reinterpret_cast<char*>(&output_port_) -
+      reinterpret_cast<char*>(&node_id_)) + sizeof(output_port_));
+}
+
+GraphTransferNodeInput::~GraphTransferNodeInput() {
+  // @@protoc_insertion_point(destructor:tensorflow.GraphTransferNodeInput)
+  SharedDtor();
+}
+
+void GraphTransferNodeInput::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+}
+
+void GraphTransferNodeInput::ArenaDtor(void* object) {
+  GraphTransferNodeInput* _this = reinterpret_cast< GraphTransferNodeInput* >(object);
+  (void)_this;
+}
+void GraphTransferNodeInput::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void GraphTransferNodeInput::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const GraphTransferNodeInput& GraphTransferNodeInput::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_GraphTransferNodeInput_tensorflow_2fcore_2fframework_2fgraph_5ftransfer_5finfo_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void GraphTransferNodeInput::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.GraphTransferNodeInput)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  ::memset(&node_id_, 0, static_cast<size_t>(
+      reinterpret_cast<char*>(&output_port_) -
+      reinterpret_cast<char*>(&node_id_)) + sizeof(output_port_));
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* GraphTransferNodeInput::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<GraphTransferNodeInput*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // int32 node_id = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 8) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::google::protobuf::int32 value = val;
+        msg->set_node_id(value);
+        break;
+      }
+      // int32 output_port = 2;
+      case 2: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 16) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::google::protobuf::int32 value = val;
+        msg->set_output_port(value);
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool GraphTransferNodeInput::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.GraphTransferNodeInput)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // int32 node_id = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (8 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
+                 input, &node_id_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // int32 output_port = 2;
+      case 2: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (16 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
+                 input, &output_port_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.GraphTransferNodeInput)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.GraphTransferNodeInput)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void GraphTransferNodeInput::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.GraphTransferNodeInput)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // int32 node_id = 1;
+  if (this->node_id() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt32(1, this->node_id(), output);
+  }
+
+  // int32 output_port = 2;
+  if (this->output_port() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt32(2, this->output_port(), output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.GraphTransferNodeInput)
+}
+
+::google::protobuf::uint8* GraphTransferNodeInput::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.GraphTransferNodeInput)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // int32 node_id = 1;
+  if (this->node_id() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt32ToArray(1, this->node_id(), target);
+  }
+
+  // int32 output_port = 2;
+  if (this->output_port() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt32ToArray(2, this->output_port(), target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.GraphTransferNodeInput)
+  return target;
+}
+
+size_t GraphTransferNodeInput::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.GraphTransferNodeInput)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // int32 node_id = 1;
+  if (this->node_id() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::Int32Size(
+        this->node_id());
+  }
+
+  // int32 output_port = 2;
+  if (this->output_port() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::Int32Size(
+        this->output_port());
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void GraphTransferNodeInput::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.GraphTransferNodeInput)
+  GOOGLE_DCHECK_NE(&from, this);
+  const GraphTransferNodeInput* source =
+      ::google::protobuf::DynamicCastToGenerated<GraphTransferNodeInput>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.GraphTransferNodeInput)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.GraphTransferNodeInput)
+    MergeFrom(*source);
+  }
+}
+
+void GraphTransferNodeInput::MergeFrom(const GraphTransferNodeInput& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.GraphTransferNodeInput)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  if (from.node_id() != 0) {
+    set_node_id(from.node_id());
+  }
+  if (from.output_port() != 0) {
+    set_output_port(from.output_port());
+  }
+}
+
+void GraphTransferNodeInput::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.GraphTransferNodeInput)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void GraphTransferNodeInput::CopyFrom(const GraphTransferNodeInput& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.GraphTransferNodeInput)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool GraphTransferNodeInput::IsInitialized() const {
+  return true;
+}
+
+void GraphTransferNodeInput::Swap(GraphTransferNodeInput* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    GraphTransferNodeInput* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void GraphTransferNodeInput::UnsafeArenaSwap(GraphTransferNodeInput* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void GraphTransferNodeInput::InternalSwap(GraphTransferNodeInput* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  swap(node_id_, other->node_id_);
+  swap(output_port_, other->output_port_);
+}
+
+::google::protobuf::Metadata GraphTransferNodeInput::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fframework_2fgraph_5ftransfer_5finfo_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fframework_2fgraph_5ftransfer_5finfo_2eproto[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+void GraphTransferNodeInfo::InitAsDefaultInstance() {
+}
+class GraphTransferNodeInfo::HasBitSetters {
+ public:
+};
+
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int GraphTransferNodeInfo::kNameFieldNumber;
+const int GraphTransferNodeInfo::kNodeIdFieldNumber;
+const int GraphTransferNodeInfo::kTypeNameFieldNumber;
+const int GraphTransferNodeInfo::kSocOpIdFieldNumber;
+const int GraphTransferNodeInfo::kPaddingIdFieldNumber;
+const int GraphTransferNodeInfo::kInputCountFieldNumber;
+const int GraphTransferNodeInfo::kOutputCountFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+GraphTransferNodeInfo::GraphTransferNodeInfo()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.GraphTransferNodeInfo)
+}
+GraphTransferNodeInfo::GraphTransferNodeInfo(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.GraphTransferNodeInfo)
+}
+GraphTransferNodeInfo::GraphTransferNodeInfo(const GraphTransferNodeInfo& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.name().size() > 0) {
+    name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.name(),
+      GetArenaNoVirtual());
+  }
+  type_name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.type_name().size() > 0) {
+    type_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.type_name(),
+      GetArenaNoVirtual());
+  }
+  ::memcpy(&node_id_, &from.node_id_,
+    static_cast<size_t>(reinterpret_cast<char*>(&output_count_) -
+    reinterpret_cast<char*>(&node_id_)) + sizeof(output_count_));
+  // @@protoc_insertion_point(copy_constructor:tensorflow.GraphTransferNodeInfo)
+}
+
+void GraphTransferNodeInfo::SharedCtor() {
+  ::google::protobuf::internal::InitSCC(
+      &scc_info_GraphTransferNodeInfo_tensorflow_2fcore_2fframework_2fgraph_5ftransfer_5finfo_2eproto.base);
+  name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  type_name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  ::memset(&node_id_, 0, static_cast<size_t>(
+      reinterpret_cast<char*>(&output_count_) -
+      reinterpret_cast<char*>(&node_id_)) + sizeof(output_count_));
+}
+
+GraphTransferNodeInfo::~GraphTransferNodeInfo() {
+  // @@protoc_insertion_point(destructor:tensorflow.GraphTransferNodeInfo)
+  SharedDtor();
+}
+
+void GraphTransferNodeInfo::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+  name_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  type_name_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+
+void GraphTransferNodeInfo::ArenaDtor(void* object) {
+  GraphTransferNodeInfo* _this = reinterpret_cast< GraphTransferNodeInfo* >(object);
+  (void)_this;
+}
+void GraphTransferNodeInfo::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void GraphTransferNodeInfo::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const GraphTransferNodeInfo& GraphTransferNodeInfo::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_GraphTransferNodeInfo_tensorflow_2fcore_2fframework_2fgraph_5ftransfer_5finfo_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void GraphTransferNodeInfo::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.GraphTransferNodeInfo)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  name_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+  type_name_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+  ::memset(&node_id_, 0, static_cast<size_t>(
+      reinterpret_cast<char*>(&output_count_) -
+      reinterpret_cast<char*>(&node_id_)) + sizeof(output_count_));
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* GraphTransferNodeInfo::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<GraphTransferNodeInfo*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // string name = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 10) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("tensorflow.GraphTransferNodeInfo.name");
+        parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+        ::std::string* str = msg->mutable_name();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+        break;
+      }
+      // int32 node_id = 2;
+      case 2: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 16) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::google::protobuf::int32 value = val;
+        msg->set_node_id(value);
+        break;
+      }
+      // string type_name = 3;
+      case 3: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 26) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("tensorflow.GraphTransferNodeInfo.type_name");
+        parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+        ::std::string* str = msg->mutable_type_name();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+        break;
+      }
+      // int32 soc_op_id = 4;
+      case 4: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 32) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::google::protobuf::int32 value = val;
+        msg->set_soc_op_id(value);
+        break;
+      }
+      // int32 padding_id = 5;
+      case 5: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 40) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::google::protobuf::int32 value = val;
+        msg->set_padding_id(value);
+        break;
+      }
+      // int32 input_count = 6;
+      case 6: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 48) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::google::protobuf::int32 value = val;
+        msg->set_input_count(value);
+        break;
+      }
+      // int32 output_count = 7;
+      case 7: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 56) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::google::protobuf::int32 value = val;
+        msg->set_output_count(value);
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool GraphTransferNodeInfo::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.GraphTransferNodeInfo)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // string name = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (10 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_name()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->name().data(), static_cast<int>(this->name().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.GraphTransferNodeInfo.name"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // int32 node_id = 2;
+      case 2: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (16 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
+                 input, &node_id_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // string type_name = 3;
+      case 3: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (26 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_type_name()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->type_name().data(), static_cast<int>(this->type_name().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.GraphTransferNodeInfo.type_name"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // int32 soc_op_id = 4;
+      case 4: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (32 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
+                 input, &soc_op_id_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // int32 padding_id = 5;
+      case 5: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (40 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
+                 input, &padding_id_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // int32 input_count = 6;
+      case 6: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (48 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
+                 input, &input_count_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // int32 output_count = 7;
+      case 7: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (56 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
+                 input, &output_count_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.GraphTransferNodeInfo)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.GraphTransferNodeInfo)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void GraphTransferNodeInfo::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.GraphTransferNodeInfo)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // string name = 1;
+  if (this->name().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->name().data(), static_cast<int>(this->name().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.GraphTransferNodeInfo.name");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      1, this->name(), output);
+  }
+
+  // int32 node_id = 2;
+  if (this->node_id() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt32(2, this->node_id(), output);
+  }
+
+  // string type_name = 3;
+  if (this->type_name().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->type_name().data(), static_cast<int>(this->type_name().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.GraphTransferNodeInfo.type_name");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      3, this->type_name(), output);
+  }
+
+  // int32 soc_op_id = 4;
+  if (this->soc_op_id() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt32(4, this->soc_op_id(), output);
+  }
+
+  // int32 padding_id = 5;
+  if (this->padding_id() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt32(5, this->padding_id(), output);
+  }
+
+  // int32 input_count = 6;
+  if (this->input_count() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt32(6, this->input_count(), output);
+  }
+
+  // int32 output_count = 7;
+  if (this->output_count() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt32(7, this->output_count(), output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.GraphTransferNodeInfo)
+}
+
+::google::protobuf::uint8* GraphTransferNodeInfo::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.GraphTransferNodeInfo)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // string name = 1;
+  if (this->name().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->name().data(), static_cast<int>(this->name().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.GraphTransferNodeInfo.name");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        1, this->name(), target);
+  }
+
+  // int32 node_id = 2;
+  if (this->node_id() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt32ToArray(2, this->node_id(), target);
+  }
+
+  // string type_name = 3;
+  if (this->type_name().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->type_name().data(), static_cast<int>(this->type_name().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.GraphTransferNodeInfo.type_name");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        3, this->type_name(), target);
+  }
+
+  // int32 soc_op_id = 4;
+  if (this->soc_op_id() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt32ToArray(4, this->soc_op_id(), target);
+  }
+
+  // int32 padding_id = 5;
+  if (this->padding_id() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt32ToArray(5, this->padding_id(), target);
+  }
+
+  // int32 input_count = 6;
+  if (this->input_count() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt32ToArray(6, this->input_count(), target);
+  }
+
+  // int32 output_count = 7;
+  if (this->output_count() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt32ToArray(7, this->output_count(), target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.GraphTransferNodeInfo)
+  return target;
+}
+
+size_t GraphTransferNodeInfo::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.GraphTransferNodeInfo)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // string name = 1;
+  if (this->name().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->name());
+  }
+
+  // string type_name = 3;
+  if (this->type_name().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->type_name());
+  }
+
+  // int32 node_id = 2;
+  if (this->node_id() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::Int32Size(
+        this->node_id());
+  }
+
+  // int32 soc_op_id = 4;
+  if (this->soc_op_id() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::Int32Size(
+        this->soc_op_id());
+  }
+
+  // int32 padding_id = 5;
+  if (this->padding_id() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::Int32Size(
+        this->padding_id());
+  }
+
+  // int32 input_count = 6;
+  if (this->input_count() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::Int32Size(
+        this->input_count());
+  }
+
+  // int32 output_count = 7;
+  if (this->output_count() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::Int32Size(
+        this->output_count());
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void GraphTransferNodeInfo::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.GraphTransferNodeInfo)
+  GOOGLE_DCHECK_NE(&from, this);
+  const GraphTransferNodeInfo* source =
+      ::google::protobuf::DynamicCastToGenerated<GraphTransferNodeInfo>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.GraphTransferNodeInfo)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.GraphTransferNodeInfo)
+    MergeFrom(*source);
+  }
+}
+
+void GraphTransferNodeInfo::MergeFrom(const GraphTransferNodeInfo& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.GraphTransferNodeInfo)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  if (from.name().size() > 0) {
+    set_name(from.name());
+  }
+  if (from.type_name().size() > 0) {
+    set_type_name(from.type_name());
+  }
+  if (from.node_id() != 0) {
+    set_node_id(from.node_id());
+  }
+  if (from.soc_op_id() != 0) {
+    set_soc_op_id(from.soc_op_id());
+  }
+  if (from.padding_id() != 0) {
+    set_padding_id(from.padding_id());
+  }
+  if (from.input_count() != 0) {
+    set_input_count(from.input_count());
+  }
+  if (from.output_count() != 0) {
+    set_output_count(from.output_count());
+  }
+}
+
+void GraphTransferNodeInfo::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.GraphTransferNodeInfo)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void GraphTransferNodeInfo::CopyFrom(const GraphTransferNodeInfo& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.GraphTransferNodeInfo)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool GraphTransferNodeInfo::IsInitialized() const {
+  return true;
+}
+
+void GraphTransferNodeInfo::Swap(GraphTransferNodeInfo* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    GraphTransferNodeInfo* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void GraphTransferNodeInfo::UnsafeArenaSwap(GraphTransferNodeInfo* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void GraphTransferNodeInfo::InternalSwap(GraphTransferNodeInfo* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  name_.Swap(&other->name_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+  type_name_.Swap(&other->type_name_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+  swap(node_id_, other->node_id_);
+  swap(soc_op_id_, other->soc_op_id_);
+  swap(padding_id_, other->padding_id_);
+  swap(input_count_, other->input_count_);
+  swap(output_count_, other->output_count_);
+}
+
+::google::protobuf::Metadata GraphTransferNodeInfo::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fframework_2fgraph_5ftransfer_5finfo_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fframework_2fgraph_5ftransfer_5finfo_2eproto[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+void GraphTransferConstNodeInfo::InitAsDefaultInstance() {
+}
+class GraphTransferConstNodeInfo::HasBitSetters {
+ public:
+};
+
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int GraphTransferConstNodeInfo::kNameFieldNumber;
+const int GraphTransferConstNodeInfo::kNodeIdFieldNumber;
+const int GraphTransferConstNodeInfo::kShapeFieldNumber;
+const int GraphTransferConstNodeInfo::kDataFieldNumber;
+const int GraphTransferConstNodeInfo::kDtypeFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+GraphTransferConstNodeInfo::GraphTransferConstNodeInfo()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.GraphTransferConstNodeInfo)
+}
+GraphTransferConstNodeInfo::GraphTransferConstNodeInfo(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena),
+  shape_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.GraphTransferConstNodeInfo)
+}
+GraphTransferConstNodeInfo::GraphTransferConstNodeInfo(const GraphTransferConstNodeInfo& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL),
+      shape_(from.shape_) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.name().size() > 0) {
+    name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.name(),
+      GetArenaNoVirtual());
+  }
+  data_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.data().size() > 0) {
+    data_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.data(),
+      GetArenaNoVirtual());
+  }
+  ::memcpy(&node_id_, &from.node_id_,
+    static_cast<size_t>(reinterpret_cast<char*>(&dtype_) -
+    reinterpret_cast<char*>(&node_id_)) + sizeof(dtype_));
+  // @@protoc_insertion_point(copy_constructor:tensorflow.GraphTransferConstNodeInfo)
+}
+
+void GraphTransferConstNodeInfo::SharedCtor() {
+  ::google::protobuf::internal::InitSCC(
+      &scc_info_GraphTransferConstNodeInfo_tensorflow_2fcore_2fframework_2fgraph_5ftransfer_5finfo_2eproto.base);
+  name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  data_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  ::memset(&node_id_, 0, static_cast<size_t>(
+      reinterpret_cast<char*>(&dtype_) -
+      reinterpret_cast<char*>(&node_id_)) + sizeof(dtype_));
+}
+
+GraphTransferConstNodeInfo::~GraphTransferConstNodeInfo() {
+  // @@protoc_insertion_point(destructor:tensorflow.GraphTransferConstNodeInfo)
+  SharedDtor();
+}
+
+void GraphTransferConstNodeInfo::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+  name_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  data_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+
+void GraphTransferConstNodeInfo::ArenaDtor(void* object) {
+  GraphTransferConstNodeInfo* _this = reinterpret_cast< GraphTransferConstNodeInfo* >(object);
+  (void)_this;
+}
+void GraphTransferConstNodeInfo::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void GraphTransferConstNodeInfo::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const GraphTransferConstNodeInfo& GraphTransferConstNodeInfo::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_GraphTransferConstNodeInfo_tensorflow_2fcore_2fframework_2fgraph_5ftransfer_5finfo_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void GraphTransferConstNodeInfo::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.GraphTransferConstNodeInfo)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  shape_.Clear();
+  name_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+  data_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+  ::memset(&node_id_, 0, static_cast<size_t>(
+      reinterpret_cast<char*>(&dtype_) -
+      reinterpret_cast<char*>(&node_id_)) + sizeof(dtype_));
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* GraphTransferConstNodeInfo::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<GraphTransferConstNodeInfo*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // string name = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 10) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("tensorflow.GraphTransferConstNodeInfo.name");
+        parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+        ::std::string* str = msg->mutable_name();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+        break;
+      }
+      // int32 node_id = 2;
+      case 2: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 16) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::google::protobuf::int32 value = val;
+        msg->set_node_id(value);
+        break;
+      }
+      // repeated int64 shape = 3;
+      case 3: {
+        if (static_cast<::google::protobuf::uint8>(tag) == 26) {
+          ptr = Varint::Parse32Inline(ptr, &size);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          parser_till_end = ::google::protobuf::internal::PackedInt64Parser;
+          object = msg->mutable_shape();
+          if (size > end - ptr) goto len_delim_till_end;
+          auto newend = ptr + size;
+          if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+          break;
+        } else if (static_cast<::google::protobuf::uint8>(tag) != 24) goto handle_unusual;
+        do {
+          ::google::protobuf::uint64 val;
+          ptr = Varint::Parse64(ptr, &val);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          ::google::protobuf::int64 value = val;
+          msg->add_shape(value);
+          if (ptr >= end) break;
+        } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 24 && (ptr += 1));
+        break;
+      }
+      // bytes data = 4;
+      case 4: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 34) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        parser_till_end = ::google::protobuf::internal::StringParser;
+        ::std::string* str = msg->mutable_data();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        str->append(ptr, size);
+        ptr += size;
+        break;
+      }
+      // .tensorflow.DataType dtype = 5;
+      case 5: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 40) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::tensorflow::DataType value = static_cast<::tensorflow::DataType>(val);
+        msg->set_dtype(value);
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool GraphTransferConstNodeInfo::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.GraphTransferConstNodeInfo)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // string name = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (10 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_name()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->name().data(), static_cast<int>(this->name().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.GraphTransferConstNodeInfo.name"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // int32 node_id = 2;
+      case 2: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (16 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
+                 input, &node_id_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // repeated int64 shape = 3;
+      case 3: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (26 & 0xFF)) {
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPackedPrimitive<
+                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>(
+                 input, this->mutable_shape())));
+        } else if (static_cast< ::google::protobuf::uint8>(tag) == (24 & 0xFF)) {
+          DO_((::google::protobuf::internal::WireFormatLite::ReadRepeatedPrimitiveNoInline<
+                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>(
+                 1, 26u, input, this->mutable_shape())));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // bytes data = 4;
+      case 4: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (34 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadBytes(
+                input, this->mutable_data()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // .tensorflow.DataType dtype = 5;
+      case 5: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (40 & 0xFF)) {
+          int value = 0;
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>(
+                 input, &value)));
+          set_dtype(static_cast< ::tensorflow::DataType >(value));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.GraphTransferConstNodeInfo)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.GraphTransferConstNodeInfo)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void GraphTransferConstNodeInfo::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.GraphTransferConstNodeInfo)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // string name = 1;
+  if (this->name().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->name().data(), static_cast<int>(this->name().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.GraphTransferConstNodeInfo.name");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      1, this->name(), output);
+  }
+
+  // int32 node_id = 2;
+  if (this->node_id() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt32(2, this->node_id(), output);
+  }
+
+  // repeated int64 shape = 3;
+  if (this->shape_size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteTag(3, ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED, output);
+    output->WriteVarint32(_shape_cached_byte_size_.load(
+        std::memory_order_relaxed));
+  }
+  for (int i = 0, n = this->shape_size(); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt64NoTag(
+      this->shape(i), output);
+  }
+
+  // bytes data = 4;
+  if (this->data().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteBytesMaybeAliased(
+      4, this->data(), output);
+  }
+
+  // .tensorflow.DataType dtype = 5;
+  if (this->dtype() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteEnum(
+      5, this->dtype(), output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.GraphTransferConstNodeInfo)
+}
+
+::google::protobuf::uint8* GraphTransferConstNodeInfo::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.GraphTransferConstNodeInfo)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // string name = 1;
+  if (this->name().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->name().data(), static_cast<int>(this->name().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.GraphTransferConstNodeInfo.name");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        1, this->name(), target);
+  }
+
+  // int32 node_id = 2;
+  if (this->node_id() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt32ToArray(2, this->node_id(), target);
+  }
+
+  // repeated int64 shape = 3;
+  if (this->shape_size() > 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteTagToArray(
+      3,
+      ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED,
+      target);
+    target = ::google::protobuf::io::CodedOutputStream::WriteVarint32ToArray(
+        _shape_cached_byte_size_.load(std::memory_order_relaxed),
+         target);
+    target = ::google::protobuf::internal::WireFormatLite::
+      WriteInt64NoTagToArray(this->shape_, target);
+  }
+
+  // bytes data = 4;
+  if (this->data().size() > 0) {
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteBytesToArray(
+        4, this->data(), target);
+  }
+
+  // .tensorflow.DataType dtype = 5;
+  if (this->dtype() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteEnumToArray(
+      5, this->dtype(), target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.GraphTransferConstNodeInfo)
+  return target;
+}
+
+size_t GraphTransferConstNodeInfo::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.GraphTransferConstNodeInfo)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // repeated int64 shape = 3;
+  {
+    size_t data_size = ::google::protobuf::internal::WireFormatLite::
+      Int64Size(this->shape_);
+    if (data_size > 0) {
+      total_size += 1 +
+        ::google::protobuf::internal::WireFormatLite::Int32Size(
+            static_cast<::google::protobuf::int32>(data_size));
+    }
+    int cached_size = ::google::protobuf::internal::ToCachedSize(data_size);
+    _shape_cached_byte_size_.store(cached_size,
+                                    std::memory_order_relaxed);
+    total_size += data_size;
+  }
+
+  // string name = 1;
+  if (this->name().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->name());
+  }
+
+  // bytes data = 4;
+  if (this->data().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::BytesSize(
+        this->data());
+  }
+
+  // int32 node_id = 2;
+  if (this->node_id() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::Int32Size(
+        this->node_id());
+  }
+
+  // .tensorflow.DataType dtype = 5;
+  if (this->dtype() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::EnumSize(this->dtype());
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void GraphTransferConstNodeInfo::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.GraphTransferConstNodeInfo)
+  GOOGLE_DCHECK_NE(&from, this);
+  const GraphTransferConstNodeInfo* source =
+      ::google::protobuf::DynamicCastToGenerated<GraphTransferConstNodeInfo>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.GraphTransferConstNodeInfo)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.GraphTransferConstNodeInfo)
+    MergeFrom(*source);
+  }
+}
+
+void GraphTransferConstNodeInfo::MergeFrom(const GraphTransferConstNodeInfo& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.GraphTransferConstNodeInfo)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  shape_.MergeFrom(from.shape_);
+  if (from.name().size() > 0) {
+    set_name(from.name());
+  }
+  if (from.data().size() > 0) {
+    set_data(from.data());
+  }
+  if (from.node_id() != 0) {
+    set_node_id(from.node_id());
+  }
+  if (from.dtype() != 0) {
+    set_dtype(from.dtype());
+  }
+}
+
+void GraphTransferConstNodeInfo::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.GraphTransferConstNodeInfo)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void GraphTransferConstNodeInfo::CopyFrom(const GraphTransferConstNodeInfo& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.GraphTransferConstNodeInfo)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool GraphTransferConstNodeInfo::IsInitialized() const {
+  return true;
+}
+
+void GraphTransferConstNodeInfo::Swap(GraphTransferConstNodeInfo* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    GraphTransferConstNodeInfo* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void GraphTransferConstNodeInfo::UnsafeArenaSwap(GraphTransferConstNodeInfo* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void GraphTransferConstNodeInfo::InternalSwap(GraphTransferConstNodeInfo* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  shape_.InternalSwap(&other->shape_);
+  name_.Swap(&other->name_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+  data_.Swap(&other->data_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+  swap(node_id_, other->node_id_);
+  swap(dtype_, other->dtype_);
+}
+
+::google::protobuf::Metadata GraphTransferConstNodeInfo::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fframework_2fgraph_5ftransfer_5finfo_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fframework_2fgraph_5ftransfer_5finfo_2eproto[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+void GraphTransferNodeInputInfo::InitAsDefaultInstance() {
+}
+class GraphTransferNodeInputInfo::HasBitSetters {
+ public:
+};
+
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int GraphTransferNodeInputInfo::kNodeIdFieldNumber;
+const int GraphTransferNodeInputInfo::kNodeInputFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+GraphTransferNodeInputInfo::GraphTransferNodeInputInfo()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.GraphTransferNodeInputInfo)
+}
+GraphTransferNodeInputInfo::GraphTransferNodeInputInfo(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena),
+  node_input_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.GraphTransferNodeInputInfo)
+}
+GraphTransferNodeInputInfo::GraphTransferNodeInputInfo(const GraphTransferNodeInputInfo& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL),
+      node_input_(from.node_input_) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  node_id_ = from.node_id_;
+  // @@protoc_insertion_point(copy_constructor:tensorflow.GraphTransferNodeInputInfo)
+}
+
+void GraphTransferNodeInputInfo::SharedCtor() {
+  ::google::protobuf::internal::InitSCC(
+      &scc_info_GraphTransferNodeInputInfo_tensorflow_2fcore_2fframework_2fgraph_5ftransfer_5finfo_2eproto.base);
+  node_id_ = 0;
+}
+
+GraphTransferNodeInputInfo::~GraphTransferNodeInputInfo() {
+  // @@protoc_insertion_point(destructor:tensorflow.GraphTransferNodeInputInfo)
+  SharedDtor();
+}
+
+void GraphTransferNodeInputInfo::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+}
+
+void GraphTransferNodeInputInfo::ArenaDtor(void* object) {
+  GraphTransferNodeInputInfo* _this = reinterpret_cast< GraphTransferNodeInputInfo* >(object);
+  (void)_this;
+}
+void GraphTransferNodeInputInfo::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void GraphTransferNodeInputInfo::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const GraphTransferNodeInputInfo& GraphTransferNodeInputInfo::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_GraphTransferNodeInputInfo_tensorflow_2fcore_2fframework_2fgraph_5ftransfer_5finfo_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void GraphTransferNodeInputInfo::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.GraphTransferNodeInputInfo)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  node_input_.Clear();
+  node_id_ = 0;
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* GraphTransferNodeInputInfo::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<GraphTransferNodeInputInfo*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // int32 node_id = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 8) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::google::protobuf::int32 value = val;
+        msg->set_node_id(value);
+        break;
+      }
+      // repeated .tensorflow.GraphTransferNodeInput node_input = 2;
+      case 2: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 18) goto handle_unusual;
+        do {
+          ptr = Varint::Parse32Inline(ptr, &size);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          parser_till_end = ::tensorflow::GraphTransferNodeInput::_InternalParse;
+          object = msg->add_node_input();
+          if (size > end - ptr) goto len_delim_till_end;
+          auto newend = ptr + size;
+          bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                         ptr, newend);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          ptr = newend;
+          if (ptr >= end) break;
+        } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 18 && (ptr += 1));
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool GraphTransferNodeInputInfo::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.GraphTransferNodeInputInfo)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // int32 node_id = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (8 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
+                 input, &node_id_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // repeated .tensorflow.GraphTransferNodeInput node_input = 2;
+      case 2: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (18 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+                input, add_node_input()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.GraphTransferNodeInputInfo)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.GraphTransferNodeInputInfo)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void GraphTransferNodeInputInfo::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.GraphTransferNodeInputInfo)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // int32 node_id = 1;
+  if (this->node_id() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt32(1, this->node_id(), output);
+  }
+
+  // repeated .tensorflow.GraphTransferNodeInput node_input = 2;
+  for (unsigned int i = 0,
+      n = static_cast<unsigned int>(this->node_input_size()); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      2,
+      this->node_input(static_cast<int>(i)),
+      output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.GraphTransferNodeInputInfo)
+}
+
+::google::protobuf::uint8* GraphTransferNodeInputInfo::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.GraphTransferNodeInputInfo)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // int32 node_id = 1;
+  if (this->node_id() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt32ToArray(1, this->node_id(), target);
+  }
+
+  // repeated .tensorflow.GraphTransferNodeInput node_input = 2;
+  for (unsigned int i = 0,
+      n = static_cast<unsigned int>(this->node_input_size()); i < n; i++) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        2, this->node_input(static_cast<int>(i)), deterministic, target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.GraphTransferNodeInputInfo)
+  return target;
+}
+
+size_t GraphTransferNodeInputInfo::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.GraphTransferNodeInputInfo)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // repeated .tensorflow.GraphTransferNodeInput node_input = 2;
+  {
+    unsigned int count = static_cast<unsigned int>(this->node_input_size());
+    total_size += 1UL * count;
+    for (unsigned int i = 0; i < count; i++) {
+      total_size +=
+        ::google::protobuf::internal::WireFormatLite::MessageSize(
+          this->node_input(static_cast<int>(i)));
+    }
+  }
+
+  // int32 node_id = 1;
+  if (this->node_id() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::Int32Size(
+        this->node_id());
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void GraphTransferNodeInputInfo::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.GraphTransferNodeInputInfo)
+  GOOGLE_DCHECK_NE(&from, this);
+  const GraphTransferNodeInputInfo* source =
+      ::google::protobuf::DynamicCastToGenerated<GraphTransferNodeInputInfo>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.GraphTransferNodeInputInfo)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.GraphTransferNodeInputInfo)
+    MergeFrom(*source);
+  }
+}
+
+void GraphTransferNodeInputInfo::MergeFrom(const GraphTransferNodeInputInfo& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.GraphTransferNodeInputInfo)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  node_input_.MergeFrom(from.node_input_);
+  if (from.node_id() != 0) {
+    set_node_id(from.node_id());
+  }
+}
+
+void GraphTransferNodeInputInfo::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.GraphTransferNodeInputInfo)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void GraphTransferNodeInputInfo::CopyFrom(const GraphTransferNodeInputInfo& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.GraphTransferNodeInputInfo)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool GraphTransferNodeInputInfo::IsInitialized() const {
+  return true;
+}
+
+void GraphTransferNodeInputInfo::Swap(GraphTransferNodeInputInfo* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    GraphTransferNodeInputInfo* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void GraphTransferNodeInputInfo::UnsafeArenaSwap(GraphTransferNodeInputInfo* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void GraphTransferNodeInputInfo::InternalSwap(GraphTransferNodeInputInfo* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  CastToBase(&node_input_)->InternalSwap(CastToBase(&other->node_input_));
+  swap(node_id_, other->node_id_);
+}
+
+::google::protobuf::Metadata GraphTransferNodeInputInfo::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fframework_2fgraph_5ftransfer_5finfo_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fframework_2fgraph_5ftransfer_5finfo_2eproto[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+void GraphTransferNodeOutputInfo::InitAsDefaultInstance() {
+}
+class GraphTransferNodeOutputInfo::HasBitSetters {
+ public:
+};
+
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int GraphTransferNodeOutputInfo::kNodeIdFieldNumber;
+const int GraphTransferNodeOutputInfo::kMaxByteSizeFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+GraphTransferNodeOutputInfo::GraphTransferNodeOutputInfo()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.GraphTransferNodeOutputInfo)
+}
+GraphTransferNodeOutputInfo::GraphTransferNodeOutputInfo(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena),
+  max_byte_size_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.GraphTransferNodeOutputInfo)
+}
+GraphTransferNodeOutputInfo::GraphTransferNodeOutputInfo(const GraphTransferNodeOutputInfo& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL),
+      max_byte_size_(from.max_byte_size_) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  node_id_ = from.node_id_;
+  // @@protoc_insertion_point(copy_constructor:tensorflow.GraphTransferNodeOutputInfo)
+}
+
+void GraphTransferNodeOutputInfo::SharedCtor() {
+  node_id_ = 0;
+}
+
+GraphTransferNodeOutputInfo::~GraphTransferNodeOutputInfo() {
+  // @@protoc_insertion_point(destructor:tensorflow.GraphTransferNodeOutputInfo)
+  SharedDtor();
+}
+
+void GraphTransferNodeOutputInfo::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+}
+
+void GraphTransferNodeOutputInfo::ArenaDtor(void* object) {
+  GraphTransferNodeOutputInfo* _this = reinterpret_cast< GraphTransferNodeOutputInfo* >(object);
+  (void)_this;
+}
+void GraphTransferNodeOutputInfo::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void GraphTransferNodeOutputInfo::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const GraphTransferNodeOutputInfo& GraphTransferNodeOutputInfo::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_GraphTransferNodeOutputInfo_tensorflow_2fcore_2fframework_2fgraph_5ftransfer_5finfo_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void GraphTransferNodeOutputInfo::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.GraphTransferNodeOutputInfo)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  max_byte_size_.Clear();
+  node_id_ = 0;
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* GraphTransferNodeOutputInfo::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<GraphTransferNodeOutputInfo*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // int32 node_id = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 8) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::google::protobuf::int32 value = val;
+        msg->set_node_id(value);
+        break;
+      }
+      // repeated int32 max_byte_size = 2;
+      case 2: {
+        if (static_cast<::google::protobuf::uint8>(tag) == 18) {
+          ptr = Varint::Parse32Inline(ptr, &size);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          parser_till_end = ::google::protobuf::internal::PackedInt32Parser;
+          object = msg->mutable_max_byte_size();
+          if (size > end - ptr) goto len_delim_till_end;
+          auto newend = ptr + size;
+          if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+          break;
+        } else if (static_cast<::google::protobuf::uint8>(tag) != 16) goto handle_unusual;
+        do {
+          ::google::protobuf::uint64 val;
+          ptr = Varint::Parse64(ptr, &val);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          ::google::protobuf::int32 value = val;
+          msg->add_max_byte_size(value);
+          if (ptr >= end) break;
+        } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 16 && (ptr += 1));
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool GraphTransferNodeOutputInfo::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.GraphTransferNodeOutputInfo)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // int32 node_id = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (8 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
+                 input, &node_id_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // repeated int32 max_byte_size = 2;
+      case 2: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (18 & 0xFF)) {
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPackedPrimitive<
+                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
+                 input, this->mutable_max_byte_size())));
+        } else if (static_cast< ::google::protobuf::uint8>(tag) == (16 & 0xFF)) {
+          DO_((::google::protobuf::internal::WireFormatLite::ReadRepeatedPrimitiveNoInline<
+                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
+                 1, 18u, input, this->mutable_max_byte_size())));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.GraphTransferNodeOutputInfo)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.GraphTransferNodeOutputInfo)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void GraphTransferNodeOutputInfo::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.GraphTransferNodeOutputInfo)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // int32 node_id = 1;
+  if (this->node_id() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt32(1, this->node_id(), output);
+  }
+
+  // repeated int32 max_byte_size = 2;
+  if (this->max_byte_size_size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteTag(2, ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED, output);
+    output->WriteVarint32(_max_byte_size_cached_byte_size_.load(
+        std::memory_order_relaxed));
+  }
+  for (int i = 0, n = this->max_byte_size_size(); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt32NoTag(
+      this->max_byte_size(i), output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.GraphTransferNodeOutputInfo)
+}
+
+::google::protobuf::uint8* GraphTransferNodeOutputInfo::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.GraphTransferNodeOutputInfo)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // int32 node_id = 1;
+  if (this->node_id() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt32ToArray(1, this->node_id(), target);
+  }
+
+  // repeated int32 max_byte_size = 2;
+  if (this->max_byte_size_size() > 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteTagToArray(
+      2,
+      ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED,
+      target);
+    target = ::google::protobuf::io::CodedOutputStream::WriteVarint32ToArray(
+        _max_byte_size_cached_byte_size_.load(std::memory_order_relaxed),
+         target);
+    target = ::google::protobuf::internal::WireFormatLite::
+      WriteInt32NoTagToArray(this->max_byte_size_, target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.GraphTransferNodeOutputInfo)
+  return target;
+}
+
+size_t GraphTransferNodeOutputInfo::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.GraphTransferNodeOutputInfo)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // repeated int32 max_byte_size = 2;
+  {
+    size_t data_size = ::google::protobuf::internal::WireFormatLite::
+      Int32Size(this->max_byte_size_);
+    if (data_size > 0) {
+      total_size += 1 +
+        ::google::protobuf::internal::WireFormatLite::Int32Size(
+            static_cast<::google::protobuf::int32>(data_size));
+    }
+    int cached_size = ::google::protobuf::internal::ToCachedSize(data_size);
+    _max_byte_size_cached_byte_size_.store(cached_size,
+                                    std::memory_order_relaxed);
+    total_size += data_size;
+  }
+
+  // int32 node_id = 1;
+  if (this->node_id() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::Int32Size(
+        this->node_id());
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void GraphTransferNodeOutputInfo::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.GraphTransferNodeOutputInfo)
+  GOOGLE_DCHECK_NE(&from, this);
+  const GraphTransferNodeOutputInfo* source =
+      ::google::protobuf::DynamicCastToGenerated<GraphTransferNodeOutputInfo>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.GraphTransferNodeOutputInfo)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.GraphTransferNodeOutputInfo)
+    MergeFrom(*source);
+  }
+}
+
+void GraphTransferNodeOutputInfo::MergeFrom(const GraphTransferNodeOutputInfo& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.GraphTransferNodeOutputInfo)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  max_byte_size_.MergeFrom(from.max_byte_size_);
+  if (from.node_id() != 0) {
+    set_node_id(from.node_id());
+  }
+}
+
+void GraphTransferNodeOutputInfo::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.GraphTransferNodeOutputInfo)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void GraphTransferNodeOutputInfo::CopyFrom(const GraphTransferNodeOutputInfo& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.GraphTransferNodeOutputInfo)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool GraphTransferNodeOutputInfo::IsInitialized() const {
+  return true;
+}
+
+void GraphTransferNodeOutputInfo::Swap(GraphTransferNodeOutputInfo* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    GraphTransferNodeOutputInfo* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void GraphTransferNodeOutputInfo::UnsafeArenaSwap(GraphTransferNodeOutputInfo* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void GraphTransferNodeOutputInfo::InternalSwap(GraphTransferNodeOutputInfo* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  max_byte_size_.InternalSwap(&other->max_byte_size_);
+  swap(node_id_, other->node_id_);
+}
+
+::google::protobuf::Metadata GraphTransferNodeOutputInfo::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fframework_2fgraph_5ftransfer_5finfo_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fframework_2fgraph_5ftransfer_5finfo_2eproto[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+void GraphTransferGraphInputNodeInfo::InitAsDefaultInstance() {
+}
+class GraphTransferGraphInputNodeInfo::HasBitSetters {
+ public:
+};
+
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int GraphTransferGraphInputNodeInfo::kNameFieldNumber;
+const int GraphTransferGraphInputNodeInfo::kShapeFieldNumber;
+const int GraphTransferGraphInputNodeInfo::kDtypeFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+GraphTransferGraphInputNodeInfo::GraphTransferGraphInputNodeInfo()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.GraphTransferGraphInputNodeInfo)
+}
+GraphTransferGraphInputNodeInfo::GraphTransferGraphInputNodeInfo(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena),
+  shape_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.GraphTransferGraphInputNodeInfo)
+}
+GraphTransferGraphInputNodeInfo::GraphTransferGraphInputNodeInfo(const GraphTransferGraphInputNodeInfo& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL),
+      shape_(from.shape_) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.name().size() > 0) {
+    name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.name(),
+      GetArenaNoVirtual());
+  }
+  dtype_ = from.dtype_;
+  // @@protoc_insertion_point(copy_constructor:tensorflow.GraphTransferGraphInputNodeInfo)
+}
+
+void GraphTransferGraphInputNodeInfo::SharedCtor() {
+  ::google::protobuf::internal::InitSCC(
+      &scc_info_GraphTransferGraphInputNodeInfo_tensorflow_2fcore_2fframework_2fgraph_5ftransfer_5finfo_2eproto.base);
+  name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  dtype_ = 0;
+}
+
+GraphTransferGraphInputNodeInfo::~GraphTransferGraphInputNodeInfo() {
+  // @@protoc_insertion_point(destructor:tensorflow.GraphTransferGraphInputNodeInfo)
+  SharedDtor();
+}
+
+void GraphTransferGraphInputNodeInfo::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+  name_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+
+void GraphTransferGraphInputNodeInfo::ArenaDtor(void* object) {
+  GraphTransferGraphInputNodeInfo* _this = reinterpret_cast< GraphTransferGraphInputNodeInfo* >(object);
+  (void)_this;
+}
+void GraphTransferGraphInputNodeInfo::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void GraphTransferGraphInputNodeInfo::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const GraphTransferGraphInputNodeInfo& GraphTransferGraphInputNodeInfo::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_GraphTransferGraphInputNodeInfo_tensorflow_2fcore_2fframework_2fgraph_5ftransfer_5finfo_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void GraphTransferGraphInputNodeInfo::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.GraphTransferGraphInputNodeInfo)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  shape_.Clear();
+  name_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+  dtype_ = 0;
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* GraphTransferGraphInputNodeInfo::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<GraphTransferGraphInputNodeInfo*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // string name = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 10) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("tensorflow.GraphTransferGraphInputNodeInfo.name");
+        parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+        ::std::string* str = msg->mutable_name();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+        break;
+      }
+      // repeated int64 shape = 2;
+      case 2: {
+        if (static_cast<::google::protobuf::uint8>(tag) == 18) {
+          ptr = Varint::Parse32Inline(ptr, &size);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          parser_till_end = ::google::protobuf::internal::PackedInt64Parser;
+          object = msg->mutable_shape();
+          if (size > end - ptr) goto len_delim_till_end;
+          auto newend = ptr + size;
+          if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+          break;
+        } else if (static_cast<::google::protobuf::uint8>(tag) != 16) goto handle_unusual;
+        do {
+          ::google::protobuf::uint64 val;
+          ptr = Varint::Parse64(ptr, &val);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          ::google::protobuf::int64 value = val;
+          msg->add_shape(value);
+          if (ptr >= end) break;
+        } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 16 && (ptr += 1));
+        break;
+      }
+      // .tensorflow.DataType dtype = 3;
+      case 3: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 24) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::tensorflow::DataType value = static_cast<::tensorflow::DataType>(val);
+        msg->set_dtype(value);
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool GraphTransferGraphInputNodeInfo::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.GraphTransferGraphInputNodeInfo)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // string name = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (10 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_name()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->name().data(), static_cast<int>(this->name().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.GraphTransferGraphInputNodeInfo.name"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // repeated int64 shape = 2;
+      case 2: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (18 & 0xFF)) {
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPackedPrimitive<
+                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>(
+                 input, this->mutable_shape())));
+        } else if (static_cast< ::google::protobuf::uint8>(tag) == (16 & 0xFF)) {
+          DO_((::google::protobuf::internal::WireFormatLite::ReadRepeatedPrimitiveNoInline<
+                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>(
+                 1, 18u, input, this->mutable_shape())));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // .tensorflow.DataType dtype = 3;
+      case 3: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (24 & 0xFF)) {
+          int value = 0;
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>(
+                 input, &value)));
+          set_dtype(static_cast< ::tensorflow::DataType >(value));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.GraphTransferGraphInputNodeInfo)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.GraphTransferGraphInputNodeInfo)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void GraphTransferGraphInputNodeInfo::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.GraphTransferGraphInputNodeInfo)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // string name = 1;
+  if (this->name().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->name().data(), static_cast<int>(this->name().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.GraphTransferGraphInputNodeInfo.name");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      1, this->name(), output);
+  }
+
+  // repeated int64 shape = 2;
+  if (this->shape_size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteTag(2, ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED, output);
+    output->WriteVarint32(_shape_cached_byte_size_.load(
+        std::memory_order_relaxed));
+  }
+  for (int i = 0, n = this->shape_size(); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt64NoTag(
+      this->shape(i), output);
+  }
+
+  // .tensorflow.DataType dtype = 3;
+  if (this->dtype() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteEnum(
+      3, this->dtype(), output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.GraphTransferGraphInputNodeInfo)
+}
+
+::google::protobuf::uint8* GraphTransferGraphInputNodeInfo::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.GraphTransferGraphInputNodeInfo)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // string name = 1;
+  if (this->name().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->name().data(), static_cast<int>(this->name().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.GraphTransferGraphInputNodeInfo.name");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        1, this->name(), target);
+  }
+
+  // repeated int64 shape = 2;
+  if (this->shape_size() > 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteTagToArray(
+      2,
+      ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED,
+      target);
+    target = ::google::protobuf::io::CodedOutputStream::WriteVarint32ToArray(
+        _shape_cached_byte_size_.load(std::memory_order_relaxed),
+         target);
+    target = ::google::protobuf::internal::WireFormatLite::
+      WriteInt64NoTagToArray(this->shape_, target);
+  }
+
+  // .tensorflow.DataType dtype = 3;
+  if (this->dtype() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteEnumToArray(
+      3, this->dtype(), target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.GraphTransferGraphInputNodeInfo)
+  return target;
+}
+
+size_t GraphTransferGraphInputNodeInfo::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.GraphTransferGraphInputNodeInfo)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // repeated int64 shape = 2;
+  {
+    size_t data_size = ::google::protobuf::internal::WireFormatLite::
+      Int64Size(this->shape_);
+    if (data_size > 0) {
+      total_size += 1 +
+        ::google::protobuf::internal::WireFormatLite::Int32Size(
+            static_cast<::google::protobuf::int32>(data_size));
+    }
+    int cached_size = ::google::protobuf::internal::ToCachedSize(data_size);
+    _shape_cached_byte_size_.store(cached_size,
+                                    std::memory_order_relaxed);
+    total_size += data_size;
+  }
+
+  // string name = 1;
+  if (this->name().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->name());
+  }
+
+  // .tensorflow.DataType dtype = 3;
+  if (this->dtype() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::EnumSize(this->dtype());
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void GraphTransferGraphInputNodeInfo::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.GraphTransferGraphInputNodeInfo)
+  GOOGLE_DCHECK_NE(&from, this);
+  const GraphTransferGraphInputNodeInfo* source =
+      ::google::protobuf::DynamicCastToGenerated<GraphTransferGraphInputNodeInfo>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.GraphTransferGraphInputNodeInfo)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.GraphTransferGraphInputNodeInfo)
+    MergeFrom(*source);
+  }
+}
+
+void GraphTransferGraphInputNodeInfo::MergeFrom(const GraphTransferGraphInputNodeInfo& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.GraphTransferGraphInputNodeInfo)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  shape_.MergeFrom(from.shape_);
+  if (from.name().size() > 0) {
+    set_name(from.name());
+  }
+  if (from.dtype() != 0) {
+    set_dtype(from.dtype());
+  }
+}
+
+void GraphTransferGraphInputNodeInfo::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.GraphTransferGraphInputNodeInfo)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void GraphTransferGraphInputNodeInfo::CopyFrom(const GraphTransferGraphInputNodeInfo& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.GraphTransferGraphInputNodeInfo)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool GraphTransferGraphInputNodeInfo::IsInitialized() const {
+  return true;
+}
+
+void GraphTransferGraphInputNodeInfo::Swap(GraphTransferGraphInputNodeInfo* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    GraphTransferGraphInputNodeInfo* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void GraphTransferGraphInputNodeInfo::UnsafeArenaSwap(GraphTransferGraphInputNodeInfo* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void GraphTransferGraphInputNodeInfo::InternalSwap(GraphTransferGraphInputNodeInfo* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  shape_.InternalSwap(&other->shape_);
+  name_.Swap(&other->name_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+  swap(dtype_, other->dtype_);
+}
+
+::google::protobuf::Metadata GraphTransferGraphInputNodeInfo::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fframework_2fgraph_5ftransfer_5finfo_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fframework_2fgraph_5ftransfer_5finfo_2eproto[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+void GraphTransferGraphOutputNodeInfo::InitAsDefaultInstance() {
+}
+class GraphTransferGraphOutputNodeInfo::HasBitSetters {
+ public:
+};
+
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int GraphTransferGraphOutputNodeInfo::kNameFieldNumber;
+const int GraphTransferGraphOutputNodeInfo::kShapeFieldNumber;
+const int GraphTransferGraphOutputNodeInfo::kDtypeFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+GraphTransferGraphOutputNodeInfo::GraphTransferGraphOutputNodeInfo()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.GraphTransferGraphOutputNodeInfo)
+}
+GraphTransferGraphOutputNodeInfo::GraphTransferGraphOutputNodeInfo(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena),
+  shape_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.GraphTransferGraphOutputNodeInfo)
+}
+GraphTransferGraphOutputNodeInfo::GraphTransferGraphOutputNodeInfo(const GraphTransferGraphOutputNodeInfo& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL),
+      shape_(from.shape_) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.name().size() > 0) {
+    name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.name(),
+      GetArenaNoVirtual());
+  }
+  dtype_ = from.dtype_;
+  // @@protoc_insertion_point(copy_constructor:tensorflow.GraphTransferGraphOutputNodeInfo)
+}
+
+void GraphTransferGraphOutputNodeInfo::SharedCtor() {
+  ::google::protobuf::internal::InitSCC(
+      &scc_info_GraphTransferGraphOutputNodeInfo_tensorflow_2fcore_2fframework_2fgraph_5ftransfer_5finfo_2eproto.base);
+  name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  dtype_ = 0;
+}
+
+GraphTransferGraphOutputNodeInfo::~GraphTransferGraphOutputNodeInfo() {
+  // @@protoc_insertion_point(destructor:tensorflow.GraphTransferGraphOutputNodeInfo)
+  SharedDtor();
+}
+
+void GraphTransferGraphOutputNodeInfo::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+  name_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+
+void GraphTransferGraphOutputNodeInfo::ArenaDtor(void* object) {
+  GraphTransferGraphOutputNodeInfo* _this = reinterpret_cast< GraphTransferGraphOutputNodeInfo* >(object);
+  (void)_this;
+}
+void GraphTransferGraphOutputNodeInfo::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void GraphTransferGraphOutputNodeInfo::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const GraphTransferGraphOutputNodeInfo& GraphTransferGraphOutputNodeInfo::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_GraphTransferGraphOutputNodeInfo_tensorflow_2fcore_2fframework_2fgraph_5ftransfer_5finfo_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void GraphTransferGraphOutputNodeInfo::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.GraphTransferGraphOutputNodeInfo)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  shape_.Clear();
+  name_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+  dtype_ = 0;
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* GraphTransferGraphOutputNodeInfo::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<GraphTransferGraphOutputNodeInfo*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // string name = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 10) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("tensorflow.GraphTransferGraphOutputNodeInfo.name");
+        parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+        ::std::string* str = msg->mutable_name();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+        break;
+      }
+      // repeated int64 shape = 2;
+      case 2: {
+        if (static_cast<::google::protobuf::uint8>(tag) == 18) {
+          ptr = Varint::Parse32Inline(ptr, &size);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          parser_till_end = ::google::protobuf::internal::PackedInt64Parser;
+          object = msg->mutable_shape();
+          if (size > end - ptr) goto len_delim_till_end;
+          auto newend = ptr + size;
+          if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+          break;
+        } else if (static_cast<::google::protobuf::uint8>(tag) != 16) goto handle_unusual;
+        do {
+          ::google::protobuf::uint64 val;
+          ptr = Varint::Parse64(ptr, &val);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          ::google::protobuf::int64 value = val;
+          msg->add_shape(value);
+          if (ptr >= end) break;
+        } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 16 && (ptr += 1));
+        break;
+      }
+      // .tensorflow.DataType dtype = 3;
+      case 3: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 24) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::tensorflow::DataType value = static_cast<::tensorflow::DataType>(val);
+        msg->set_dtype(value);
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool GraphTransferGraphOutputNodeInfo::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.GraphTransferGraphOutputNodeInfo)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // string name = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (10 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_name()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->name().data(), static_cast<int>(this->name().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.GraphTransferGraphOutputNodeInfo.name"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // repeated int64 shape = 2;
+      case 2: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (18 & 0xFF)) {
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPackedPrimitive<
+                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>(
+                 input, this->mutable_shape())));
+        } else if (static_cast< ::google::protobuf::uint8>(tag) == (16 & 0xFF)) {
+          DO_((::google::protobuf::internal::WireFormatLite::ReadRepeatedPrimitiveNoInline<
+                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>(
+                 1, 18u, input, this->mutable_shape())));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // .tensorflow.DataType dtype = 3;
+      case 3: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (24 & 0xFF)) {
+          int value = 0;
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>(
+                 input, &value)));
+          set_dtype(static_cast< ::tensorflow::DataType >(value));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.GraphTransferGraphOutputNodeInfo)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.GraphTransferGraphOutputNodeInfo)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void GraphTransferGraphOutputNodeInfo::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.GraphTransferGraphOutputNodeInfo)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // string name = 1;
+  if (this->name().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->name().data(), static_cast<int>(this->name().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.GraphTransferGraphOutputNodeInfo.name");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      1, this->name(), output);
+  }
+
+  // repeated int64 shape = 2;
+  if (this->shape_size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteTag(2, ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED, output);
+    output->WriteVarint32(_shape_cached_byte_size_.load(
+        std::memory_order_relaxed));
+  }
+  for (int i = 0, n = this->shape_size(); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt64NoTag(
+      this->shape(i), output);
+  }
+
+  // .tensorflow.DataType dtype = 3;
+  if (this->dtype() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteEnum(
+      3, this->dtype(), output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.GraphTransferGraphOutputNodeInfo)
+}
+
+::google::protobuf::uint8* GraphTransferGraphOutputNodeInfo::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.GraphTransferGraphOutputNodeInfo)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // string name = 1;
+  if (this->name().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->name().data(), static_cast<int>(this->name().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.GraphTransferGraphOutputNodeInfo.name");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        1, this->name(), target);
+  }
+
+  // repeated int64 shape = 2;
+  if (this->shape_size() > 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteTagToArray(
+      2,
+      ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED,
+      target);
+    target = ::google::protobuf::io::CodedOutputStream::WriteVarint32ToArray(
+        _shape_cached_byte_size_.load(std::memory_order_relaxed),
+         target);
+    target = ::google::protobuf::internal::WireFormatLite::
+      WriteInt64NoTagToArray(this->shape_, target);
+  }
+
+  // .tensorflow.DataType dtype = 3;
+  if (this->dtype() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteEnumToArray(
+      3, this->dtype(), target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.GraphTransferGraphOutputNodeInfo)
+  return target;
+}
+
+size_t GraphTransferGraphOutputNodeInfo::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.GraphTransferGraphOutputNodeInfo)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // repeated int64 shape = 2;
+  {
+    size_t data_size = ::google::protobuf::internal::WireFormatLite::
+      Int64Size(this->shape_);
+    if (data_size > 0) {
+      total_size += 1 +
+        ::google::protobuf::internal::WireFormatLite::Int32Size(
+            static_cast<::google::protobuf::int32>(data_size));
+    }
+    int cached_size = ::google::protobuf::internal::ToCachedSize(data_size);
+    _shape_cached_byte_size_.store(cached_size,
+                                    std::memory_order_relaxed);
+    total_size += data_size;
+  }
+
+  // string name = 1;
+  if (this->name().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->name());
+  }
+
+  // .tensorflow.DataType dtype = 3;
+  if (this->dtype() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::EnumSize(this->dtype());
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void GraphTransferGraphOutputNodeInfo::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.GraphTransferGraphOutputNodeInfo)
+  GOOGLE_DCHECK_NE(&from, this);
+  const GraphTransferGraphOutputNodeInfo* source =
+      ::google::protobuf::DynamicCastToGenerated<GraphTransferGraphOutputNodeInfo>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.GraphTransferGraphOutputNodeInfo)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.GraphTransferGraphOutputNodeInfo)
+    MergeFrom(*source);
+  }
+}
+
+void GraphTransferGraphOutputNodeInfo::MergeFrom(const GraphTransferGraphOutputNodeInfo& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.GraphTransferGraphOutputNodeInfo)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  shape_.MergeFrom(from.shape_);
+  if (from.name().size() > 0) {
+    set_name(from.name());
+  }
+  if (from.dtype() != 0) {
+    set_dtype(from.dtype());
+  }
+}
+
+void GraphTransferGraphOutputNodeInfo::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.GraphTransferGraphOutputNodeInfo)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void GraphTransferGraphOutputNodeInfo::CopyFrom(const GraphTransferGraphOutputNodeInfo& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.GraphTransferGraphOutputNodeInfo)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool GraphTransferGraphOutputNodeInfo::IsInitialized() const {
+  return true;
+}
+
+void GraphTransferGraphOutputNodeInfo::Swap(GraphTransferGraphOutputNodeInfo* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    GraphTransferGraphOutputNodeInfo* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void GraphTransferGraphOutputNodeInfo::UnsafeArenaSwap(GraphTransferGraphOutputNodeInfo* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void GraphTransferGraphOutputNodeInfo::InternalSwap(GraphTransferGraphOutputNodeInfo* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  shape_.InternalSwap(&other->shape_);
+  name_.Swap(&other->name_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+  swap(dtype_, other->dtype_);
+}
+
+::google::protobuf::Metadata GraphTransferGraphOutputNodeInfo::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fframework_2fgraph_5ftransfer_5finfo_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fframework_2fgraph_5ftransfer_5finfo_2eproto[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+void GraphTransferInfo::InitAsDefaultInstance() {
+}
+class GraphTransferInfo::HasBitSetters {
+ public:
+};
+
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int GraphTransferInfo::kNodeInfoFieldNumber;
+const int GraphTransferInfo::kConstNodeInfoFieldNumber;
+const int GraphTransferInfo::kNodeInputInfoFieldNumber;
+const int GraphTransferInfo::kNodeOutputInfoFieldNumber;
+const int GraphTransferInfo::kGraphInputNodeInfoFieldNumber;
+const int GraphTransferInfo::kGraphOutputNodeInfoFieldNumber;
+const int GraphTransferInfo::kDestinationFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+GraphTransferInfo::GraphTransferInfo()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.GraphTransferInfo)
+}
+GraphTransferInfo::GraphTransferInfo(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena),
+  node_info_(arena),
+  const_node_info_(arena),
+  node_input_info_(arena),
+  node_output_info_(arena),
+  graph_input_node_info_(arena),
+  graph_output_node_info_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.GraphTransferInfo)
+}
+GraphTransferInfo::GraphTransferInfo(const GraphTransferInfo& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL),
+      node_info_(from.node_info_),
+      const_node_info_(from.const_node_info_),
+      node_input_info_(from.node_input_info_),
+      node_output_info_(from.node_output_info_),
+      graph_input_node_info_(from.graph_input_node_info_),
+      graph_output_node_info_(from.graph_output_node_info_) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  destination_ = from.destination_;
+  // @@protoc_insertion_point(copy_constructor:tensorflow.GraphTransferInfo)
+}
+
+void GraphTransferInfo::SharedCtor() {
+  ::google::protobuf::internal::InitSCC(
+      &scc_info_GraphTransferInfo_tensorflow_2fcore_2fframework_2fgraph_5ftransfer_5finfo_2eproto.base);
+  destination_ = 0;
+}
+
+GraphTransferInfo::~GraphTransferInfo() {
+  // @@protoc_insertion_point(destructor:tensorflow.GraphTransferInfo)
+  SharedDtor();
+}
+
+void GraphTransferInfo::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+}
+
+void GraphTransferInfo::ArenaDtor(void* object) {
+  GraphTransferInfo* _this = reinterpret_cast< GraphTransferInfo* >(object);
+  (void)_this;
+}
+void GraphTransferInfo::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void GraphTransferInfo::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const GraphTransferInfo& GraphTransferInfo::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_GraphTransferInfo_tensorflow_2fcore_2fframework_2fgraph_5ftransfer_5finfo_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void GraphTransferInfo::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.GraphTransferInfo)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  node_info_.Clear();
+  const_node_info_.Clear();
+  node_input_info_.Clear();
+  node_output_info_.Clear();
+  graph_input_node_info_.Clear();
+  graph_output_node_info_.Clear();
+  destination_ = 0;
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* GraphTransferInfo::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<GraphTransferInfo*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // repeated .tensorflow.GraphTransferNodeInfo node_info = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 10) goto handle_unusual;
+        do {
+          ptr = Varint::Parse32Inline(ptr, &size);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          parser_till_end = ::tensorflow::GraphTransferNodeInfo::_InternalParse;
+          object = msg->add_node_info();
+          if (size > end - ptr) goto len_delim_till_end;
+          auto newend = ptr + size;
+          bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                         ptr, newend);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          ptr = newend;
+          if (ptr >= end) break;
+        } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 10 && (ptr += 1));
+        break;
+      }
+      // repeated .tensorflow.GraphTransferConstNodeInfo const_node_info = 2;
+      case 2: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 18) goto handle_unusual;
+        do {
+          ptr = Varint::Parse32Inline(ptr, &size);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          parser_till_end = ::tensorflow::GraphTransferConstNodeInfo::_InternalParse;
+          object = msg->add_const_node_info();
+          if (size > end - ptr) goto len_delim_till_end;
+          auto newend = ptr + size;
+          bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                         ptr, newend);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          ptr = newend;
+          if (ptr >= end) break;
+        } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 18 && (ptr += 1));
+        break;
+      }
+      // repeated .tensorflow.GraphTransferNodeInputInfo node_input_info = 3;
+      case 3: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 26) goto handle_unusual;
+        do {
+          ptr = Varint::Parse32Inline(ptr, &size);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          parser_till_end = ::tensorflow::GraphTransferNodeInputInfo::_InternalParse;
+          object = msg->add_node_input_info();
+          if (size > end - ptr) goto len_delim_till_end;
+          auto newend = ptr + size;
+          bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                         ptr, newend);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          ptr = newend;
+          if (ptr >= end) break;
+        } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 26 && (ptr += 1));
+        break;
+      }
+      // repeated .tensorflow.GraphTransferNodeOutputInfo node_output_info = 4;
+      case 4: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 34) goto handle_unusual;
+        do {
+          ptr = Varint::Parse32Inline(ptr, &size);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          parser_till_end = ::tensorflow::GraphTransferNodeOutputInfo::_InternalParse;
+          object = msg->add_node_output_info();
+          if (size > end - ptr) goto len_delim_till_end;
+          auto newend = ptr + size;
+          bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                         ptr, newend);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          ptr = newend;
+          if (ptr >= end) break;
+        } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 34 && (ptr += 1));
+        break;
+      }
+      // repeated .tensorflow.GraphTransferGraphInputNodeInfo graph_input_node_info = 5;
+      case 5: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 42) goto handle_unusual;
+        do {
+          ptr = Varint::Parse32Inline(ptr, &size);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          parser_till_end = ::tensorflow::GraphTransferGraphInputNodeInfo::_InternalParse;
+          object = msg->add_graph_input_node_info();
+          if (size > end - ptr) goto len_delim_till_end;
+          auto newend = ptr + size;
+          bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                         ptr, newend);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          ptr = newend;
+          if (ptr >= end) break;
+        } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 42 && (ptr += 1));
+        break;
+      }
+      // repeated .tensorflow.GraphTransferGraphOutputNodeInfo graph_output_node_info = 6;
+      case 6: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 50) goto handle_unusual;
+        do {
+          ptr = Varint::Parse32Inline(ptr, &size);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          parser_till_end = ::tensorflow::GraphTransferGraphOutputNodeInfo::_InternalParse;
+          object = msg->add_graph_output_node_info();
+          if (size > end - ptr) goto len_delim_till_end;
+          auto newend = ptr + size;
+          bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                         ptr, newend);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          ptr = newend;
+          if (ptr >= end) break;
+        } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 50 && (ptr += 1));
+        break;
+      }
+      // .tensorflow.GraphTransferInfo.Destination destination = 7;
+      case 7: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 56) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::tensorflow::GraphTransferInfo_Destination value = static_cast<::tensorflow::GraphTransferInfo_Destination>(val);
+        msg->set_destination(value);
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool GraphTransferInfo::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.GraphTransferInfo)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // repeated .tensorflow.GraphTransferNodeInfo node_info = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (10 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+                input, add_node_info()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // repeated .tensorflow.GraphTransferConstNodeInfo const_node_info = 2;
+      case 2: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (18 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+                input, add_const_node_info()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // repeated .tensorflow.GraphTransferNodeInputInfo node_input_info = 3;
+      case 3: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (26 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+                input, add_node_input_info()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // repeated .tensorflow.GraphTransferNodeOutputInfo node_output_info = 4;
+      case 4: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (34 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+                input, add_node_output_info()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // repeated .tensorflow.GraphTransferGraphInputNodeInfo graph_input_node_info = 5;
+      case 5: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (42 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+                input, add_graph_input_node_info()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // repeated .tensorflow.GraphTransferGraphOutputNodeInfo graph_output_node_info = 6;
+      case 6: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (50 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+                input, add_graph_output_node_info()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // .tensorflow.GraphTransferInfo.Destination destination = 7;
+      case 7: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (56 & 0xFF)) {
+          int value = 0;
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>(
+                 input, &value)));
+          set_destination(static_cast< ::tensorflow::GraphTransferInfo_Destination >(value));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.GraphTransferInfo)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.GraphTransferInfo)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void GraphTransferInfo::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.GraphTransferInfo)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // repeated .tensorflow.GraphTransferNodeInfo node_info = 1;
+  for (unsigned int i = 0,
+      n = static_cast<unsigned int>(this->node_info_size()); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      1,
+      this->node_info(static_cast<int>(i)),
+      output);
+  }
+
+  // repeated .tensorflow.GraphTransferConstNodeInfo const_node_info = 2;
+  for (unsigned int i = 0,
+      n = static_cast<unsigned int>(this->const_node_info_size()); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      2,
+      this->const_node_info(static_cast<int>(i)),
+      output);
+  }
+
+  // repeated .tensorflow.GraphTransferNodeInputInfo node_input_info = 3;
+  for (unsigned int i = 0,
+      n = static_cast<unsigned int>(this->node_input_info_size()); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      3,
+      this->node_input_info(static_cast<int>(i)),
+      output);
+  }
+
+  // repeated .tensorflow.GraphTransferNodeOutputInfo node_output_info = 4;
+  for (unsigned int i = 0,
+      n = static_cast<unsigned int>(this->node_output_info_size()); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      4,
+      this->node_output_info(static_cast<int>(i)),
+      output);
+  }
+
+  // repeated .tensorflow.GraphTransferGraphInputNodeInfo graph_input_node_info = 5;
+  for (unsigned int i = 0,
+      n = static_cast<unsigned int>(this->graph_input_node_info_size()); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      5,
+      this->graph_input_node_info(static_cast<int>(i)),
+      output);
+  }
+
+  // repeated .tensorflow.GraphTransferGraphOutputNodeInfo graph_output_node_info = 6;
+  for (unsigned int i = 0,
+      n = static_cast<unsigned int>(this->graph_output_node_info_size()); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      6,
+      this->graph_output_node_info(static_cast<int>(i)),
+      output);
+  }
+
+  // .tensorflow.GraphTransferInfo.Destination destination = 7;
+  if (this->destination() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteEnum(
+      7, this->destination(), output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.GraphTransferInfo)
+}
+
+::google::protobuf::uint8* GraphTransferInfo::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.GraphTransferInfo)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // repeated .tensorflow.GraphTransferNodeInfo node_info = 1;
+  for (unsigned int i = 0,
+      n = static_cast<unsigned int>(this->node_info_size()); i < n; i++) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        1, this->node_info(static_cast<int>(i)), deterministic, target);
+  }
+
+  // repeated .tensorflow.GraphTransferConstNodeInfo const_node_info = 2;
+  for (unsigned int i = 0,
+      n = static_cast<unsigned int>(this->const_node_info_size()); i < n; i++) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        2, this->const_node_info(static_cast<int>(i)), deterministic, target);
+  }
+
+  // repeated .tensorflow.GraphTransferNodeInputInfo node_input_info = 3;
+  for (unsigned int i = 0,
+      n = static_cast<unsigned int>(this->node_input_info_size()); i < n; i++) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        3, this->node_input_info(static_cast<int>(i)), deterministic, target);
+  }
+
+  // repeated .tensorflow.GraphTransferNodeOutputInfo node_output_info = 4;
+  for (unsigned int i = 0,
+      n = static_cast<unsigned int>(this->node_output_info_size()); i < n; i++) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        4, this->node_output_info(static_cast<int>(i)), deterministic, target);
+  }
+
+  // repeated .tensorflow.GraphTransferGraphInputNodeInfo graph_input_node_info = 5;
+  for (unsigned int i = 0,
+      n = static_cast<unsigned int>(this->graph_input_node_info_size()); i < n; i++) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        5, this->graph_input_node_info(static_cast<int>(i)), deterministic, target);
+  }
+
+  // repeated .tensorflow.GraphTransferGraphOutputNodeInfo graph_output_node_info = 6;
+  for (unsigned int i = 0,
+      n = static_cast<unsigned int>(this->graph_output_node_info_size()); i < n; i++) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        6, this->graph_output_node_info(static_cast<int>(i)), deterministic, target);
+  }
+
+  // .tensorflow.GraphTransferInfo.Destination destination = 7;
+  if (this->destination() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteEnumToArray(
+      7, this->destination(), target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.GraphTransferInfo)
+  return target;
+}
+
+size_t GraphTransferInfo::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.GraphTransferInfo)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // repeated .tensorflow.GraphTransferNodeInfo node_info = 1;
+  {
+    unsigned int count = static_cast<unsigned int>(this->node_info_size());
+    total_size += 1UL * count;
+    for (unsigned int i = 0; i < count; i++) {
+      total_size +=
+        ::google::protobuf::internal::WireFormatLite::MessageSize(
+          this->node_info(static_cast<int>(i)));
+    }
+  }
+
+  // repeated .tensorflow.GraphTransferConstNodeInfo const_node_info = 2;
+  {
+    unsigned int count = static_cast<unsigned int>(this->const_node_info_size());
+    total_size += 1UL * count;
+    for (unsigned int i = 0; i < count; i++) {
+      total_size +=
+        ::google::protobuf::internal::WireFormatLite::MessageSize(
+          this->const_node_info(static_cast<int>(i)));
+    }
+  }
+
+  // repeated .tensorflow.GraphTransferNodeInputInfo node_input_info = 3;
+  {
+    unsigned int count = static_cast<unsigned int>(this->node_input_info_size());
+    total_size += 1UL * count;
+    for (unsigned int i = 0; i < count; i++) {
+      total_size +=
+        ::google::protobuf::internal::WireFormatLite::MessageSize(
+          this->node_input_info(static_cast<int>(i)));
+    }
+  }
+
+  // repeated .tensorflow.GraphTransferNodeOutputInfo node_output_info = 4;
+  {
+    unsigned int count = static_cast<unsigned int>(this->node_output_info_size());
+    total_size += 1UL * count;
+    for (unsigned int i = 0; i < count; i++) {
+      total_size +=
+        ::google::protobuf::internal::WireFormatLite::MessageSize(
+          this->node_output_info(static_cast<int>(i)));
+    }
+  }
+
+  // repeated .tensorflow.GraphTransferGraphInputNodeInfo graph_input_node_info = 5;
+  {
+    unsigned int count = static_cast<unsigned int>(this->graph_input_node_info_size());
+    total_size += 1UL * count;
+    for (unsigned int i = 0; i < count; i++) {
+      total_size +=
+        ::google::protobuf::internal::WireFormatLite::MessageSize(
+          this->graph_input_node_info(static_cast<int>(i)));
+    }
+  }
+
+  // repeated .tensorflow.GraphTransferGraphOutputNodeInfo graph_output_node_info = 6;
+  {
+    unsigned int count = static_cast<unsigned int>(this->graph_output_node_info_size());
+    total_size += 1UL * count;
+    for (unsigned int i = 0; i < count; i++) {
+      total_size +=
+        ::google::protobuf::internal::WireFormatLite::MessageSize(
+          this->graph_output_node_info(static_cast<int>(i)));
+    }
+  }
+
+  // .tensorflow.GraphTransferInfo.Destination destination = 7;
+  if (this->destination() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::EnumSize(this->destination());
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void GraphTransferInfo::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.GraphTransferInfo)
+  GOOGLE_DCHECK_NE(&from, this);
+  const GraphTransferInfo* source =
+      ::google::protobuf::DynamicCastToGenerated<GraphTransferInfo>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.GraphTransferInfo)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.GraphTransferInfo)
+    MergeFrom(*source);
+  }
+}
+
+void GraphTransferInfo::MergeFrom(const GraphTransferInfo& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.GraphTransferInfo)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  node_info_.MergeFrom(from.node_info_);
+  const_node_info_.MergeFrom(from.const_node_info_);
+  node_input_info_.MergeFrom(from.node_input_info_);
+  node_output_info_.MergeFrom(from.node_output_info_);
+  graph_input_node_info_.MergeFrom(from.graph_input_node_info_);
+  graph_output_node_info_.MergeFrom(from.graph_output_node_info_);
+  if (from.destination() != 0) {
+    set_destination(from.destination());
+  }
+}
+
+void GraphTransferInfo::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.GraphTransferInfo)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void GraphTransferInfo::CopyFrom(const GraphTransferInfo& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.GraphTransferInfo)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool GraphTransferInfo::IsInitialized() const {
+  return true;
+}
+
+void GraphTransferInfo::Swap(GraphTransferInfo* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    GraphTransferInfo* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void GraphTransferInfo::UnsafeArenaSwap(GraphTransferInfo* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void GraphTransferInfo::InternalSwap(GraphTransferInfo* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  CastToBase(&node_info_)->InternalSwap(CastToBase(&other->node_info_));
+  CastToBase(&const_node_info_)->InternalSwap(CastToBase(&other->const_node_info_));
+  CastToBase(&node_input_info_)->InternalSwap(CastToBase(&other->node_input_info_));
+  CastToBase(&node_output_info_)->InternalSwap(CastToBase(&other->node_output_info_));
+  CastToBase(&graph_input_node_info_)->InternalSwap(CastToBase(&other->graph_input_node_info_));
+  CastToBase(&graph_output_node_info_)->InternalSwap(CastToBase(&other->graph_output_node_info_));
+  swap(destination_, other->destination_);
+}
+
+::google::protobuf::Metadata GraphTransferInfo::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fframework_2fgraph_5ftransfer_5finfo_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fframework_2fgraph_5ftransfer_5finfo_2eproto[kIndexInFileMessages];
+}
+
+
+// @@protoc_insertion_point(namespace_scope)
+}  // namespace tensorflow
+namespace google {
+namespace protobuf {
+template<> PROTOBUF_NOINLINE ::tensorflow::GraphTransferNodeInput* Arena::CreateMaybeMessage< ::tensorflow::GraphTransferNodeInput >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::GraphTransferNodeInput >(arena);
+}
+template<> PROTOBUF_NOINLINE ::tensorflow::GraphTransferNodeInfo* Arena::CreateMaybeMessage< ::tensorflow::GraphTransferNodeInfo >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::GraphTransferNodeInfo >(arena);
+}
+template<> PROTOBUF_NOINLINE ::tensorflow::GraphTransferConstNodeInfo* Arena::CreateMaybeMessage< ::tensorflow::GraphTransferConstNodeInfo >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::GraphTransferConstNodeInfo >(arena);
+}
+template<> PROTOBUF_NOINLINE ::tensorflow::GraphTransferNodeInputInfo* Arena::CreateMaybeMessage< ::tensorflow::GraphTransferNodeInputInfo >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::GraphTransferNodeInputInfo >(arena);
+}
+template<> PROTOBUF_NOINLINE ::tensorflow::GraphTransferNodeOutputInfo* Arena::CreateMaybeMessage< ::tensorflow::GraphTransferNodeOutputInfo >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::GraphTransferNodeOutputInfo >(arena);
+}
+template<> PROTOBUF_NOINLINE ::tensorflow::GraphTransferGraphInputNodeInfo* Arena::CreateMaybeMessage< ::tensorflow::GraphTransferGraphInputNodeInfo >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::GraphTransferGraphInputNodeInfo >(arena);
+}
+template<> PROTOBUF_NOINLINE ::tensorflow::GraphTransferGraphOutputNodeInfo* Arena::CreateMaybeMessage< ::tensorflow::GraphTransferGraphOutputNodeInfo >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::GraphTransferGraphOutputNodeInfo >(arena);
+}
+template<> PROTOBUF_NOINLINE ::tensorflow::GraphTransferInfo* Arena::CreateMaybeMessage< ::tensorflow::GraphTransferInfo >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::GraphTransferInfo >(arena);
+}
+}  // namespace protobuf
+}  // namespace google
+
+// @@protoc_insertion_point(global_scope)
+#include <google/protobuf/port_undef.inc>
diff --git a/tensorflow/core/framework/graph_transfer_info.pb.h b/tensorflow/core/framework/graph_transfer_info.pb.h
new file mode 100644 (file)
index 0000000..67021c8
--- /dev/null
@@ -0,0 +1,2533 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: tensorflow/core/framework/graph_transfer_info.proto
+
+#ifndef PROTOBUF_INCLUDED_tensorflow_2fcore_2fframework_2fgraph_5ftransfer_5finfo_2eproto
+#define PROTOBUF_INCLUDED_tensorflow_2fcore_2fframework_2fgraph_5ftransfer_5finfo_2eproto
+
+#include <limits>
+#include <string>
+
+#include <google/protobuf/port_def.inc>
+#if PROTOBUF_VERSION < 3006001
+#error This file was generated by a newer version of protoc which is
+#error incompatible with your Protocol Buffer headers. Please update
+#error your headers.
+#endif
+#if 3006001 < PROTOBUF_MIN_PROTOC_VERSION
+#error This file was generated by an older version of protoc which is
+#error incompatible with your Protocol Buffer headers. Please
+#error regenerate this file with a newer version of protoc.
+#endif
+
+#include <google/protobuf/port_undef.inc>
+#include <google/protobuf/io/coded_stream.h>
+#include <google/protobuf/arena.h>
+#include <google/protobuf/arenastring.h>
+#include <google/protobuf/generated_message_table_driven.h>
+#include <google/protobuf/generated_message_util.h>
+#include <google/protobuf/inlined_string_field.h>
+#include <google/protobuf/metadata.h>
+#include <google/protobuf/message.h>
+#include <google/protobuf/repeated_field.h>  // IWYU pragma: export
+#include <google/protobuf/extension_set.h>  // IWYU pragma: export
+#include <google/protobuf/generated_enum_reflection.h>
+#include <google/protobuf/unknown_field_set.h>
+#include "tensorflow/core/framework/types.pb.h"
+// @@protoc_insertion_point(includes)
+#include <google/protobuf/port_def.inc>
+#define PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fframework_2fgraph_5ftransfer_5finfo_2eproto
+
+// Internal implementation detail -- do not use these members.
+struct TableStruct_tensorflow_2fcore_2fframework_2fgraph_5ftransfer_5finfo_2eproto {
+  static const ::google::protobuf::internal::ParseTableField entries[]
+    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
+  static const ::google::protobuf::internal::AuxillaryParseTableField aux[]
+    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
+  static const ::google::protobuf::internal::ParseTable schema[8]
+    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
+  static const ::google::protobuf::internal::FieldMetadata field_metadata[];
+  static const ::google::protobuf::internal::SerializationTable serialization_table[];
+  static const ::google::protobuf::uint32 offsets[];
+};
+void AddDescriptors_tensorflow_2fcore_2fframework_2fgraph_5ftransfer_5finfo_2eproto();
+namespace tensorflow {
+class GraphTransferConstNodeInfo;
+class GraphTransferConstNodeInfoDefaultTypeInternal;
+extern GraphTransferConstNodeInfoDefaultTypeInternal _GraphTransferConstNodeInfo_default_instance_;
+class GraphTransferGraphInputNodeInfo;
+class GraphTransferGraphInputNodeInfoDefaultTypeInternal;
+extern GraphTransferGraphInputNodeInfoDefaultTypeInternal _GraphTransferGraphInputNodeInfo_default_instance_;
+class GraphTransferGraphOutputNodeInfo;
+class GraphTransferGraphOutputNodeInfoDefaultTypeInternal;
+extern GraphTransferGraphOutputNodeInfoDefaultTypeInternal _GraphTransferGraphOutputNodeInfo_default_instance_;
+class GraphTransferInfo;
+class GraphTransferInfoDefaultTypeInternal;
+extern GraphTransferInfoDefaultTypeInternal _GraphTransferInfo_default_instance_;
+class GraphTransferNodeInfo;
+class GraphTransferNodeInfoDefaultTypeInternal;
+extern GraphTransferNodeInfoDefaultTypeInternal _GraphTransferNodeInfo_default_instance_;
+class GraphTransferNodeInput;
+class GraphTransferNodeInputDefaultTypeInternal;
+extern GraphTransferNodeInputDefaultTypeInternal _GraphTransferNodeInput_default_instance_;
+class GraphTransferNodeInputInfo;
+class GraphTransferNodeInputInfoDefaultTypeInternal;
+extern GraphTransferNodeInputInfoDefaultTypeInternal _GraphTransferNodeInputInfo_default_instance_;
+class GraphTransferNodeOutputInfo;
+class GraphTransferNodeOutputInfoDefaultTypeInternal;
+extern GraphTransferNodeOutputInfoDefaultTypeInternal _GraphTransferNodeOutputInfo_default_instance_;
+}  // namespace tensorflow
+namespace google {
+namespace protobuf {
+template<> ::tensorflow::GraphTransferConstNodeInfo* Arena::CreateMaybeMessage<::tensorflow::GraphTransferConstNodeInfo>(Arena*);
+template<> ::tensorflow::GraphTransferGraphInputNodeInfo* Arena::CreateMaybeMessage<::tensorflow::GraphTransferGraphInputNodeInfo>(Arena*);
+template<> ::tensorflow::GraphTransferGraphOutputNodeInfo* Arena::CreateMaybeMessage<::tensorflow::GraphTransferGraphOutputNodeInfo>(Arena*);
+template<> ::tensorflow::GraphTransferInfo* Arena::CreateMaybeMessage<::tensorflow::GraphTransferInfo>(Arena*);
+template<> ::tensorflow::GraphTransferNodeInfo* Arena::CreateMaybeMessage<::tensorflow::GraphTransferNodeInfo>(Arena*);
+template<> ::tensorflow::GraphTransferNodeInput* Arena::CreateMaybeMessage<::tensorflow::GraphTransferNodeInput>(Arena*);
+template<> ::tensorflow::GraphTransferNodeInputInfo* Arena::CreateMaybeMessage<::tensorflow::GraphTransferNodeInputInfo>(Arena*);
+template<> ::tensorflow::GraphTransferNodeOutputInfo* Arena::CreateMaybeMessage<::tensorflow::GraphTransferNodeOutputInfo>(Arena*);
+}  // namespace protobuf
+}  // namespace google
+namespace tensorflow {
+
+enum GraphTransferInfo_Destination {
+  GraphTransferInfo_Destination_NOP = 0,
+  GraphTransferInfo_Destination_HEXAGON = 1,
+  GraphTransferInfo_Destination_GraphTransferInfo_Destination_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::google::protobuf::int32>::min(),
+  GraphTransferInfo_Destination_GraphTransferInfo_Destination_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::google::protobuf::int32>::max()
+};
+bool GraphTransferInfo_Destination_IsValid(int value);
+const GraphTransferInfo_Destination GraphTransferInfo_Destination_Destination_MIN = GraphTransferInfo_Destination_NOP;
+const GraphTransferInfo_Destination GraphTransferInfo_Destination_Destination_MAX = GraphTransferInfo_Destination_HEXAGON;
+const int GraphTransferInfo_Destination_Destination_ARRAYSIZE = GraphTransferInfo_Destination_Destination_MAX + 1;
+
+const ::google::protobuf::EnumDescriptor* GraphTransferInfo_Destination_descriptor();
+inline const ::std::string& GraphTransferInfo_Destination_Name(GraphTransferInfo_Destination value) {
+  return ::google::protobuf::internal::NameOfEnum(
+    GraphTransferInfo_Destination_descriptor(), value);
+}
+inline bool GraphTransferInfo_Destination_Parse(
+    const ::std::string& name, GraphTransferInfo_Destination* value) {
+  return ::google::protobuf::internal::ParseNamedEnum<GraphTransferInfo_Destination>(
+    GraphTransferInfo_Destination_descriptor(), name, value);
+}
+// ===================================================================
+
+class GraphTransferNodeInput : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.GraphTransferNodeInput) */ {
+ public:
+  GraphTransferNodeInput();
+  virtual ~GraphTransferNodeInput();
+
+  GraphTransferNodeInput(const GraphTransferNodeInput& from);
+
+  inline GraphTransferNodeInput& operator=(const GraphTransferNodeInput& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  GraphTransferNodeInput(GraphTransferNodeInput&& from) noexcept
+    : GraphTransferNodeInput() {
+    *this = ::std::move(from);
+  }
+
+  inline GraphTransferNodeInput& operator=(GraphTransferNodeInput&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const GraphTransferNodeInput& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const GraphTransferNodeInput* internal_default_instance() {
+    return reinterpret_cast<const GraphTransferNodeInput*>(
+               &_GraphTransferNodeInput_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    0;
+
+  void UnsafeArenaSwap(GraphTransferNodeInput* other);
+  void Swap(GraphTransferNodeInput* other);
+  friend void swap(GraphTransferNodeInput& a, GraphTransferNodeInput& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline GraphTransferNodeInput* New() const final {
+    return CreateMaybeMessage<GraphTransferNodeInput>(NULL);
+  }
+
+  GraphTransferNodeInput* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<GraphTransferNodeInput>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const GraphTransferNodeInput& from);
+  void MergeFrom(const GraphTransferNodeInput& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(GraphTransferNodeInput* other);
+  protected:
+  explicit GraphTransferNodeInput(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // int32 node_id = 1;
+  void clear_node_id();
+  static const int kNodeIdFieldNumber = 1;
+  ::google::protobuf::int32 node_id() const;
+  void set_node_id(::google::protobuf::int32 value);
+
+  // int32 output_port = 2;
+  void clear_output_port();
+  static const int kOutputPortFieldNumber = 2;
+  ::google::protobuf::int32 output_port() const;
+  void set_output_port(::google::protobuf::int32 value);
+
+  // @@protoc_insertion_point(class_scope:tensorflow.GraphTransferNodeInput)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  ::google::protobuf::int32 node_id_;
+  ::google::protobuf::int32 output_port_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fframework_2fgraph_5ftransfer_5finfo_2eproto;
+};
+// -------------------------------------------------------------------
+
+class GraphTransferNodeInfo : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.GraphTransferNodeInfo) */ {
+ public:
+  GraphTransferNodeInfo();
+  virtual ~GraphTransferNodeInfo();
+
+  GraphTransferNodeInfo(const GraphTransferNodeInfo& from);
+
+  inline GraphTransferNodeInfo& operator=(const GraphTransferNodeInfo& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  GraphTransferNodeInfo(GraphTransferNodeInfo&& from) noexcept
+    : GraphTransferNodeInfo() {
+    *this = ::std::move(from);
+  }
+
+  inline GraphTransferNodeInfo& operator=(GraphTransferNodeInfo&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const GraphTransferNodeInfo& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const GraphTransferNodeInfo* internal_default_instance() {
+    return reinterpret_cast<const GraphTransferNodeInfo*>(
+               &_GraphTransferNodeInfo_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    1;
+
+  void UnsafeArenaSwap(GraphTransferNodeInfo* other);
+  void Swap(GraphTransferNodeInfo* other);
+  friend void swap(GraphTransferNodeInfo& a, GraphTransferNodeInfo& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline GraphTransferNodeInfo* New() const final {
+    return CreateMaybeMessage<GraphTransferNodeInfo>(NULL);
+  }
+
+  GraphTransferNodeInfo* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<GraphTransferNodeInfo>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const GraphTransferNodeInfo& from);
+  void MergeFrom(const GraphTransferNodeInfo& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(GraphTransferNodeInfo* other);
+  protected:
+  explicit GraphTransferNodeInfo(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // string name = 1;
+  void clear_name();
+  static const int kNameFieldNumber = 1;
+  const ::std::string& name() const;
+  void set_name(const ::std::string& value);
+  #if LANG_CXX11
+  void set_name(::std::string&& value);
+  #endif
+  void set_name(const char* value);
+  void set_name(const char* value, size_t size);
+  ::std::string* mutable_name();
+  ::std::string* release_name();
+  void set_allocated_name(::std::string* name);
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  ::std::string* unsafe_arena_release_name();
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  void unsafe_arena_set_allocated_name(
+      ::std::string* name);
+
+  // string type_name = 3;
+  void clear_type_name();
+  static const int kTypeNameFieldNumber = 3;
+  const ::std::string& type_name() const;
+  void set_type_name(const ::std::string& value);
+  #if LANG_CXX11
+  void set_type_name(::std::string&& value);
+  #endif
+  void set_type_name(const char* value);
+  void set_type_name(const char* value, size_t size);
+  ::std::string* mutable_type_name();
+  ::std::string* release_type_name();
+  void set_allocated_type_name(::std::string* type_name);
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  ::std::string* unsafe_arena_release_type_name();
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  void unsafe_arena_set_allocated_type_name(
+      ::std::string* type_name);
+
+  // int32 node_id = 2;
+  void clear_node_id();
+  static const int kNodeIdFieldNumber = 2;
+  ::google::protobuf::int32 node_id() const;
+  void set_node_id(::google::protobuf::int32 value);
+
+  // int32 soc_op_id = 4;
+  void clear_soc_op_id();
+  static const int kSocOpIdFieldNumber = 4;
+  ::google::protobuf::int32 soc_op_id() const;
+  void set_soc_op_id(::google::protobuf::int32 value);
+
+  // int32 padding_id = 5;
+  void clear_padding_id();
+  static const int kPaddingIdFieldNumber = 5;
+  ::google::protobuf::int32 padding_id() const;
+  void set_padding_id(::google::protobuf::int32 value);
+
+  // int32 input_count = 6;
+  void clear_input_count();
+  static const int kInputCountFieldNumber = 6;
+  ::google::protobuf::int32 input_count() const;
+  void set_input_count(::google::protobuf::int32 value);
+
+  // int32 output_count = 7;
+  void clear_output_count();
+  static const int kOutputCountFieldNumber = 7;
+  ::google::protobuf::int32 output_count() const;
+  void set_output_count(::google::protobuf::int32 value);
+
+  // @@protoc_insertion_point(class_scope:tensorflow.GraphTransferNodeInfo)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  ::google::protobuf::internal::ArenaStringPtr name_;
+  ::google::protobuf::internal::ArenaStringPtr type_name_;
+  ::google::protobuf::int32 node_id_;
+  ::google::protobuf::int32 soc_op_id_;
+  ::google::protobuf::int32 padding_id_;
+  ::google::protobuf::int32 input_count_;
+  ::google::protobuf::int32 output_count_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fframework_2fgraph_5ftransfer_5finfo_2eproto;
+};
+// -------------------------------------------------------------------
+
+class GraphTransferConstNodeInfo : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.GraphTransferConstNodeInfo) */ {
+ public:
+  GraphTransferConstNodeInfo();
+  virtual ~GraphTransferConstNodeInfo();
+
+  GraphTransferConstNodeInfo(const GraphTransferConstNodeInfo& from);
+
+  inline GraphTransferConstNodeInfo& operator=(const GraphTransferConstNodeInfo& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  GraphTransferConstNodeInfo(GraphTransferConstNodeInfo&& from) noexcept
+    : GraphTransferConstNodeInfo() {
+    *this = ::std::move(from);
+  }
+
+  inline GraphTransferConstNodeInfo& operator=(GraphTransferConstNodeInfo&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const GraphTransferConstNodeInfo& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const GraphTransferConstNodeInfo* internal_default_instance() {
+    return reinterpret_cast<const GraphTransferConstNodeInfo*>(
+               &_GraphTransferConstNodeInfo_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    2;
+
+  void UnsafeArenaSwap(GraphTransferConstNodeInfo* other);
+  void Swap(GraphTransferConstNodeInfo* other);
+  friend void swap(GraphTransferConstNodeInfo& a, GraphTransferConstNodeInfo& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline GraphTransferConstNodeInfo* New() const final {
+    return CreateMaybeMessage<GraphTransferConstNodeInfo>(NULL);
+  }
+
+  GraphTransferConstNodeInfo* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<GraphTransferConstNodeInfo>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const GraphTransferConstNodeInfo& from);
+  void MergeFrom(const GraphTransferConstNodeInfo& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(GraphTransferConstNodeInfo* other);
+  protected:
+  explicit GraphTransferConstNodeInfo(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // repeated int64 shape = 3;
+  int shape_size() const;
+  void clear_shape();
+  static const int kShapeFieldNumber = 3;
+  ::google::protobuf::int64 shape(int index) const;
+  void set_shape(int index, ::google::protobuf::int64 value);
+  void add_shape(::google::protobuf::int64 value);
+  const ::google::protobuf::RepeatedField< ::google::protobuf::int64 >&
+      shape() const;
+  ::google::protobuf::RepeatedField< ::google::protobuf::int64 >*
+      mutable_shape();
+
+  // string name = 1;
+  void clear_name();
+  static const int kNameFieldNumber = 1;
+  const ::std::string& name() const;
+  void set_name(const ::std::string& value);
+  #if LANG_CXX11
+  void set_name(::std::string&& value);
+  #endif
+  void set_name(const char* value);
+  void set_name(const char* value, size_t size);
+  ::std::string* mutable_name();
+  ::std::string* release_name();
+  void set_allocated_name(::std::string* name);
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  ::std::string* unsafe_arena_release_name();
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  void unsafe_arena_set_allocated_name(
+      ::std::string* name);
+
+  // bytes data = 4;
+  void clear_data();
+  static const int kDataFieldNumber = 4;
+  const ::std::string& data() const;
+  void set_data(const ::std::string& value);
+  #if LANG_CXX11
+  void set_data(::std::string&& value);
+  #endif
+  void set_data(const char* value);
+  void set_data(const void* value, size_t size);
+  ::std::string* mutable_data();
+  ::std::string* release_data();
+  void set_allocated_data(::std::string* data);
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  ::std::string* unsafe_arena_release_data();
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  void unsafe_arena_set_allocated_data(
+      ::std::string* data);
+
+  // int32 node_id = 2;
+  void clear_node_id();
+  static const int kNodeIdFieldNumber = 2;
+  ::google::protobuf::int32 node_id() const;
+  void set_node_id(::google::protobuf::int32 value);
+
+  // .tensorflow.DataType dtype = 5;
+  void clear_dtype();
+  static const int kDtypeFieldNumber = 5;
+  ::tensorflow::DataType dtype() const;
+  void set_dtype(::tensorflow::DataType value);
+
+  // @@protoc_insertion_point(class_scope:tensorflow.GraphTransferConstNodeInfo)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  ::google::protobuf::RepeatedField< ::google::protobuf::int64 > shape_;
+  mutable std::atomic<int> _shape_cached_byte_size_;
+  ::google::protobuf::internal::ArenaStringPtr name_;
+  ::google::protobuf::internal::ArenaStringPtr data_;
+  ::google::protobuf::int32 node_id_;
+  int dtype_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fframework_2fgraph_5ftransfer_5finfo_2eproto;
+};
+// -------------------------------------------------------------------
+
+class GraphTransferNodeInputInfo : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.GraphTransferNodeInputInfo) */ {
+ public:
+  GraphTransferNodeInputInfo();
+  virtual ~GraphTransferNodeInputInfo();
+
+  GraphTransferNodeInputInfo(const GraphTransferNodeInputInfo& from);
+
+  inline GraphTransferNodeInputInfo& operator=(const GraphTransferNodeInputInfo& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  GraphTransferNodeInputInfo(GraphTransferNodeInputInfo&& from) noexcept
+    : GraphTransferNodeInputInfo() {
+    *this = ::std::move(from);
+  }
+
+  inline GraphTransferNodeInputInfo& operator=(GraphTransferNodeInputInfo&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const GraphTransferNodeInputInfo& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const GraphTransferNodeInputInfo* internal_default_instance() {
+    return reinterpret_cast<const GraphTransferNodeInputInfo*>(
+               &_GraphTransferNodeInputInfo_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    3;
+
+  void UnsafeArenaSwap(GraphTransferNodeInputInfo* other);
+  void Swap(GraphTransferNodeInputInfo* other);
+  friend void swap(GraphTransferNodeInputInfo& a, GraphTransferNodeInputInfo& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline GraphTransferNodeInputInfo* New() const final {
+    return CreateMaybeMessage<GraphTransferNodeInputInfo>(NULL);
+  }
+
+  GraphTransferNodeInputInfo* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<GraphTransferNodeInputInfo>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const GraphTransferNodeInputInfo& from);
+  void MergeFrom(const GraphTransferNodeInputInfo& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(GraphTransferNodeInputInfo* other);
+  protected:
+  explicit GraphTransferNodeInputInfo(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // repeated .tensorflow.GraphTransferNodeInput node_input = 2;
+  int node_input_size() const;
+  void clear_node_input();
+  static const int kNodeInputFieldNumber = 2;
+  ::tensorflow::GraphTransferNodeInput* mutable_node_input(int index);
+  ::google::protobuf::RepeatedPtrField< ::tensorflow::GraphTransferNodeInput >*
+      mutable_node_input();
+  const ::tensorflow::GraphTransferNodeInput& node_input(int index) const;
+  ::tensorflow::GraphTransferNodeInput* add_node_input();
+  const ::google::protobuf::RepeatedPtrField< ::tensorflow::GraphTransferNodeInput >&
+      node_input() const;
+
+  // int32 node_id = 1;
+  void clear_node_id();
+  static const int kNodeIdFieldNumber = 1;
+  ::google::protobuf::int32 node_id() const;
+  void set_node_id(::google::protobuf::int32 value);
+
+  // @@protoc_insertion_point(class_scope:tensorflow.GraphTransferNodeInputInfo)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  ::google::protobuf::RepeatedPtrField< ::tensorflow::GraphTransferNodeInput > node_input_;
+  ::google::protobuf::int32 node_id_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fframework_2fgraph_5ftransfer_5finfo_2eproto;
+};
+// -------------------------------------------------------------------
+
+class GraphTransferNodeOutputInfo : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.GraphTransferNodeOutputInfo) */ {
+ public:
+  GraphTransferNodeOutputInfo();
+  virtual ~GraphTransferNodeOutputInfo();
+
+  GraphTransferNodeOutputInfo(const GraphTransferNodeOutputInfo& from);
+
+  inline GraphTransferNodeOutputInfo& operator=(const GraphTransferNodeOutputInfo& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  GraphTransferNodeOutputInfo(GraphTransferNodeOutputInfo&& from) noexcept
+    : GraphTransferNodeOutputInfo() {
+    *this = ::std::move(from);
+  }
+
+  inline GraphTransferNodeOutputInfo& operator=(GraphTransferNodeOutputInfo&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const GraphTransferNodeOutputInfo& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const GraphTransferNodeOutputInfo* internal_default_instance() {
+    return reinterpret_cast<const GraphTransferNodeOutputInfo*>(
+               &_GraphTransferNodeOutputInfo_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    4;
+
+  void UnsafeArenaSwap(GraphTransferNodeOutputInfo* other);
+  void Swap(GraphTransferNodeOutputInfo* other);
+  friend void swap(GraphTransferNodeOutputInfo& a, GraphTransferNodeOutputInfo& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline GraphTransferNodeOutputInfo* New() const final {
+    return CreateMaybeMessage<GraphTransferNodeOutputInfo>(NULL);
+  }
+
+  GraphTransferNodeOutputInfo* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<GraphTransferNodeOutputInfo>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const GraphTransferNodeOutputInfo& from);
+  void MergeFrom(const GraphTransferNodeOutputInfo& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(GraphTransferNodeOutputInfo* other);
+  protected:
+  explicit GraphTransferNodeOutputInfo(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // repeated int32 max_byte_size = 2;
+  int max_byte_size_size() const;
+  void clear_max_byte_size();
+  static const int kMaxByteSizeFieldNumber = 2;
+  ::google::protobuf::int32 max_byte_size(int index) const;
+  void set_max_byte_size(int index, ::google::protobuf::int32 value);
+  void add_max_byte_size(::google::protobuf::int32 value);
+  const ::google::protobuf::RepeatedField< ::google::protobuf::int32 >&
+      max_byte_size() const;
+  ::google::protobuf::RepeatedField< ::google::protobuf::int32 >*
+      mutable_max_byte_size();
+
+  // int32 node_id = 1;
+  void clear_node_id();
+  static const int kNodeIdFieldNumber = 1;
+  ::google::protobuf::int32 node_id() const;
+  void set_node_id(::google::protobuf::int32 value);
+
+  // @@protoc_insertion_point(class_scope:tensorflow.GraphTransferNodeOutputInfo)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  ::google::protobuf::RepeatedField< ::google::protobuf::int32 > max_byte_size_;
+  mutable std::atomic<int> _max_byte_size_cached_byte_size_;
+  ::google::protobuf::int32 node_id_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fframework_2fgraph_5ftransfer_5finfo_2eproto;
+};
+// -------------------------------------------------------------------
+
+class GraphTransferGraphInputNodeInfo : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.GraphTransferGraphInputNodeInfo) */ {
+ public:
+  GraphTransferGraphInputNodeInfo();
+  virtual ~GraphTransferGraphInputNodeInfo();
+
+  GraphTransferGraphInputNodeInfo(const GraphTransferGraphInputNodeInfo& from);
+
+  inline GraphTransferGraphInputNodeInfo& operator=(const GraphTransferGraphInputNodeInfo& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  GraphTransferGraphInputNodeInfo(GraphTransferGraphInputNodeInfo&& from) noexcept
+    : GraphTransferGraphInputNodeInfo() {
+    *this = ::std::move(from);
+  }
+
+  inline GraphTransferGraphInputNodeInfo& operator=(GraphTransferGraphInputNodeInfo&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const GraphTransferGraphInputNodeInfo& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const GraphTransferGraphInputNodeInfo* internal_default_instance() {
+    return reinterpret_cast<const GraphTransferGraphInputNodeInfo*>(
+               &_GraphTransferGraphInputNodeInfo_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    5;
+
+  void UnsafeArenaSwap(GraphTransferGraphInputNodeInfo* other);
+  void Swap(GraphTransferGraphInputNodeInfo* other);
+  friend void swap(GraphTransferGraphInputNodeInfo& a, GraphTransferGraphInputNodeInfo& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline GraphTransferGraphInputNodeInfo* New() const final {
+    return CreateMaybeMessage<GraphTransferGraphInputNodeInfo>(NULL);
+  }
+
+  GraphTransferGraphInputNodeInfo* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<GraphTransferGraphInputNodeInfo>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const GraphTransferGraphInputNodeInfo& from);
+  void MergeFrom(const GraphTransferGraphInputNodeInfo& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(GraphTransferGraphInputNodeInfo* other);
+  protected:
+  explicit GraphTransferGraphInputNodeInfo(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // repeated int64 shape = 2;
+  int shape_size() const;
+  void clear_shape();
+  static const int kShapeFieldNumber = 2;
+  ::google::protobuf::int64 shape(int index) const;
+  void set_shape(int index, ::google::protobuf::int64 value);
+  void add_shape(::google::protobuf::int64 value);
+  const ::google::protobuf::RepeatedField< ::google::protobuf::int64 >&
+      shape() const;
+  ::google::protobuf::RepeatedField< ::google::protobuf::int64 >*
+      mutable_shape();
+
+  // string name = 1;
+  void clear_name();
+  static const int kNameFieldNumber = 1;
+  const ::std::string& name() const;
+  void set_name(const ::std::string& value);
+  #if LANG_CXX11
+  void set_name(::std::string&& value);
+  #endif
+  void set_name(const char* value);
+  void set_name(const char* value, size_t size);
+  ::std::string* mutable_name();
+  ::std::string* release_name();
+  void set_allocated_name(::std::string* name);
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  ::std::string* unsafe_arena_release_name();
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  void unsafe_arena_set_allocated_name(
+      ::std::string* name);
+
+  // .tensorflow.DataType dtype = 3;
+  void clear_dtype();
+  static const int kDtypeFieldNumber = 3;
+  ::tensorflow::DataType dtype() const;
+  void set_dtype(::tensorflow::DataType value);
+
+  // @@protoc_insertion_point(class_scope:tensorflow.GraphTransferGraphInputNodeInfo)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  ::google::protobuf::RepeatedField< ::google::protobuf::int64 > shape_;
+  mutable std::atomic<int> _shape_cached_byte_size_;
+  ::google::protobuf::internal::ArenaStringPtr name_;
+  int dtype_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fframework_2fgraph_5ftransfer_5finfo_2eproto;
+};
+// -------------------------------------------------------------------
+
+class GraphTransferGraphOutputNodeInfo : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.GraphTransferGraphOutputNodeInfo) */ {
+ public:
+  GraphTransferGraphOutputNodeInfo();
+  virtual ~GraphTransferGraphOutputNodeInfo();
+
+  GraphTransferGraphOutputNodeInfo(const GraphTransferGraphOutputNodeInfo& from);
+
+  inline GraphTransferGraphOutputNodeInfo& operator=(const GraphTransferGraphOutputNodeInfo& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  GraphTransferGraphOutputNodeInfo(GraphTransferGraphOutputNodeInfo&& from) noexcept
+    : GraphTransferGraphOutputNodeInfo() {
+    *this = ::std::move(from);
+  }
+
+  inline GraphTransferGraphOutputNodeInfo& operator=(GraphTransferGraphOutputNodeInfo&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const GraphTransferGraphOutputNodeInfo& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const GraphTransferGraphOutputNodeInfo* internal_default_instance() {
+    return reinterpret_cast<const GraphTransferGraphOutputNodeInfo*>(
+               &_GraphTransferGraphOutputNodeInfo_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    6;
+
+  void UnsafeArenaSwap(GraphTransferGraphOutputNodeInfo* other);
+  void Swap(GraphTransferGraphOutputNodeInfo* other);
+  friend void swap(GraphTransferGraphOutputNodeInfo& a, GraphTransferGraphOutputNodeInfo& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline GraphTransferGraphOutputNodeInfo* New() const final {
+    return CreateMaybeMessage<GraphTransferGraphOutputNodeInfo>(NULL);
+  }
+
+  GraphTransferGraphOutputNodeInfo* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<GraphTransferGraphOutputNodeInfo>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const GraphTransferGraphOutputNodeInfo& from);
+  void MergeFrom(const GraphTransferGraphOutputNodeInfo& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(GraphTransferGraphOutputNodeInfo* other);
+  protected:
+  explicit GraphTransferGraphOutputNodeInfo(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // repeated int64 shape = 2;
+  int shape_size() const;
+  void clear_shape();
+  static const int kShapeFieldNumber = 2;
+  ::google::protobuf::int64 shape(int index) const;
+  void set_shape(int index, ::google::protobuf::int64 value);
+  void add_shape(::google::protobuf::int64 value);
+  const ::google::protobuf::RepeatedField< ::google::protobuf::int64 >&
+      shape() const;
+  ::google::protobuf::RepeatedField< ::google::protobuf::int64 >*
+      mutable_shape();
+
+  // string name = 1;
+  void clear_name();
+  static const int kNameFieldNumber = 1;
+  const ::std::string& name() const;
+  void set_name(const ::std::string& value);
+  #if LANG_CXX11
+  void set_name(::std::string&& value);
+  #endif
+  void set_name(const char* value);
+  void set_name(const char* value, size_t size);
+  ::std::string* mutable_name();
+  ::std::string* release_name();
+  void set_allocated_name(::std::string* name);
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  ::std::string* unsafe_arena_release_name();
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  void unsafe_arena_set_allocated_name(
+      ::std::string* name);
+
+  // .tensorflow.DataType dtype = 3;
+  void clear_dtype();
+  static const int kDtypeFieldNumber = 3;
+  ::tensorflow::DataType dtype() const;
+  void set_dtype(::tensorflow::DataType value);
+
+  // @@protoc_insertion_point(class_scope:tensorflow.GraphTransferGraphOutputNodeInfo)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  ::google::protobuf::RepeatedField< ::google::protobuf::int64 > shape_;
+  mutable std::atomic<int> _shape_cached_byte_size_;
+  ::google::protobuf::internal::ArenaStringPtr name_;
+  int dtype_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fframework_2fgraph_5ftransfer_5finfo_2eproto;
+};
+// -------------------------------------------------------------------
+
+class GraphTransferInfo : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.GraphTransferInfo) */ {
+ public:
+  GraphTransferInfo();
+  virtual ~GraphTransferInfo();
+
+  GraphTransferInfo(const GraphTransferInfo& from);
+
+  inline GraphTransferInfo& operator=(const GraphTransferInfo& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  GraphTransferInfo(GraphTransferInfo&& from) noexcept
+    : GraphTransferInfo() {
+    *this = ::std::move(from);
+  }
+
+  inline GraphTransferInfo& operator=(GraphTransferInfo&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const GraphTransferInfo& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const GraphTransferInfo* internal_default_instance() {
+    return reinterpret_cast<const GraphTransferInfo*>(
+               &_GraphTransferInfo_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    7;
+
+  void UnsafeArenaSwap(GraphTransferInfo* other);
+  void Swap(GraphTransferInfo* other);
+  friend void swap(GraphTransferInfo& a, GraphTransferInfo& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline GraphTransferInfo* New() const final {
+    return CreateMaybeMessage<GraphTransferInfo>(NULL);
+  }
+
+  GraphTransferInfo* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<GraphTransferInfo>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const GraphTransferInfo& from);
+  void MergeFrom(const GraphTransferInfo& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(GraphTransferInfo* other);
+  protected:
+  explicit GraphTransferInfo(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  typedef GraphTransferInfo_Destination Destination;
+  static const Destination NOP =
+    GraphTransferInfo_Destination_NOP;
+  static const Destination HEXAGON =
+    GraphTransferInfo_Destination_HEXAGON;
+  static inline bool Destination_IsValid(int value) {
+    return GraphTransferInfo_Destination_IsValid(value);
+  }
+  static const Destination Destination_MIN =
+    GraphTransferInfo_Destination_Destination_MIN;
+  static const Destination Destination_MAX =
+    GraphTransferInfo_Destination_Destination_MAX;
+  static const int Destination_ARRAYSIZE =
+    GraphTransferInfo_Destination_Destination_ARRAYSIZE;
+  static inline const ::google::protobuf::EnumDescriptor*
+  Destination_descriptor() {
+    return GraphTransferInfo_Destination_descriptor();
+  }
+  static inline const ::std::string& Destination_Name(Destination value) {
+    return GraphTransferInfo_Destination_Name(value);
+  }
+  static inline bool Destination_Parse(const ::std::string& name,
+      Destination* value) {
+    return GraphTransferInfo_Destination_Parse(name, value);
+  }
+
+  // accessors -------------------------------------------------------
+
+  // repeated .tensorflow.GraphTransferNodeInfo node_info = 1;
+  int node_info_size() const;
+  void clear_node_info();
+  static const int kNodeInfoFieldNumber = 1;
+  ::tensorflow::GraphTransferNodeInfo* mutable_node_info(int index);
+  ::google::protobuf::RepeatedPtrField< ::tensorflow::GraphTransferNodeInfo >*
+      mutable_node_info();
+  const ::tensorflow::GraphTransferNodeInfo& node_info(int index) const;
+  ::tensorflow::GraphTransferNodeInfo* add_node_info();
+  const ::google::protobuf::RepeatedPtrField< ::tensorflow::GraphTransferNodeInfo >&
+      node_info() const;
+
+  // repeated .tensorflow.GraphTransferConstNodeInfo const_node_info = 2;
+  int const_node_info_size() const;
+  void clear_const_node_info();
+  static const int kConstNodeInfoFieldNumber = 2;
+  ::tensorflow::GraphTransferConstNodeInfo* mutable_const_node_info(int index);
+  ::google::protobuf::RepeatedPtrField< ::tensorflow::GraphTransferConstNodeInfo >*
+      mutable_const_node_info();
+  const ::tensorflow::GraphTransferConstNodeInfo& const_node_info(int index) const;
+  ::tensorflow::GraphTransferConstNodeInfo* add_const_node_info();
+  const ::google::protobuf::RepeatedPtrField< ::tensorflow::GraphTransferConstNodeInfo >&
+      const_node_info() const;
+
+  // repeated .tensorflow.GraphTransferNodeInputInfo node_input_info = 3;
+  int node_input_info_size() const;
+  void clear_node_input_info();
+  static const int kNodeInputInfoFieldNumber = 3;
+  ::tensorflow::GraphTransferNodeInputInfo* mutable_node_input_info(int index);
+  ::google::protobuf::RepeatedPtrField< ::tensorflow::GraphTransferNodeInputInfo >*
+      mutable_node_input_info();
+  const ::tensorflow::GraphTransferNodeInputInfo& node_input_info(int index) const;
+  ::tensorflow::GraphTransferNodeInputInfo* add_node_input_info();
+  const ::google::protobuf::RepeatedPtrField< ::tensorflow::GraphTransferNodeInputInfo >&
+      node_input_info() const;
+
+  // repeated .tensorflow.GraphTransferNodeOutputInfo node_output_info = 4;
+  int node_output_info_size() const;
+  void clear_node_output_info();
+  static const int kNodeOutputInfoFieldNumber = 4;
+  ::tensorflow::GraphTransferNodeOutputInfo* mutable_node_output_info(int index);
+  ::google::protobuf::RepeatedPtrField< ::tensorflow::GraphTransferNodeOutputInfo >*
+      mutable_node_output_info();
+  const ::tensorflow::GraphTransferNodeOutputInfo& node_output_info(int index) const;
+  ::tensorflow::GraphTransferNodeOutputInfo* add_node_output_info();
+  const ::google::protobuf::RepeatedPtrField< ::tensorflow::GraphTransferNodeOutputInfo >&
+      node_output_info() const;
+
+  // repeated .tensorflow.GraphTransferGraphInputNodeInfo graph_input_node_info = 5;
+  int graph_input_node_info_size() const;
+  void clear_graph_input_node_info();
+  static const int kGraphInputNodeInfoFieldNumber = 5;
+  ::tensorflow::GraphTransferGraphInputNodeInfo* mutable_graph_input_node_info(int index);
+  ::google::protobuf::RepeatedPtrField< ::tensorflow::GraphTransferGraphInputNodeInfo >*
+      mutable_graph_input_node_info();
+  const ::tensorflow::GraphTransferGraphInputNodeInfo& graph_input_node_info(int index) const;
+  ::tensorflow::GraphTransferGraphInputNodeInfo* add_graph_input_node_info();
+  const ::google::protobuf::RepeatedPtrField< ::tensorflow::GraphTransferGraphInputNodeInfo >&
+      graph_input_node_info() const;
+
+  // repeated .tensorflow.GraphTransferGraphOutputNodeInfo graph_output_node_info = 6;
+  int graph_output_node_info_size() const;
+  void clear_graph_output_node_info();
+  static const int kGraphOutputNodeInfoFieldNumber = 6;
+  ::tensorflow::GraphTransferGraphOutputNodeInfo* mutable_graph_output_node_info(int index);
+  ::google::protobuf::RepeatedPtrField< ::tensorflow::GraphTransferGraphOutputNodeInfo >*
+      mutable_graph_output_node_info();
+  const ::tensorflow::GraphTransferGraphOutputNodeInfo& graph_output_node_info(int index) const;
+  ::tensorflow::GraphTransferGraphOutputNodeInfo* add_graph_output_node_info();
+  const ::google::protobuf::RepeatedPtrField< ::tensorflow::GraphTransferGraphOutputNodeInfo >&
+      graph_output_node_info() const;
+
+  // .tensorflow.GraphTransferInfo.Destination destination = 7;
+  void clear_destination();
+  static const int kDestinationFieldNumber = 7;
+  ::tensorflow::GraphTransferInfo_Destination destination() const;
+  void set_destination(::tensorflow::GraphTransferInfo_Destination value);
+
+  // @@protoc_insertion_point(class_scope:tensorflow.GraphTransferInfo)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  ::google::protobuf::RepeatedPtrField< ::tensorflow::GraphTransferNodeInfo > node_info_;
+  ::google::protobuf::RepeatedPtrField< ::tensorflow::GraphTransferConstNodeInfo > const_node_info_;
+  ::google::protobuf::RepeatedPtrField< ::tensorflow::GraphTransferNodeInputInfo > node_input_info_;
+  ::google::protobuf::RepeatedPtrField< ::tensorflow::GraphTransferNodeOutputInfo > node_output_info_;
+  ::google::protobuf::RepeatedPtrField< ::tensorflow::GraphTransferGraphInputNodeInfo > graph_input_node_info_;
+  ::google::protobuf::RepeatedPtrField< ::tensorflow::GraphTransferGraphOutputNodeInfo > graph_output_node_info_;
+  int destination_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fframework_2fgraph_5ftransfer_5finfo_2eproto;
+};
+// ===================================================================
+
+
+// ===================================================================
+
+#ifdef __GNUC__
+  #pragma GCC diagnostic push
+  #pragma GCC diagnostic ignored "-Wstrict-aliasing"
+#endif  // __GNUC__
+// GraphTransferNodeInput
+
+// int32 node_id = 1;
+inline void GraphTransferNodeInput::clear_node_id() {
+  node_id_ = 0;
+}
+inline ::google::protobuf::int32 GraphTransferNodeInput::node_id() const {
+  // @@protoc_insertion_point(field_get:tensorflow.GraphTransferNodeInput.node_id)
+  return node_id_;
+}
+inline void GraphTransferNodeInput::set_node_id(::google::protobuf::int32 value) {
+  
+  node_id_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.GraphTransferNodeInput.node_id)
+}
+
+// int32 output_port = 2;
+inline void GraphTransferNodeInput::clear_output_port() {
+  output_port_ = 0;
+}
+inline ::google::protobuf::int32 GraphTransferNodeInput::output_port() const {
+  // @@protoc_insertion_point(field_get:tensorflow.GraphTransferNodeInput.output_port)
+  return output_port_;
+}
+inline void GraphTransferNodeInput::set_output_port(::google::protobuf::int32 value) {
+  
+  output_port_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.GraphTransferNodeInput.output_port)
+}
+
+// -------------------------------------------------------------------
+
+// GraphTransferNodeInfo
+
+// string name = 1;
+inline void GraphTransferNodeInfo::clear_name() {
+  name_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline const ::std::string& GraphTransferNodeInfo::name() const {
+  // @@protoc_insertion_point(field_get:tensorflow.GraphTransferNodeInfo.name)
+  return name_.Get();
+}
+inline void GraphTransferNodeInfo::set_name(const ::std::string& value) {
+  
+  name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set:tensorflow.GraphTransferNodeInfo.name)
+}
+#if LANG_CXX11
+inline void GraphTransferNodeInfo::set_name(::std::string&& value) {
+  
+  name_.Set(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.GraphTransferNodeInfo.name)
+}
+#endif
+inline void GraphTransferNodeInfo::set_name(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
+              GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_char:tensorflow.GraphTransferNodeInfo.name)
+}
+inline void GraphTransferNodeInfo::set_name(const char* value,
+    size_t size) {
+  
+  name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
+      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.GraphTransferNodeInfo.name)
+}
+inline ::std::string* GraphTransferNodeInfo::mutable_name() {
+  
+  // @@protoc_insertion_point(field_mutable:tensorflow.GraphTransferNodeInfo.name)
+  return name_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline ::std::string* GraphTransferNodeInfo::release_name() {
+  // @@protoc_insertion_point(field_release:tensorflow.GraphTransferNodeInfo.name)
+  
+  return name_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline void GraphTransferNodeInfo::set_allocated_name(::std::string* name) {
+  if (name != NULL) {
+    
+  } else {
+    
+  }
+  name_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), name,
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.GraphTransferNodeInfo.name)
+}
+inline ::std::string* GraphTransferNodeInfo::unsafe_arena_release_name() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.GraphTransferNodeInfo.name)
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  
+  return name_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      GetArenaNoVirtual());
+}
+inline void GraphTransferNodeInfo::unsafe_arena_set_allocated_name(
+    ::std::string* name) {
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (name != NULL) {
+    
+  } else {
+    
+  }
+  name_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      name, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.GraphTransferNodeInfo.name)
+}
+
+// int32 node_id = 2;
+inline void GraphTransferNodeInfo::clear_node_id() {
+  node_id_ = 0;
+}
+inline ::google::protobuf::int32 GraphTransferNodeInfo::node_id() const {
+  // @@protoc_insertion_point(field_get:tensorflow.GraphTransferNodeInfo.node_id)
+  return node_id_;
+}
+inline void GraphTransferNodeInfo::set_node_id(::google::protobuf::int32 value) {
+  
+  node_id_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.GraphTransferNodeInfo.node_id)
+}
+
+// string type_name = 3;
+inline void GraphTransferNodeInfo::clear_type_name() {
+  type_name_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline const ::std::string& GraphTransferNodeInfo::type_name() const {
+  // @@protoc_insertion_point(field_get:tensorflow.GraphTransferNodeInfo.type_name)
+  return type_name_.Get();
+}
+inline void GraphTransferNodeInfo::set_type_name(const ::std::string& value) {
+  
+  type_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set:tensorflow.GraphTransferNodeInfo.type_name)
+}
+#if LANG_CXX11
+inline void GraphTransferNodeInfo::set_type_name(::std::string&& value) {
+  
+  type_name_.Set(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.GraphTransferNodeInfo.type_name)
+}
+#endif
+inline void GraphTransferNodeInfo::set_type_name(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  type_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
+              GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_char:tensorflow.GraphTransferNodeInfo.type_name)
+}
+inline void GraphTransferNodeInfo::set_type_name(const char* value,
+    size_t size) {
+  
+  type_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
+      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.GraphTransferNodeInfo.type_name)
+}
+inline ::std::string* GraphTransferNodeInfo::mutable_type_name() {
+  
+  // @@protoc_insertion_point(field_mutable:tensorflow.GraphTransferNodeInfo.type_name)
+  return type_name_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline ::std::string* GraphTransferNodeInfo::release_type_name() {
+  // @@protoc_insertion_point(field_release:tensorflow.GraphTransferNodeInfo.type_name)
+  
+  return type_name_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline void GraphTransferNodeInfo::set_allocated_type_name(::std::string* type_name) {
+  if (type_name != NULL) {
+    
+  } else {
+    
+  }
+  type_name_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), type_name,
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.GraphTransferNodeInfo.type_name)
+}
+inline ::std::string* GraphTransferNodeInfo::unsafe_arena_release_type_name() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.GraphTransferNodeInfo.type_name)
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  
+  return type_name_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      GetArenaNoVirtual());
+}
+inline void GraphTransferNodeInfo::unsafe_arena_set_allocated_type_name(
+    ::std::string* type_name) {
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (type_name != NULL) {
+    
+  } else {
+    
+  }
+  type_name_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      type_name, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.GraphTransferNodeInfo.type_name)
+}
+
+// int32 soc_op_id = 4;
+inline void GraphTransferNodeInfo::clear_soc_op_id() {
+  soc_op_id_ = 0;
+}
+inline ::google::protobuf::int32 GraphTransferNodeInfo::soc_op_id() const {
+  // @@protoc_insertion_point(field_get:tensorflow.GraphTransferNodeInfo.soc_op_id)
+  return soc_op_id_;
+}
+inline void GraphTransferNodeInfo::set_soc_op_id(::google::protobuf::int32 value) {
+  
+  soc_op_id_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.GraphTransferNodeInfo.soc_op_id)
+}
+
+// int32 padding_id = 5;
+inline void GraphTransferNodeInfo::clear_padding_id() {
+  padding_id_ = 0;
+}
+inline ::google::protobuf::int32 GraphTransferNodeInfo::padding_id() const {
+  // @@protoc_insertion_point(field_get:tensorflow.GraphTransferNodeInfo.padding_id)
+  return padding_id_;
+}
+inline void GraphTransferNodeInfo::set_padding_id(::google::protobuf::int32 value) {
+  
+  padding_id_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.GraphTransferNodeInfo.padding_id)
+}
+
+// int32 input_count = 6;
+inline void GraphTransferNodeInfo::clear_input_count() {
+  input_count_ = 0;
+}
+inline ::google::protobuf::int32 GraphTransferNodeInfo::input_count() const {
+  // @@protoc_insertion_point(field_get:tensorflow.GraphTransferNodeInfo.input_count)
+  return input_count_;
+}
+inline void GraphTransferNodeInfo::set_input_count(::google::protobuf::int32 value) {
+  
+  input_count_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.GraphTransferNodeInfo.input_count)
+}
+
+// int32 output_count = 7;
+inline void GraphTransferNodeInfo::clear_output_count() {
+  output_count_ = 0;
+}
+inline ::google::protobuf::int32 GraphTransferNodeInfo::output_count() const {
+  // @@protoc_insertion_point(field_get:tensorflow.GraphTransferNodeInfo.output_count)
+  return output_count_;
+}
+inline void GraphTransferNodeInfo::set_output_count(::google::protobuf::int32 value) {
+  
+  output_count_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.GraphTransferNodeInfo.output_count)
+}
+
+// -------------------------------------------------------------------
+
+// GraphTransferConstNodeInfo
+
+// string name = 1;
+inline void GraphTransferConstNodeInfo::clear_name() {
+  name_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline const ::std::string& GraphTransferConstNodeInfo::name() const {
+  // @@protoc_insertion_point(field_get:tensorflow.GraphTransferConstNodeInfo.name)
+  return name_.Get();
+}
+inline void GraphTransferConstNodeInfo::set_name(const ::std::string& value) {
+  
+  name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set:tensorflow.GraphTransferConstNodeInfo.name)
+}
+#if LANG_CXX11
+inline void GraphTransferConstNodeInfo::set_name(::std::string&& value) {
+  
+  name_.Set(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.GraphTransferConstNodeInfo.name)
+}
+#endif
+inline void GraphTransferConstNodeInfo::set_name(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
+              GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_char:tensorflow.GraphTransferConstNodeInfo.name)
+}
+inline void GraphTransferConstNodeInfo::set_name(const char* value,
+    size_t size) {
+  
+  name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
+      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.GraphTransferConstNodeInfo.name)
+}
+inline ::std::string* GraphTransferConstNodeInfo::mutable_name() {
+  
+  // @@protoc_insertion_point(field_mutable:tensorflow.GraphTransferConstNodeInfo.name)
+  return name_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline ::std::string* GraphTransferConstNodeInfo::release_name() {
+  // @@protoc_insertion_point(field_release:tensorflow.GraphTransferConstNodeInfo.name)
+  
+  return name_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline void GraphTransferConstNodeInfo::set_allocated_name(::std::string* name) {
+  if (name != NULL) {
+    
+  } else {
+    
+  }
+  name_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), name,
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.GraphTransferConstNodeInfo.name)
+}
+inline ::std::string* GraphTransferConstNodeInfo::unsafe_arena_release_name() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.GraphTransferConstNodeInfo.name)
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  
+  return name_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      GetArenaNoVirtual());
+}
+inline void GraphTransferConstNodeInfo::unsafe_arena_set_allocated_name(
+    ::std::string* name) {
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (name != NULL) {
+    
+  } else {
+    
+  }
+  name_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      name, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.GraphTransferConstNodeInfo.name)
+}
+
+// int32 node_id = 2;
+inline void GraphTransferConstNodeInfo::clear_node_id() {
+  node_id_ = 0;
+}
+inline ::google::protobuf::int32 GraphTransferConstNodeInfo::node_id() const {
+  // @@protoc_insertion_point(field_get:tensorflow.GraphTransferConstNodeInfo.node_id)
+  return node_id_;
+}
+inline void GraphTransferConstNodeInfo::set_node_id(::google::protobuf::int32 value) {
+  
+  node_id_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.GraphTransferConstNodeInfo.node_id)
+}
+
+// repeated int64 shape = 3;
+inline int GraphTransferConstNodeInfo::shape_size() const {
+  return shape_.size();
+}
+inline void GraphTransferConstNodeInfo::clear_shape() {
+  shape_.Clear();
+}
+inline ::google::protobuf::int64 GraphTransferConstNodeInfo::shape(int index) const {
+  // @@protoc_insertion_point(field_get:tensorflow.GraphTransferConstNodeInfo.shape)
+  return shape_.Get(index);
+}
+inline void GraphTransferConstNodeInfo::set_shape(int index, ::google::protobuf::int64 value) {
+  shape_.Set(index, value);
+  // @@protoc_insertion_point(field_set:tensorflow.GraphTransferConstNodeInfo.shape)
+}
+inline void GraphTransferConstNodeInfo::add_shape(::google::protobuf::int64 value) {
+  shape_.Add(value);
+  // @@protoc_insertion_point(field_add:tensorflow.GraphTransferConstNodeInfo.shape)
+}
+inline const ::google::protobuf::RepeatedField< ::google::protobuf::int64 >&
+GraphTransferConstNodeInfo::shape() const {
+  // @@protoc_insertion_point(field_list:tensorflow.GraphTransferConstNodeInfo.shape)
+  return shape_;
+}
+inline ::google::protobuf::RepeatedField< ::google::protobuf::int64 >*
+GraphTransferConstNodeInfo::mutable_shape() {
+  // @@protoc_insertion_point(field_mutable_list:tensorflow.GraphTransferConstNodeInfo.shape)
+  return &shape_;
+}
+
+// bytes data = 4;
+inline void GraphTransferConstNodeInfo::clear_data() {
+  data_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline const ::std::string& GraphTransferConstNodeInfo::data() const {
+  // @@protoc_insertion_point(field_get:tensorflow.GraphTransferConstNodeInfo.data)
+  return data_.Get();
+}
+inline void GraphTransferConstNodeInfo::set_data(const ::std::string& value) {
+  
+  data_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set:tensorflow.GraphTransferConstNodeInfo.data)
+}
+#if LANG_CXX11
+inline void GraphTransferConstNodeInfo::set_data(::std::string&& value) {
+  
+  data_.Set(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.GraphTransferConstNodeInfo.data)
+}
+#endif
+inline void GraphTransferConstNodeInfo::set_data(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  data_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
+              GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_char:tensorflow.GraphTransferConstNodeInfo.data)
+}
+inline void GraphTransferConstNodeInfo::set_data(const void* value,
+    size_t size) {
+  
+  data_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
+      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.GraphTransferConstNodeInfo.data)
+}
+inline ::std::string* GraphTransferConstNodeInfo::mutable_data() {
+  
+  // @@protoc_insertion_point(field_mutable:tensorflow.GraphTransferConstNodeInfo.data)
+  return data_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline ::std::string* GraphTransferConstNodeInfo::release_data() {
+  // @@protoc_insertion_point(field_release:tensorflow.GraphTransferConstNodeInfo.data)
+  
+  return data_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline void GraphTransferConstNodeInfo::set_allocated_data(::std::string* data) {
+  if (data != NULL) {
+    
+  } else {
+    
+  }
+  data_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), data,
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.GraphTransferConstNodeInfo.data)
+}
+inline ::std::string* GraphTransferConstNodeInfo::unsafe_arena_release_data() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.GraphTransferConstNodeInfo.data)
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  
+  return data_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      GetArenaNoVirtual());
+}
+inline void GraphTransferConstNodeInfo::unsafe_arena_set_allocated_data(
+    ::std::string* data) {
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (data != NULL) {
+    
+  } else {
+    
+  }
+  data_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      data, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.GraphTransferConstNodeInfo.data)
+}
+
+// .tensorflow.DataType dtype = 5;
+inline void GraphTransferConstNodeInfo::clear_dtype() {
+  dtype_ = 0;
+}
+inline ::tensorflow::DataType GraphTransferConstNodeInfo::dtype() const {
+  // @@protoc_insertion_point(field_get:tensorflow.GraphTransferConstNodeInfo.dtype)
+  return static_cast< ::tensorflow::DataType >(dtype_);
+}
+inline void GraphTransferConstNodeInfo::set_dtype(::tensorflow::DataType value) {
+  
+  dtype_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.GraphTransferConstNodeInfo.dtype)
+}
+
+// -------------------------------------------------------------------
+
+// GraphTransferNodeInputInfo
+
+// int32 node_id = 1;
+inline void GraphTransferNodeInputInfo::clear_node_id() {
+  node_id_ = 0;
+}
+inline ::google::protobuf::int32 GraphTransferNodeInputInfo::node_id() const {
+  // @@protoc_insertion_point(field_get:tensorflow.GraphTransferNodeInputInfo.node_id)
+  return node_id_;
+}
+inline void GraphTransferNodeInputInfo::set_node_id(::google::protobuf::int32 value) {
+  
+  node_id_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.GraphTransferNodeInputInfo.node_id)
+}
+
+// repeated .tensorflow.GraphTransferNodeInput node_input = 2;
+inline int GraphTransferNodeInputInfo::node_input_size() const {
+  return node_input_.size();
+}
+inline void GraphTransferNodeInputInfo::clear_node_input() {
+  node_input_.Clear();
+}
+inline ::tensorflow::GraphTransferNodeInput* GraphTransferNodeInputInfo::mutable_node_input(int index) {
+  // @@protoc_insertion_point(field_mutable:tensorflow.GraphTransferNodeInputInfo.node_input)
+  return node_input_.Mutable(index);
+}
+inline ::google::protobuf::RepeatedPtrField< ::tensorflow::GraphTransferNodeInput >*
+GraphTransferNodeInputInfo::mutable_node_input() {
+  // @@protoc_insertion_point(field_mutable_list:tensorflow.GraphTransferNodeInputInfo.node_input)
+  return &node_input_;
+}
+inline const ::tensorflow::GraphTransferNodeInput& GraphTransferNodeInputInfo::node_input(int index) const {
+  // @@protoc_insertion_point(field_get:tensorflow.GraphTransferNodeInputInfo.node_input)
+  return node_input_.Get(index);
+}
+inline ::tensorflow::GraphTransferNodeInput* GraphTransferNodeInputInfo::add_node_input() {
+  // @@protoc_insertion_point(field_add:tensorflow.GraphTransferNodeInputInfo.node_input)
+  return node_input_.Add();
+}
+inline const ::google::protobuf::RepeatedPtrField< ::tensorflow::GraphTransferNodeInput >&
+GraphTransferNodeInputInfo::node_input() const {
+  // @@protoc_insertion_point(field_list:tensorflow.GraphTransferNodeInputInfo.node_input)
+  return node_input_;
+}
+
+// -------------------------------------------------------------------
+
+// GraphTransferNodeOutputInfo
+
+// int32 node_id = 1;
+inline void GraphTransferNodeOutputInfo::clear_node_id() {
+  node_id_ = 0;
+}
+inline ::google::protobuf::int32 GraphTransferNodeOutputInfo::node_id() const {
+  // @@protoc_insertion_point(field_get:tensorflow.GraphTransferNodeOutputInfo.node_id)
+  return node_id_;
+}
+inline void GraphTransferNodeOutputInfo::set_node_id(::google::protobuf::int32 value) {
+  
+  node_id_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.GraphTransferNodeOutputInfo.node_id)
+}
+
+// repeated int32 max_byte_size = 2;
+inline int GraphTransferNodeOutputInfo::max_byte_size_size() const {
+  return max_byte_size_.size();
+}
+inline void GraphTransferNodeOutputInfo::clear_max_byte_size() {
+  max_byte_size_.Clear();
+}
+inline ::google::protobuf::int32 GraphTransferNodeOutputInfo::max_byte_size(int index) const {
+  // @@protoc_insertion_point(field_get:tensorflow.GraphTransferNodeOutputInfo.max_byte_size)
+  return max_byte_size_.Get(index);
+}
+inline void GraphTransferNodeOutputInfo::set_max_byte_size(int index, ::google::protobuf::int32 value) {
+  max_byte_size_.Set(index, value);
+  // @@protoc_insertion_point(field_set:tensorflow.GraphTransferNodeOutputInfo.max_byte_size)
+}
+inline void GraphTransferNodeOutputInfo::add_max_byte_size(::google::protobuf::int32 value) {
+  max_byte_size_.Add(value);
+  // @@protoc_insertion_point(field_add:tensorflow.GraphTransferNodeOutputInfo.max_byte_size)
+}
+inline const ::google::protobuf::RepeatedField< ::google::protobuf::int32 >&
+GraphTransferNodeOutputInfo::max_byte_size() const {
+  // @@protoc_insertion_point(field_list:tensorflow.GraphTransferNodeOutputInfo.max_byte_size)
+  return max_byte_size_;
+}
+inline ::google::protobuf::RepeatedField< ::google::protobuf::int32 >*
+GraphTransferNodeOutputInfo::mutable_max_byte_size() {
+  // @@protoc_insertion_point(field_mutable_list:tensorflow.GraphTransferNodeOutputInfo.max_byte_size)
+  return &max_byte_size_;
+}
+
+// -------------------------------------------------------------------
+
+// GraphTransferGraphInputNodeInfo
+
+// string name = 1;
+inline void GraphTransferGraphInputNodeInfo::clear_name() {
+  name_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline const ::std::string& GraphTransferGraphInputNodeInfo::name() const {
+  // @@protoc_insertion_point(field_get:tensorflow.GraphTransferGraphInputNodeInfo.name)
+  return name_.Get();
+}
+inline void GraphTransferGraphInputNodeInfo::set_name(const ::std::string& value) {
+  
+  name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set:tensorflow.GraphTransferGraphInputNodeInfo.name)
+}
+#if LANG_CXX11
+inline void GraphTransferGraphInputNodeInfo::set_name(::std::string&& value) {
+  
+  name_.Set(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.GraphTransferGraphInputNodeInfo.name)
+}
+#endif
+inline void GraphTransferGraphInputNodeInfo::set_name(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
+              GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_char:tensorflow.GraphTransferGraphInputNodeInfo.name)
+}
+inline void GraphTransferGraphInputNodeInfo::set_name(const char* value,
+    size_t size) {
+  
+  name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
+      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.GraphTransferGraphInputNodeInfo.name)
+}
+inline ::std::string* GraphTransferGraphInputNodeInfo::mutable_name() {
+  
+  // @@protoc_insertion_point(field_mutable:tensorflow.GraphTransferGraphInputNodeInfo.name)
+  return name_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline ::std::string* GraphTransferGraphInputNodeInfo::release_name() {
+  // @@protoc_insertion_point(field_release:tensorflow.GraphTransferGraphInputNodeInfo.name)
+  
+  return name_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline void GraphTransferGraphInputNodeInfo::set_allocated_name(::std::string* name) {
+  if (name != NULL) {
+    
+  } else {
+    
+  }
+  name_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), name,
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.GraphTransferGraphInputNodeInfo.name)
+}
+inline ::std::string* GraphTransferGraphInputNodeInfo::unsafe_arena_release_name() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.GraphTransferGraphInputNodeInfo.name)
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  
+  return name_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      GetArenaNoVirtual());
+}
+inline void GraphTransferGraphInputNodeInfo::unsafe_arena_set_allocated_name(
+    ::std::string* name) {
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (name != NULL) {
+    
+  } else {
+    
+  }
+  name_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      name, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.GraphTransferGraphInputNodeInfo.name)
+}
+
+// repeated int64 shape = 2;
+inline int GraphTransferGraphInputNodeInfo::shape_size() const {
+  return shape_.size();
+}
+inline void GraphTransferGraphInputNodeInfo::clear_shape() {
+  shape_.Clear();
+}
+inline ::google::protobuf::int64 GraphTransferGraphInputNodeInfo::shape(int index) const {
+  // @@protoc_insertion_point(field_get:tensorflow.GraphTransferGraphInputNodeInfo.shape)
+  return shape_.Get(index);
+}
+inline void GraphTransferGraphInputNodeInfo::set_shape(int index, ::google::protobuf::int64 value) {
+  shape_.Set(index, value);
+  // @@protoc_insertion_point(field_set:tensorflow.GraphTransferGraphInputNodeInfo.shape)
+}
+inline void GraphTransferGraphInputNodeInfo::add_shape(::google::protobuf::int64 value) {
+  shape_.Add(value);
+  // @@protoc_insertion_point(field_add:tensorflow.GraphTransferGraphInputNodeInfo.shape)
+}
+inline const ::google::protobuf::RepeatedField< ::google::protobuf::int64 >&
+GraphTransferGraphInputNodeInfo::shape() const {
+  // @@protoc_insertion_point(field_list:tensorflow.GraphTransferGraphInputNodeInfo.shape)
+  return shape_;
+}
+inline ::google::protobuf::RepeatedField< ::google::protobuf::int64 >*
+GraphTransferGraphInputNodeInfo::mutable_shape() {
+  // @@protoc_insertion_point(field_mutable_list:tensorflow.GraphTransferGraphInputNodeInfo.shape)
+  return &shape_;
+}
+
+// .tensorflow.DataType dtype = 3;
+inline void GraphTransferGraphInputNodeInfo::clear_dtype() {
+  dtype_ = 0;
+}
+inline ::tensorflow::DataType GraphTransferGraphInputNodeInfo::dtype() const {
+  // @@protoc_insertion_point(field_get:tensorflow.GraphTransferGraphInputNodeInfo.dtype)
+  return static_cast< ::tensorflow::DataType >(dtype_);
+}
+inline void GraphTransferGraphInputNodeInfo::set_dtype(::tensorflow::DataType value) {
+  
+  dtype_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.GraphTransferGraphInputNodeInfo.dtype)
+}
+
+// -------------------------------------------------------------------
+
+// GraphTransferGraphOutputNodeInfo
+
+// string name = 1;
+inline void GraphTransferGraphOutputNodeInfo::clear_name() {
+  name_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline const ::std::string& GraphTransferGraphOutputNodeInfo::name() const {
+  // @@protoc_insertion_point(field_get:tensorflow.GraphTransferGraphOutputNodeInfo.name)
+  return name_.Get();
+}
+inline void GraphTransferGraphOutputNodeInfo::set_name(const ::std::string& value) {
+  
+  name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set:tensorflow.GraphTransferGraphOutputNodeInfo.name)
+}
+#if LANG_CXX11
+inline void GraphTransferGraphOutputNodeInfo::set_name(::std::string&& value) {
+  
+  name_.Set(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.GraphTransferGraphOutputNodeInfo.name)
+}
+#endif
+inline void GraphTransferGraphOutputNodeInfo::set_name(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
+              GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_char:tensorflow.GraphTransferGraphOutputNodeInfo.name)
+}
+inline void GraphTransferGraphOutputNodeInfo::set_name(const char* value,
+    size_t size) {
+  
+  name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
+      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.GraphTransferGraphOutputNodeInfo.name)
+}
+inline ::std::string* GraphTransferGraphOutputNodeInfo::mutable_name() {
+  
+  // @@protoc_insertion_point(field_mutable:tensorflow.GraphTransferGraphOutputNodeInfo.name)
+  return name_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline ::std::string* GraphTransferGraphOutputNodeInfo::release_name() {
+  // @@protoc_insertion_point(field_release:tensorflow.GraphTransferGraphOutputNodeInfo.name)
+  
+  return name_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline void GraphTransferGraphOutputNodeInfo::set_allocated_name(::std::string* name) {
+  if (name != NULL) {
+    
+  } else {
+    
+  }
+  name_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), name,
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.GraphTransferGraphOutputNodeInfo.name)
+}
+inline ::std::string* GraphTransferGraphOutputNodeInfo::unsafe_arena_release_name() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.GraphTransferGraphOutputNodeInfo.name)
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  
+  return name_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      GetArenaNoVirtual());
+}
+inline void GraphTransferGraphOutputNodeInfo::unsafe_arena_set_allocated_name(
+    ::std::string* name) {
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (name != NULL) {
+    
+  } else {
+    
+  }
+  name_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      name, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.GraphTransferGraphOutputNodeInfo.name)
+}
+
+// repeated int64 shape = 2;
+inline int GraphTransferGraphOutputNodeInfo::shape_size() const {
+  return shape_.size();
+}
+inline void GraphTransferGraphOutputNodeInfo::clear_shape() {
+  shape_.Clear();
+}
+inline ::google::protobuf::int64 GraphTransferGraphOutputNodeInfo::shape(int index) const {
+  // @@protoc_insertion_point(field_get:tensorflow.GraphTransferGraphOutputNodeInfo.shape)
+  return shape_.Get(index);
+}
+inline void GraphTransferGraphOutputNodeInfo::set_shape(int index, ::google::protobuf::int64 value) {
+  shape_.Set(index, value);
+  // @@protoc_insertion_point(field_set:tensorflow.GraphTransferGraphOutputNodeInfo.shape)
+}
+inline void GraphTransferGraphOutputNodeInfo::add_shape(::google::protobuf::int64 value) {
+  shape_.Add(value);
+  // @@protoc_insertion_point(field_add:tensorflow.GraphTransferGraphOutputNodeInfo.shape)
+}
+inline const ::google::protobuf::RepeatedField< ::google::protobuf::int64 >&
+GraphTransferGraphOutputNodeInfo::shape() const {
+  // @@protoc_insertion_point(field_list:tensorflow.GraphTransferGraphOutputNodeInfo.shape)
+  return shape_;
+}
+inline ::google::protobuf::RepeatedField< ::google::protobuf::int64 >*
+GraphTransferGraphOutputNodeInfo::mutable_shape() {
+  // @@protoc_insertion_point(field_mutable_list:tensorflow.GraphTransferGraphOutputNodeInfo.shape)
+  return &shape_;
+}
+
+// .tensorflow.DataType dtype = 3;
+inline void GraphTransferGraphOutputNodeInfo::clear_dtype() {
+  dtype_ = 0;
+}
+inline ::tensorflow::DataType GraphTransferGraphOutputNodeInfo::dtype() const {
+  // @@protoc_insertion_point(field_get:tensorflow.GraphTransferGraphOutputNodeInfo.dtype)
+  return static_cast< ::tensorflow::DataType >(dtype_);
+}
+inline void GraphTransferGraphOutputNodeInfo::set_dtype(::tensorflow::DataType value) {
+  
+  dtype_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.GraphTransferGraphOutputNodeInfo.dtype)
+}
+
+// -------------------------------------------------------------------
+
+// GraphTransferInfo
+
+// repeated .tensorflow.GraphTransferNodeInfo node_info = 1;
+inline int GraphTransferInfo::node_info_size() const {
+  return node_info_.size();
+}
+inline void GraphTransferInfo::clear_node_info() {
+  node_info_.Clear();
+}
+inline ::tensorflow::GraphTransferNodeInfo* GraphTransferInfo::mutable_node_info(int index) {
+  // @@protoc_insertion_point(field_mutable:tensorflow.GraphTransferInfo.node_info)
+  return node_info_.Mutable(index);
+}
+inline ::google::protobuf::RepeatedPtrField< ::tensorflow::GraphTransferNodeInfo >*
+GraphTransferInfo::mutable_node_info() {
+  // @@protoc_insertion_point(field_mutable_list:tensorflow.GraphTransferInfo.node_info)
+  return &node_info_;
+}
+inline const ::tensorflow::GraphTransferNodeInfo& GraphTransferInfo::node_info(int index) const {
+  // @@protoc_insertion_point(field_get:tensorflow.GraphTransferInfo.node_info)
+  return node_info_.Get(index);
+}
+inline ::tensorflow::GraphTransferNodeInfo* GraphTransferInfo::add_node_info() {
+  // @@protoc_insertion_point(field_add:tensorflow.GraphTransferInfo.node_info)
+  return node_info_.Add();
+}
+inline const ::google::protobuf::RepeatedPtrField< ::tensorflow::GraphTransferNodeInfo >&
+GraphTransferInfo::node_info() const {
+  // @@protoc_insertion_point(field_list:tensorflow.GraphTransferInfo.node_info)
+  return node_info_;
+}
+
+// repeated .tensorflow.GraphTransferConstNodeInfo const_node_info = 2;
+inline int GraphTransferInfo::const_node_info_size() const {
+  return const_node_info_.size();
+}
+inline void GraphTransferInfo::clear_const_node_info() {
+  const_node_info_.Clear();
+}
+inline ::tensorflow::GraphTransferConstNodeInfo* GraphTransferInfo::mutable_const_node_info(int index) {
+  // @@protoc_insertion_point(field_mutable:tensorflow.GraphTransferInfo.const_node_info)
+  return const_node_info_.Mutable(index);
+}
+inline ::google::protobuf::RepeatedPtrField< ::tensorflow::GraphTransferConstNodeInfo >*
+GraphTransferInfo::mutable_const_node_info() {
+  // @@protoc_insertion_point(field_mutable_list:tensorflow.GraphTransferInfo.const_node_info)
+  return &const_node_info_;
+}
+inline const ::tensorflow::GraphTransferConstNodeInfo& GraphTransferInfo::const_node_info(int index) const {
+  // @@protoc_insertion_point(field_get:tensorflow.GraphTransferInfo.const_node_info)
+  return const_node_info_.Get(index);
+}
+inline ::tensorflow::GraphTransferConstNodeInfo* GraphTransferInfo::add_const_node_info() {
+  // @@protoc_insertion_point(field_add:tensorflow.GraphTransferInfo.const_node_info)
+  return const_node_info_.Add();
+}
+inline const ::google::protobuf::RepeatedPtrField< ::tensorflow::GraphTransferConstNodeInfo >&
+GraphTransferInfo::const_node_info() const {
+  // @@protoc_insertion_point(field_list:tensorflow.GraphTransferInfo.const_node_info)
+  return const_node_info_;
+}
+
+// repeated .tensorflow.GraphTransferNodeInputInfo node_input_info = 3;
+inline int GraphTransferInfo::node_input_info_size() const {
+  return node_input_info_.size();
+}
+inline void GraphTransferInfo::clear_node_input_info() {
+  node_input_info_.Clear();
+}
+inline ::tensorflow::GraphTransferNodeInputInfo* GraphTransferInfo::mutable_node_input_info(int index) {
+  // @@protoc_insertion_point(field_mutable:tensorflow.GraphTransferInfo.node_input_info)
+  return node_input_info_.Mutable(index);
+}
+inline ::google::protobuf::RepeatedPtrField< ::tensorflow::GraphTransferNodeInputInfo >*
+GraphTransferInfo::mutable_node_input_info() {
+  // @@protoc_insertion_point(field_mutable_list:tensorflow.GraphTransferInfo.node_input_info)
+  return &node_input_info_;
+}
+inline const ::tensorflow::GraphTransferNodeInputInfo& GraphTransferInfo::node_input_info(int index) const {
+  // @@protoc_insertion_point(field_get:tensorflow.GraphTransferInfo.node_input_info)
+  return node_input_info_.Get(index);
+}
+inline ::tensorflow::GraphTransferNodeInputInfo* GraphTransferInfo::add_node_input_info() {
+  // @@protoc_insertion_point(field_add:tensorflow.GraphTransferInfo.node_input_info)
+  return node_input_info_.Add();
+}
+inline const ::google::protobuf::RepeatedPtrField< ::tensorflow::GraphTransferNodeInputInfo >&
+GraphTransferInfo::node_input_info() const {
+  // @@protoc_insertion_point(field_list:tensorflow.GraphTransferInfo.node_input_info)
+  return node_input_info_;
+}
+
+// repeated .tensorflow.GraphTransferNodeOutputInfo node_output_info = 4;
+inline int GraphTransferInfo::node_output_info_size() const {
+  return node_output_info_.size();
+}
+inline void GraphTransferInfo::clear_node_output_info() {
+  node_output_info_.Clear();
+}
+inline ::tensorflow::GraphTransferNodeOutputInfo* GraphTransferInfo::mutable_node_output_info(int index) {
+  // @@protoc_insertion_point(field_mutable:tensorflow.GraphTransferInfo.node_output_info)
+  return node_output_info_.Mutable(index);
+}
+inline ::google::protobuf::RepeatedPtrField< ::tensorflow::GraphTransferNodeOutputInfo >*
+GraphTransferInfo::mutable_node_output_info() {
+  // @@protoc_insertion_point(field_mutable_list:tensorflow.GraphTransferInfo.node_output_info)
+  return &node_output_info_;
+}
+inline const ::tensorflow::GraphTransferNodeOutputInfo& GraphTransferInfo::node_output_info(int index) const {
+  // @@protoc_insertion_point(field_get:tensorflow.GraphTransferInfo.node_output_info)
+  return node_output_info_.Get(index);
+}
+inline ::tensorflow::GraphTransferNodeOutputInfo* GraphTransferInfo::add_node_output_info() {
+  // @@protoc_insertion_point(field_add:tensorflow.GraphTransferInfo.node_output_info)
+  return node_output_info_.Add();
+}
+inline const ::google::protobuf::RepeatedPtrField< ::tensorflow::GraphTransferNodeOutputInfo >&
+GraphTransferInfo::node_output_info() const {
+  // @@protoc_insertion_point(field_list:tensorflow.GraphTransferInfo.node_output_info)
+  return node_output_info_;
+}
+
+// repeated .tensorflow.GraphTransferGraphInputNodeInfo graph_input_node_info = 5;
+inline int GraphTransferInfo::graph_input_node_info_size() const {
+  return graph_input_node_info_.size();
+}
+inline void GraphTransferInfo::clear_graph_input_node_info() {
+  graph_input_node_info_.Clear();
+}
+inline ::tensorflow::GraphTransferGraphInputNodeInfo* GraphTransferInfo::mutable_graph_input_node_info(int index) {
+  // @@protoc_insertion_point(field_mutable:tensorflow.GraphTransferInfo.graph_input_node_info)
+  return graph_input_node_info_.Mutable(index);
+}
+inline ::google::protobuf::RepeatedPtrField< ::tensorflow::GraphTransferGraphInputNodeInfo >*
+GraphTransferInfo::mutable_graph_input_node_info() {
+  // @@protoc_insertion_point(field_mutable_list:tensorflow.GraphTransferInfo.graph_input_node_info)
+  return &graph_input_node_info_;
+}
+inline const ::tensorflow::GraphTransferGraphInputNodeInfo& GraphTransferInfo::graph_input_node_info(int index) const {
+  // @@protoc_insertion_point(field_get:tensorflow.GraphTransferInfo.graph_input_node_info)
+  return graph_input_node_info_.Get(index);
+}
+inline ::tensorflow::GraphTransferGraphInputNodeInfo* GraphTransferInfo::add_graph_input_node_info() {
+  // @@protoc_insertion_point(field_add:tensorflow.GraphTransferInfo.graph_input_node_info)
+  return graph_input_node_info_.Add();
+}
+inline const ::google::protobuf::RepeatedPtrField< ::tensorflow::GraphTransferGraphInputNodeInfo >&
+GraphTransferInfo::graph_input_node_info() const {
+  // @@protoc_insertion_point(field_list:tensorflow.GraphTransferInfo.graph_input_node_info)
+  return graph_input_node_info_;
+}
+
+// repeated .tensorflow.GraphTransferGraphOutputNodeInfo graph_output_node_info = 6;
+inline int GraphTransferInfo::graph_output_node_info_size() const {
+  return graph_output_node_info_.size();
+}
+inline void GraphTransferInfo::clear_graph_output_node_info() {
+  graph_output_node_info_.Clear();
+}
+inline ::tensorflow::GraphTransferGraphOutputNodeInfo* GraphTransferInfo::mutable_graph_output_node_info(int index) {
+  // @@protoc_insertion_point(field_mutable:tensorflow.GraphTransferInfo.graph_output_node_info)
+  return graph_output_node_info_.Mutable(index);
+}
+inline ::google::protobuf::RepeatedPtrField< ::tensorflow::GraphTransferGraphOutputNodeInfo >*
+GraphTransferInfo::mutable_graph_output_node_info() {
+  // @@protoc_insertion_point(field_mutable_list:tensorflow.GraphTransferInfo.graph_output_node_info)
+  return &graph_output_node_info_;
+}
+inline const ::tensorflow::GraphTransferGraphOutputNodeInfo& GraphTransferInfo::graph_output_node_info(int index) const {
+  // @@protoc_insertion_point(field_get:tensorflow.GraphTransferInfo.graph_output_node_info)
+  return graph_output_node_info_.Get(index);
+}
+inline ::tensorflow::GraphTransferGraphOutputNodeInfo* GraphTransferInfo::add_graph_output_node_info() {
+  // @@protoc_insertion_point(field_add:tensorflow.GraphTransferInfo.graph_output_node_info)
+  return graph_output_node_info_.Add();
+}
+inline const ::google::protobuf::RepeatedPtrField< ::tensorflow::GraphTransferGraphOutputNodeInfo >&
+GraphTransferInfo::graph_output_node_info() const {
+  // @@protoc_insertion_point(field_list:tensorflow.GraphTransferInfo.graph_output_node_info)
+  return graph_output_node_info_;
+}
+
+// .tensorflow.GraphTransferInfo.Destination destination = 7;
+inline void GraphTransferInfo::clear_destination() {
+  destination_ = 0;
+}
+inline ::tensorflow::GraphTransferInfo_Destination GraphTransferInfo::destination() const {
+  // @@protoc_insertion_point(field_get:tensorflow.GraphTransferInfo.destination)
+  return static_cast< ::tensorflow::GraphTransferInfo_Destination >(destination_);
+}
+inline void GraphTransferInfo::set_destination(::tensorflow::GraphTransferInfo_Destination value) {
+  
+  destination_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.GraphTransferInfo.destination)
+}
+
+#ifdef __GNUC__
+  #pragma GCC diagnostic pop
+#endif  // __GNUC__
+// -------------------------------------------------------------------
+
+// -------------------------------------------------------------------
+
+// -------------------------------------------------------------------
+
+// -------------------------------------------------------------------
+
+// -------------------------------------------------------------------
+
+// -------------------------------------------------------------------
+
+// -------------------------------------------------------------------
+
+
+// @@protoc_insertion_point(namespace_scope)
+
+}  // namespace tensorflow
+
+namespace google {
+namespace protobuf {
+
+template <> struct is_proto_enum< ::tensorflow::GraphTransferInfo_Destination> : ::std::true_type {};
+template <>
+inline const EnumDescriptor* GetEnumDescriptor< ::tensorflow::GraphTransferInfo_Destination>() {
+  return ::tensorflow::GraphTransferInfo_Destination_descriptor();
+}
+
+}  // namespace protobuf
+}  // namespace google
+
+// @@protoc_insertion_point(global_scope)
+
+#include <google/protobuf/port_undef.inc>
+#endif  // PROTOBUF_INCLUDED_tensorflow_2fcore_2fframework_2fgraph_5ftransfer_5finfo_2eproto
diff --git a/tensorflow/core/framework/graph_transfer_info.proto b/tensorflow/core/framework/graph_transfer_info.proto
new file mode 100644 (file)
index 0000000..232297d
--- /dev/null
@@ -0,0 +1,69 @@
+syntax = "proto3";
+
+package tensorflow;
+option cc_enable_arenas = true;
+option java_outer_classname = "GraphTransferInfoProto";
+option java_multiple_files = true;
+option java_package = "org.tensorflow.framework";
+option go_package = "github.com/tensorflow/tensorflow/tensorflow/go/core/framework";
+import "tensorflow/core/framework/types.proto";
+
+message GraphTransferNodeInput {
+  int32 node_id = 1;
+  int32 output_port = 2;
+}
+message GraphTransferNodeInfo {
+  string name = 1;
+  int32 node_id = 2;
+  string type_name = 3;
+  int32 soc_op_id = 4;
+  int32 padding_id = 5;
+  int32 input_count = 6;
+  int32 output_count = 7;
+};
+message GraphTransferConstNodeInfo {
+  string name = 1;
+  int32 node_id = 2;
+  repeated int64 shape = 3;
+  bytes data = 4;
+  DataType dtype = 5;
+};
+message GraphTransferNodeInputInfo {
+  int32 node_id = 1;
+  repeated GraphTransferNodeInput node_input = 2;
+};
+message GraphTransferNodeOutputInfo {
+  int32 node_id = 1;
+  repeated int32 max_byte_size = 2;
+};
+message GraphTransferGraphInputNodeInfo {
+  string name = 1;
+  repeated int64 shape = 2;
+  DataType dtype = 3;
+}
+
+message GraphTransferGraphOutputNodeInfo {
+  string name = 1;
+  repeated int64 shape = 2;
+  DataType dtype = 3;
+}
+
+// Protocol buffer representing a handle to a tensorflow resource. Handles are
+// not valid across executions, but can be serialized back and forth from within
+// a single run.
+message GraphTransferInfo {
+  enum Destination {
+    NOP = 0;
+    HEXAGON = 1;
+  }
+
+  repeated GraphTransferNodeInfo node_info = 1;
+  repeated GraphTransferConstNodeInfo const_node_info = 2;
+  repeated GraphTransferNodeInputInfo node_input_info = 3;
+  repeated GraphTransferNodeOutputInfo node_output_info = 4;
+  // Input Node parameters of transferred graph
+  repeated GraphTransferGraphInputNodeInfo graph_input_node_info = 5;
+  repeated GraphTransferGraphOutputNodeInfo graph_output_node_info = 6;
+  // Destination of graph transfer
+  Destination destination = 7;
+};
diff --git a/tensorflow/core/framework/iterator.pb.cc b/tensorflow/core/framework/iterator.pb.cc
new file mode 100644 (file)
index 0000000..27acc0b
--- /dev/null
@@ -0,0 +1,500 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: tensorflow/core/framework/iterator.proto
+
+#include "tensorflow/core/framework/iterator.pb.h"
+
+#include <algorithm>
+
+#include <google/protobuf/stubs/common.h>
+#include <google/protobuf/io/coded_stream.h>
+#include <google/protobuf/extension_set.h>
+#include <google/protobuf/wire_format_lite_inl.h>
+#include <google/protobuf/descriptor.h>
+#include <google/protobuf/generated_message_reflection.h>
+#include <google/protobuf/reflection_ops.h>
+#include <google/protobuf/wire_format.h>
+// @@protoc_insertion_point(includes)
+#include <google/protobuf/port_def.inc>
+
+namespace tensorflow {
+class IteratorStateMetadataDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<IteratorStateMetadata> _instance;
+} _IteratorStateMetadata_default_instance_;
+}  // namespace tensorflow
+static void InitDefaultsIteratorStateMetadata_tensorflow_2fcore_2fframework_2fiterator_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_IteratorStateMetadata_default_instance_;
+    new (ptr) ::tensorflow::IteratorStateMetadata();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::IteratorStateMetadata::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<0> scc_info_IteratorStateMetadata_tensorflow_2fcore_2fframework_2fiterator_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsIteratorStateMetadata_tensorflow_2fcore_2fframework_2fiterator_2eproto}, {}};
+
+void InitDefaults_tensorflow_2fcore_2fframework_2fiterator_2eproto() {
+  ::google::protobuf::internal::InitSCC(&scc_info_IteratorStateMetadata_tensorflow_2fcore_2fframework_2fiterator_2eproto.base);
+}
+
+::google::protobuf::Metadata file_level_metadata_tensorflow_2fcore_2fframework_2fiterator_2eproto[1];
+constexpr ::google::protobuf::EnumDescriptor const** file_level_enum_descriptors_tensorflow_2fcore_2fframework_2fiterator_2eproto = nullptr;
+constexpr ::google::protobuf::ServiceDescriptor const** file_level_service_descriptors_tensorflow_2fcore_2fframework_2fiterator_2eproto = nullptr;
+
+const ::google::protobuf::uint32 TableStruct_tensorflow_2fcore_2fframework_2fiterator_2eproto::offsets[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = {
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::IteratorStateMetadata, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::IteratorStateMetadata, version_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::IteratorStateMetadata, keys_),
+};
+static const ::google::protobuf::internal::MigrationSchema schemas[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = {
+  { 0, -1, sizeof(::tensorflow::IteratorStateMetadata)},
+};
+
+static ::google::protobuf::Message const * const file_default_instances[] = {
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_IteratorStateMetadata_default_instance_),
+};
+
+::google::protobuf::internal::AssignDescriptorsTable assign_descriptors_table_tensorflow_2fcore_2fframework_2fiterator_2eproto = {
+  {}, AddDescriptors_tensorflow_2fcore_2fframework_2fiterator_2eproto, "tensorflow/core/framework/iterator.proto", schemas,
+  file_default_instances, TableStruct_tensorflow_2fcore_2fframework_2fiterator_2eproto::offsets,
+  file_level_metadata_tensorflow_2fcore_2fframework_2fiterator_2eproto, 1, file_level_enum_descriptors_tensorflow_2fcore_2fframework_2fiterator_2eproto, file_level_service_descriptors_tensorflow_2fcore_2fframework_2fiterator_2eproto,
+};
+
+::google::protobuf::internal::DescriptorTable descriptor_table_tensorflow_2fcore_2fframework_2fiterator_2eproto = {
+  false, InitDefaults_tensorflow_2fcore_2fframework_2fiterator_2eproto, 
+  "\n(tensorflow/core/framework/iterator.pro"
+  "to\022\ntensorflow\"6\n\025IteratorStateMetadata\022"
+  "\017\n\007version\030\001 \001(\t\022\014\n\004keys\030\002 \003(\tBi\n\023org.te"
+  "nsorflow.utilB\016IteratorProtosP\001Z=github."
+  "com/tensorflow/tensorflow/tensorflow/go/"
+  "core/framework\370\001\001b\006proto3"
+,
+  "tensorflow/core/framework/iterator.proto", &assign_descriptors_table_tensorflow_2fcore_2fframework_2fiterator_2eproto, 225,
+};
+
+void AddDescriptors_tensorflow_2fcore_2fframework_2fiterator_2eproto() {
+  static constexpr ::google::protobuf::internal::InitFunc deps[1] =
+  {
+  };
+ ::google::protobuf::internal::AddDescriptors(&descriptor_table_tensorflow_2fcore_2fframework_2fiterator_2eproto, deps, 0);
+}
+
+// Force running AddDescriptors() at dynamic initialization time.
+static bool dynamic_init_dummy_tensorflow_2fcore_2fframework_2fiterator_2eproto = []() { AddDescriptors_tensorflow_2fcore_2fframework_2fiterator_2eproto(); return true; }();
+namespace tensorflow {
+
+// ===================================================================
+
+void IteratorStateMetadata::InitAsDefaultInstance() {
+}
+class IteratorStateMetadata::HasBitSetters {
+ public:
+};
+
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int IteratorStateMetadata::kVersionFieldNumber;
+const int IteratorStateMetadata::kKeysFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+IteratorStateMetadata::IteratorStateMetadata()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.IteratorStateMetadata)
+}
+IteratorStateMetadata::IteratorStateMetadata(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena),
+  keys_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.IteratorStateMetadata)
+}
+IteratorStateMetadata::IteratorStateMetadata(const IteratorStateMetadata& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL),
+      keys_(from.keys_) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  version_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.version().size() > 0) {
+    version_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.version(),
+      GetArenaNoVirtual());
+  }
+  // @@protoc_insertion_point(copy_constructor:tensorflow.IteratorStateMetadata)
+}
+
+void IteratorStateMetadata::SharedCtor() {
+  ::google::protobuf::internal::InitSCC(
+      &scc_info_IteratorStateMetadata_tensorflow_2fcore_2fframework_2fiterator_2eproto.base);
+  version_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+
+IteratorStateMetadata::~IteratorStateMetadata() {
+  // @@protoc_insertion_point(destructor:tensorflow.IteratorStateMetadata)
+  SharedDtor();
+}
+
+void IteratorStateMetadata::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+  version_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+
+void IteratorStateMetadata::ArenaDtor(void* object) {
+  IteratorStateMetadata* _this = reinterpret_cast< IteratorStateMetadata* >(object);
+  (void)_this;
+}
+void IteratorStateMetadata::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void IteratorStateMetadata::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const IteratorStateMetadata& IteratorStateMetadata::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_IteratorStateMetadata_tensorflow_2fcore_2fframework_2fiterator_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void IteratorStateMetadata::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.IteratorStateMetadata)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  keys_.Clear();
+  version_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* IteratorStateMetadata::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<IteratorStateMetadata*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // string version = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 10) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("tensorflow.IteratorStateMetadata.version");
+        parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+        ::std::string* str = msg->mutable_version();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+        break;
+      }
+      // repeated string keys = 2;
+      case 2: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 18) goto handle_unusual;
+        do {
+          ptr = Varint::Parse32Inline(ptr, &size);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          ctx->extra_parse_data().SetFieldName("tensorflow.IteratorStateMetadata.keys");
+          parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+          ::std::string* str = msg->add_keys();
+          str->clear();
+          object = str;
+          if (size > end - ptr) goto len_delim_till_end;
+          auto newend = ptr + size;
+          if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+          if (ptr >= end) break;
+        } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 18 && (ptr += 1));
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool IteratorStateMetadata::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.IteratorStateMetadata)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // string version = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (10 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_version()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->version().data(), static_cast<int>(this->version().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.IteratorStateMetadata.version"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // repeated string keys = 2;
+      case 2: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (18 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->add_keys()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->keys(this->keys_size() - 1).data(),
+            static_cast<int>(this->keys(this->keys_size() - 1).length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.IteratorStateMetadata.keys"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.IteratorStateMetadata)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.IteratorStateMetadata)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void IteratorStateMetadata::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.IteratorStateMetadata)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // string version = 1;
+  if (this->version().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->version().data(), static_cast<int>(this->version().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.IteratorStateMetadata.version");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      1, this->version(), output);
+  }
+
+  // repeated string keys = 2;
+  for (int i = 0, n = this->keys_size(); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->keys(i).data(), static_cast<int>(this->keys(i).length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.IteratorStateMetadata.keys");
+    ::google::protobuf::internal::WireFormatLite::WriteString(
+      2, this->keys(i), output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.IteratorStateMetadata)
+}
+
+::google::protobuf::uint8* IteratorStateMetadata::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.IteratorStateMetadata)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // string version = 1;
+  if (this->version().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->version().data(), static_cast<int>(this->version().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.IteratorStateMetadata.version");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        1, this->version(), target);
+  }
+
+  // repeated string keys = 2;
+  for (int i = 0, n = this->keys_size(); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->keys(i).data(), static_cast<int>(this->keys(i).length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.IteratorStateMetadata.keys");
+    target = ::google::protobuf::internal::WireFormatLite::
+      WriteStringToArray(2, this->keys(i), target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.IteratorStateMetadata)
+  return target;
+}
+
+size_t IteratorStateMetadata::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.IteratorStateMetadata)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // repeated string keys = 2;
+  total_size += 1 *
+      ::google::protobuf::internal::FromIntSize(this->keys_size());
+  for (int i = 0, n = this->keys_size(); i < n; i++) {
+    total_size += ::google::protobuf::internal::WireFormatLite::StringSize(
+      this->keys(i));
+  }
+
+  // string version = 1;
+  if (this->version().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->version());
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void IteratorStateMetadata::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.IteratorStateMetadata)
+  GOOGLE_DCHECK_NE(&from, this);
+  const IteratorStateMetadata* source =
+      ::google::protobuf::DynamicCastToGenerated<IteratorStateMetadata>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.IteratorStateMetadata)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.IteratorStateMetadata)
+    MergeFrom(*source);
+  }
+}
+
+void IteratorStateMetadata::MergeFrom(const IteratorStateMetadata& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.IteratorStateMetadata)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  keys_.MergeFrom(from.keys_);
+  if (from.version().size() > 0) {
+    set_version(from.version());
+  }
+}
+
+void IteratorStateMetadata::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.IteratorStateMetadata)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void IteratorStateMetadata::CopyFrom(const IteratorStateMetadata& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.IteratorStateMetadata)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool IteratorStateMetadata::IsInitialized() const {
+  return true;
+}
+
+void IteratorStateMetadata::Swap(IteratorStateMetadata* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    IteratorStateMetadata* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void IteratorStateMetadata::UnsafeArenaSwap(IteratorStateMetadata* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void IteratorStateMetadata::InternalSwap(IteratorStateMetadata* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  keys_.InternalSwap(CastToBase(&other->keys_));
+  version_.Swap(&other->version_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+}
+
+::google::protobuf::Metadata IteratorStateMetadata::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fframework_2fiterator_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fframework_2fiterator_2eproto[kIndexInFileMessages];
+}
+
+
+// @@protoc_insertion_point(namespace_scope)
+}  // namespace tensorflow
+namespace google {
+namespace protobuf {
+template<> PROTOBUF_NOINLINE ::tensorflow::IteratorStateMetadata* Arena::CreateMaybeMessage< ::tensorflow::IteratorStateMetadata >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::IteratorStateMetadata >(arena);
+}
+}  // namespace protobuf
+}  // namespace google
+
+// @@protoc_insertion_point(global_scope)
+#include <google/protobuf/port_undef.inc>
diff --git a/tensorflow/core/framework/iterator.pb.h b/tensorflow/core/framework/iterator.pb.h
new file mode 100644 (file)
index 0000000..a1b3ae9
--- /dev/null
@@ -0,0 +1,395 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: tensorflow/core/framework/iterator.proto
+
+#ifndef PROTOBUF_INCLUDED_tensorflow_2fcore_2fframework_2fiterator_2eproto
+#define PROTOBUF_INCLUDED_tensorflow_2fcore_2fframework_2fiterator_2eproto
+
+#include <limits>
+#include <string>
+
+#include <google/protobuf/port_def.inc>
+#if PROTOBUF_VERSION < 3006001
+#error This file was generated by a newer version of protoc which is
+#error incompatible with your Protocol Buffer headers. Please update
+#error your headers.
+#endif
+#if 3006001 < PROTOBUF_MIN_PROTOC_VERSION
+#error This file was generated by an older version of protoc which is
+#error incompatible with your Protocol Buffer headers. Please
+#error regenerate this file with a newer version of protoc.
+#endif
+
+#include <google/protobuf/port_undef.inc>
+#include <google/protobuf/io/coded_stream.h>
+#include <google/protobuf/arena.h>
+#include <google/protobuf/arenastring.h>
+#include <google/protobuf/generated_message_table_driven.h>
+#include <google/protobuf/generated_message_util.h>
+#include <google/protobuf/inlined_string_field.h>
+#include <google/protobuf/metadata.h>
+#include <google/protobuf/message.h>
+#include <google/protobuf/repeated_field.h>  // IWYU pragma: export
+#include <google/protobuf/extension_set.h>  // IWYU pragma: export
+#include <google/protobuf/unknown_field_set.h>
+// @@protoc_insertion_point(includes)
+#include <google/protobuf/port_def.inc>
+#define PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fframework_2fiterator_2eproto
+
+// Internal implementation detail -- do not use these members.
+struct TableStruct_tensorflow_2fcore_2fframework_2fiterator_2eproto {
+  static const ::google::protobuf::internal::ParseTableField entries[]
+    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
+  static const ::google::protobuf::internal::AuxillaryParseTableField aux[]
+    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
+  static const ::google::protobuf::internal::ParseTable schema[1]
+    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
+  static const ::google::protobuf::internal::FieldMetadata field_metadata[];
+  static const ::google::protobuf::internal::SerializationTable serialization_table[];
+  static const ::google::protobuf::uint32 offsets[];
+};
+void AddDescriptors_tensorflow_2fcore_2fframework_2fiterator_2eproto();
+namespace tensorflow {
+class IteratorStateMetadata;
+class IteratorStateMetadataDefaultTypeInternal;
+extern IteratorStateMetadataDefaultTypeInternal _IteratorStateMetadata_default_instance_;
+}  // namespace tensorflow
+namespace google {
+namespace protobuf {
+template<> ::tensorflow::IteratorStateMetadata* Arena::CreateMaybeMessage<::tensorflow::IteratorStateMetadata>(Arena*);
+}  // namespace protobuf
+}  // namespace google
+namespace tensorflow {
+
+// ===================================================================
+
+class IteratorStateMetadata : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.IteratorStateMetadata) */ {
+ public:
+  IteratorStateMetadata();
+  virtual ~IteratorStateMetadata();
+
+  IteratorStateMetadata(const IteratorStateMetadata& from);
+
+  inline IteratorStateMetadata& operator=(const IteratorStateMetadata& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  IteratorStateMetadata(IteratorStateMetadata&& from) noexcept
+    : IteratorStateMetadata() {
+    *this = ::std::move(from);
+  }
+
+  inline IteratorStateMetadata& operator=(IteratorStateMetadata&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const IteratorStateMetadata& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const IteratorStateMetadata* internal_default_instance() {
+    return reinterpret_cast<const IteratorStateMetadata*>(
+               &_IteratorStateMetadata_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    0;
+
+  void UnsafeArenaSwap(IteratorStateMetadata* other);
+  void Swap(IteratorStateMetadata* other);
+  friend void swap(IteratorStateMetadata& a, IteratorStateMetadata& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline IteratorStateMetadata* New() const final {
+    return CreateMaybeMessage<IteratorStateMetadata>(NULL);
+  }
+
+  IteratorStateMetadata* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<IteratorStateMetadata>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const IteratorStateMetadata& from);
+  void MergeFrom(const IteratorStateMetadata& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(IteratorStateMetadata* other);
+  protected:
+  explicit IteratorStateMetadata(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // repeated string keys = 2;
+  int keys_size() const;
+  void clear_keys();
+  static const int kKeysFieldNumber = 2;
+  const ::std::string& keys(int index) const;
+  ::std::string* mutable_keys(int index);
+  void set_keys(int index, const ::std::string& value);
+  #if LANG_CXX11
+  void set_keys(int index, ::std::string&& value);
+  #endif
+  void set_keys(int index, const char* value);
+  void set_keys(int index, const char* value, size_t size);
+  ::std::string* add_keys();
+  void add_keys(const ::std::string& value);
+  #if LANG_CXX11
+  void add_keys(::std::string&& value);
+  #endif
+  void add_keys(const char* value);
+  void add_keys(const char* value, size_t size);
+  const ::google::protobuf::RepeatedPtrField<::std::string>& keys() const;
+  ::google::protobuf::RepeatedPtrField<::std::string>* mutable_keys();
+
+  // string version = 1;
+  void clear_version();
+  static const int kVersionFieldNumber = 1;
+  const ::std::string& version() const;
+  void set_version(const ::std::string& value);
+  #if LANG_CXX11
+  void set_version(::std::string&& value);
+  #endif
+  void set_version(const char* value);
+  void set_version(const char* value, size_t size);
+  ::std::string* mutable_version();
+  ::std::string* release_version();
+  void set_allocated_version(::std::string* version);
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  ::std::string* unsafe_arena_release_version();
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  void unsafe_arena_set_allocated_version(
+      ::std::string* version);
+
+  // @@protoc_insertion_point(class_scope:tensorflow.IteratorStateMetadata)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  ::google::protobuf::RepeatedPtrField<::std::string> keys_;
+  ::google::protobuf::internal::ArenaStringPtr version_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fframework_2fiterator_2eproto;
+};
+// ===================================================================
+
+
+// ===================================================================
+
+#ifdef __GNUC__
+  #pragma GCC diagnostic push
+  #pragma GCC diagnostic ignored "-Wstrict-aliasing"
+#endif  // __GNUC__
+// IteratorStateMetadata
+
+// string version = 1;
+inline void IteratorStateMetadata::clear_version() {
+  version_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline const ::std::string& IteratorStateMetadata::version() const {
+  // @@protoc_insertion_point(field_get:tensorflow.IteratorStateMetadata.version)
+  return version_.Get();
+}
+inline void IteratorStateMetadata::set_version(const ::std::string& value) {
+  
+  version_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set:tensorflow.IteratorStateMetadata.version)
+}
+#if LANG_CXX11
+inline void IteratorStateMetadata::set_version(::std::string&& value) {
+  
+  version_.Set(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.IteratorStateMetadata.version)
+}
+#endif
+inline void IteratorStateMetadata::set_version(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  version_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
+              GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_char:tensorflow.IteratorStateMetadata.version)
+}
+inline void IteratorStateMetadata::set_version(const char* value,
+    size_t size) {
+  
+  version_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
+      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.IteratorStateMetadata.version)
+}
+inline ::std::string* IteratorStateMetadata::mutable_version() {
+  
+  // @@protoc_insertion_point(field_mutable:tensorflow.IteratorStateMetadata.version)
+  return version_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline ::std::string* IteratorStateMetadata::release_version() {
+  // @@protoc_insertion_point(field_release:tensorflow.IteratorStateMetadata.version)
+  
+  return version_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline void IteratorStateMetadata::set_allocated_version(::std::string* version) {
+  if (version != NULL) {
+    
+  } else {
+    
+  }
+  version_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), version,
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.IteratorStateMetadata.version)
+}
+inline ::std::string* IteratorStateMetadata::unsafe_arena_release_version() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.IteratorStateMetadata.version)
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  
+  return version_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      GetArenaNoVirtual());
+}
+inline void IteratorStateMetadata::unsafe_arena_set_allocated_version(
+    ::std::string* version) {
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (version != NULL) {
+    
+  } else {
+    
+  }
+  version_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      version, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.IteratorStateMetadata.version)
+}
+
+// repeated string keys = 2;
+inline int IteratorStateMetadata::keys_size() const {
+  return keys_.size();
+}
+inline void IteratorStateMetadata::clear_keys() {
+  keys_.Clear();
+}
+inline const ::std::string& IteratorStateMetadata::keys(int index) const {
+  // @@protoc_insertion_point(field_get:tensorflow.IteratorStateMetadata.keys)
+  return keys_.Get(index);
+}
+inline ::std::string* IteratorStateMetadata::mutable_keys(int index) {
+  // @@protoc_insertion_point(field_mutable:tensorflow.IteratorStateMetadata.keys)
+  return keys_.Mutable(index);
+}
+inline void IteratorStateMetadata::set_keys(int index, const ::std::string& value) {
+  // @@protoc_insertion_point(field_set:tensorflow.IteratorStateMetadata.keys)
+  keys_.Mutable(index)->assign(value);
+}
+#if LANG_CXX11
+inline void IteratorStateMetadata::set_keys(int index, ::std::string&& value) {
+  // @@protoc_insertion_point(field_set:tensorflow.IteratorStateMetadata.keys)
+  keys_.Mutable(index)->assign(std::move(value));
+}
+#endif
+inline void IteratorStateMetadata::set_keys(int index, const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  keys_.Mutable(index)->assign(value);
+  // @@protoc_insertion_point(field_set_char:tensorflow.IteratorStateMetadata.keys)
+}
+inline void IteratorStateMetadata::set_keys(int index, const char* value, size_t size) {
+  keys_.Mutable(index)->assign(
+    reinterpret_cast<const char*>(value), size);
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.IteratorStateMetadata.keys)
+}
+inline ::std::string* IteratorStateMetadata::add_keys() {
+  // @@protoc_insertion_point(field_add_mutable:tensorflow.IteratorStateMetadata.keys)
+  return keys_.Add();
+}
+inline void IteratorStateMetadata::add_keys(const ::std::string& value) {
+  keys_.Add()->assign(value);
+  // @@protoc_insertion_point(field_add:tensorflow.IteratorStateMetadata.keys)
+}
+#if LANG_CXX11
+inline void IteratorStateMetadata::add_keys(::std::string&& value) {
+  keys_.Add(std::move(value));
+  // @@protoc_insertion_point(field_add:tensorflow.IteratorStateMetadata.keys)
+}
+#endif
+inline void IteratorStateMetadata::add_keys(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  keys_.Add()->assign(value);
+  // @@protoc_insertion_point(field_add_char:tensorflow.IteratorStateMetadata.keys)
+}
+inline void IteratorStateMetadata::add_keys(const char* value, size_t size) {
+  keys_.Add()->assign(reinterpret_cast<const char*>(value), size);
+  // @@protoc_insertion_point(field_add_pointer:tensorflow.IteratorStateMetadata.keys)
+}
+inline const ::google::protobuf::RepeatedPtrField<::std::string>&
+IteratorStateMetadata::keys() const {
+  // @@protoc_insertion_point(field_list:tensorflow.IteratorStateMetadata.keys)
+  return keys_;
+}
+inline ::google::protobuf::RepeatedPtrField<::std::string>*
+IteratorStateMetadata::mutable_keys() {
+  // @@protoc_insertion_point(field_mutable_list:tensorflow.IteratorStateMetadata.keys)
+  return &keys_;
+}
+
+#ifdef __GNUC__
+  #pragma GCC diagnostic pop
+#endif  // __GNUC__
+
+// @@protoc_insertion_point(namespace_scope)
+
+}  // namespace tensorflow
+
+// @@protoc_insertion_point(global_scope)
+
+#include <google/protobuf/port_undef.inc>
+#endif  // PROTOBUF_INCLUDED_tensorflow_2fcore_2fframework_2fiterator_2eproto
diff --git a/tensorflow/core/framework/iterator.proto b/tensorflow/core/framework/iterator.proto
new file mode 100644 (file)
index 0000000..f015342
--- /dev/null
@@ -0,0 +1,18 @@
+syntax = "proto3";
+
+package tensorflow;
+option cc_enable_arenas = true;
+option java_outer_classname = "IteratorProtos";
+option java_multiple_files = true;
+option java_package = "org.tensorflow.util";
+option go_package = "github.com/tensorflow/tensorflow/tensorflow/go/core/framework";
+
+// Protocol buffer representing the metadata for an iterator's state stored
+// as a Variant tensor.
+message IteratorStateMetadata {
+  // A user-specified version string.
+  string version = 1;
+
+  // Keys for tensors in the VariantTensorDataProto.
+  repeated string keys = 2;
+}
diff --git a/tensorflow/core/framework/kernel_def.pb.cc b/tensorflow/core/framework/kernel_def.pb.cc
new file mode 100644 (file)
index 0000000..ff3dc9b
--- /dev/null
@@ -0,0 +1,1169 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: tensorflow/core/framework/kernel_def.proto
+
+#include "tensorflow/core/framework/kernel_def.pb.h"
+
+#include <algorithm>
+
+#include <google/protobuf/stubs/common.h>
+#include <google/protobuf/io/coded_stream.h>
+#include <google/protobuf/extension_set.h>
+#include <google/protobuf/wire_format_lite_inl.h>
+#include <google/protobuf/descriptor.h>
+#include <google/protobuf/generated_message_reflection.h>
+#include <google/protobuf/reflection_ops.h>
+#include <google/protobuf/wire_format.h>
+// @@protoc_insertion_point(includes)
+#include <google/protobuf/port_def.inc>
+
+extern PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fframework_2fattr_5fvalue_2eproto ::google::protobuf::internal::SCCInfo<2> scc_info_AttrValue_tensorflow_2fcore_2fframework_2fattr_5fvalue_2eproto;
+extern PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fframework_2fkernel_5fdef_2eproto ::google::protobuf::internal::SCCInfo<1> scc_info_KernelDef_AttrConstraint_tensorflow_2fcore_2fframework_2fkernel_5fdef_2eproto;
+namespace tensorflow {
+class KernelDef_AttrConstraintDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<KernelDef_AttrConstraint> _instance;
+} _KernelDef_AttrConstraint_default_instance_;
+class KernelDefDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<KernelDef> _instance;
+} _KernelDef_default_instance_;
+}  // namespace tensorflow
+static void InitDefaultsKernelDef_AttrConstraint_tensorflow_2fcore_2fframework_2fkernel_5fdef_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_KernelDef_AttrConstraint_default_instance_;
+    new (ptr) ::tensorflow::KernelDef_AttrConstraint();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::KernelDef_AttrConstraint::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<1> scc_info_KernelDef_AttrConstraint_tensorflow_2fcore_2fframework_2fkernel_5fdef_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsKernelDef_AttrConstraint_tensorflow_2fcore_2fframework_2fkernel_5fdef_2eproto}, {
+      &scc_info_AttrValue_tensorflow_2fcore_2fframework_2fattr_5fvalue_2eproto.base,}};
+
+static void InitDefaultsKernelDef_tensorflow_2fcore_2fframework_2fkernel_5fdef_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_KernelDef_default_instance_;
+    new (ptr) ::tensorflow::KernelDef();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::KernelDef::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<1> scc_info_KernelDef_tensorflow_2fcore_2fframework_2fkernel_5fdef_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsKernelDef_tensorflow_2fcore_2fframework_2fkernel_5fdef_2eproto}, {
+      &scc_info_KernelDef_AttrConstraint_tensorflow_2fcore_2fframework_2fkernel_5fdef_2eproto.base,}};
+
+void InitDefaults_tensorflow_2fcore_2fframework_2fkernel_5fdef_2eproto() {
+  ::google::protobuf::internal::InitSCC(&scc_info_KernelDef_AttrConstraint_tensorflow_2fcore_2fframework_2fkernel_5fdef_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_KernelDef_tensorflow_2fcore_2fframework_2fkernel_5fdef_2eproto.base);
+}
+
+::google::protobuf::Metadata file_level_metadata_tensorflow_2fcore_2fframework_2fkernel_5fdef_2eproto[2];
+constexpr ::google::protobuf::EnumDescriptor const** file_level_enum_descriptors_tensorflow_2fcore_2fframework_2fkernel_5fdef_2eproto = nullptr;
+constexpr ::google::protobuf::ServiceDescriptor const** file_level_service_descriptors_tensorflow_2fcore_2fframework_2fkernel_5fdef_2eproto = nullptr;
+
+const ::google::protobuf::uint32 TableStruct_tensorflow_2fcore_2fframework_2fkernel_5fdef_2eproto::offsets[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = {
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::KernelDef_AttrConstraint, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::KernelDef_AttrConstraint, name_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::KernelDef_AttrConstraint, allowed_values_),
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::KernelDef, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::KernelDef, op_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::KernelDef, device_type_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::KernelDef, constraint_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::KernelDef, host_memory_arg_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::KernelDef, label_),
+};
+static const ::google::protobuf::internal::MigrationSchema schemas[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = {
+  { 0, -1, sizeof(::tensorflow::KernelDef_AttrConstraint)},
+  { 7, -1, sizeof(::tensorflow::KernelDef)},
+};
+
+static ::google::protobuf::Message const * const file_default_instances[] = {
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_KernelDef_AttrConstraint_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_KernelDef_default_instance_),
+};
+
+::google::protobuf::internal::AssignDescriptorsTable assign_descriptors_table_tensorflow_2fcore_2fframework_2fkernel_5fdef_2eproto = {
+  {}, AddDescriptors_tensorflow_2fcore_2fframework_2fkernel_5fdef_2eproto, "tensorflow/core/framework/kernel_def.proto", schemas,
+  file_default_instances, TableStruct_tensorflow_2fcore_2fframework_2fkernel_5fdef_2eproto::offsets,
+  file_level_metadata_tensorflow_2fcore_2fframework_2fkernel_5fdef_2eproto, 2, file_level_enum_descriptors_tensorflow_2fcore_2fframework_2fkernel_5fdef_2eproto, file_level_service_descriptors_tensorflow_2fcore_2fframework_2fkernel_5fdef_2eproto,
+};
+
+::google::protobuf::internal::DescriptorTable descriptor_table_tensorflow_2fcore_2fframework_2fkernel_5fdef_2eproto = {
+  false, InitDefaults_tensorflow_2fcore_2fframework_2fkernel_5fdef_2eproto, 
+  "\n*tensorflow/core/framework/kernel_def.p"
+  "roto\022\ntensorflow\032*tensorflow/core/framew"
+  "ork/attr_value.proto\"\335\001\n\tKernelDef\022\n\n\002op"
+  "\030\001 \001(\t\022\023\n\013device_type\030\002 \001(\t\0228\n\nconstrain"
+  "t\030\003 \003(\0132$.tensorflow.KernelDef.AttrConst"
+  "raint\022\027\n\017host_memory_arg\030\004 \003(\t\022\r\n\005label\030"
+  "\005 \001(\t\032M\n\016AttrConstraint\022\014\n\004name\030\001 \001(\t\022-\n"
+  "\016allowed_values\030\002 \001(\0132\025.tensorflow.AttrV"
+  "alueBo\n\030org.tensorflow.frameworkB\017Kernel"
+  "DefProtosP\001Z=github.com/tensorflow/tenso"
+  "rflow/tensorflow/go/core/framework\370\001\001b\006p"
+  "roto3"
+,
+  "tensorflow/core/framework/kernel_def.proto", &assign_descriptors_table_tensorflow_2fcore_2fframework_2fkernel_5fdef_2eproto, 445,
+};
+
+void AddDescriptors_tensorflow_2fcore_2fframework_2fkernel_5fdef_2eproto() {
+  static constexpr ::google::protobuf::internal::InitFunc deps[1] =
+  {
+    ::AddDescriptors_tensorflow_2fcore_2fframework_2fattr_5fvalue_2eproto,
+  };
+ ::google::protobuf::internal::AddDescriptors(&descriptor_table_tensorflow_2fcore_2fframework_2fkernel_5fdef_2eproto, deps, 1);
+}
+
+// Force running AddDescriptors() at dynamic initialization time.
+static bool dynamic_init_dummy_tensorflow_2fcore_2fframework_2fkernel_5fdef_2eproto = []() { AddDescriptors_tensorflow_2fcore_2fframework_2fkernel_5fdef_2eproto(); return true; }();
+namespace tensorflow {
+
+// ===================================================================
+
+void KernelDef_AttrConstraint::InitAsDefaultInstance() {
+  ::tensorflow::_KernelDef_AttrConstraint_default_instance_._instance.get_mutable()->allowed_values_ = const_cast< ::tensorflow::AttrValue*>(
+      ::tensorflow::AttrValue::internal_default_instance());
+}
+class KernelDef_AttrConstraint::HasBitSetters {
+ public:
+  static const ::tensorflow::AttrValue& allowed_values(const KernelDef_AttrConstraint* msg);
+};
+
+const ::tensorflow::AttrValue&
+KernelDef_AttrConstraint::HasBitSetters::allowed_values(const KernelDef_AttrConstraint* msg) {
+  return *msg->allowed_values_;
+}
+void KernelDef_AttrConstraint::unsafe_arena_set_allocated_allowed_values(
+    ::tensorflow::AttrValue* allowed_values) {
+  if (GetArenaNoVirtual() == NULL) {
+    delete allowed_values_;
+  }
+  allowed_values_ = allowed_values;
+  if (allowed_values) {
+    
+  } else {
+    
+  }
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.KernelDef.AttrConstraint.allowed_values)
+}
+void KernelDef_AttrConstraint::clear_allowed_values() {
+  if (GetArenaNoVirtual() == NULL && allowed_values_ != NULL) {
+    delete allowed_values_;
+  }
+  allowed_values_ = NULL;
+}
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int KernelDef_AttrConstraint::kNameFieldNumber;
+const int KernelDef_AttrConstraint::kAllowedValuesFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+KernelDef_AttrConstraint::KernelDef_AttrConstraint()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.KernelDef.AttrConstraint)
+}
+KernelDef_AttrConstraint::KernelDef_AttrConstraint(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.KernelDef.AttrConstraint)
+}
+KernelDef_AttrConstraint::KernelDef_AttrConstraint(const KernelDef_AttrConstraint& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.name().size() > 0) {
+    name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.name(),
+      GetArenaNoVirtual());
+  }
+  if (from.has_allowed_values()) {
+    allowed_values_ = new ::tensorflow::AttrValue(*from.allowed_values_);
+  } else {
+    allowed_values_ = NULL;
+  }
+  // @@protoc_insertion_point(copy_constructor:tensorflow.KernelDef.AttrConstraint)
+}
+
+void KernelDef_AttrConstraint::SharedCtor() {
+  ::google::protobuf::internal::InitSCC(
+      &scc_info_KernelDef_AttrConstraint_tensorflow_2fcore_2fframework_2fkernel_5fdef_2eproto.base);
+  name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  allowed_values_ = NULL;
+}
+
+KernelDef_AttrConstraint::~KernelDef_AttrConstraint() {
+  // @@protoc_insertion_point(destructor:tensorflow.KernelDef.AttrConstraint)
+  SharedDtor();
+}
+
+void KernelDef_AttrConstraint::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+  name_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (this != internal_default_instance()) delete allowed_values_;
+}
+
+void KernelDef_AttrConstraint::ArenaDtor(void* object) {
+  KernelDef_AttrConstraint* _this = reinterpret_cast< KernelDef_AttrConstraint* >(object);
+  (void)_this;
+}
+void KernelDef_AttrConstraint::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void KernelDef_AttrConstraint::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const KernelDef_AttrConstraint& KernelDef_AttrConstraint::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_KernelDef_AttrConstraint_tensorflow_2fcore_2fframework_2fkernel_5fdef_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void KernelDef_AttrConstraint::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.KernelDef.AttrConstraint)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  name_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+  if (GetArenaNoVirtual() == NULL && allowed_values_ != NULL) {
+    delete allowed_values_;
+  }
+  allowed_values_ = NULL;
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* KernelDef_AttrConstraint::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<KernelDef_AttrConstraint*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // string name = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 10) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("tensorflow.KernelDef.AttrConstraint.name");
+        parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+        ::std::string* str = msg->mutable_name();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+        break;
+      }
+      // .tensorflow.AttrValue allowed_values = 2;
+      case 2: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 18) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        parser_till_end = ::tensorflow::AttrValue::_InternalParse;
+        object = msg->mutable_allowed_values();
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                       ptr, newend);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+        ptr = newend;
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool KernelDef_AttrConstraint::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.KernelDef.AttrConstraint)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // string name = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (10 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_name()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->name().data(), static_cast<int>(this->name().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.KernelDef.AttrConstraint.name"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // .tensorflow.AttrValue allowed_values = 2;
+      case 2: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (18 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+               input, mutable_allowed_values()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.KernelDef.AttrConstraint)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.KernelDef.AttrConstraint)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void KernelDef_AttrConstraint::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.KernelDef.AttrConstraint)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // string name = 1;
+  if (this->name().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->name().data(), static_cast<int>(this->name().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.KernelDef.AttrConstraint.name");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      1, this->name(), output);
+  }
+
+  // .tensorflow.AttrValue allowed_values = 2;
+  if (this->has_allowed_values()) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      2, HasBitSetters::allowed_values(this), output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.KernelDef.AttrConstraint)
+}
+
+::google::protobuf::uint8* KernelDef_AttrConstraint::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.KernelDef.AttrConstraint)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // string name = 1;
+  if (this->name().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->name().data(), static_cast<int>(this->name().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.KernelDef.AttrConstraint.name");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        1, this->name(), target);
+  }
+
+  // .tensorflow.AttrValue allowed_values = 2;
+  if (this->has_allowed_values()) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        2, HasBitSetters::allowed_values(this), deterministic, target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.KernelDef.AttrConstraint)
+  return target;
+}
+
+size_t KernelDef_AttrConstraint::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.KernelDef.AttrConstraint)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // string name = 1;
+  if (this->name().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->name());
+  }
+
+  // .tensorflow.AttrValue allowed_values = 2;
+  if (this->has_allowed_values()) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::MessageSize(
+        *allowed_values_);
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void KernelDef_AttrConstraint::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.KernelDef.AttrConstraint)
+  GOOGLE_DCHECK_NE(&from, this);
+  const KernelDef_AttrConstraint* source =
+      ::google::protobuf::DynamicCastToGenerated<KernelDef_AttrConstraint>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.KernelDef.AttrConstraint)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.KernelDef.AttrConstraint)
+    MergeFrom(*source);
+  }
+}
+
+void KernelDef_AttrConstraint::MergeFrom(const KernelDef_AttrConstraint& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.KernelDef.AttrConstraint)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  if (from.name().size() > 0) {
+    set_name(from.name());
+  }
+  if (from.has_allowed_values()) {
+    mutable_allowed_values()->::tensorflow::AttrValue::MergeFrom(from.allowed_values());
+  }
+}
+
+void KernelDef_AttrConstraint::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.KernelDef.AttrConstraint)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void KernelDef_AttrConstraint::CopyFrom(const KernelDef_AttrConstraint& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.KernelDef.AttrConstraint)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool KernelDef_AttrConstraint::IsInitialized() const {
+  return true;
+}
+
+void KernelDef_AttrConstraint::Swap(KernelDef_AttrConstraint* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    KernelDef_AttrConstraint* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void KernelDef_AttrConstraint::UnsafeArenaSwap(KernelDef_AttrConstraint* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void KernelDef_AttrConstraint::InternalSwap(KernelDef_AttrConstraint* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  name_.Swap(&other->name_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+  swap(allowed_values_, other->allowed_values_);
+}
+
+::google::protobuf::Metadata KernelDef_AttrConstraint::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fframework_2fkernel_5fdef_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fframework_2fkernel_5fdef_2eproto[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+void KernelDef::InitAsDefaultInstance() {
+}
+class KernelDef::HasBitSetters {
+ public:
+};
+
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int KernelDef::kOpFieldNumber;
+const int KernelDef::kDeviceTypeFieldNumber;
+const int KernelDef::kConstraintFieldNumber;
+const int KernelDef::kHostMemoryArgFieldNumber;
+const int KernelDef::kLabelFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+KernelDef::KernelDef()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.KernelDef)
+}
+KernelDef::KernelDef(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena),
+  constraint_(arena),
+  host_memory_arg_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.KernelDef)
+}
+KernelDef::KernelDef(const KernelDef& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL),
+      constraint_(from.constraint_),
+      host_memory_arg_(from.host_memory_arg_) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  op_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.op().size() > 0) {
+    op_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.op(),
+      GetArenaNoVirtual());
+  }
+  device_type_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.device_type().size() > 0) {
+    device_type_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.device_type(),
+      GetArenaNoVirtual());
+  }
+  label_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.label().size() > 0) {
+    label_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.label(),
+      GetArenaNoVirtual());
+  }
+  // @@protoc_insertion_point(copy_constructor:tensorflow.KernelDef)
+}
+
+void KernelDef::SharedCtor() {
+  ::google::protobuf::internal::InitSCC(
+      &scc_info_KernelDef_tensorflow_2fcore_2fframework_2fkernel_5fdef_2eproto.base);
+  op_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  device_type_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  label_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+
+KernelDef::~KernelDef() {
+  // @@protoc_insertion_point(destructor:tensorflow.KernelDef)
+  SharedDtor();
+}
+
+void KernelDef::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+  op_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  device_type_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  label_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+
+void KernelDef::ArenaDtor(void* object) {
+  KernelDef* _this = reinterpret_cast< KernelDef* >(object);
+  (void)_this;
+}
+void KernelDef::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void KernelDef::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const KernelDef& KernelDef::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_KernelDef_tensorflow_2fcore_2fframework_2fkernel_5fdef_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void KernelDef::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.KernelDef)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  constraint_.Clear();
+  host_memory_arg_.Clear();
+  op_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+  device_type_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+  label_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* KernelDef::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<KernelDef*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // string op = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 10) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("tensorflow.KernelDef.op");
+        parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+        ::std::string* str = msg->mutable_op();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+        break;
+      }
+      // string device_type = 2;
+      case 2: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 18) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("tensorflow.KernelDef.device_type");
+        parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+        ::std::string* str = msg->mutable_device_type();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+        break;
+      }
+      // repeated .tensorflow.KernelDef.AttrConstraint constraint = 3;
+      case 3: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 26) goto handle_unusual;
+        do {
+          ptr = Varint::Parse32Inline(ptr, &size);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          parser_till_end = ::tensorflow::KernelDef_AttrConstraint::_InternalParse;
+          object = msg->add_constraint();
+          if (size > end - ptr) goto len_delim_till_end;
+          auto newend = ptr + size;
+          bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                         ptr, newend);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          ptr = newend;
+          if (ptr >= end) break;
+        } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 26 && (ptr += 1));
+        break;
+      }
+      // repeated string host_memory_arg = 4;
+      case 4: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 34) goto handle_unusual;
+        do {
+          ptr = Varint::Parse32Inline(ptr, &size);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          ctx->extra_parse_data().SetFieldName("tensorflow.KernelDef.host_memory_arg");
+          parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+          ::std::string* str = msg->add_host_memory_arg();
+          str->clear();
+          object = str;
+          if (size > end - ptr) goto len_delim_till_end;
+          auto newend = ptr + size;
+          if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+          if (ptr >= end) break;
+        } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 34 && (ptr += 1));
+        break;
+      }
+      // string label = 5;
+      case 5: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 42) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("tensorflow.KernelDef.label");
+        parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+        ::std::string* str = msg->mutable_label();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool KernelDef::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.KernelDef)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // string op = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (10 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_op()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->op().data(), static_cast<int>(this->op().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.KernelDef.op"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // string device_type = 2;
+      case 2: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (18 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_device_type()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->device_type().data(), static_cast<int>(this->device_type().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.KernelDef.device_type"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // repeated .tensorflow.KernelDef.AttrConstraint constraint = 3;
+      case 3: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (26 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+                input, add_constraint()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // repeated string host_memory_arg = 4;
+      case 4: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (34 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->add_host_memory_arg()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->host_memory_arg(this->host_memory_arg_size() - 1).data(),
+            static_cast<int>(this->host_memory_arg(this->host_memory_arg_size() - 1).length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.KernelDef.host_memory_arg"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // string label = 5;
+      case 5: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (42 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_label()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->label().data(), static_cast<int>(this->label().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.KernelDef.label"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.KernelDef)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.KernelDef)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void KernelDef::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.KernelDef)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // string op = 1;
+  if (this->op().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->op().data(), static_cast<int>(this->op().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.KernelDef.op");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      1, this->op(), output);
+  }
+
+  // string device_type = 2;
+  if (this->device_type().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->device_type().data(), static_cast<int>(this->device_type().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.KernelDef.device_type");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      2, this->device_type(), output);
+  }
+
+  // repeated .tensorflow.KernelDef.AttrConstraint constraint = 3;
+  for (unsigned int i = 0,
+      n = static_cast<unsigned int>(this->constraint_size()); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      3,
+      this->constraint(static_cast<int>(i)),
+      output);
+  }
+
+  // repeated string host_memory_arg = 4;
+  for (int i = 0, n = this->host_memory_arg_size(); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->host_memory_arg(i).data(), static_cast<int>(this->host_memory_arg(i).length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.KernelDef.host_memory_arg");
+    ::google::protobuf::internal::WireFormatLite::WriteString(
+      4, this->host_memory_arg(i), output);
+  }
+
+  // string label = 5;
+  if (this->label().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->label().data(), static_cast<int>(this->label().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.KernelDef.label");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      5, this->label(), output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.KernelDef)
+}
+
+::google::protobuf::uint8* KernelDef::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.KernelDef)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // string op = 1;
+  if (this->op().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->op().data(), static_cast<int>(this->op().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.KernelDef.op");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        1, this->op(), target);
+  }
+
+  // string device_type = 2;
+  if (this->device_type().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->device_type().data(), static_cast<int>(this->device_type().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.KernelDef.device_type");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        2, this->device_type(), target);
+  }
+
+  // repeated .tensorflow.KernelDef.AttrConstraint constraint = 3;
+  for (unsigned int i = 0,
+      n = static_cast<unsigned int>(this->constraint_size()); i < n; i++) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        3, this->constraint(static_cast<int>(i)), deterministic, target);
+  }
+
+  // repeated string host_memory_arg = 4;
+  for (int i = 0, n = this->host_memory_arg_size(); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->host_memory_arg(i).data(), static_cast<int>(this->host_memory_arg(i).length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.KernelDef.host_memory_arg");
+    target = ::google::protobuf::internal::WireFormatLite::
+      WriteStringToArray(4, this->host_memory_arg(i), target);
+  }
+
+  // string label = 5;
+  if (this->label().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->label().data(), static_cast<int>(this->label().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.KernelDef.label");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        5, this->label(), target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.KernelDef)
+  return target;
+}
+
+size_t KernelDef::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.KernelDef)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // repeated .tensorflow.KernelDef.AttrConstraint constraint = 3;
+  {
+    unsigned int count = static_cast<unsigned int>(this->constraint_size());
+    total_size += 1UL * count;
+    for (unsigned int i = 0; i < count; i++) {
+      total_size +=
+        ::google::protobuf::internal::WireFormatLite::MessageSize(
+          this->constraint(static_cast<int>(i)));
+    }
+  }
+
+  // repeated string host_memory_arg = 4;
+  total_size += 1 *
+      ::google::protobuf::internal::FromIntSize(this->host_memory_arg_size());
+  for (int i = 0, n = this->host_memory_arg_size(); i < n; i++) {
+    total_size += ::google::protobuf::internal::WireFormatLite::StringSize(
+      this->host_memory_arg(i));
+  }
+
+  // string op = 1;
+  if (this->op().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->op());
+  }
+
+  // string device_type = 2;
+  if (this->device_type().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->device_type());
+  }
+
+  // string label = 5;
+  if (this->label().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->label());
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void KernelDef::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.KernelDef)
+  GOOGLE_DCHECK_NE(&from, this);
+  const KernelDef* source =
+      ::google::protobuf::DynamicCastToGenerated<KernelDef>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.KernelDef)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.KernelDef)
+    MergeFrom(*source);
+  }
+}
+
+void KernelDef::MergeFrom(const KernelDef& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.KernelDef)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  constraint_.MergeFrom(from.constraint_);
+  host_memory_arg_.MergeFrom(from.host_memory_arg_);
+  if (from.op().size() > 0) {
+    set_op(from.op());
+  }
+  if (from.device_type().size() > 0) {
+    set_device_type(from.device_type());
+  }
+  if (from.label().size() > 0) {
+    set_label(from.label());
+  }
+}
+
+void KernelDef::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.KernelDef)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void KernelDef::CopyFrom(const KernelDef& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.KernelDef)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool KernelDef::IsInitialized() const {
+  return true;
+}
+
+void KernelDef::Swap(KernelDef* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    KernelDef* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void KernelDef::UnsafeArenaSwap(KernelDef* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void KernelDef::InternalSwap(KernelDef* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  CastToBase(&constraint_)->InternalSwap(CastToBase(&other->constraint_));
+  host_memory_arg_.InternalSwap(CastToBase(&other->host_memory_arg_));
+  op_.Swap(&other->op_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+  device_type_.Swap(&other->device_type_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+  label_.Swap(&other->label_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+}
+
+::google::protobuf::Metadata KernelDef::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fframework_2fkernel_5fdef_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fframework_2fkernel_5fdef_2eproto[kIndexInFileMessages];
+}
+
+
+// @@protoc_insertion_point(namespace_scope)
+}  // namespace tensorflow
+namespace google {
+namespace protobuf {
+template<> PROTOBUF_NOINLINE ::tensorflow::KernelDef_AttrConstraint* Arena::CreateMaybeMessage< ::tensorflow::KernelDef_AttrConstraint >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::KernelDef_AttrConstraint >(arena);
+}
+template<> PROTOBUF_NOINLINE ::tensorflow::KernelDef* Arena::CreateMaybeMessage< ::tensorflow::KernelDef >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::KernelDef >(arena);
+}
+}  // namespace protobuf
+}  // namespace google
+
+// @@protoc_insertion_point(global_scope)
+#include <google/protobuf/port_undef.inc>
diff --git a/tensorflow/core/framework/kernel_def.pb.h b/tensorflow/core/framework/kernel_def.pb.h
new file mode 100644 (file)
index 0000000..242129e
--- /dev/null
@@ -0,0 +1,936 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: tensorflow/core/framework/kernel_def.proto
+
+#ifndef PROTOBUF_INCLUDED_tensorflow_2fcore_2fframework_2fkernel_5fdef_2eproto
+#define PROTOBUF_INCLUDED_tensorflow_2fcore_2fframework_2fkernel_5fdef_2eproto
+
+#include <limits>
+#include <string>
+
+#include <google/protobuf/port_def.inc>
+#if PROTOBUF_VERSION < 3006001
+#error This file was generated by a newer version of protoc which is
+#error incompatible with your Protocol Buffer headers. Please update
+#error your headers.
+#endif
+#if 3006001 < PROTOBUF_MIN_PROTOC_VERSION
+#error This file was generated by an older version of protoc which is
+#error incompatible with your Protocol Buffer headers. Please
+#error regenerate this file with a newer version of protoc.
+#endif
+
+#include <google/protobuf/port_undef.inc>
+#include <google/protobuf/io/coded_stream.h>
+#include <google/protobuf/arena.h>
+#include <google/protobuf/arenastring.h>
+#include <google/protobuf/generated_message_table_driven.h>
+#include <google/protobuf/generated_message_util.h>
+#include <google/protobuf/inlined_string_field.h>
+#include <google/protobuf/metadata.h>
+#include <google/protobuf/message.h>
+#include <google/protobuf/repeated_field.h>  // IWYU pragma: export
+#include <google/protobuf/extension_set.h>  // IWYU pragma: export
+#include <google/protobuf/unknown_field_set.h>
+#include "tensorflow/core/framework/attr_value.pb.h"
+// @@protoc_insertion_point(includes)
+#include <google/protobuf/port_def.inc>
+#define PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fframework_2fkernel_5fdef_2eproto
+
+// Internal implementation detail -- do not use these members.
+struct TableStruct_tensorflow_2fcore_2fframework_2fkernel_5fdef_2eproto {
+  static const ::google::protobuf::internal::ParseTableField entries[]
+    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
+  static const ::google::protobuf::internal::AuxillaryParseTableField aux[]
+    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
+  static const ::google::protobuf::internal::ParseTable schema[2]
+    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
+  static const ::google::protobuf::internal::FieldMetadata field_metadata[];
+  static const ::google::protobuf::internal::SerializationTable serialization_table[];
+  static const ::google::protobuf::uint32 offsets[];
+};
+void AddDescriptors_tensorflow_2fcore_2fframework_2fkernel_5fdef_2eproto();
+namespace tensorflow {
+class KernelDef;
+class KernelDefDefaultTypeInternal;
+extern KernelDefDefaultTypeInternal _KernelDef_default_instance_;
+class KernelDef_AttrConstraint;
+class KernelDef_AttrConstraintDefaultTypeInternal;
+extern KernelDef_AttrConstraintDefaultTypeInternal _KernelDef_AttrConstraint_default_instance_;
+}  // namespace tensorflow
+namespace google {
+namespace protobuf {
+template<> ::tensorflow::KernelDef* Arena::CreateMaybeMessage<::tensorflow::KernelDef>(Arena*);
+template<> ::tensorflow::KernelDef_AttrConstraint* Arena::CreateMaybeMessage<::tensorflow::KernelDef_AttrConstraint>(Arena*);
+}  // namespace protobuf
+}  // namespace google
+namespace tensorflow {
+
+// ===================================================================
+
+class KernelDef_AttrConstraint : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.KernelDef.AttrConstraint) */ {
+ public:
+  KernelDef_AttrConstraint();
+  virtual ~KernelDef_AttrConstraint();
+
+  KernelDef_AttrConstraint(const KernelDef_AttrConstraint& from);
+
+  inline KernelDef_AttrConstraint& operator=(const KernelDef_AttrConstraint& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  KernelDef_AttrConstraint(KernelDef_AttrConstraint&& from) noexcept
+    : KernelDef_AttrConstraint() {
+    *this = ::std::move(from);
+  }
+
+  inline KernelDef_AttrConstraint& operator=(KernelDef_AttrConstraint&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const KernelDef_AttrConstraint& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const KernelDef_AttrConstraint* internal_default_instance() {
+    return reinterpret_cast<const KernelDef_AttrConstraint*>(
+               &_KernelDef_AttrConstraint_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    0;
+
+  void UnsafeArenaSwap(KernelDef_AttrConstraint* other);
+  void Swap(KernelDef_AttrConstraint* other);
+  friend void swap(KernelDef_AttrConstraint& a, KernelDef_AttrConstraint& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline KernelDef_AttrConstraint* New() const final {
+    return CreateMaybeMessage<KernelDef_AttrConstraint>(NULL);
+  }
+
+  KernelDef_AttrConstraint* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<KernelDef_AttrConstraint>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const KernelDef_AttrConstraint& from);
+  void MergeFrom(const KernelDef_AttrConstraint& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(KernelDef_AttrConstraint* other);
+  protected:
+  explicit KernelDef_AttrConstraint(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // string name = 1;
+  void clear_name();
+  static const int kNameFieldNumber = 1;
+  const ::std::string& name() const;
+  void set_name(const ::std::string& value);
+  #if LANG_CXX11
+  void set_name(::std::string&& value);
+  #endif
+  void set_name(const char* value);
+  void set_name(const char* value, size_t size);
+  ::std::string* mutable_name();
+  ::std::string* release_name();
+  void set_allocated_name(::std::string* name);
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  ::std::string* unsafe_arena_release_name();
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  void unsafe_arena_set_allocated_name(
+      ::std::string* name);
+
+  // .tensorflow.AttrValue allowed_values = 2;
+  bool has_allowed_values() const;
+  void clear_allowed_values();
+  static const int kAllowedValuesFieldNumber = 2;
+  const ::tensorflow::AttrValue& allowed_values() const;
+  ::tensorflow::AttrValue* release_allowed_values();
+  ::tensorflow::AttrValue* mutable_allowed_values();
+  void set_allocated_allowed_values(::tensorflow::AttrValue* allowed_values);
+  void unsafe_arena_set_allocated_allowed_values(
+      ::tensorflow::AttrValue* allowed_values);
+  ::tensorflow::AttrValue* unsafe_arena_release_allowed_values();
+
+  // @@protoc_insertion_point(class_scope:tensorflow.KernelDef.AttrConstraint)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  ::google::protobuf::internal::ArenaStringPtr name_;
+  ::tensorflow::AttrValue* allowed_values_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fframework_2fkernel_5fdef_2eproto;
+};
+// -------------------------------------------------------------------
+
+class KernelDef : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.KernelDef) */ {
+ public:
+  KernelDef();
+  virtual ~KernelDef();
+
+  KernelDef(const KernelDef& from);
+
+  inline KernelDef& operator=(const KernelDef& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  KernelDef(KernelDef&& from) noexcept
+    : KernelDef() {
+    *this = ::std::move(from);
+  }
+
+  inline KernelDef& operator=(KernelDef&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const KernelDef& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const KernelDef* internal_default_instance() {
+    return reinterpret_cast<const KernelDef*>(
+               &_KernelDef_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    1;
+
+  void UnsafeArenaSwap(KernelDef* other);
+  void Swap(KernelDef* other);
+  friend void swap(KernelDef& a, KernelDef& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline KernelDef* New() const final {
+    return CreateMaybeMessage<KernelDef>(NULL);
+  }
+
+  KernelDef* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<KernelDef>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const KernelDef& from);
+  void MergeFrom(const KernelDef& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(KernelDef* other);
+  protected:
+  explicit KernelDef(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  typedef KernelDef_AttrConstraint AttrConstraint;
+
+  // accessors -------------------------------------------------------
+
+  // repeated .tensorflow.KernelDef.AttrConstraint constraint = 3;
+  int constraint_size() const;
+  void clear_constraint();
+  static const int kConstraintFieldNumber = 3;
+  ::tensorflow::KernelDef_AttrConstraint* mutable_constraint(int index);
+  ::google::protobuf::RepeatedPtrField< ::tensorflow::KernelDef_AttrConstraint >*
+      mutable_constraint();
+  const ::tensorflow::KernelDef_AttrConstraint& constraint(int index) const;
+  ::tensorflow::KernelDef_AttrConstraint* add_constraint();
+  const ::google::protobuf::RepeatedPtrField< ::tensorflow::KernelDef_AttrConstraint >&
+      constraint() const;
+
+  // repeated string host_memory_arg = 4;
+  int host_memory_arg_size() const;
+  void clear_host_memory_arg();
+  static const int kHostMemoryArgFieldNumber = 4;
+  const ::std::string& host_memory_arg(int index) const;
+  ::std::string* mutable_host_memory_arg(int index);
+  void set_host_memory_arg(int index, const ::std::string& value);
+  #if LANG_CXX11
+  void set_host_memory_arg(int index, ::std::string&& value);
+  #endif
+  void set_host_memory_arg(int index, const char* value);
+  void set_host_memory_arg(int index, const char* value, size_t size);
+  ::std::string* add_host_memory_arg();
+  void add_host_memory_arg(const ::std::string& value);
+  #if LANG_CXX11
+  void add_host_memory_arg(::std::string&& value);
+  #endif
+  void add_host_memory_arg(const char* value);
+  void add_host_memory_arg(const char* value, size_t size);
+  const ::google::protobuf::RepeatedPtrField<::std::string>& host_memory_arg() const;
+  ::google::protobuf::RepeatedPtrField<::std::string>* mutable_host_memory_arg();
+
+  // string op = 1;
+  void clear_op();
+  static const int kOpFieldNumber = 1;
+  const ::std::string& op() const;
+  void set_op(const ::std::string& value);
+  #if LANG_CXX11
+  void set_op(::std::string&& value);
+  #endif
+  void set_op(const char* value);
+  void set_op(const char* value, size_t size);
+  ::std::string* mutable_op();
+  ::std::string* release_op();
+  void set_allocated_op(::std::string* op);
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  ::std::string* unsafe_arena_release_op();
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  void unsafe_arena_set_allocated_op(
+      ::std::string* op);
+
+  // string device_type = 2;
+  void clear_device_type();
+  static const int kDeviceTypeFieldNumber = 2;
+  const ::std::string& device_type() const;
+  void set_device_type(const ::std::string& value);
+  #if LANG_CXX11
+  void set_device_type(::std::string&& value);
+  #endif
+  void set_device_type(const char* value);
+  void set_device_type(const char* value, size_t size);
+  ::std::string* mutable_device_type();
+  ::std::string* release_device_type();
+  void set_allocated_device_type(::std::string* device_type);
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  ::std::string* unsafe_arena_release_device_type();
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  void unsafe_arena_set_allocated_device_type(
+      ::std::string* device_type);
+
+  // string label = 5;
+  void clear_label();
+  static const int kLabelFieldNumber = 5;
+  const ::std::string& label() const;
+  void set_label(const ::std::string& value);
+  #if LANG_CXX11
+  void set_label(::std::string&& value);
+  #endif
+  void set_label(const char* value);
+  void set_label(const char* value, size_t size);
+  ::std::string* mutable_label();
+  ::std::string* release_label();
+  void set_allocated_label(::std::string* label);
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  ::std::string* unsafe_arena_release_label();
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  void unsafe_arena_set_allocated_label(
+      ::std::string* label);
+
+  // @@protoc_insertion_point(class_scope:tensorflow.KernelDef)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  ::google::protobuf::RepeatedPtrField< ::tensorflow::KernelDef_AttrConstraint > constraint_;
+  ::google::protobuf::RepeatedPtrField<::std::string> host_memory_arg_;
+  ::google::protobuf::internal::ArenaStringPtr op_;
+  ::google::protobuf::internal::ArenaStringPtr device_type_;
+  ::google::protobuf::internal::ArenaStringPtr label_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fframework_2fkernel_5fdef_2eproto;
+};
+// ===================================================================
+
+
+// ===================================================================
+
+#ifdef __GNUC__
+  #pragma GCC diagnostic push
+  #pragma GCC diagnostic ignored "-Wstrict-aliasing"
+#endif  // __GNUC__
+// KernelDef_AttrConstraint
+
+// string name = 1;
+inline void KernelDef_AttrConstraint::clear_name() {
+  name_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline const ::std::string& KernelDef_AttrConstraint::name() const {
+  // @@protoc_insertion_point(field_get:tensorflow.KernelDef.AttrConstraint.name)
+  return name_.Get();
+}
+inline void KernelDef_AttrConstraint::set_name(const ::std::string& value) {
+  
+  name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set:tensorflow.KernelDef.AttrConstraint.name)
+}
+#if LANG_CXX11
+inline void KernelDef_AttrConstraint::set_name(::std::string&& value) {
+  
+  name_.Set(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.KernelDef.AttrConstraint.name)
+}
+#endif
+inline void KernelDef_AttrConstraint::set_name(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
+              GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_char:tensorflow.KernelDef.AttrConstraint.name)
+}
+inline void KernelDef_AttrConstraint::set_name(const char* value,
+    size_t size) {
+  
+  name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
+      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.KernelDef.AttrConstraint.name)
+}
+inline ::std::string* KernelDef_AttrConstraint::mutable_name() {
+  
+  // @@protoc_insertion_point(field_mutable:tensorflow.KernelDef.AttrConstraint.name)
+  return name_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline ::std::string* KernelDef_AttrConstraint::release_name() {
+  // @@protoc_insertion_point(field_release:tensorflow.KernelDef.AttrConstraint.name)
+  
+  return name_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline void KernelDef_AttrConstraint::set_allocated_name(::std::string* name) {
+  if (name != NULL) {
+    
+  } else {
+    
+  }
+  name_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), name,
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.KernelDef.AttrConstraint.name)
+}
+inline ::std::string* KernelDef_AttrConstraint::unsafe_arena_release_name() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.KernelDef.AttrConstraint.name)
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  
+  return name_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      GetArenaNoVirtual());
+}
+inline void KernelDef_AttrConstraint::unsafe_arena_set_allocated_name(
+    ::std::string* name) {
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (name != NULL) {
+    
+  } else {
+    
+  }
+  name_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      name, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.KernelDef.AttrConstraint.name)
+}
+
+// .tensorflow.AttrValue allowed_values = 2;
+inline bool KernelDef_AttrConstraint::has_allowed_values() const {
+  return this != internal_default_instance() && allowed_values_ != NULL;
+}
+inline const ::tensorflow::AttrValue& KernelDef_AttrConstraint::allowed_values() const {
+  const ::tensorflow::AttrValue* p = allowed_values_;
+  // @@protoc_insertion_point(field_get:tensorflow.KernelDef.AttrConstraint.allowed_values)
+  return p != NULL ? *p : *reinterpret_cast<const ::tensorflow::AttrValue*>(
+      &::tensorflow::_AttrValue_default_instance_);
+}
+inline ::tensorflow::AttrValue* KernelDef_AttrConstraint::release_allowed_values() {
+  // @@protoc_insertion_point(field_release:tensorflow.KernelDef.AttrConstraint.allowed_values)
+  
+  ::tensorflow::AttrValue* temp = allowed_values_;
+  if (GetArenaNoVirtual() != NULL) {
+    temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
+  }
+  allowed_values_ = NULL;
+  return temp;
+}
+inline ::tensorflow::AttrValue* KernelDef_AttrConstraint::unsafe_arena_release_allowed_values() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.KernelDef.AttrConstraint.allowed_values)
+  
+  ::tensorflow::AttrValue* temp = allowed_values_;
+  allowed_values_ = NULL;
+  return temp;
+}
+inline ::tensorflow::AttrValue* KernelDef_AttrConstraint::mutable_allowed_values() {
+  
+  if (allowed_values_ == NULL) {
+    auto* p = CreateMaybeMessage<::tensorflow::AttrValue>(GetArenaNoVirtual());
+    allowed_values_ = p;
+  }
+  // @@protoc_insertion_point(field_mutable:tensorflow.KernelDef.AttrConstraint.allowed_values)
+  return allowed_values_;
+}
+inline void KernelDef_AttrConstraint::set_allocated_allowed_values(::tensorflow::AttrValue* allowed_values) {
+  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
+  if (message_arena == NULL) {
+    delete reinterpret_cast< ::google::protobuf::MessageLite*>(allowed_values_);
+  }
+  if (allowed_values) {
+    ::google::protobuf::Arena* submessage_arena =
+      reinterpret_cast<::google::protobuf::MessageLite*>(allowed_values)->GetArena();
+    if (message_arena != submessage_arena) {
+      allowed_values = ::google::protobuf::internal::GetOwnedMessage(
+          message_arena, allowed_values, submessage_arena);
+    }
+    
+  } else {
+    
+  }
+  allowed_values_ = allowed_values;
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.KernelDef.AttrConstraint.allowed_values)
+}
+
+// -------------------------------------------------------------------
+
+// KernelDef
+
+// string op = 1;
+inline void KernelDef::clear_op() {
+  op_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline const ::std::string& KernelDef::op() const {
+  // @@protoc_insertion_point(field_get:tensorflow.KernelDef.op)
+  return op_.Get();
+}
+inline void KernelDef::set_op(const ::std::string& value) {
+  
+  op_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set:tensorflow.KernelDef.op)
+}
+#if LANG_CXX11
+inline void KernelDef::set_op(::std::string&& value) {
+  
+  op_.Set(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.KernelDef.op)
+}
+#endif
+inline void KernelDef::set_op(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  op_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
+              GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_char:tensorflow.KernelDef.op)
+}
+inline void KernelDef::set_op(const char* value,
+    size_t size) {
+  
+  op_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
+      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.KernelDef.op)
+}
+inline ::std::string* KernelDef::mutable_op() {
+  
+  // @@protoc_insertion_point(field_mutable:tensorflow.KernelDef.op)
+  return op_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline ::std::string* KernelDef::release_op() {
+  // @@protoc_insertion_point(field_release:tensorflow.KernelDef.op)
+  
+  return op_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline void KernelDef::set_allocated_op(::std::string* op) {
+  if (op != NULL) {
+    
+  } else {
+    
+  }
+  op_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), op,
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.KernelDef.op)
+}
+inline ::std::string* KernelDef::unsafe_arena_release_op() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.KernelDef.op)
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  
+  return op_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      GetArenaNoVirtual());
+}
+inline void KernelDef::unsafe_arena_set_allocated_op(
+    ::std::string* op) {
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (op != NULL) {
+    
+  } else {
+    
+  }
+  op_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      op, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.KernelDef.op)
+}
+
+// string device_type = 2;
+inline void KernelDef::clear_device_type() {
+  device_type_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline const ::std::string& KernelDef::device_type() const {
+  // @@protoc_insertion_point(field_get:tensorflow.KernelDef.device_type)
+  return device_type_.Get();
+}
+inline void KernelDef::set_device_type(const ::std::string& value) {
+  
+  device_type_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set:tensorflow.KernelDef.device_type)
+}
+#if LANG_CXX11
+inline void KernelDef::set_device_type(::std::string&& value) {
+  
+  device_type_.Set(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.KernelDef.device_type)
+}
+#endif
+inline void KernelDef::set_device_type(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  device_type_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
+              GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_char:tensorflow.KernelDef.device_type)
+}
+inline void KernelDef::set_device_type(const char* value,
+    size_t size) {
+  
+  device_type_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
+      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.KernelDef.device_type)
+}
+inline ::std::string* KernelDef::mutable_device_type() {
+  
+  // @@protoc_insertion_point(field_mutable:tensorflow.KernelDef.device_type)
+  return device_type_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline ::std::string* KernelDef::release_device_type() {
+  // @@protoc_insertion_point(field_release:tensorflow.KernelDef.device_type)
+  
+  return device_type_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline void KernelDef::set_allocated_device_type(::std::string* device_type) {
+  if (device_type != NULL) {
+    
+  } else {
+    
+  }
+  device_type_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), device_type,
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.KernelDef.device_type)
+}
+inline ::std::string* KernelDef::unsafe_arena_release_device_type() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.KernelDef.device_type)
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  
+  return device_type_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      GetArenaNoVirtual());
+}
+inline void KernelDef::unsafe_arena_set_allocated_device_type(
+    ::std::string* device_type) {
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (device_type != NULL) {
+    
+  } else {
+    
+  }
+  device_type_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      device_type, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.KernelDef.device_type)
+}
+
+// repeated .tensorflow.KernelDef.AttrConstraint constraint = 3;
+inline int KernelDef::constraint_size() const {
+  return constraint_.size();
+}
+inline void KernelDef::clear_constraint() {
+  constraint_.Clear();
+}
+inline ::tensorflow::KernelDef_AttrConstraint* KernelDef::mutable_constraint(int index) {
+  // @@protoc_insertion_point(field_mutable:tensorflow.KernelDef.constraint)
+  return constraint_.Mutable(index);
+}
+inline ::google::protobuf::RepeatedPtrField< ::tensorflow::KernelDef_AttrConstraint >*
+KernelDef::mutable_constraint() {
+  // @@protoc_insertion_point(field_mutable_list:tensorflow.KernelDef.constraint)
+  return &constraint_;
+}
+inline const ::tensorflow::KernelDef_AttrConstraint& KernelDef::constraint(int index) const {
+  // @@protoc_insertion_point(field_get:tensorflow.KernelDef.constraint)
+  return constraint_.Get(index);
+}
+inline ::tensorflow::KernelDef_AttrConstraint* KernelDef::add_constraint() {
+  // @@protoc_insertion_point(field_add:tensorflow.KernelDef.constraint)
+  return constraint_.Add();
+}
+inline const ::google::protobuf::RepeatedPtrField< ::tensorflow::KernelDef_AttrConstraint >&
+KernelDef::constraint() const {
+  // @@protoc_insertion_point(field_list:tensorflow.KernelDef.constraint)
+  return constraint_;
+}
+
+// repeated string host_memory_arg = 4;
+inline int KernelDef::host_memory_arg_size() const {
+  return host_memory_arg_.size();
+}
+inline void KernelDef::clear_host_memory_arg() {
+  host_memory_arg_.Clear();
+}
+inline const ::std::string& KernelDef::host_memory_arg(int index) const {
+  // @@protoc_insertion_point(field_get:tensorflow.KernelDef.host_memory_arg)
+  return host_memory_arg_.Get(index);
+}
+inline ::std::string* KernelDef::mutable_host_memory_arg(int index) {
+  // @@protoc_insertion_point(field_mutable:tensorflow.KernelDef.host_memory_arg)
+  return host_memory_arg_.Mutable(index);
+}
+inline void KernelDef::set_host_memory_arg(int index, const ::std::string& value) {
+  // @@protoc_insertion_point(field_set:tensorflow.KernelDef.host_memory_arg)
+  host_memory_arg_.Mutable(index)->assign(value);
+}
+#if LANG_CXX11
+inline void KernelDef::set_host_memory_arg(int index, ::std::string&& value) {
+  // @@protoc_insertion_point(field_set:tensorflow.KernelDef.host_memory_arg)
+  host_memory_arg_.Mutable(index)->assign(std::move(value));
+}
+#endif
+inline void KernelDef::set_host_memory_arg(int index, const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  host_memory_arg_.Mutable(index)->assign(value);
+  // @@protoc_insertion_point(field_set_char:tensorflow.KernelDef.host_memory_arg)
+}
+inline void KernelDef::set_host_memory_arg(int index, const char* value, size_t size) {
+  host_memory_arg_.Mutable(index)->assign(
+    reinterpret_cast<const char*>(value), size);
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.KernelDef.host_memory_arg)
+}
+inline ::std::string* KernelDef::add_host_memory_arg() {
+  // @@protoc_insertion_point(field_add_mutable:tensorflow.KernelDef.host_memory_arg)
+  return host_memory_arg_.Add();
+}
+inline void KernelDef::add_host_memory_arg(const ::std::string& value) {
+  host_memory_arg_.Add()->assign(value);
+  // @@protoc_insertion_point(field_add:tensorflow.KernelDef.host_memory_arg)
+}
+#if LANG_CXX11
+inline void KernelDef::add_host_memory_arg(::std::string&& value) {
+  host_memory_arg_.Add(std::move(value));
+  // @@protoc_insertion_point(field_add:tensorflow.KernelDef.host_memory_arg)
+}
+#endif
+inline void KernelDef::add_host_memory_arg(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  host_memory_arg_.Add()->assign(value);
+  // @@protoc_insertion_point(field_add_char:tensorflow.KernelDef.host_memory_arg)
+}
+inline void KernelDef::add_host_memory_arg(const char* value, size_t size) {
+  host_memory_arg_.Add()->assign(reinterpret_cast<const char*>(value), size);
+  // @@protoc_insertion_point(field_add_pointer:tensorflow.KernelDef.host_memory_arg)
+}
+inline const ::google::protobuf::RepeatedPtrField<::std::string>&
+KernelDef::host_memory_arg() const {
+  // @@protoc_insertion_point(field_list:tensorflow.KernelDef.host_memory_arg)
+  return host_memory_arg_;
+}
+inline ::google::protobuf::RepeatedPtrField<::std::string>*
+KernelDef::mutable_host_memory_arg() {
+  // @@protoc_insertion_point(field_mutable_list:tensorflow.KernelDef.host_memory_arg)
+  return &host_memory_arg_;
+}
+
+// string label = 5;
+inline void KernelDef::clear_label() {
+  label_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline const ::std::string& KernelDef::label() const {
+  // @@protoc_insertion_point(field_get:tensorflow.KernelDef.label)
+  return label_.Get();
+}
+inline void KernelDef::set_label(const ::std::string& value) {
+  
+  label_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set:tensorflow.KernelDef.label)
+}
+#if LANG_CXX11
+inline void KernelDef::set_label(::std::string&& value) {
+  
+  label_.Set(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.KernelDef.label)
+}
+#endif
+inline void KernelDef::set_label(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  label_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
+              GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_char:tensorflow.KernelDef.label)
+}
+inline void KernelDef::set_label(const char* value,
+    size_t size) {
+  
+  label_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
+      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.KernelDef.label)
+}
+inline ::std::string* KernelDef::mutable_label() {
+  
+  // @@protoc_insertion_point(field_mutable:tensorflow.KernelDef.label)
+  return label_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline ::std::string* KernelDef::release_label() {
+  // @@protoc_insertion_point(field_release:tensorflow.KernelDef.label)
+  
+  return label_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline void KernelDef::set_allocated_label(::std::string* label) {
+  if (label != NULL) {
+    
+  } else {
+    
+  }
+  label_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), label,
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.KernelDef.label)
+}
+inline ::std::string* KernelDef::unsafe_arena_release_label() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.KernelDef.label)
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  
+  return label_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      GetArenaNoVirtual());
+}
+inline void KernelDef::unsafe_arena_set_allocated_label(
+    ::std::string* label) {
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (label != NULL) {
+    
+  } else {
+    
+  }
+  label_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      label, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.KernelDef.label)
+}
+
+#ifdef __GNUC__
+  #pragma GCC diagnostic pop
+#endif  // __GNUC__
+// -------------------------------------------------------------------
+
+
+// @@protoc_insertion_point(namespace_scope)
+
+}  // namespace tensorflow
+
+// @@protoc_insertion_point(global_scope)
+
+#include <google/protobuf/port_undef.inc>
+#endif  // PROTOBUF_INCLUDED_tensorflow_2fcore_2fframework_2fkernel_5fdef_2eproto
diff --git a/tensorflow/core/framework/kernel_def.proto b/tensorflow/core/framework/kernel_def.proto
new file mode 100644 (file)
index 0000000..a17b9c8
--- /dev/null
@@ -0,0 +1,36 @@
+syntax = "proto3";
+
+package tensorflow;
+option cc_enable_arenas = true;
+option java_outer_classname = "KernelDefProtos";
+option java_multiple_files = true;
+option java_package = "org.tensorflow.framework";
+option go_package = "github.com/tensorflow/tensorflow/tensorflow/go/core/framework";
+import "tensorflow/core/framework/attr_value.proto";
+
+message KernelDef {
+  // Must match the name of an Op.
+  string op = 1;
+
+  // Type of device this kernel runs on.
+  string device_type = 2;
+
+  message AttrConstraint {
+    // Name of an attr from the Op.
+    string name = 1;
+
+    // A list of values that this kernel supports for this attr.
+    // Like OpDef.AttrDef.allowed_values, except for kernels instead of Ops.
+    AttrValue allowed_values = 2;
+  }
+  repeated AttrConstraint constraint = 3;
+
+  // Names of the Op's input_/output_args that reside in host memory
+  // instead of device memory.
+  repeated string host_memory_arg = 4;
+
+  // This allows experimental kernels to be registered for an op that
+  // won't be used unless the user specifies a "_kernel" attr with
+  // value matching this.
+  string label = 5;
+}
diff --git a/tensorflow/core/framework/log_memory.pb.cc b/tensorflow/core/framework/log_memory.pb.cc
new file mode 100644 (file)
index 0000000..3e4c4e7
--- /dev/null
@@ -0,0 +1,3147 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: tensorflow/core/framework/log_memory.proto
+
+#include "tensorflow/core/framework/log_memory.pb.h"
+
+#include <algorithm>
+
+#include <google/protobuf/stubs/common.h>
+#include <google/protobuf/io/coded_stream.h>
+#include <google/protobuf/extension_set.h>
+#include <google/protobuf/wire_format_lite_inl.h>
+#include <google/protobuf/descriptor.h>
+#include <google/protobuf/generated_message_reflection.h>
+#include <google/protobuf/reflection_ops.h>
+#include <google/protobuf/wire_format.h>
+// @@protoc_insertion_point(includes)
+#include <google/protobuf/port_def.inc>
+
+extern PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fframework_2ftensor_5fdescription_2eproto ::google::protobuf::internal::SCCInfo<2> scc_info_TensorDescription_tensorflow_2fcore_2fframework_2ftensor_5fdescription_2eproto;
+namespace tensorflow {
+class MemoryLogStepDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<MemoryLogStep> _instance;
+} _MemoryLogStep_default_instance_;
+class MemoryLogTensorAllocationDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<MemoryLogTensorAllocation> _instance;
+} _MemoryLogTensorAllocation_default_instance_;
+class MemoryLogTensorDeallocationDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<MemoryLogTensorDeallocation> _instance;
+} _MemoryLogTensorDeallocation_default_instance_;
+class MemoryLogTensorOutputDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<MemoryLogTensorOutput> _instance;
+} _MemoryLogTensorOutput_default_instance_;
+class MemoryLogRawAllocationDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<MemoryLogRawAllocation> _instance;
+} _MemoryLogRawAllocation_default_instance_;
+class MemoryLogRawDeallocationDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<MemoryLogRawDeallocation> _instance;
+} _MemoryLogRawDeallocation_default_instance_;
+}  // namespace tensorflow
+static void InitDefaultsMemoryLogStep_tensorflow_2fcore_2fframework_2flog_5fmemory_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_MemoryLogStep_default_instance_;
+    new (ptr) ::tensorflow::MemoryLogStep();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::MemoryLogStep::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<0> scc_info_MemoryLogStep_tensorflow_2fcore_2fframework_2flog_5fmemory_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsMemoryLogStep_tensorflow_2fcore_2fframework_2flog_5fmemory_2eproto}, {}};
+
+static void InitDefaultsMemoryLogTensorAllocation_tensorflow_2fcore_2fframework_2flog_5fmemory_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_MemoryLogTensorAllocation_default_instance_;
+    new (ptr) ::tensorflow::MemoryLogTensorAllocation();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::MemoryLogTensorAllocation::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<1> scc_info_MemoryLogTensorAllocation_tensorflow_2fcore_2fframework_2flog_5fmemory_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsMemoryLogTensorAllocation_tensorflow_2fcore_2fframework_2flog_5fmemory_2eproto}, {
+      &scc_info_TensorDescription_tensorflow_2fcore_2fframework_2ftensor_5fdescription_2eproto.base,}};
+
+static void InitDefaultsMemoryLogTensorDeallocation_tensorflow_2fcore_2fframework_2flog_5fmemory_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_MemoryLogTensorDeallocation_default_instance_;
+    new (ptr) ::tensorflow::MemoryLogTensorDeallocation();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::MemoryLogTensorDeallocation::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<0> scc_info_MemoryLogTensorDeallocation_tensorflow_2fcore_2fframework_2flog_5fmemory_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsMemoryLogTensorDeallocation_tensorflow_2fcore_2fframework_2flog_5fmemory_2eproto}, {}};
+
+static void InitDefaultsMemoryLogTensorOutput_tensorflow_2fcore_2fframework_2flog_5fmemory_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_MemoryLogTensorOutput_default_instance_;
+    new (ptr) ::tensorflow::MemoryLogTensorOutput();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::MemoryLogTensorOutput::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<1> scc_info_MemoryLogTensorOutput_tensorflow_2fcore_2fframework_2flog_5fmemory_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsMemoryLogTensorOutput_tensorflow_2fcore_2fframework_2flog_5fmemory_2eproto}, {
+      &scc_info_TensorDescription_tensorflow_2fcore_2fframework_2ftensor_5fdescription_2eproto.base,}};
+
+static void InitDefaultsMemoryLogRawAllocation_tensorflow_2fcore_2fframework_2flog_5fmemory_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_MemoryLogRawAllocation_default_instance_;
+    new (ptr) ::tensorflow::MemoryLogRawAllocation();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::MemoryLogRawAllocation::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<0> scc_info_MemoryLogRawAllocation_tensorflow_2fcore_2fframework_2flog_5fmemory_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsMemoryLogRawAllocation_tensorflow_2fcore_2fframework_2flog_5fmemory_2eproto}, {}};
+
+static void InitDefaultsMemoryLogRawDeallocation_tensorflow_2fcore_2fframework_2flog_5fmemory_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_MemoryLogRawDeallocation_default_instance_;
+    new (ptr) ::tensorflow::MemoryLogRawDeallocation();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::MemoryLogRawDeallocation::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<0> scc_info_MemoryLogRawDeallocation_tensorflow_2fcore_2fframework_2flog_5fmemory_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsMemoryLogRawDeallocation_tensorflow_2fcore_2fframework_2flog_5fmemory_2eproto}, {}};
+
+void InitDefaults_tensorflow_2fcore_2fframework_2flog_5fmemory_2eproto() {
+  ::google::protobuf::internal::InitSCC(&scc_info_MemoryLogStep_tensorflow_2fcore_2fframework_2flog_5fmemory_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_MemoryLogTensorAllocation_tensorflow_2fcore_2fframework_2flog_5fmemory_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_MemoryLogTensorDeallocation_tensorflow_2fcore_2fframework_2flog_5fmemory_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_MemoryLogTensorOutput_tensorflow_2fcore_2fframework_2flog_5fmemory_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_MemoryLogRawAllocation_tensorflow_2fcore_2fframework_2flog_5fmemory_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_MemoryLogRawDeallocation_tensorflow_2fcore_2fframework_2flog_5fmemory_2eproto.base);
+}
+
+::google::protobuf::Metadata file_level_metadata_tensorflow_2fcore_2fframework_2flog_5fmemory_2eproto[6];
+constexpr ::google::protobuf::EnumDescriptor const** file_level_enum_descriptors_tensorflow_2fcore_2fframework_2flog_5fmemory_2eproto = nullptr;
+constexpr ::google::protobuf::ServiceDescriptor const** file_level_service_descriptors_tensorflow_2fcore_2fframework_2flog_5fmemory_2eproto = nullptr;
+
+const ::google::protobuf::uint32 TableStruct_tensorflow_2fcore_2fframework_2flog_5fmemory_2eproto::offsets[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = {
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::MemoryLogStep, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::MemoryLogStep, step_id_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::MemoryLogStep, handle_),
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::MemoryLogTensorAllocation, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::MemoryLogTensorAllocation, step_id_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::MemoryLogTensorAllocation, kernel_name_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::MemoryLogTensorAllocation, tensor_),
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::MemoryLogTensorDeallocation, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::MemoryLogTensorDeallocation, allocation_id_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::MemoryLogTensorDeallocation, allocator_name_),
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::MemoryLogTensorOutput, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::MemoryLogTensorOutput, step_id_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::MemoryLogTensorOutput, kernel_name_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::MemoryLogTensorOutput, index_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::MemoryLogTensorOutput, tensor_),
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::MemoryLogRawAllocation, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::MemoryLogRawAllocation, step_id_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::MemoryLogRawAllocation, operation_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::MemoryLogRawAllocation, num_bytes_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::MemoryLogRawAllocation, ptr_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::MemoryLogRawAllocation, allocation_id_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::MemoryLogRawAllocation, allocator_name_),
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::MemoryLogRawDeallocation, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::MemoryLogRawDeallocation, step_id_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::MemoryLogRawDeallocation, operation_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::MemoryLogRawDeallocation, allocation_id_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::MemoryLogRawDeallocation, allocator_name_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::MemoryLogRawDeallocation, deferred_),
+};
+static const ::google::protobuf::internal::MigrationSchema schemas[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = {
+  { 0, -1, sizeof(::tensorflow::MemoryLogStep)},
+  { 7, -1, sizeof(::tensorflow::MemoryLogTensorAllocation)},
+  { 15, -1, sizeof(::tensorflow::MemoryLogTensorDeallocation)},
+  { 22, -1, sizeof(::tensorflow::MemoryLogTensorOutput)},
+  { 31, -1, sizeof(::tensorflow::MemoryLogRawAllocation)},
+  { 42, -1, sizeof(::tensorflow::MemoryLogRawDeallocation)},
+};
+
+static ::google::protobuf::Message const * const file_default_instances[] = {
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_MemoryLogStep_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_MemoryLogTensorAllocation_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_MemoryLogTensorDeallocation_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_MemoryLogTensorOutput_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_MemoryLogRawAllocation_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_MemoryLogRawDeallocation_default_instance_),
+};
+
+::google::protobuf::internal::AssignDescriptorsTable assign_descriptors_table_tensorflow_2fcore_2fframework_2flog_5fmemory_2eproto = {
+  {}, AddDescriptors_tensorflow_2fcore_2fframework_2flog_5fmemory_2eproto, "tensorflow/core/framework/log_memory.proto", schemas,
+  file_default_instances, TableStruct_tensorflow_2fcore_2fframework_2flog_5fmemory_2eproto::offsets,
+  file_level_metadata_tensorflow_2fcore_2fframework_2flog_5fmemory_2eproto, 6, file_level_enum_descriptors_tensorflow_2fcore_2fframework_2flog_5fmemory_2eproto, file_level_service_descriptors_tensorflow_2fcore_2fframework_2flog_5fmemory_2eproto,
+};
+
+::google::protobuf::internal::DescriptorTable descriptor_table_tensorflow_2fcore_2fframework_2flog_5fmemory_2eproto = {
+  false, InitDefaults_tensorflow_2fcore_2fframework_2flog_5fmemory_2eproto, 
+  "\n*tensorflow/core/framework/log_memory.p"
+  "roto\022\ntensorflow\0322tensorflow/core/framew"
+  "ork/tensor_description.proto\"0\n\rMemoryLo"
+  "gStep\022\017\n\007step_id\030\001 \001(\003\022\016\n\006handle\030\002 \001(\t\"p"
+  "\n\031MemoryLogTensorAllocation\022\017\n\007step_id\030\001"
+  " \001(\003\022\023\n\013kernel_name\030\002 \001(\t\022-\n\006tensor\030\003 \001("
+  "\0132\035.tensorflow.TensorDescription\"L\n\033Memo"
+  "ryLogTensorDeallocation\022\025\n\rallocation_id"
+  "\030\001 \001(\003\022\026\n\016allocator_name\030\002 \001(\t\"{\n\025Memory"
+  "LogTensorOutput\022\017\n\007step_id\030\001 \001(\003\022\023\n\013kern"
+  "el_name\030\002 \001(\t\022\r\n\005index\030\003 \001(\005\022-\n\006tensor\030\004"
+  " \001(\0132\035.tensorflow.TensorDescription\"\213\001\n\026"
+  "MemoryLogRawAllocation\022\017\n\007step_id\030\001 \001(\003\022"
+  "\021\n\toperation\030\002 \001(\t\022\021\n\tnum_bytes\030\003 \001(\003\022\013\n"
+  "\003ptr\030\004 \001(\004\022\025\n\rallocation_id\030\005 \001(\003\022\026\n\016all"
+  "ocator_name\030\006 \001(\t\"\177\n\030MemoryLogRawDealloc"
+  "ation\022\017\n\007step_id\030\001 \001(\003\022\021\n\toperation\030\002 \001("
+  "\t\022\025\n\rallocation_id\030\003 \001(\003\022\026\n\016allocator_na"
+  "me\030\004 \001(\t\022\020\n\010deferred\030\005 \001(\010Bo\n\030org.tensor"
+  "flow.frameworkB\017LogMemoryProtosP\001Z=githu"
+  "b.com/tensorflow/tensorflow/tensorflow/g"
+  "o/core/framework\370\001\001b\006proto3"
+,
+  "tensorflow/core/framework/log_memory.proto", &assign_descriptors_table_tensorflow_2fcore_2fframework_2flog_5fmemory_2eproto, 867,
+};
+
+void AddDescriptors_tensorflow_2fcore_2fframework_2flog_5fmemory_2eproto() {
+  static constexpr ::google::protobuf::internal::InitFunc deps[1] =
+  {
+    ::AddDescriptors_tensorflow_2fcore_2fframework_2ftensor_5fdescription_2eproto,
+  };
+ ::google::protobuf::internal::AddDescriptors(&descriptor_table_tensorflow_2fcore_2fframework_2flog_5fmemory_2eproto, deps, 1);
+}
+
+// Force running AddDescriptors() at dynamic initialization time.
+static bool dynamic_init_dummy_tensorflow_2fcore_2fframework_2flog_5fmemory_2eproto = []() { AddDescriptors_tensorflow_2fcore_2fframework_2flog_5fmemory_2eproto(); return true; }();
+namespace tensorflow {
+
+// ===================================================================
+
+void MemoryLogStep::InitAsDefaultInstance() {
+}
+class MemoryLogStep::HasBitSetters {
+ public:
+};
+
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int MemoryLogStep::kStepIdFieldNumber;
+const int MemoryLogStep::kHandleFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+MemoryLogStep::MemoryLogStep()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.MemoryLogStep)
+}
+MemoryLogStep::MemoryLogStep(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.MemoryLogStep)
+}
+MemoryLogStep::MemoryLogStep(const MemoryLogStep& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  handle_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.handle().size() > 0) {
+    handle_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.handle(),
+      GetArenaNoVirtual());
+  }
+  step_id_ = from.step_id_;
+  // @@protoc_insertion_point(copy_constructor:tensorflow.MemoryLogStep)
+}
+
+void MemoryLogStep::SharedCtor() {
+  ::google::protobuf::internal::InitSCC(
+      &scc_info_MemoryLogStep_tensorflow_2fcore_2fframework_2flog_5fmemory_2eproto.base);
+  handle_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  step_id_ = PROTOBUF_LONGLONG(0);
+}
+
+MemoryLogStep::~MemoryLogStep() {
+  // @@protoc_insertion_point(destructor:tensorflow.MemoryLogStep)
+  SharedDtor();
+}
+
+void MemoryLogStep::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+  handle_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+
+void MemoryLogStep::ArenaDtor(void* object) {
+  MemoryLogStep* _this = reinterpret_cast< MemoryLogStep* >(object);
+  (void)_this;
+}
+void MemoryLogStep::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void MemoryLogStep::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const MemoryLogStep& MemoryLogStep::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_MemoryLogStep_tensorflow_2fcore_2fframework_2flog_5fmemory_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void MemoryLogStep::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.MemoryLogStep)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  handle_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+  step_id_ = PROTOBUF_LONGLONG(0);
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* MemoryLogStep::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<MemoryLogStep*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // int64 step_id = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 8) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::google::protobuf::int64 value = val;
+        msg->set_step_id(value);
+        break;
+      }
+      // string handle = 2;
+      case 2: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 18) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("tensorflow.MemoryLogStep.handle");
+        parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+        ::std::string* str = msg->mutable_handle();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool MemoryLogStep::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.MemoryLogStep)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // int64 step_id = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (8 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>(
+                 input, &step_id_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // string handle = 2;
+      case 2: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (18 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_handle()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->handle().data(), static_cast<int>(this->handle().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.MemoryLogStep.handle"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.MemoryLogStep)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.MemoryLogStep)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void MemoryLogStep::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.MemoryLogStep)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // int64 step_id = 1;
+  if (this->step_id() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt64(1, this->step_id(), output);
+  }
+
+  // string handle = 2;
+  if (this->handle().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->handle().data(), static_cast<int>(this->handle().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.MemoryLogStep.handle");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      2, this->handle(), output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.MemoryLogStep)
+}
+
+::google::protobuf::uint8* MemoryLogStep::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.MemoryLogStep)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // int64 step_id = 1;
+  if (this->step_id() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt64ToArray(1, this->step_id(), target);
+  }
+
+  // string handle = 2;
+  if (this->handle().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->handle().data(), static_cast<int>(this->handle().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.MemoryLogStep.handle");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        2, this->handle(), target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.MemoryLogStep)
+  return target;
+}
+
+size_t MemoryLogStep::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.MemoryLogStep)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // string handle = 2;
+  if (this->handle().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->handle());
+  }
+
+  // int64 step_id = 1;
+  if (this->step_id() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::Int64Size(
+        this->step_id());
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void MemoryLogStep::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.MemoryLogStep)
+  GOOGLE_DCHECK_NE(&from, this);
+  const MemoryLogStep* source =
+      ::google::protobuf::DynamicCastToGenerated<MemoryLogStep>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.MemoryLogStep)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.MemoryLogStep)
+    MergeFrom(*source);
+  }
+}
+
+void MemoryLogStep::MergeFrom(const MemoryLogStep& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.MemoryLogStep)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  if (from.handle().size() > 0) {
+    set_handle(from.handle());
+  }
+  if (from.step_id() != 0) {
+    set_step_id(from.step_id());
+  }
+}
+
+void MemoryLogStep::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.MemoryLogStep)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void MemoryLogStep::CopyFrom(const MemoryLogStep& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.MemoryLogStep)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool MemoryLogStep::IsInitialized() const {
+  return true;
+}
+
+void MemoryLogStep::Swap(MemoryLogStep* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    MemoryLogStep* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void MemoryLogStep::UnsafeArenaSwap(MemoryLogStep* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void MemoryLogStep::InternalSwap(MemoryLogStep* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  handle_.Swap(&other->handle_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+  swap(step_id_, other->step_id_);
+}
+
+::google::protobuf::Metadata MemoryLogStep::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fframework_2flog_5fmemory_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fframework_2flog_5fmemory_2eproto[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+void MemoryLogTensorAllocation::InitAsDefaultInstance() {
+  ::tensorflow::_MemoryLogTensorAllocation_default_instance_._instance.get_mutable()->tensor_ = const_cast< ::tensorflow::TensorDescription*>(
+      ::tensorflow::TensorDescription::internal_default_instance());
+}
+class MemoryLogTensorAllocation::HasBitSetters {
+ public:
+  static const ::tensorflow::TensorDescription& tensor(const MemoryLogTensorAllocation* msg);
+};
+
+const ::tensorflow::TensorDescription&
+MemoryLogTensorAllocation::HasBitSetters::tensor(const MemoryLogTensorAllocation* msg) {
+  return *msg->tensor_;
+}
+void MemoryLogTensorAllocation::unsafe_arena_set_allocated_tensor(
+    ::tensorflow::TensorDescription* tensor) {
+  if (GetArenaNoVirtual() == NULL) {
+    delete tensor_;
+  }
+  tensor_ = tensor;
+  if (tensor) {
+    
+  } else {
+    
+  }
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.MemoryLogTensorAllocation.tensor)
+}
+void MemoryLogTensorAllocation::clear_tensor() {
+  if (GetArenaNoVirtual() == NULL && tensor_ != NULL) {
+    delete tensor_;
+  }
+  tensor_ = NULL;
+}
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int MemoryLogTensorAllocation::kStepIdFieldNumber;
+const int MemoryLogTensorAllocation::kKernelNameFieldNumber;
+const int MemoryLogTensorAllocation::kTensorFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+MemoryLogTensorAllocation::MemoryLogTensorAllocation()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.MemoryLogTensorAllocation)
+}
+MemoryLogTensorAllocation::MemoryLogTensorAllocation(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.MemoryLogTensorAllocation)
+}
+MemoryLogTensorAllocation::MemoryLogTensorAllocation(const MemoryLogTensorAllocation& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  kernel_name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.kernel_name().size() > 0) {
+    kernel_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.kernel_name(),
+      GetArenaNoVirtual());
+  }
+  if (from.has_tensor()) {
+    tensor_ = new ::tensorflow::TensorDescription(*from.tensor_);
+  } else {
+    tensor_ = NULL;
+  }
+  step_id_ = from.step_id_;
+  // @@protoc_insertion_point(copy_constructor:tensorflow.MemoryLogTensorAllocation)
+}
+
+void MemoryLogTensorAllocation::SharedCtor() {
+  ::google::protobuf::internal::InitSCC(
+      &scc_info_MemoryLogTensorAllocation_tensorflow_2fcore_2fframework_2flog_5fmemory_2eproto.base);
+  kernel_name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  ::memset(&tensor_, 0, static_cast<size_t>(
+      reinterpret_cast<char*>(&step_id_) -
+      reinterpret_cast<char*>(&tensor_)) + sizeof(step_id_));
+}
+
+MemoryLogTensorAllocation::~MemoryLogTensorAllocation() {
+  // @@protoc_insertion_point(destructor:tensorflow.MemoryLogTensorAllocation)
+  SharedDtor();
+}
+
+void MemoryLogTensorAllocation::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+  kernel_name_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (this != internal_default_instance()) delete tensor_;
+}
+
+void MemoryLogTensorAllocation::ArenaDtor(void* object) {
+  MemoryLogTensorAllocation* _this = reinterpret_cast< MemoryLogTensorAllocation* >(object);
+  (void)_this;
+}
+void MemoryLogTensorAllocation::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void MemoryLogTensorAllocation::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const MemoryLogTensorAllocation& MemoryLogTensorAllocation::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_MemoryLogTensorAllocation_tensorflow_2fcore_2fframework_2flog_5fmemory_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void MemoryLogTensorAllocation::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.MemoryLogTensorAllocation)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  kernel_name_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+  if (GetArenaNoVirtual() == NULL && tensor_ != NULL) {
+    delete tensor_;
+  }
+  tensor_ = NULL;
+  step_id_ = PROTOBUF_LONGLONG(0);
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* MemoryLogTensorAllocation::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<MemoryLogTensorAllocation*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // int64 step_id = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 8) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::google::protobuf::int64 value = val;
+        msg->set_step_id(value);
+        break;
+      }
+      // string kernel_name = 2;
+      case 2: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 18) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("tensorflow.MemoryLogTensorAllocation.kernel_name");
+        parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+        ::std::string* str = msg->mutable_kernel_name();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+        break;
+      }
+      // .tensorflow.TensorDescription tensor = 3;
+      case 3: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 26) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        parser_till_end = ::tensorflow::TensorDescription::_InternalParse;
+        object = msg->mutable_tensor();
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                       ptr, newend);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+        ptr = newend;
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool MemoryLogTensorAllocation::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.MemoryLogTensorAllocation)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // int64 step_id = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (8 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>(
+                 input, &step_id_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // string kernel_name = 2;
+      case 2: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (18 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_kernel_name()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->kernel_name().data(), static_cast<int>(this->kernel_name().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.MemoryLogTensorAllocation.kernel_name"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // .tensorflow.TensorDescription tensor = 3;
+      case 3: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (26 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+               input, mutable_tensor()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.MemoryLogTensorAllocation)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.MemoryLogTensorAllocation)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void MemoryLogTensorAllocation::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.MemoryLogTensorAllocation)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // int64 step_id = 1;
+  if (this->step_id() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt64(1, this->step_id(), output);
+  }
+
+  // string kernel_name = 2;
+  if (this->kernel_name().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->kernel_name().data(), static_cast<int>(this->kernel_name().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.MemoryLogTensorAllocation.kernel_name");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      2, this->kernel_name(), output);
+  }
+
+  // .tensorflow.TensorDescription tensor = 3;
+  if (this->has_tensor()) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      3, HasBitSetters::tensor(this), output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.MemoryLogTensorAllocation)
+}
+
+::google::protobuf::uint8* MemoryLogTensorAllocation::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.MemoryLogTensorAllocation)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // int64 step_id = 1;
+  if (this->step_id() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt64ToArray(1, this->step_id(), target);
+  }
+
+  // string kernel_name = 2;
+  if (this->kernel_name().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->kernel_name().data(), static_cast<int>(this->kernel_name().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.MemoryLogTensorAllocation.kernel_name");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        2, this->kernel_name(), target);
+  }
+
+  // .tensorflow.TensorDescription tensor = 3;
+  if (this->has_tensor()) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        3, HasBitSetters::tensor(this), deterministic, target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.MemoryLogTensorAllocation)
+  return target;
+}
+
+size_t MemoryLogTensorAllocation::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.MemoryLogTensorAllocation)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // string kernel_name = 2;
+  if (this->kernel_name().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->kernel_name());
+  }
+
+  // .tensorflow.TensorDescription tensor = 3;
+  if (this->has_tensor()) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::MessageSize(
+        *tensor_);
+  }
+
+  // int64 step_id = 1;
+  if (this->step_id() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::Int64Size(
+        this->step_id());
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void MemoryLogTensorAllocation::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.MemoryLogTensorAllocation)
+  GOOGLE_DCHECK_NE(&from, this);
+  const MemoryLogTensorAllocation* source =
+      ::google::protobuf::DynamicCastToGenerated<MemoryLogTensorAllocation>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.MemoryLogTensorAllocation)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.MemoryLogTensorAllocation)
+    MergeFrom(*source);
+  }
+}
+
+void MemoryLogTensorAllocation::MergeFrom(const MemoryLogTensorAllocation& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.MemoryLogTensorAllocation)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  if (from.kernel_name().size() > 0) {
+    set_kernel_name(from.kernel_name());
+  }
+  if (from.has_tensor()) {
+    mutable_tensor()->::tensorflow::TensorDescription::MergeFrom(from.tensor());
+  }
+  if (from.step_id() != 0) {
+    set_step_id(from.step_id());
+  }
+}
+
+void MemoryLogTensorAllocation::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.MemoryLogTensorAllocation)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void MemoryLogTensorAllocation::CopyFrom(const MemoryLogTensorAllocation& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.MemoryLogTensorAllocation)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool MemoryLogTensorAllocation::IsInitialized() const {
+  return true;
+}
+
+void MemoryLogTensorAllocation::Swap(MemoryLogTensorAllocation* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    MemoryLogTensorAllocation* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void MemoryLogTensorAllocation::UnsafeArenaSwap(MemoryLogTensorAllocation* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void MemoryLogTensorAllocation::InternalSwap(MemoryLogTensorAllocation* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  kernel_name_.Swap(&other->kernel_name_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+  swap(tensor_, other->tensor_);
+  swap(step_id_, other->step_id_);
+}
+
+::google::protobuf::Metadata MemoryLogTensorAllocation::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fframework_2flog_5fmemory_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fframework_2flog_5fmemory_2eproto[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+void MemoryLogTensorDeallocation::InitAsDefaultInstance() {
+}
+class MemoryLogTensorDeallocation::HasBitSetters {
+ public:
+};
+
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int MemoryLogTensorDeallocation::kAllocationIdFieldNumber;
+const int MemoryLogTensorDeallocation::kAllocatorNameFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+MemoryLogTensorDeallocation::MemoryLogTensorDeallocation()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.MemoryLogTensorDeallocation)
+}
+MemoryLogTensorDeallocation::MemoryLogTensorDeallocation(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.MemoryLogTensorDeallocation)
+}
+MemoryLogTensorDeallocation::MemoryLogTensorDeallocation(const MemoryLogTensorDeallocation& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  allocator_name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.allocator_name().size() > 0) {
+    allocator_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.allocator_name(),
+      GetArenaNoVirtual());
+  }
+  allocation_id_ = from.allocation_id_;
+  // @@protoc_insertion_point(copy_constructor:tensorflow.MemoryLogTensorDeallocation)
+}
+
+void MemoryLogTensorDeallocation::SharedCtor() {
+  ::google::protobuf::internal::InitSCC(
+      &scc_info_MemoryLogTensorDeallocation_tensorflow_2fcore_2fframework_2flog_5fmemory_2eproto.base);
+  allocator_name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  allocation_id_ = PROTOBUF_LONGLONG(0);
+}
+
+MemoryLogTensorDeallocation::~MemoryLogTensorDeallocation() {
+  // @@protoc_insertion_point(destructor:tensorflow.MemoryLogTensorDeallocation)
+  SharedDtor();
+}
+
+void MemoryLogTensorDeallocation::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+  allocator_name_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+
+void MemoryLogTensorDeallocation::ArenaDtor(void* object) {
+  MemoryLogTensorDeallocation* _this = reinterpret_cast< MemoryLogTensorDeallocation* >(object);
+  (void)_this;
+}
+void MemoryLogTensorDeallocation::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void MemoryLogTensorDeallocation::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const MemoryLogTensorDeallocation& MemoryLogTensorDeallocation::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_MemoryLogTensorDeallocation_tensorflow_2fcore_2fframework_2flog_5fmemory_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void MemoryLogTensorDeallocation::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.MemoryLogTensorDeallocation)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  allocator_name_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+  allocation_id_ = PROTOBUF_LONGLONG(0);
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* MemoryLogTensorDeallocation::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<MemoryLogTensorDeallocation*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // int64 allocation_id = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 8) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::google::protobuf::int64 value = val;
+        msg->set_allocation_id(value);
+        break;
+      }
+      // string allocator_name = 2;
+      case 2: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 18) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("tensorflow.MemoryLogTensorDeallocation.allocator_name");
+        parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+        ::std::string* str = msg->mutable_allocator_name();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool MemoryLogTensorDeallocation::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.MemoryLogTensorDeallocation)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // int64 allocation_id = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (8 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>(
+                 input, &allocation_id_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // string allocator_name = 2;
+      case 2: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (18 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_allocator_name()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->allocator_name().data(), static_cast<int>(this->allocator_name().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.MemoryLogTensorDeallocation.allocator_name"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.MemoryLogTensorDeallocation)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.MemoryLogTensorDeallocation)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void MemoryLogTensorDeallocation::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.MemoryLogTensorDeallocation)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // int64 allocation_id = 1;
+  if (this->allocation_id() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt64(1, this->allocation_id(), output);
+  }
+
+  // string allocator_name = 2;
+  if (this->allocator_name().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->allocator_name().data(), static_cast<int>(this->allocator_name().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.MemoryLogTensorDeallocation.allocator_name");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      2, this->allocator_name(), output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.MemoryLogTensorDeallocation)
+}
+
+::google::protobuf::uint8* MemoryLogTensorDeallocation::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.MemoryLogTensorDeallocation)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // int64 allocation_id = 1;
+  if (this->allocation_id() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt64ToArray(1, this->allocation_id(), target);
+  }
+
+  // string allocator_name = 2;
+  if (this->allocator_name().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->allocator_name().data(), static_cast<int>(this->allocator_name().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.MemoryLogTensorDeallocation.allocator_name");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        2, this->allocator_name(), target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.MemoryLogTensorDeallocation)
+  return target;
+}
+
+size_t MemoryLogTensorDeallocation::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.MemoryLogTensorDeallocation)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // string allocator_name = 2;
+  if (this->allocator_name().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->allocator_name());
+  }
+
+  // int64 allocation_id = 1;
+  if (this->allocation_id() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::Int64Size(
+        this->allocation_id());
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void MemoryLogTensorDeallocation::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.MemoryLogTensorDeallocation)
+  GOOGLE_DCHECK_NE(&from, this);
+  const MemoryLogTensorDeallocation* source =
+      ::google::protobuf::DynamicCastToGenerated<MemoryLogTensorDeallocation>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.MemoryLogTensorDeallocation)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.MemoryLogTensorDeallocation)
+    MergeFrom(*source);
+  }
+}
+
+void MemoryLogTensorDeallocation::MergeFrom(const MemoryLogTensorDeallocation& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.MemoryLogTensorDeallocation)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  if (from.allocator_name().size() > 0) {
+    set_allocator_name(from.allocator_name());
+  }
+  if (from.allocation_id() != 0) {
+    set_allocation_id(from.allocation_id());
+  }
+}
+
+void MemoryLogTensorDeallocation::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.MemoryLogTensorDeallocation)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void MemoryLogTensorDeallocation::CopyFrom(const MemoryLogTensorDeallocation& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.MemoryLogTensorDeallocation)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool MemoryLogTensorDeallocation::IsInitialized() const {
+  return true;
+}
+
+void MemoryLogTensorDeallocation::Swap(MemoryLogTensorDeallocation* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    MemoryLogTensorDeallocation* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void MemoryLogTensorDeallocation::UnsafeArenaSwap(MemoryLogTensorDeallocation* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void MemoryLogTensorDeallocation::InternalSwap(MemoryLogTensorDeallocation* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  allocator_name_.Swap(&other->allocator_name_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+  swap(allocation_id_, other->allocation_id_);
+}
+
+::google::protobuf::Metadata MemoryLogTensorDeallocation::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fframework_2flog_5fmemory_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fframework_2flog_5fmemory_2eproto[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+void MemoryLogTensorOutput::InitAsDefaultInstance() {
+  ::tensorflow::_MemoryLogTensorOutput_default_instance_._instance.get_mutable()->tensor_ = const_cast< ::tensorflow::TensorDescription*>(
+      ::tensorflow::TensorDescription::internal_default_instance());
+}
+class MemoryLogTensorOutput::HasBitSetters {
+ public:
+  static const ::tensorflow::TensorDescription& tensor(const MemoryLogTensorOutput* msg);
+};
+
+const ::tensorflow::TensorDescription&
+MemoryLogTensorOutput::HasBitSetters::tensor(const MemoryLogTensorOutput* msg) {
+  return *msg->tensor_;
+}
+void MemoryLogTensorOutput::unsafe_arena_set_allocated_tensor(
+    ::tensorflow::TensorDescription* tensor) {
+  if (GetArenaNoVirtual() == NULL) {
+    delete tensor_;
+  }
+  tensor_ = tensor;
+  if (tensor) {
+    
+  } else {
+    
+  }
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.MemoryLogTensorOutput.tensor)
+}
+void MemoryLogTensorOutput::clear_tensor() {
+  if (GetArenaNoVirtual() == NULL && tensor_ != NULL) {
+    delete tensor_;
+  }
+  tensor_ = NULL;
+}
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int MemoryLogTensorOutput::kStepIdFieldNumber;
+const int MemoryLogTensorOutput::kKernelNameFieldNumber;
+const int MemoryLogTensorOutput::kIndexFieldNumber;
+const int MemoryLogTensorOutput::kTensorFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+MemoryLogTensorOutput::MemoryLogTensorOutput()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.MemoryLogTensorOutput)
+}
+MemoryLogTensorOutput::MemoryLogTensorOutput(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.MemoryLogTensorOutput)
+}
+MemoryLogTensorOutput::MemoryLogTensorOutput(const MemoryLogTensorOutput& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  kernel_name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.kernel_name().size() > 0) {
+    kernel_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.kernel_name(),
+      GetArenaNoVirtual());
+  }
+  if (from.has_tensor()) {
+    tensor_ = new ::tensorflow::TensorDescription(*from.tensor_);
+  } else {
+    tensor_ = NULL;
+  }
+  ::memcpy(&step_id_, &from.step_id_,
+    static_cast<size_t>(reinterpret_cast<char*>(&index_) -
+    reinterpret_cast<char*>(&step_id_)) + sizeof(index_));
+  // @@protoc_insertion_point(copy_constructor:tensorflow.MemoryLogTensorOutput)
+}
+
+void MemoryLogTensorOutput::SharedCtor() {
+  ::google::protobuf::internal::InitSCC(
+      &scc_info_MemoryLogTensorOutput_tensorflow_2fcore_2fframework_2flog_5fmemory_2eproto.base);
+  kernel_name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  ::memset(&tensor_, 0, static_cast<size_t>(
+      reinterpret_cast<char*>(&index_) -
+      reinterpret_cast<char*>(&tensor_)) + sizeof(index_));
+}
+
+MemoryLogTensorOutput::~MemoryLogTensorOutput() {
+  // @@protoc_insertion_point(destructor:tensorflow.MemoryLogTensorOutput)
+  SharedDtor();
+}
+
+void MemoryLogTensorOutput::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+  kernel_name_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (this != internal_default_instance()) delete tensor_;
+}
+
+void MemoryLogTensorOutput::ArenaDtor(void* object) {
+  MemoryLogTensorOutput* _this = reinterpret_cast< MemoryLogTensorOutput* >(object);
+  (void)_this;
+}
+void MemoryLogTensorOutput::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void MemoryLogTensorOutput::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const MemoryLogTensorOutput& MemoryLogTensorOutput::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_MemoryLogTensorOutput_tensorflow_2fcore_2fframework_2flog_5fmemory_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void MemoryLogTensorOutput::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.MemoryLogTensorOutput)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  kernel_name_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+  if (GetArenaNoVirtual() == NULL && tensor_ != NULL) {
+    delete tensor_;
+  }
+  tensor_ = NULL;
+  ::memset(&step_id_, 0, static_cast<size_t>(
+      reinterpret_cast<char*>(&index_) -
+      reinterpret_cast<char*>(&step_id_)) + sizeof(index_));
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* MemoryLogTensorOutput::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<MemoryLogTensorOutput*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // int64 step_id = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 8) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::google::protobuf::int64 value = val;
+        msg->set_step_id(value);
+        break;
+      }
+      // string kernel_name = 2;
+      case 2: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 18) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("tensorflow.MemoryLogTensorOutput.kernel_name");
+        parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+        ::std::string* str = msg->mutable_kernel_name();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+        break;
+      }
+      // int32 index = 3;
+      case 3: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 24) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::google::protobuf::int32 value = val;
+        msg->set_index(value);
+        break;
+      }
+      // .tensorflow.TensorDescription tensor = 4;
+      case 4: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 34) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        parser_till_end = ::tensorflow::TensorDescription::_InternalParse;
+        object = msg->mutable_tensor();
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                       ptr, newend);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+        ptr = newend;
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool MemoryLogTensorOutput::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.MemoryLogTensorOutput)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // int64 step_id = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (8 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>(
+                 input, &step_id_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // string kernel_name = 2;
+      case 2: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (18 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_kernel_name()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->kernel_name().data(), static_cast<int>(this->kernel_name().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.MemoryLogTensorOutput.kernel_name"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // int32 index = 3;
+      case 3: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (24 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
+                 input, &index_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // .tensorflow.TensorDescription tensor = 4;
+      case 4: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (34 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+               input, mutable_tensor()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.MemoryLogTensorOutput)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.MemoryLogTensorOutput)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void MemoryLogTensorOutput::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.MemoryLogTensorOutput)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // int64 step_id = 1;
+  if (this->step_id() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt64(1, this->step_id(), output);
+  }
+
+  // string kernel_name = 2;
+  if (this->kernel_name().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->kernel_name().data(), static_cast<int>(this->kernel_name().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.MemoryLogTensorOutput.kernel_name");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      2, this->kernel_name(), output);
+  }
+
+  // int32 index = 3;
+  if (this->index() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt32(3, this->index(), output);
+  }
+
+  // .tensorflow.TensorDescription tensor = 4;
+  if (this->has_tensor()) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      4, HasBitSetters::tensor(this), output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.MemoryLogTensorOutput)
+}
+
+::google::protobuf::uint8* MemoryLogTensorOutput::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.MemoryLogTensorOutput)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // int64 step_id = 1;
+  if (this->step_id() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt64ToArray(1, this->step_id(), target);
+  }
+
+  // string kernel_name = 2;
+  if (this->kernel_name().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->kernel_name().data(), static_cast<int>(this->kernel_name().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.MemoryLogTensorOutput.kernel_name");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        2, this->kernel_name(), target);
+  }
+
+  // int32 index = 3;
+  if (this->index() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt32ToArray(3, this->index(), target);
+  }
+
+  // .tensorflow.TensorDescription tensor = 4;
+  if (this->has_tensor()) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        4, HasBitSetters::tensor(this), deterministic, target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.MemoryLogTensorOutput)
+  return target;
+}
+
+size_t MemoryLogTensorOutput::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.MemoryLogTensorOutput)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // string kernel_name = 2;
+  if (this->kernel_name().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->kernel_name());
+  }
+
+  // .tensorflow.TensorDescription tensor = 4;
+  if (this->has_tensor()) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::MessageSize(
+        *tensor_);
+  }
+
+  // int64 step_id = 1;
+  if (this->step_id() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::Int64Size(
+        this->step_id());
+  }
+
+  // int32 index = 3;
+  if (this->index() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::Int32Size(
+        this->index());
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void MemoryLogTensorOutput::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.MemoryLogTensorOutput)
+  GOOGLE_DCHECK_NE(&from, this);
+  const MemoryLogTensorOutput* source =
+      ::google::protobuf::DynamicCastToGenerated<MemoryLogTensorOutput>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.MemoryLogTensorOutput)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.MemoryLogTensorOutput)
+    MergeFrom(*source);
+  }
+}
+
+void MemoryLogTensorOutput::MergeFrom(const MemoryLogTensorOutput& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.MemoryLogTensorOutput)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  if (from.kernel_name().size() > 0) {
+    set_kernel_name(from.kernel_name());
+  }
+  if (from.has_tensor()) {
+    mutable_tensor()->::tensorflow::TensorDescription::MergeFrom(from.tensor());
+  }
+  if (from.step_id() != 0) {
+    set_step_id(from.step_id());
+  }
+  if (from.index() != 0) {
+    set_index(from.index());
+  }
+}
+
+void MemoryLogTensorOutput::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.MemoryLogTensorOutput)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void MemoryLogTensorOutput::CopyFrom(const MemoryLogTensorOutput& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.MemoryLogTensorOutput)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool MemoryLogTensorOutput::IsInitialized() const {
+  return true;
+}
+
+void MemoryLogTensorOutput::Swap(MemoryLogTensorOutput* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    MemoryLogTensorOutput* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void MemoryLogTensorOutput::UnsafeArenaSwap(MemoryLogTensorOutput* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void MemoryLogTensorOutput::InternalSwap(MemoryLogTensorOutput* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  kernel_name_.Swap(&other->kernel_name_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+  swap(tensor_, other->tensor_);
+  swap(step_id_, other->step_id_);
+  swap(index_, other->index_);
+}
+
+::google::protobuf::Metadata MemoryLogTensorOutput::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fframework_2flog_5fmemory_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fframework_2flog_5fmemory_2eproto[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+void MemoryLogRawAllocation::InitAsDefaultInstance() {
+}
+class MemoryLogRawAllocation::HasBitSetters {
+ public:
+};
+
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int MemoryLogRawAllocation::kStepIdFieldNumber;
+const int MemoryLogRawAllocation::kOperationFieldNumber;
+const int MemoryLogRawAllocation::kNumBytesFieldNumber;
+const int MemoryLogRawAllocation::kPtrFieldNumber;
+const int MemoryLogRawAllocation::kAllocationIdFieldNumber;
+const int MemoryLogRawAllocation::kAllocatorNameFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+MemoryLogRawAllocation::MemoryLogRawAllocation()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.MemoryLogRawAllocation)
+}
+MemoryLogRawAllocation::MemoryLogRawAllocation(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.MemoryLogRawAllocation)
+}
+MemoryLogRawAllocation::MemoryLogRawAllocation(const MemoryLogRawAllocation& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  operation_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.operation().size() > 0) {
+    operation_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.operation(),
+      GetArenaNoVirtual());
+  }
+  allocator_name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.allocator_name().size() > 0) {
+    allocator_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.allocator_name(),
+      GetArenaNoVirtual());
+  }
+  ::memcpy(&step_id_, &from.step_id_,
+    static_cast<size_t>(reinterpret_cast<char*>(&allocation_id_) -
+    reinterpret_cast<char*>(&step_id_)) + sizeof(allocation_id_));
+  // @@protoc_insertion_point(copy_constructor:tensorflow.MemoryLogRawAllocation)
+}
+
+void MemoryLogRawAllocation::SharedCtor() {
+  ::google::protobuf::internal::InitSCC(
+      &scc_info_MemoryLogRawAllocation_tensorflow_2fcore_2fframework_2flog_5fmemory_2eproto.base);
+  operation_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  allocator_name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  ::memset(&step_id_, 0, static_cast<size_t>(
+      reinterpret_cast<char*>(&allocation_id_) -
+      reinterpret_cast<char*>(&step_id_)) + sizeof(allocation_id_));
+}
+
+MemoryLogRawAllocation::~MemoryLogRawAllocation() {
+  // @@protoc_insertion_point(destructor:tensorflow.MemoryLogRawAllocation)
+  SharedDtor();
+}
+
+void MemoryLogRawAllocation::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+  operation_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  allocator_name_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+
+void MemoryLogRawAllocation::ArenaDtor(void* object) {
+  MemoryLogRawAllocation* _this = reinterpret_cast< MemoryLogRawAllocation* >(object);
+  (void)_this;
+}
+void MemoryLogRawAllocation::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void MemoryLogRawAllocation::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const MemoryLogRawAllocation& MemoryLogRawAllocation::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_MemoryLogRawAllocation_tensorflow_2fcore_2fframework_2flog_5fmemory_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void MemoryLogRawAllocation::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.MemoryLogRawAllocation)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  operation_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+  allocator_name_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+  ::memset(&step_id_, 0, static_cast<size_t>(
+      reinterpret_cast<char*>(&allocation_id_) -
+      reinterpret_cast<char*>(&step_id_)) + sizeof(allocation_id_));
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* MemoryLogRawAllocation::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<MemoryLogRawAllocation*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // int64 step_id = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 8) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::google::protobuf::int64 value = val;
+        msg->set_step_id(value);
+        break;
+      }
+      // string operation = 2;
+      case 2: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 18) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("tensorflow.MemoryLogRawAllocation.operation");
+        parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+        ::std::string* str = msg->mutable_operation();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+        break;
+      }
+      // int64 num_bytes = 3;
+      case 3: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 24) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::google::protobuf::int64 value = val;
+        msg->set_num_bytes(value);
+        break;
+      }
+      // uint64 ptr = 4;
+      case 4: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 32) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::google::protobuf::uint64 value = val;
+        msg->set_ptr(value);
+        break;
+      }
+      // int64 allocation_id = 5;
+      case 5: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 40) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::google::protobuf::int64 value = val;
+        msg->set_allocation_id(value);
+        break;
+      }
+      // string allocator_name = 6;
+      case 6: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 50) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("tensorflow.MemoryLogRawAllocation.allocator_name");
+        parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+        ::std::string* str = msg->mutable_allocator_name();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool MemoryLogRawAllocation::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.MemoryLogRawAllocation)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // int64 step_id = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (8 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>(
+                 input, &step_id_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // string operation = 2;
+      case 2: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (18 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_operation()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->operation().data(), static_cast<int>(this->operation().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.MemoryLogRawAllocation.operation"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // int64 num_bytes = 3;
+      case 3: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (24 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>(
+                 input, &num_bytes_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // uint64 ptr = 4;
+      case 4: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (32 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_UINT64>(
+                 input, &ptr_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // int64 allocation_id = 5;
+      case 5: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (40 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>(
+                 input, &allocation_id_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // string allocator_name = 6;
+      case 6: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (50 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_allocator_name()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->allocator_name().data(), static_cast<int>(this->allocator_name().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.MemoryLogRawAllocation.allocator_name"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.MemoryLogRawAllocation)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.MemoryLogRawAllocation)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void MemoryLogRawAllocation::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.MemoryLogRawAllocation)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // int64 step_id = 1;
+  if (this->step_id() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt64(1, this->step_id(), output);
+  }
+
+  // string operation = 2;
+  if (this->operation().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->operation().data(), static_cast<int>(this->operation().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.MemoryLogRawAllocation.operation");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      2, this->operation(), output);
+  }
+
+  // int64 num_bytes = 3;
+  if (this->num_bytes() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt64(3, this->num_bytes(), output);
+  }
+
+  // uint64 ptr = 4;
+  if (this->ptr() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteUInt64(4, this->ptr(), output);
+  }
+
+  // int64 allocation_id = 5;
+  if (this->allocation_id() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt64(5, this->allocation_id(), output);
+  }
+
+  // string allocator_name = 6;
+  if (this->allocator_name().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->allocator_name().data(), static_cast<int>(this->allocator_name().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.MemoryLogRawAllocation.allocator_name");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      6, this->allocator_name(), output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.MemoryLogRawAllocation)
+}
+
+::google::protobuf::uint8* MemoryLogRawAllocation::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.MemoryLogRawAllocation)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // int64 step_id = 1;
+  if (this->step_id() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt64ToArray(1, this->step_id(), target);
+  }
+
+  // string operation = 2;
+  if (this->operation().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->operation().data(), static_cast<int>(this->operation().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.MemoryLogRawAllocation.operation");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        2, this->operation(), target);
+  }
+
+  // int64 num_bytes = 3;
+  if (this->num_bytes() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt64ToArray(3, this->num_bytes(), target);
+  }
+
+  // uint64 ptr = 4;
+  if (this->ptr() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteUInt64ToArray(4, this->ptr(), target);
+  }
+
+  // int64 allocation_id = 5;
+  if (this->allocation_id() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt64ToArray(5, this->allocation_id(), target);
+  }
+
+  // string allocator_name = 6;
+  if (this->allocator_name().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->allocator_name().data(), static_cast<int>(this->allocator_name().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.MemoryLogRawAllocation.allocator_name");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        6, this->allocator_name(), target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.MemoryLogRawAllocation)
+  return target;
+}
+
+size_t MemoryLogRawAllocation::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.MemoryLogRawAllocation)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // string operation = 2;
+  if (this->operation().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->operation());
+  }
+
+  // string allocator_name = 6;
+  if (this->allocator_name().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->allocator_name());
+  }
+
+  // int64 step_id = 1;
+  if (this->step_id() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::Int64Size(
+        this->step_id());
+  }
+
+  // int64 num_bytes = 3;
+  if (this->num_bytes() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::Int64Size(
+        this->num_bytes());
+  }
+
+  // uint64 ptr = 4;
+  if (this->ptr() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::UInt64Size(
+        this->ptr());
+  }
+
+  // int64 allocation_id = 5;
+  if (this->allocation_id() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::Int64Size(
+        this->allocation_id());
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void MemoryLogRawAllocation::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.MemoryLogRawAllocation)
+  GOOGLE_DCHECK_NE(&from, this);
+  const MemoryLogRawAllocation* source =
+      ::google::protobuf::DynamicCastToGenerated<MemoryLogRawAllocation>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.MemoryLogRawAllocation)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.MemoryLogRawAllocation)
+    MergeFrom(*source);
+  }
+}
+
+void MemoryLogRawAllocation::MergeFrom(const MemoryLogRawAllocation& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.MemoryLogRawAllocation)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  if (from.operation().size() > 0) {
+    set_operation(from.operation());
+  }
+  if (from.allocator_name().size() > 0) {
+    set_allocator_name(from.allocator_name());
+  }
+  if (from.step_id() != 0) {
+    set_step_id(from.step_id());
+  }
+  if (from.num_bytes() != 0) {
+    set_num_bytes(from.num_bytes());
+  }
+  if (from.ptr() != 0) {
+    set_ptr(from.ptr());
+  }
+  if (from.allocation_id() != 0) {
+    set_allocation_id(from.allocation_id());
+  }
+}
+
+void MemoryLogRawAllocation::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.MemoryLogRawAllocation)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void MemoryLogRawAllocation::CopyFrom(const MemoryLogRawAllocation& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.MemoryLogRawAllocation)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool MemoryLogRawAllocation::IsInitialized() const {
+  return true;
+}
+
+void MemoryLogRawAllocation::Swap(MemoryLogRawAllocation* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    MemoryLogRawAllocation* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void MemoryLogRawAllocation::UnsafeArenaSwap(MemoryLogRawAllocation* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void MemoryLogRawAllocation::InternalSwap(MemoryLogRawAllocation* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  operation_.Swap(&other->operation_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+  allocator_name_.Swap(&other->allocator_name_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+  swap(step_id_, other->step_id_);
+  swap(num_bytes_, other->num_bytes_);
+  swap(ptr_, other->ptr_);
+  swap(allocation_id_, other->allocation_id_);
+}
+
+::google::protobuf::Metadata MemoryLogRawAllocation::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fframework_2flog_5fmemory_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fframework_2flog_5fmemory_2eproto[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+void MemoryLogRawDeallocation::InitAsDefaultInstance() {
+}
+class MemoryLogRawDeallocation::HasBitSetters {
+ public:
+};
+
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int MemoryLogRawDeallocation::kStepIdFieldNumber;
+const int MemoryLogRawDeallocation::kOperationFieldNumber;
+const int MemoryLogRawDeallocation::kAllocationIdFieldNumber;
+const int MemoryLogRawDeallocation::kAllocatorNameFieldNumber;
+const int MemoryLogRawDeallocation::kDeferredFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+MemoryLogRawDeallocation::MemoryLogRawDeallocation()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.MemoryLogRawDeallocation)
+}
+MemoryLogRawDeallocation::MemoryLogRawDeallocation(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.MemoryLogRawDeallocation)
+}
+MemoryLogRawDeallocation::MemoryLogRawDeallocation(const MemoryLogRawDeallocation& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  operation_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.operation().size() > 0) {
+    operation_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.operation(),
+      GetArenaNoVirtual());
+  }
+  allocator_name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.allocator_name().size() > 0) {
+    allocator_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.allocator_name(),
+      GetArenaNoVirtual());
+  }
+  ::memcpy(&step_id_, &from.step_id_,
+    static_cast<size_t>(reinterpret_cast<char*>(&deferred_) -
+    reinterpret_cast<char*>(&step_id_)) + sizeof(deferred_));
+  // @@protoc_insertion_point(copy_constructor:tensorflow.MemoryLogRawDeallocation)
+}
+
+void MemoryLogRawDeallocation::SharedCtor() {
+  ::google::protobuf::internal::InitSCC(
+      &scc_info_MemoryLogRawDeallocation_tensorflow_2fcore_2fframework_2flog_5fmemory_2eproto.base);
+  operation_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  allocator_name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  ::memset(&step_id_, 0, static_cast<size_t>(
+      reinterpret_cast<char*>(&deferred_) -
+      reinterpret_cast<char*>(&step_id_)) + sizeof(deferred_));
+}
+
+MemoryLogRawDeallocation::~MemoryLogRawDeallocation() {
+  // @@protoc_insertion_point(destructor:tensorflow.MemoryLogRawDeallocation)
+  SharedDtor();
+}
+
+void MemoryLogRawDeallocation::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+  operation_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  allocator_name_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+
+void MemoryLogRawDeallocation::ArenaDtor(void* object) {
+  MemoryLogRawDeallocation* _this = reinterpret_cast< MemoryLogRawDeallocation* >(object);
+  (void)_this;
+}
+void MemoryLogRawDeallocation::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void MemoryLogRawDeallocation::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const MemoryLogRawDeallocation& MemoryLogRawDeallocation::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_MemoryLogRawDeallocation_tensorflow_2fcore_2fframework_2flog_5fmemory_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void MemoryLogRawDeallocation::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.MemoryLogRawDeallocation)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  operation_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+  allocator_name_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+  ::memset(&step_id_, 0, static_cast<size_t>(
+      reinterpret_cast<char*>(&deferred_) -
+      reinterpret_cast<char*>(&step_id_)) + sizeof(deferred_));
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* MemoryLogRawDeallocation::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<MemoryLogRawDeallocation*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // int64 step_id = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 8) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::google::protobuf::int64 value = val;
+        msg->set_step_id(value);
+        break;
+      }
+      // string operation = 2;
+      case 2: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 18) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("tensorflow.MemoryLogRawDeallocation.operation");
+        parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+        ::std::string* str = msg->mutable_operation();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+        break;
+      }
+      // int64 allocation_id = 3;
+      case 3: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 24) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::google::protobuf::int64 value = val;
+        msg->set_allocation_id(value);
+        break;
+      }
+      // string allocator_name = 4;
+      case 4: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 34) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("tensorflow.MemoryLogRawDeallocation.allocator_name");
+        parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+        ::std::string* str = msg->mutable_allocator_name();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+        break;
+      }
+      // bool deferred = 5;
+      case 5: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 40) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        bool value = val;
+        msg->set_deferred(value);
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool MemoryLogRawDeallocation::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.MemoryLogRawDeallocation)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // int64 step_id = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (8 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>(
+                 input, &step_id_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // string operation = 2;
+      case 2: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (18 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_operation()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->operation().data(), static_cast<int>(this->operation().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.MemoryLogRawDeallocation.operation"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // int64 allocation_id = 3;
+      case 3: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (24 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>(
+                 input, &allocation_id_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // string allocator_name = 4;
+      case 4: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (34 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_allocator_name()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->allocator_name().data(), static_cast<int>(this->allocator_name().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.MemoryLogRawDeallocation.allocator_name"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // bool deferred = 5;
+      case 5: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (40 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
+                 input, &deferred_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.MemoryLogRawDeallocation)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.MemoryLogRawDeallocation)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void MemoryLogRawDeallocation::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.MemoryLogRawDeallocation)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // int64 step_id = 1;
+  if (this->step_id() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt64(1, this->step_id(), output);
+  }
+
+  // string operation = 2;
+  if (this->operation().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->operation().data(), static_cast<int>(this->operation().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.MemoryLogRawDeallocation.operation");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      2, this->operation(), output);
+  }
+
+  // int64 allocation_id = 3;
+  if (this->allocation_id() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt64(3, this->allocation_id(), output);
+  }
+
+  // string allocator_name = 4;
+  if (this->allocator_name().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->allocator_name().data(), static_cast<int>(this->allocator_name().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.MemoryLogRawDeallocation.allocator_name");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      4, this->allocator_name(), output);
+  }
+
+  // bool deferred = 5;
+  if (this->deferred() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteBool(5, this->deferred(), output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.MemoryLogRawDeallocation)
+}
+
+::google::protobuf::uint8* MemoryLogRawDeallocation::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.MemoryLogRawDeallocation)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // int64 step_id = 1;
+  if (this->step_id() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt64ToArray(1, this->step_id(), target);
+  }
+
+  // string operation = 2;
+  if (this->operation().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->operation().data(), static_cast<int>(this->operation().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.MemoryLogRawDeallocation.operation");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        2, this->operation(), target);
+  }
+
+  // int64 allocation_id = 3;
+  if (this->allocation_id() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt64ToArray(3, this->allocation_id(), target);
+  }
+
+  // string allocator_name = 4;
+  if (this->allocator_name().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->allocator_name().data(), static_cast<int>(this->allocator_name().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.MemoryLogRawDeallocation.allocator_name");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        4, this->allocator_name(), target);
+  }
+
+  // bool deferred = 5;
+  if (this->deferred() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(5, this->deferred(), target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.MemoryLogRawDeallocation)
+  return target;
+}
+
+size_t MemoryLogRawDeallocation::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.MemoryLogRawDeallocation)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // string operation = 2;
+  if (this->operation().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->operation());
+  }
+
+  // string allocator_name = 4;
+  if (this->allocator_name().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->allocator_name());
+  }
+
+  // int64 step_id = 1;
+  if (this->step_id() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::Int64Size(
+        this->step_id());
+  }
+
+  // int64 allocation_id = 3;
+  if (this->allocation_id() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::Int64Size(
+        this->allocation_id());
+  }
+
+  // bool deferred = 5;
+  if (this->deferred() != 0) {
+    total_size += 1 + 1;
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void MemoryLogRawDeallocation::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.MemoryLogRawDeallocation)
+  GOOGLE_DCHECK_NE(&from, this);
+  const MemoryLogRawDeallocation* source =
+      ::google::protobuf::DynamicCastToGenerated<MemoryLogRawDeallocation>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.MemoryLogRawDeallocation)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.MemoryLogRawDeallocation)
+    MergeFrom(*source);
+  }
+}
+
+void MemoryLogRawDeallocation::MergeFrom(const MemoryLogRawDeallocation& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.MemoryLogRawDeallocation)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  if (from.operation().size() > 0) {
+    set_operation(from.operation());
+  }
+  if (from.allocator_name().size() > 0) {
+    set_allocator_name(from.allocator_name());
+  }
+  if (from.step_id() != 0) {
+    set_step_id(from.step_id());
+  }
+  if (from.allocation_id() != 0) {
+    set_allocation_id(from.allocation_id());
+  }
+  if (from.deferred() != 0) {
+    set_deferred(from.deferred());
+  }
+}
+
+void MemoryLogRawDeallocation::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.MemoryLogRawDeallocation)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void MemoryLogRawDeallocation::CopyFrom(const MemoryLogRawDeallocation& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.MemoryLogRawDeallocation)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool MemoryLogRawDeallocation::IsInitialized() const {
+  return true;
+}
+
+void MemoryLogRawDeallocation::Swap(MemoryLogRawDeallocation* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    MemoryLogRawDeallocation* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void MemoryLogRawDeallocation::UnsafeArenaSwap(MemoryLogRawDeallocation* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void MemoryLogRawDeallocation::InternalSwap(MemoryLogRawDeallocation* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  operation_.Swap(&other->operation_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+  allocator_name_.Swap(&other->allocator_name_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+  swap(step_id_, other->step_id_);
+  swap(allocation_id_, other->allocation_id_);
+  swap(deferred_, other->deferred_);
+}
+
+::google::protobuf::Metadata MemoryLogRawDeallocation::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fframework_2flog_5fmemory_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fframework_2flog_5fmemory_2eproto[kIndexInFileMessages];
+}
+
+
+// @@protoc_insertion_point(namespace_scope)
+}  // namespace tensorflow
+namespace google {
+namespace protobuf {
+template<> PROTOBUF_NOINLINE ::tensorflow::MemoryLogStep* Arena::CreateMaybeMessage< ::tensorflow::MemoryLogStep >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::MemoryLogStep >(arena);
+}
+template<> PROTOBUF_NOINLINE ::tensorflow::MemoryLogTensorAllocation* Arena::CreateMaybeMessage< ::tensorflow::MemoryLogTensorAllocation >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::MemoryLogTensorAllocation >(arena);
+}
+template<> PROTOBUF_NOINLINE ::tensorflow::MemoryLogTensorDeallocation* Arena::CreateMaybeMessage< ::tensorflow::MemoryLogTensorDeallocation >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::MemoryLogTensorDeallocation >(arena);
+}
+template<> PROTOBUF_NOINLINE ::tensorflow::MemoryLogTensorOutput* Arena::CreateMaybeMessage< ::tensorflow::MemoryLogTensorOutput >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::MemoryLogTensorOutput >(arena);
+}
+template<> PROTOBUF_NOINLINE ::tensorflow::MemoryLogRawAllocation* Arena::CreateMaybeMessage< ::tensorflow::MemoryLogRawAllocation >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::MemoryLogRawAllocation >(arena);
+}
+template<> PROTOBUF_NOINLINE ::tensorflow::MemoryLogRawDeallocation* Arena::CreateMaybeMessage< ::tensorflow::MemoryLogRawDeallocation >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::MemoryLogRawDeallocation >(arena);
+}
+}  // namespace protobuf
+}  // namespace google
+
+// @@protoc_insertion_point(global_scope)
+#include <google/protobuf/port_undef.inc>
diff --git a/tensorflow/core/framework/log_memory.pb.h b/tensorflow/core/framework/log_memory.pb.h
new file mode 100644 (file)
index 0000000..2d311ec
--- /dev/null
@@ -0,0 +1,2032 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: tensorflow/core/framework/log_memory.proto
+
+#ifndef PROTOBUF_INCLUDED_tensorflow_2fcore_2fframework_2flog_5fmemory_2eproto
+#define PROTOBUF_INCLUDED_tensorflow_2fcore_2fframework_2flog_5fmemory_2eproto
+
+#include <limits>
+#include <string>
+
+#include <google/protobuf/port_def.inc>
+#if PROTOBUF_VERSION < 3006001
+#error This file was generated by a newer version of protoc which is
+#error incompatible with your Protocol Buffer headers. Please update
+#error your headers.
+#endif
+#if 3006001 < PROTOBUF_MIN_PROTOC_VERSION
+#error This file was generated by an older version of protoc which is
+#error incompatible with your Protocol Buffer headers. Please
+#error regenerate this file with a newer version of protoc.
+#endif
+
+#include <google/protobuf/port_undef.inc>
+#include <google/protobuf/io/coded_stream.h>
+#include <google/protobuf/arena.h>
+#include <google/protobuf/arenastring.h>
+#include <google/protobuf/generated_message_table_driven.h>
+#include <google/protobuf/generated_message_util.h>
+#include <google/protobuf/inlined_string_field.h>
+#include <google/protobuf/metadata.h>
+#include <google/protobuf/message.h>
+#include <google/protobuf/repeated_field.h>  // IWYU pragma: export
+#include <google/protobuf/extension_set.h>  // IWYU pragma: export
+#include <google/protobuf/unknown_field_set.h>
+#include "tensorflow/core/framework/tensor_description.pb.h"
+// @@protoc_insertion_point(includes)
+#include <google/protobuf/port_def.inc>
+#define PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fframework_2flog_5fmemory_2eproto
+
+// Internal implementation detail -- do not use these members.
+struct TableStruct_tensorflow_2fcore_2fframework_2flog_5fmemory_2eproto {
+  static const ::google::protobuf::internal::ParseTableField entries[]
+    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
+  static const ::google::protobuf::internal::AuxillaryParseTableField aux[]
+    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
+  static const ::google::protobuf::internal::ParseTable schema[6]
+    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
+  static const ::google::protobuf::internal::FieldMetadata field_metadata[];
+  static const ::google::protobuf::internal::SerializationTable serialization_table[];
+  static const ::google::protobuf::uint32 offsets[];
+};
+void AddDescriptors_tensorflow_2fcore_2fframework_2flog_5fmemory_2eproto();
+namespace tensorflow {
+class MemoryLogRawAllocation;
+class MemoryLogRawAllocationDefaultTypeInternal;
+extern MemoryLogRawAllocationDefaultTypeInternal _MemoryLogRawAllocation_default_instance_;
+class MemoryLogRawDeallocation;
+class MemoryLogRawDeallocationDefaultTypeInternal;
+extern MemoryLogRawDeallocationDefaultTypeInternal _MemoryLogRawDeallocation_default_instance_;
+class MemoryLogStep;
+class MemoryLogStepDefaultTypeInternal;
+extern MemoryLogStepDefaultTypeInternal _MemoryLogStep_default_instance_;
+class MemoryLogTensorAllocation;
+class MemoryLogTensorAllocationDefaultTypeInternal;
+extern MemoryLogTensorAllocationDefaultTypeInternal _MemoryLogTensorAllocation_default_instance_;
+class MemoryLogTensorDeallocation;
+class MemoryLogTensorDeallocationDefaultTypeInternal;
+extern MemoryLogTensorDeallocationDefaultTypeInternal _MemoryLogTensorDeallocation_default_instance_;
+class MemoryLogTensorOutput;
+class MemoryLogTensorOutputDefaultTypeInternal;
+extern MemoryLogTensorOutputDefaultTypeInternal _MemoryLogTensorOutput_default_instance_;
+}  // namespace tensorflow
+namespace google {
+namespace protobuf {
+template<> ::tensorflow::MemoryLogRawAllocation* Arena::CreateMaybeMessage<::tensorflow::MemoryLogRawAllocation>(Arena*);
+template<> ::tensorflow::MemoryLogRawDeallocation* Arena::CreateMaybeMessage<::tensorflow::MemoryLogRawDeallocation>(Arena*);
+template<> ::tensorflow::MemoryLogStep* Arena::CreateMaybeMessage<::tensorflow::MemoryLogStep>(Arena*);
+template<> ::tensorflow::MemoryLogTensorAllocation* Arena::CreateMaybeMessage<::tensorflow::MemoryLogTensorAllocation>(Arena*);
+template<> ::tensorflow::MemoryLogTensorDeallocation* Arena::CreateMaybeMessage<::tensorflow::MemoryLogTensorDeallocation>(Arena*);
+template<> ::tensorflow::MemoryLogTensorOutput* Arena::CreateMaybeMessage<::tensorflow::MemoryLogTensorOutput>(Arena*);
+}  // namespace protobuf
+}  // namespace google
+namespace tensorflow {
+
+// ===================================================================
+
+class MemoryLogStep : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.MemoryLogStep) */ {
+ public:
+  MemoryLogStep();
+  virtual ~MemoryLogStep();
+
+  MemoryLogStep(const MemoryLogStep& from);
+
+  inline MemoryLogStep& operator=(const MemoryLogStep& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  MemoryLogStep(MemoryLogStep&& from) noexcept
+    : MemoryLogStep() {
+    *this = ::std::move(from);
+  }
+
+  inline MemoryLogStep& operator=(MemoryLogStep&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const MemoryLogStep& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const MemoryLogStep* internal_default_instance() {
+    return reinterpret_cast<const MemoryLogStep*>(
+               &_MemoryLogStep_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    0;
+
+  void UnsafeArenaSwap(MemoryLogStep* other);
+  void Swap(MemoryLogStep* other);
+  friend void swap(MemoryLogStep& a, MemoryLogStep& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline MemoryLogStep* New() const final {
+    return CreateMaybeMessage<MemoryLogStep>(NULL);
+  }
+
+  MemoryLogStep* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<MemoryLogStep>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const MemoryLogStep& from);
+  void MergeFrom(const MemoryLogStep& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(MemoryLogStep* other);
+  protected:
+  explicit MemoryLogStep(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // string handle = 2;
+  void clear_handle();
+  static const int kHandleFieldNumber = 2;
+  const ::std::string& handle() const;
+  void set_handle(const ::std::string& value);
+  #if LANG_CXX11
+  void set_handle(::std::string&& value);
+  #endif
+  void set_handle(const char* value);
+  void set_handle(const char* value, size_t size);
+  ::std::string* mutable_handle();
+  ::std::string* release_handle();
+  void set_allocated_handle(::std::string* handle);
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  ::std::string* unsafe_arena_release_handle();
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  void unsafe_arena_set_allocated_handle(
+      ::std::string* handle);
+
+  // int64 step_id = 1;
+  void clear_step_id();
+  static const int kStepIdFieldNumber = 1;
+  ::google::protobuf::int64 step_id() const;
+  void set_step_id(::google::protobuf::int64 value);
+
+  // @@protoc_insertion_point(class_scope:tensorflow.MemoryLogStep)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  ::google::protobuf::internal::ArenaStringPtr handle_;
+  ::google::protobuf::int64 step_id_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fframework_2flog_5fmemory_2eproto;
+};
+// -------------------------------------------------------------------
+
+class MemoryLogTensorAllocation : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.MemoryLogTensorAllocation) */ {
+ public:
+  MemoryLogTensorAllocation();
+  virtual ~MemoryLogTensorAllocation();
+
+  MemoryLogTensorAllocation(const MemoryLogTensorAllocation& from);
+
+  inline MemoryLogTensorAllocation& operator=(const MemoryLogTensorAllocation& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  MemoryLogTensorAllocation(MemoryLogTensorAllocation&& from) noexcept
+    : MemoryLogTensorAllocation() {
+    *this = ::std::move(from);
+  }
+
+  inline MemoryLogTensorAllocation& operator=(MemoryLogTensorAllocation&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const MemoryLogTensorAllocation& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const MemoryLogTensorAllocation* internal_default_instance() {
+    return reinterpret_cast<const MemoryLogTensorAllocation*>(
+               &_MemoryLogTensorAllocation_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    1;
+
+  void UnsafeArenaSwap(MemoryLogTensorAllocation* other);
+  void Swap(MemoryLogTensorAllocation* other);
+  friend void swap(MemoryLogTensorAllocation& a, MemoryLogTensorAllocation& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline MemoryLogTensorAllocation* New() const final {
+    return CreateMaybeMessage<MemoryLogTensorAllocation>(NULL);
+  }
+
+  MemoryLogTensorAllocation* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<MemoryLogTensorAllocation>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const MemoryLogTensorAllocation& from);
+  void MergeFrom(const MemoryLogTensorAllocation& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(MemoryLogTensorAllocation* other);
+  protected:
+  explicit MemoryLogTensorAllocation(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // string kernel_name = 2;
+  void clear_kernel_name();
+  static const int kKernelNameFieldNumber = 2;
+  const ::std::string& kernel_name() const;
+  void set_kernel_name(const ::std::string& value);
+  #if LANG_CXX11
+  void set_kernel_name(::std::string&& value);
+  #endif
+  void set_kernel_name(const char* value);
+  void set_kernel_name(const char* value, size_t size);
+  ::std::string* mutable_kernel_name();
+  ::std::string* release_kernel_name();
+  void set_allocated_kernel_name(::std::string* kernel_name);
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  ::std::string* unsafe_arena_release_kernel_name();
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  void unsafe_arena_set_allocated_kernel_name(
+      ::std::string* kernel_name);
+
+  // .tensorflow.TensorDescription tensor = 3;
+  bool has_tensor() const;
+  void clear_tensor();
+  static const int kTensorFieldNumber = 3;
+  const ::tensorflow::TensorDescription& tensor() const;
+  ::tensorflow::TensorDescription* release_tensor();
+  ::tensorflow::TensorDescription* mutable_tensor();
+  void set_allocated_tensor(::tensorflow::TensorDescription* tensor);
+  void unsafe_arena_set_allocated_tensor(
+      ::tensorflow::TensorDescription* tensor);
+  ::tensorflow::TensorDescription* unsafe_arena_release_tensor();
+
+  // int64 step_id = 1;
+  void clear_step_id();
+  static const int kStepIdFieldNumber = 1;
+  ::google::protobuf::int64 step_id() const;
+  void set_step_id(::google::protobuf::int64 value);
+
+  // @@protoc_insertion_point(class_scope:tensorflow.MemoryLogTensorAllocation)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  ::google::protobuf::internal::ArenaStringPtr kernel_name_;
+  ::tensorflow::TensorDescription* tensor_;
+  ::google::protobuf::int64 step_id_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fframework_2flog_5fmemory_2eproto;
+};
+// -------------------------------------------------------------------
+
+class MemoryLogTensorDeallocation : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.MemoryLogTensorDeallocation) */ {
+ public:
+  MemoryLogTensorDeallocation();
+  virtual ~MemoryLogTensorDeallocation();
+
+  MemoryLogTensorDeallocation(const MemoryLogTensorDeallocation& from);
+
+  inline MemoryLogTensorDeallocation& operator=(const MemoryLogTensorDeallocation& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  MemoryLogTensorDeallocation(MemoryLogTensorDeallocation&& from) noexcept
+    : MemoryLogTensorDeallocation() {
+    *this = ::std::move(from);
+  }
+
+  inline MemoryLogTensorDeallocation& operator=(MemoryLogTensorDeallocation&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const MemoryLogTensorDeallocation& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const MemoryLogTensorDeallocation* internal_default_instance() {
+    return reinterpret_cast<const MemoryLogTensorDeallocation*>(
+               &_MemoryLogTensorDeallocation_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    2;
+
+  void UnsafeArenaSwap(MemoryLogTensorDeallocation* other);
+  void Swap(MemoryLogTensorDeallocation* other);
+  friend void swap(MemoryLogTensorDeallocation& a, MemoryLogTensorDeallocation& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline MemoryLogTensorDeallocation* New() const final {
+    return CreateMaybeMessage<MemoryLogTensorDeallocation>(NULL);
+  }
+
+  MemoryLogTensorDeallocation* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<MemoryLogTensorDeallocation>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const MemoryLogTensorDeallocation& from);
+  void MergeFrom(const MemoryLogTensorDeallocation& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(MemoryLogTensorDeallocation* other);
+  protected:
+  explicit MemoryLogTensorDeallocation(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // string allocator_name = 2;
+  void clear_allocator_name();
+  static const int kAllocatorNameFieldNumber = 2;
+  const ::std::string& allocator_name() const;
+  void set_allocator_name(const ::std::string& value);
+  #if LANG_CXX11
+  void set_allocator_name(::std::string&& value);
+  #endif
+  void set_allocator_name(const char* value);
+  void set_allocator_name(const char* value, size_t size);
+  ::std::string* mutable_allocator_name();
+  ::std::string* release_allocator_name();
+  void set_allocated_allocator_name(::std::string* allocator_name);
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  ::std::string* unsafe_arena_release_allocator_name();
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  void unsafe_arena_set_allocated_allocator_name(
+      ::std::string* allocator_name);
+
+  // int64 allocation_id = 1;
+  void clear_allocation_id();
+  static const int kAllocationIdFieldNumber = 1;
+  ::google::protobuf::int64 allocation_id() const;
+  void set_allocation_id(::google::protobuf::int64 value);
+
+  // @@protoc_insertion_point(class_scope:tensorflow.MemoryLogTensorDeallocation)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  ::google::protobuf::internal::ArenaStringPtr allocator_name_;
+  ::google::protobuf::int64 allocation_id_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fframework_2flog_5fmemory_2eproto;
+};
+// -------------------------------------------------------------------
+
+class MemoryLogTensorOutput : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.MemoryLogTensorOutput) */ {
+ public:
+  MemoryLogTensorOutput();
+  virtual ~MemoryLogTensorOutput();
+
+  MemoryLogTensorOutput(const MemoryLogTensorOutput& from);
+
+  inline MemoryLogTensorOutput& operator=(const MemoryLogTensorOutput& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  MemoryLogTensorOutput(MemoryLogTensorOutput&& from) noexcept
+    : MemoryLogTensorOutput() {
+    *this = ::std::move(from);
+  }
+
+  inline MemoryLogTensorOutput& operator=(MemoryLogTensorOutput&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const MemoryLogTensorOutput& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const MemoryLogTensorOutput* internal_default_instance() {
+    return reinterpret_cast<const MemoryLogTensorOutput*>(
+               &_MemoryLogTensorOutput_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    3;
+
+  void UnsafeArenaSwap(MemoryLogTensorOutput* other);
+  void Swap(MemoryLogTensorOutput* other);
+  friend void swap(MemoryLogTensorOutput& a, MemoryLogTensorOutput& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline MemoryLogTensorOutput* New() const final {
+    return CreateMaybeMessage<MemoryLogTensorOutput>(NULL);
+  }
+
+  MemoryLogTensorOutput* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<MemoryLogTensorOutput>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const MemoryLogTensorOutput& from);
+  void MergeFrom(const MemoryLogTensorOutput& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(MemoryLogTensorOutput* other);
+  protected:
+  explicit MemoryLogTensorOutput(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // string kernel_name = 2;
+  void clear_kernel_name();
+  static const int kKernelNameFieldNumber = 2;
+  const ::std::string& kernel_name() const;
+  void set_kernel_name(const ::std::string& value);
+  #if LANG_CXX11
+  void set_kernel_name(::std::string&& value);
+  #endif
+  void set_kernel_name(const char* value);
+  void set_kernel_name(const char* value, size_t size);
+  ::std::string* mutable_kernel_name();
+  ::std::string* release_kernel_name();
+  void set_allocated_kernel_name(::std::string* kernel_name);
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  ::std::string* unsafe_arena_release_kernel_name();
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  void unsafe_arena_set_allocated_kernel_name(
+      ::std::string* kernel_name);
+
+  // .tensorflow.TensorDescription tensor = 4;
+  bool has_tensor() const;
+  void clear_tensor();
+  static const int kTensorFieldNumber = 4;
+  const ::tensorflow::TensorDescription& tensor() const;
+  ::tensorflow::TensorDescription* release_tensor();
+  ::tensorflow::TensorDescription* mutable_tensor();
+  void set_allocated_tensor(::tensorflow::TensorDescription* tensor);
+  void unsafe_arena_set_allocated_tensor(
+      ::tensorflow::TensorDescription* tensor);
+  ::tensorflow::TensorDescription* unsafe_arena_release_tensor();
+
+  // int64 step_id = 1;
+  void clear_step_id();
+  static const int kStepIdFieldNumber = 1;
+  ::google::protobuf::int64 step_id() const;
+  void set_step_id(::google::protobuf::int64 value);
+
+  // int32 index = 3;
+  void clear_index();
+  static const int kIndexFieldNumber = 3;
+  ::google::protobuf::int32 index() const;
+  void set_index(::google::protobuf::int32 value);
+
+  // @@protoc_insertion_point(class_scope:tensorflow.MemoryLogTensorOutput)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  ::google::protobuf::internal::ArenaStringPtr kernel_name_;
+  ::tensorflow::TensorDescription* tensor_;
+  ::google::protobuf::int64 step_id_;
+  ::google::protobuf::int32 index_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fframework_2flog_5fmemory_2eproto;
+};
+// -------------------------------------------------------------------
+
+class MemoryLogRawAllocation : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.MemoryLogRawAllocation) */ {
+ public:
+  MemoryLogRawAllocation();
+  virtual ~MemoryLogRawAllocation();
+
+  MemoryLogRawAllocation(const MemoryLogRawAllocation& from);
+
+  inline MemoryLogRawAllocation& operator=(const MemoryLogRawAllocation& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  MemoryLogRawAllocation(MemoryLogRawAllocation&& from) noexcept
+    : MemoryLogRawAllocation() {
+    *this = ::std::move(from);
+  }
+
+  inline MemoryLogRawAllocation& operator=(MemoryLogRawAllocation&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const MemoryLogRawAllocation& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const MemoryLogRawAllocation* internal_default_instance() {
+    return reinterpret_cast<const MemoryLogRawAllocation*>(
+               &_MemoryLogRawAllocation_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    4;
+
+  void UnsafeArenaSwap(MemoryLogRawAllocation* other);
+  void Swap(MemoryLogRawAllocation* other);
+  friend void swap(MemoryLogRawAllocation& a, MemoryLogRawAllocation& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline MemoryLogRawAllocation* New() const final {
+    return CreateMaybeMessage<MemoryLogRawAllocation>(NULL);
+  }
+
+  MemoryLogRawAllocation* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<MemoryLogRawAllocation>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const MemoryLogRawAllocation& from);
+  void MergeFrom(const MemoryLogRawAllocation& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(MemoryLogRawAllocation* other);
+  protected:
+  explicit MemoryLogRawAllocation(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // string operation = 2;
+  void clear_operation();
+  static const int kOperationFieldNumber = 2;
+  const ::std::string& operation() const;
+  void set_operation(const ::std::string& value);
+  #if LANG_CXX11
+  void set_operation(::std::string&& value);
+  #endif
+  void set_operation(const char* value);
+  void set_operation(const char* value, size_t size);
+  ::std::string* mutable_operation();
+  ::std::string* release_operation();
+  void set_allocated_operation(::std::string* operation);
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  ::std::string* unsafe_arena_release_operation();
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  void unsafe_arena_set_allocated_operation(
+      ::std::string* operation);
+
+  // string allocator_name = 6;
+  void clear_allocator_name();
+  static const int kAllocatorNameFieldNumber = 6;
+  const ::std::string& allocator_name() const;
+  void set_allocator_name(const ::std::string& value);
+  #if LANG_CXX11
+  void set_allocator_name(::std::string&& value);
+  #endif
+  void set_allocator_name(const char* value);
+  void set_allocator_name(const char* value, size_t size);
+  ::std::string* mutable_allocator_name();
+  ::std::string* release_allocator_name();
+  void set_allocated_allocator_name(::std::string* allocator_name);
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  ::std::string* unsafe_arena_release_allocator_name();
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  void unsafe_arena_set_allocated_allocator_name(
+      ::std::string* allocator_name);
+
+  // int64 step_id = 1;
+  void clear_step_id();
+  static const int kStepIdFieldNumber = 1;
+  ::google::protobuf::int64 step_id() const;
+  void set_step_id(::google::protobuf::int64 value);
+
+  // int64 num_bytes = 3;
+  void clear_num_bytes();
+  static const int kNumBytesFieldNumber = 3;
+  ::google::protobuf::int64 num_bytes() const;
+  void set_num_bytes(::google::protobuf::int64 value);
+
+  // uint64 ptr = 4;
+  void clear_ptr();
+  static const int kPtrFieldNumber = 4;
+  ::google::protobuf::uint64 ptr() const;
+  void set_ptr(::google::protobuf::uint64 value);
+
+  // int64 allocation_id = 5;
+  void clear_allocation_id();
+  static const int kAllocationIdFieldNumber = 5;
+  ::google::protobuf::int64 allocation_id() const;
+  void set_allocation_id(::google::protobuf::int64 value);
+
+  // @@protoc_insertion_point(class_scope:tensorflow.MemoryLogRawAllocation)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  ::google::protobuf::internal::ArenaStringPtr operation_;
+  ::google::protobuf::internal::ArenaStringPtr allocator_name_;
+  ::google::protobuf::int64 step_id_;
+  ::google::protobuf::int64 num_bytes_;
+  ::google::protobuf::uint64 ptr_;
+  ::google::protobuf::int64 allocation_id_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fframework_2flog_5fmemory_2eproto;
+};
+// -------------------------------------------------------------------
+
+class MemoryLogRawDeallocation : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.MemoryLogRawDeallocation) */ {
+ public:
+  MemoryLogRawDeallocation();
+  virtual ~MemoryLogRawDeallocation();
+
+  MemoryLogRawDeallocation(const MemoryLogRawDeallocation& from);
+
+  inline MemoryLogRawDeallocation& operator=(const MemoryLogRawDeallocation& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  MemoryLogRawDeallocation(MemoryLogRawDeallocation&& from) noexcept
+    : MemoryLogRawDeallocation() {
+    *this = ::std::move(from);
+  }
+
+  inline MemoryLogRawDeallocation& operator=(MemoryLogRawDeallocation&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const MemoryLogRawDeallocation& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const MemoryLogRawDeallocation* internal_default_instance() {
+    return reinterpret_cast<const MemoryLogRawDeallocation*>(
+               &_MemoryLogRawDeallocation_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    5;
+
+  void UnsafeArenaSwap(MemoryLogRawDeallocation* other);
+  void Swap(MemoryLogRawDeallocation* other);
+  friend void swap(MemoryLogRawDeallocation& a, MemoryLogRawDeallocation& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline MemoryLogRawDeallocation* New() const final {
+    return CreateMaybeMessage<MemoryLogRawDeallocation>(NULL);
+  }
+
+  MemoryLogRawDeallocation* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<MemoryLogRawDeallocation>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const MemoryLogRawDeallocation& from);
+  void MergeFrom(const MemoryLogRawDeallocation& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(MemoryLogRawDeallocation* other);
+  protected:
+  explicit MemoryLogRawDeallocation(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // string operation = 2;
+  void clear_operation();
+  static const int kOperationFieldNumber = 2;
+  const ::std::string& operation() const;
+  void set_operation(const ::std::string& value);
+  #if LANG_CXX11
+  void set_operation(::std::string&& value);
+  #endif
+  void set_operation(const char* value);
+  void set_operation(const char* value, size_t size);
+  ::std::string* mutable_operation();
+  ::std::string* release_operation();
+  void set_allocated_operation(::std::string* operation);
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  ::std::string* unsafe_arena_release_operation();
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  void unsafe_arena_set_allocated_operation(
+      ::std::string* operation);
+
+  // string allocator_name = 4;
+  void clear_allocator_name();
+  static const int kAllocatorNameFieldNumber = 4;
+  const ::std::string& allocator_name() const;
+  void set_allocator_name(const ::std::string& value);
+  #if LANG_CXX11
+  void set_allocator_name(::std::string&& value);
+  #endif
+  void set_allocator_name(const char* value);
+  void set_allocator_name(const char* value, size_t size);
+  ::std::string* mutable_allocator_name();
+  ::std::string* release_allocator_name();
+  void set_allocated_allocator_name(::std::string* allocator_name);
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  ::std::string* unsafe_arena_release_allocator_name();
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  void unsafe_arena_set_allocated_allocator_name(
+      ::std::string* allocator_name);
+
+  // int64 step_id = 1;
+  void clear_step_id();
+  static const int kStepIdFieldNumber = 1;
+  ::google::protobuf::int64 step_id() const;
+  void set_step_id(::google::protobuf::int64 value);
+
+  // int64 allocation_id = 3;
+  void clear_allocation_id();
+  static const int kAllocationIdFieldNumber = 3;
+  ::google::protobuf::int64 allocation_id() const;
+  void set_allocation_id(::google::protobuf::int64 value);
+
+  // bool deferred = 5;
+  void clear_deferred();
+  static const int kDeferredFieldNumber = 5;
+  bool deferred() const;
+  void set_deferred(bool value);
+
+  // @@protoc_insertion_point(class_scope:tensorflow.MemoryLogRawDeallocation)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  ::google::protobuf::internal::ArenaStringPtr operation_;
+  ::google::protobuf::internal::ArenaStringPtr allocator_name_;
+  ::google::protobuf::int64 step_id_;
+  ::google::protobuf::int64 allocation_id_;
+  bool deferred_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fframework_2flog_5fmemory_2eproto;
+};
+// ===================================================================
+
+
+// ===================================================================
+
+#ifdef __GNUC__
+  #pragma GCC diagnostic push
+  #pragma GCC diagnostic ignored "-Wstrict-aliasing"
+#endif  // __GNUC__
+// MemoryLogStep
+
+// int64 step_id = 1;
+inline void MemoryLogStep::clear_step_id() {
+  step_id_ = PROTOBUF_LONGLONG(0);
+}
+inline ::google::protobuf::int64 MemoryLogStep::step_id() const {
+  // @@protoc_insertion_point(field_get:tensorflow.MemoryLogStep.step_id)
+  return step_id_;
+}
+inline void MemoryLogStep::set_step_id(::google::protobuf::int64 value) {
+  
+  step_id_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.MemoryLogStep.step_id)
+}
+
+// string handle = 2;
+inline void MemoryLogStep::clear_handle() {
+  handle_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline const ::std::string& MemoryLogStep::handle() const {
+  // @@protoc_insertion_point(field_get:tensorflow.MemoryLogStep.handle)
+  return handle_.Get();
+}
+inline void MemoryLogStep::set_handle(const ::std::string& value) {
+  
+  handle_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set:tensorflow.MemoryLogStep.handle)
+}
+#if LANG_CXX11
+inline void MemoryLogStep::set_handle(::std::string&& value) {
+  
+  handle_.Set(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.MemoryLogStep.handle)
+}
+#endif
+inline void MemoryLogStep::set_handle(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  handle_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
+              GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_char:tensorflow.MemoryLogStep.handle)
+}
+inline void MemoryLogStep::set_handle(const char* value,
+    size_t size) {
+  
+  handle_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
+      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.MemoryLogStep.handle)
+}
+inline ::std::string* MemoryLogStep::mutable_handle() {
+  
+  // @@protoc_insertion_point(field_mutable:tensorflow.MemoryLogStep.handle)
+  return handle_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline ::std::string* MemoryLogStep::release_handle() {
+  // @@protoc_insertion_point(field_release:tensorflow.MemoryLogStep.handle)
+  
+  return handle_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline void MemoryLogStep::set_allocated_handle(::std::string* handle) {
+  if (handle != NULL) {
+    
+  } else {
+    
+  }
+  handle_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), handle,
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.MemoryLogStep.handle)
+}
+inline ::std::string* MemoryLogStep::unsafe_arena_release_handle() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.MemoryLogStep.handle)
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  
+  return handle_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      GetArenaNoVirtual());
+}
+inline void MemoryLogStep::unsafe_arena_set_allocated_handle(
+    ::std::string* handle) {
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (handle != NULL) {
+    
+  } else {
+    
+  }
+  handle_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      handle, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.MemoryLogStep.handle)
+}
+
+// -------------------------------------------------------------------
+
+// MemoryLogTensorAllocation
+
+// int64 step_id = 1;
+inline void MemoryLogTensorAllocation::clear_step_id() {
+  step_id_ = PROTOBUF_LONGLONG(0);
+}
+inline ::google::protobuf::int64 MemoryLogTensorAllocation::step_id() const {
+  // @@protoc_insertion_point(field_get:tensorflow.MemoryLogTensorAllocation.step_id)
+  return step_id_;
+}
+inline void MemoryLogTensorAllocation::set_step_id(::google::protobuf::int64 value) {
+  
+  step_id_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.MemoryLogTensorAllocation.step_id)
+}
+
+// string kernel_name = 2;
+inline void MemoryLogTensorAllocation::clear_kernel_name() {
+  kernel_name_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline const ::std::string& MemoryLogTensorAllocation::kernel_name() const {
+  // @@protoc_insertion_point(field_get:tensorflow.MemoryLogTensorAllocation.kernel_name)
+  return kernel_name_.Get();
+}
+inline void MemoryLogTensorAllocation::set_kernel_name(const ::std::string& value) {
+  
+  kernel_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set:tensorflow.MemoryLogTensorAllocation.kernel_name)
+}
+#if LANG_CXX11
+inline void MemoryLogTensorAllocation::set_kernel_name(::std::string&& value) {
+  
+  kernel_name_.Set(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.MemoryLogTensorAllocation.kernel_name)
+}
+#endif
+inline void MemoryLogTensorAllocation::set_kernel_name(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  kernel_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
+              GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_char:tensorflow.MemoryLogTensorAllocation.kernel_name)
+}
+inline void MemoryLogTensorAllocation::set_kernel_name(const char* value,
+    size_t size) {
+  
+  kernel_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
+      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.MemoryLogTensorAllocation.kernel_name)
+}
+inline ::std::string* MemoryLogTensorAllocation::mutable_kernel_name() {
+  
+  // @@protoc_insertion_point(field_mutable:tensorflow.MemoryLogTensorAllocation.kernel_name)
+  return kernel_name_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline ::std::string* MemoryLogTensorAllocation::release_kernel_name() {
+  // @@protoc_insertion_point(field_release:tensorflow.MemoryLogTensorAllocation.kernel_name)
+  
+  return kernel_name_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline void MemoryLogTensorAllocation::set_allocated_kernel_name(::std::string* kernel_name) {
+  if (kernel_name != NULL) {
+    
+  } else {
+    
+  }
+  kernel_name_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), kernel_name,
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.MemoryLogTensorAllocation.kernel_name)
+}
+inline ::std::string* MemoryLogTensorAllocation::unsafe_arena_release_kernel_name() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.MemoryLogTensorAllocation.kernel_name)
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  
+  return kernel_name_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      GetArenaNoVirtual());
+}
+inline void MemoryLogTensorAllocation::unsafe_arena_set_allocated_kernel_name(
+    ::std::string* kernel_name) {
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (kernel_name != NULL) {
+    
+  } else {
+    
+  }
+  kernel_name_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      kernel_name, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.MemoryLogTensorAllocation.kernel_name)
+}
+
+// .tensorflow.TensorDescription tensor = 3;
+inline bool MemoryLogTensorAllocation::has_tensor() const {
+  return this != internal_default_instance() && tensor_ != NULL;
+}
+inline const ::tensorflow::TensorDescription& MemoryLogTensorAllocation::tensor() const {
+  const ::tensorflow::TensorDescription* p = tensor_;
+  // @@protoc_insertion_point(field_get:tensorflow.MemoryLogTensorAllocation.tensor)
+  return p != NULL ? *p : *reinterpret_cast<const ::tensorflow::TensorDescription*>(
+      &::tensorflow::_TensorDescription_default_instance_);
+}
+inline ::tensorflow::TensorDescription* MemoryLogTensorAllocation::release_tensor() {
+  // @@protoc_insertion_point(field_release:tensorflow.MemoryLogTensorAllocation.tensor)
+  
+  ::tensorflow::TensorDescription* temp = tensor_;
+  if (GetArenaNoVirtual() != NULL) {
+    temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
+  }
+  tensor_ = NULL;
+  return temp;
+}
+inline ::tensorflow::TensorDescription* MemoryLogTensorAllocation::unsafe_arena_release_tensor() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.MemoryLogTensorAllocation.tensor)
+  
+  ::tensorflow::TensorDescription* temp = tensor_;
+  tensor_ = NULL;
+  return temp;
+}
+inline ::tensorflow::TensorDescription* MemoryLogTensorAllocation::mutable_tensor() {
+  
+  if (tensor_ == NULL) {
+    auto* p = CreateMaybeMessage<::tensorflow::TensorDescription>(GetArenaNoVirtual());
+    tensor_ = p;
+  }
+  // @@protoc_insertion_point(field_mutable:tensorflow.MemoryLogTensorAllocation.tensor)
+  return tensor_;
+}
+inline void MemoryLogTensorAllocation::set_allocated_tensor(::tensorflow::TensorDescription* tensor) {
+  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
+  if (message_arena == NULL) {
+    delete reinterpret_cast< ::google::protobuf::MessageLite*>(tensor_);
+  }
+  if (tensor) {
+    ::google::protobuf::Arena* submessage_arena =
+      reinterpret_cast<::google::protobuf::MessageLite*>(tensor)->GetArena();
+    if (message_arena != submessage_arena) {
+      tensor = ::google::protobuf::internal::GetOwnedMessage(
+          message_arena, tensor, submessage_arena);
+    }
+    
+  } else {
+    
+  }
+  tensor_ = tensor;
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.MemoryLogTensorAllocation.tensor)
+}
+
+// -------------------------------------------------------------------
+
+// MemoryLogTensorDeallocation
+
+// int64 allocation_id = 1;
+inline void MemoryLogTensorDeallocation::clear_allocation_id() {
+  allocation_id_ = PROTOBUF_LONGLONG(0);
+}
+inline ::google::protobuf::int64 MemoryLogTensorDeallocation::allocation_id() const {
+  // @@protoc_insertion_point(field_get:tensorflow.MemoryLogTensorDeallocation.allocation_id)
+  return allocation_id_;
+}
+inline void MemoryLogTensorDeallocation::set_allocation_id(::google::protobuf::int64 value) {
+  
+  allocation_id_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.MemoryLogTensorDeallocation.allocation_id)
+}
+
+// string allocator_name = 2;
+inline void MemoryLogTensorDeallocation::clear_allocator_name() {
+  allocator_name_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline const ::std::string& MemoryLogTensorDeallocation::allocator_name() const {
+  // @@protoc_insertion_point(field_get:tensorflow.MemoryLogTensorDeallocation.allocator_name)
+  return allocator_name_.Get();
+}
+inline void MemoryLogTensorDeallocation::set_allocator_name(const ::std::string& value) {
+  
+  allocator_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set:tensorflow.MemoryLogTensorDeallocation.allocator_name)
+}
+#if LANG_CXX11
+inline void MemoryLogTensorDeallocation::set_allocator_name(::std::string&& value) {
+  
+  allocator_name_.Set(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.MemoryLogTensorDeallocation.allocator_name)
+}
+#endif
+inline void MemoryLogTensorDeallocation::set_allocator_name(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  allocator_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
+              GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_char:tensorflow.MemoryLogTensorDeallocation.allocator_name)
+}
+inline void MemoryLogTensorDeallocation::set_allocator_name(const char* value,
+    size_t size) {
+  
+  allocator_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
+      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.MemoryLogTensorDeallocation.allocator_name)
+}
+inline ::std::string* MemoryLogTensorDeallocation::mutable_allocator_name() {
+  
+  // @@protoc_insertion_point(field_mutable:tensorflow.MemoryLogTensorDeallocation.allocator_name)
+  return allocator_name_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline ::std::string* MemoryLogTensorDeallocation::release_allocator_name() {
+  // @@protoc_insertion_point(field_release:tensorflow.MemoryLogTensorDeallocation.allocator_name)
+  
+  return allocator_name_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline void MemoryLogTensorDeallocation::set_allocated_allocator_name(::std::string* allocator_name) {
+  if (allocator_name != NULL) {
+    
+  } else {
+    
+  }
+  allocator_name_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), allocator_name,
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.MemoryLogTensorDeallocation.allocator_name)
+}
+inline ::std::string* MemoryLogTensorDeallocation::unsafe_arena_release_allocator_name() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.MemoryLogTensorDeallocation.allocator_name)
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  
+  return allocator_name_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      GetArenaNoVirtual());
+}
+inline void MemoryLogTensorDeallocation::unsafe_arena_set_allocated_allocator_name(
+    ::std::string* allocator_name) {
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (allocator_name != NULL) {
+    
+  } else {
+    
+  }
+  allocator_name_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      allocator_name, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.MemoryLogTensorDeallocation.allocator_name)
+}
+
+// -------------------------------------------------------------------
+
+// MemoryLogTensorOutput
+
+// int64 step_id = 1;
+inline void MemoryLogTensorOutput::clear_step_id() {
+  step_id_ = PROTOBUF_LONGLONG(0);
+}
+inline ::google::protobuf::int64 MemoryLogTensorOutput::step_id() const {
+  // @@protoc_insertion_point(field_get:tensorflow.MemoryLogTensorOutput.step_id)
+  return step_id_;
+}
+inline void MemoryLogTensorOutput::set_step_id(::google::protobuf::int64 value) {
+  
+  step_id_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.MemoryLogTensorOutput.step_id)
+}
+
+// string kernel_name = 2;
+inline void MemoryLogTensorOutput::clear_kernel_name() {
+  kernel_name_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline const ::std::string& MemoryLogTensorOutput::kernel_name() const {
+  // @@protoc_insertion_point(field_get:tensorflow.MemoryLogTensorOutput.kernel_name)
+  return kernel_name_.Get();
+}
+inline void MemoryLogTensorOutput::set_kernel_name(const ::std::string& value) {
+  
+  kernel_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set:tensorflow.MemoryLogTensorOutput.kernel_name)
+}
+#if LANG_CXX11
+inline void MemoryLogTensorOutput::set_kernel_name(::std::string&& value) {
+  
+  kernel_name_.Set(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.MemoryLogTensorOutput.kernel_name)
+}
+#endif
+inline void MemoryLogTensorOutput::set_kernel_name(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  kernel_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
+              GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_char:tensorflow.MemoryLogTensorOutput.kernel_name)
+}
+inline void MemoryLogTensorOutput::set_kernel_name(const char* value,
+    size_t size) {
+  
+  kernel_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
+      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.MemoryLogTensorOutput.kernel_name)
+}
+inline ::std::string* MemoryLogTensorOutput::mutable_kernel_name() {
+  
+  // @@protoc_insertion_point(field_mutable:tensorflow.MemoryLogTensorOutput.kernel_name)
+  return kernel_name_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline ::std::string* MemoryLogTensorOutput::release_kernel_name() {
+  // @@protoc_insertion_point(field_release:tensorflow.MemoryLogTensorOutput.kernel_name)
+  
+  return kernel_name_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline void MemoryLogTensorOutput::set_allocated_kernel_name(::std::string* kernel_name) {
+  if (kernel_name != NULL) {
+    
+  } else {
+    
+  }
+  kernel_name_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), kernel_name,
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.MemoryLogTensorOutput.kernel_name)
+}
+inline ::std::string* MemoryLogTensorOutput::unsafe_arena_release_kernel_name() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.MemoryLogTensorOutput.kernel_name)
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  
+  return kernel_name_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      GetArenaNoVirtual());
+}
+inline void MemoryLogTensorOutput::unsafe_arena_set_allocated_kernel_name(
+    ::std::string* kernel_name) {
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (kernel_name != NULL) {
+    
+  } else {
+    
+  }
+  kernel_name_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      kernel_name, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.MemoryLogTensorOutput.kernel_name)
+}
+
+// int32 index = 3;
+inline void MemoryLogTensorOutput::clear_index() {
+  index_ = 0;
+}
+inline ::google::protobuf::int32 MemoryLogTensorOutput::index() const {
+  // @@protoc_insertion_point(field_get:tensorflow.MemoryLogTensorOutput.index)
+  return index_;
+}
+inline void MemoryLogTensorOutput::set_index(::google::protobuf::int32 value) {
+  
+  index_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.MemoryLogTensorOutput.index)
+}
+
+// .tensorflow.TensorDescription tensor = 4;
+inline bool MemoryLogTensorOutput::has_tensor() const {
+  return this != internal_default_instance() && tensor_ != NULL;
+}
+inline const ::tensorflow::TensorDescription& MemoryLogTensorOutput::tensor() const {
+  const ::tensorflow::TensorDescription* p = tensor_;
+  // @@protoc_insertion_point(field_get:tensorflow.MemoryLogTensorOutput.tensor)
+  return p != NULL ? *p : *reinterpret_cast<const ::tensorflow::TensorDescription*>(
+      &::tensorflow::_TensorDescription_default_instance_);
+}
+inline ::tensorflow::TensorDescription* MemoryLogTensorOutput::release_tensor() {
+  // @@protoc_insertion_point(field_release:tensorflow.MemoryLogTensorOutput.tensor)
+  
+  ::tensorflow::TensorDescription* temp = tensor_;
+  if (GetArenaNoVirtual() != NULL) {
+    temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
+  }
+  tensor_ = NULL;
+  return temp;
+}
+inline ::tensorflow::TensorDescription* MemoryLogTensorOutput::unsafe_arena_release_tensor() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.MemoryLogTensorOutput.tensor)
+  
+  ::tensorflow::TensorDescription* temp = tensor_;
+  tensor_ = NULL;
+  return temp;
+}
+inline ::tensorflow::TensorDescription* MemoryLogTensorOutput::mutable_tensor() {
+  
+  if (tensor_ == NULL) {
+    auto* p = CreateMaybeMessage<::tensorflow::TensorDescription>(GetArenaNoVirtual());
+    tensor_ = p;
+  }
+  // @@protoc_insertion_point(field_mutable:tensorflow.MemoryLogTensorOutput.tensor)
+  return tensor_;
+}
+inline void MemoryLogTensorOutput::set_allocated_tensor(::tensorflow::TensorDescription* tensor) {
+  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
+  if (message_arena == NULL) {
+    delete reinterpret_cast< ::google::protobuf::MessageLite*>(tensor_);
+  }
+  if (tensor) {
+    ::google::protobuf::Arena* submessage_arena =
+      reinterpret_cast<::google::protobuf::MessageLite*>(tensor)->GetArena();
+    if (message_arena != submessage_arena) {
+      tensor = ::google::protobuf::internal::GetOwnedMessage(
+          message_arena, tensor, submessage_arena);
+    }
+    
+  } else {
+    
+  }
+  tensor_ = tensor;
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.MemoryLogTensorOutput.tensor)
+}
+
+// -------------------------------------------------------------------
+
+// MemoryLogRawAllocation
+
+// int64 step_id = 1;
+inline void MemoryLogRawAllocation::clear_step_id() {
+  step_id_ = PROTOBUF_LONGLONG(0);
+}
+inline ::google::protobuf::int64 MemoryLogRawAllocation::step_id() const {
+  // @@protoc_insertion_point(field_get:tensorflow.MemoryLogRawAllocation.step_id)
+  return step_id_;
+}
+inline void MemoryLogRawAllocation::set_step_id(::google::protobuf::int64 value) {
+  
+  step_id_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.MemoryLogRawAllocation.step_id)
+}
+
+// string operation = 2;
+inline void MemoryLogRawAllocation::clear_operation() {
+  operation_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline const ::std::string& MemoryLogRawAllocation::operation() const {
+  // @@protoc_insertion_point(field_get:tensorflow.MemoryLogRawAllocation.operation)
+  return operation_.Get();
+}
+inline void MemoryLogRawAllocation::set_operation(const ::std::string& value) {
+  
+  operation_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set:tensorflow.MemoryLogRawAllocation.operation)
+}
+#if LANG_CXX11
+inline void MemoryLogRawAllocation::set_operation(::std::string&& value) {
+  
+  operation_.Set(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.MemoryLogRawAllocation.operation)
+}
+#endif
+inline void MemoryLogRawAllocation::set_operation(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  operation_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
+              GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_char:tensorflow.MemoryLogRawAllocation.operation)
+}
+inline void MemoryLogRawAllocation::set_operation(const char* value,
+    size_t size) {
+  
+  operation_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
+      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.MemoryLogRawAllocation.operation)
+}
+inline ::std::string* MemoryLogRawAllocation::mutable_operation() {
+  
+  // @@protoc_insertion_point(field_mutable:tensorflow.MemoryLogRawAllocation.operation)
+  return operation_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline ::std::string* MemoryLogRawAllocation::release_operation() {
+  // @@protoc_insertion_point(field_release:tensorflow.MemoryLogRawAllocation.operation)
+  
+  return operation_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline void MemoryLogRawAllocation::set_allocated_operation(::std::string* operation) {
+  if (operation != NULL) {
+    
+  } else {
+    
+  }
+  operation_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), operation,
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.MemoryLogRawAllocation.operation)
+}
+inline ::std::string* MemoryLogRawAllocation::unsafe_arena_release_operation() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.MemoryLogRawAllocation.operation)
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  
+  return operation_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      GetArenaNoVirtual());
+}
+inline void MemoryLogRawAllocation::unsafe_arena_set_allocated_operation(
+    ::std::string* operation) {
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (operation != NULL) {
+    
+  } else {
+    
+  }
+  operation_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      operation, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.MemoryLogRawAllocation.operation)
+}
+
+// int64 num_bytes = 3;
+inline void MemoryLogRawAllocation::clear_num_bytes() {
+  num_bytes_ = PROTOBUF_LONGLONG(0);
+}
+inline ::google::protobuf::int64 MemoryLogRawAllocation::num_bytes() const {
+  // @@protoc_insertion_point(field_get:tensorflow.MemoryLogRawAllocation.num_bytes)
+  return num_bytes_;
+}
+inline void MemoryLogRawAllocation::set_num_bytes(::google::protobuf::int64 value) {
+  
+  num_bytes_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.MemoryLogRawAllocation.num_bytes)
+}
+
+// uint64 ptr = 4;
+inline void MemoryLogRawAllocation::clear_ptr() {
+  ptr_ = PROTOBUF_ULONGLONG(0);
+}
+inline ::google::protobuf::uint64 MemoryLogRawAllocation::ptr() const {
+  // @@protoc_insertion_point(field_get:tensorflow.MemoryLogRawAllocation.ptr)
+  return ptr_;
+}
+inline void MemoryLogRawAllocation::set_ptr(::google::protobuf::uint64 value) {
+  
+  ptr_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.MemoryLogRawAllocation.ptr)
+}
+
+// int64 allocation_id = 5;
+inline void MemoryLogRawAllocation::clear_allocation_id() {
+  allocation_id_ = PROTOBUF_LONGLONG(0);
+}
+inline ::google::protobuf::int64 MemoryLogRawAllocation::allocation_id() const {
+  // @@protoc_insertion_point(field_get:tensorflow.MemoryLogRawAllocation.allocation_id)
+  return allocation_id_;
+}
+inline void MemoryLogRawAllocation::set_allocation_id(::google::protobuf::int64 value) {
+  
+  allocation_id_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.MemoryLogRawAllocation.allocation_id)
+}
+
+// string allocator_name = 6;
+inline void MemoryLogRawAllocation::clear_allocator_name() {
+  allocator_name_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline const ::std::string& MemoryLogRawAllocation::allocator_name() const {
+  // @@protoc_insertion_point(field_get:tensorflow.MemoryLogRawAllocation.allocator_name)
+  return allocator_name_.Get();
+}
+inline void MemoryLogRawAllocation::set_allocator_name(const ::std::string& value) {
+  
+  allocator_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set:tensorflow.MemoryLogRawAllocation.allocator_name)
+}
+#if LANG_CXX11
+inline void MemoryLogRawAllocation::set_allocator_name(::std::string&& value) {
+  
+  allocator_name_.Set(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.MemoryLogRawAllocation.allocator_name)
+}
+#endif
+inline void MemoryLogRawAllocation::set_allocator_name(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  allocator_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
+              GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_char:tensorflow.MemoryLogRawAllocation.allocator_name)
+}
+inline void MemoryLogRawAllocation::set_allocator_name(const char* value,
+    size_t size) {
+  
+  allocator_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
+      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.MemoryLogRawAllocation.allocator_name)
+}
+inline ::std::string* MemoryLogRawAllocation::mutable_allocator_name() {
+  
+  // @@protoc_insertion_point(field_mutable:tensorflow.MemoryLogRawAllocation.allocator_name)
+  return allocator_name_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline ::std::string* MemoryLogRawAllocation::release_allocator_name() {
+  // @@protoc_insertion_point(field_release:tensorflow.MemoryLogRawAllocation.allocator_name)
+  
+  return allocator_name_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline void MemoryLogRawAllocation::set_allocated_allocator_name(::std::string* allocator_name) {
+  if (allocator_name != NULL) {
+    
+  } else {
+    
+  }
+  allocator_name_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), allocator_name,
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.MemoryLogRawAllocation.allocator_name)
+}
+inline ::std::string* MemoryLogRawAllocation::unsafe_arena_release_allocator_name() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.MemoryLogRawAllocation.allocator_name)
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  
+  return allocator_name_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      GetArenaNoVirtual());
+}
+inline void MemoryLogRawAllocation::unsafe_arena_set_allocated_allocator_name(
+    ::std::string* allocator_name) {
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (allocator_name != NULL) {
+    
+  } else {
+    
+  }
+  allocator_name_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      allocator_name, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.MemoryLogRawAllocation.allocator_name)
+}
+
+// -------------------------------------------------------------------
+
+// MemoryLogRawDeallocation
+
+// int64 step_id = 1;
+inline void MemoryLogRawDeallocation::clear_step_id() {
+  step_id_ = PROTOBUF_LONGLONG(0);
+}
+inline ::google::protobuf::int64 MemoryLogRawDeallocation::step_id() const {
+  // @@protoc_insertion_point(field_get:tensorflow.MemoryLogRawDeallocation.step_id)
+  return step_id_;
+}
+inline void MemoryLogRawDeallocation::set_step_id(::google::protobuf::int64 value) {
+  
+  step_id_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.MemoryLogRawDeallocation.step_id)
+}
+
+// string operation = 2;
+inline void MemoryLogRawDeallocation::clear_operation() {
+  operation_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline const ::std::string& MemoryLogRawDeallocation::operation() const {
+  // @@protoc_insertion_point(field_get:tensorflow.MemoryLogRawDeallocation.operation)
+  return operation_.Get();
+}
+inline void MemoryLogRawDeallocation::set_operation(const ::std::string& value) {
+  
+  operation_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set:tensorflow.MemoryLogRawDeallocation.operation)
+}
+#if LANG_CXX11
+inline void MemoryLogRawDeallocation::set_operation(::std::string&& value) {
+  
+  operation_.Set(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.MemoryLogRawDeallocation.operation)
+}
+#endif
+inline void MemoryLogRawDeallocation::set_operation(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  operation_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
+              GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_char:tensorflow.MemoryLogRawDeallocation.operation)
+}
+inline void MemoryLogRawDeallocation::set_operation(const char* value,
+    size_t size) {
+  
+  operation_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
+      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.MemoryLogRawDeallocation.operation)
+}
+inline ::std::string* MemoryLogRawDeallocation::mutable_operation() {
+  
+  // @@protoc_insertion_point(field_mutable:tensorflow.MemoryLogRawDeallocation.operation)
+  return operation_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline ::std::string* MemoryLogRawDeallocation::release_operation() {
+  // @@protoc_insertion_point(field_release:tensorflow.MemoryLogRawDeallocation.operation)
+  
+  return operation_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline void MemoryLogRawDeallocation::set_allocated_operation(::std::string* operation) {
+  if (operation != NULL) {
+    
+  } else {
+    
+  }
+  operation_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), operation,
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.MemoryLogRawDeallocation.operation)
+}
+inline ::std::string* MemoryLogRawDeallocation::unsafe_arena_release_operation() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.MemoryLogRawDeallocation.operation)
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  
+  return operation_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      GetArenaNoVirtual());
+}
+inline void MemoryLogRawDeallocation::unsafe_arena_set_allocated_operation(
+    ::std::string* operation) {
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (operation != NULL) {
+    
+  } else {
+    
+  }
+  operation_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      operation, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.MemoryLogRawDeallocation.operation)
+}
+
+// int64 allocation_id = 3;
+inline void MemoryLogRawDeallocation::clear_allocation_id() {
+  allocation_id_ = PROTOBUF_LONGLONG(0);
+}
+inline ::google::protobuf::int64 MemoryLogRawDeallocation::allocation_id() const {
+  // @@protoc_insertion_point(field_get:tensorflow.MemoryLogRawDeallocation.allocation_id)
+  return allocation_id_;
+}
+inline void MemoryLogRawDeallocation::set_allocation_id(::google::protobuf::int64 value) {
+  
+  allocation_id_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.MemoryLogRawDeallocation.allocation_id)
+}
+
+// string allocator_name = 4;
+inline void MemoryLogRawDeallocation::clear_allocator_name() {
+  allocator_name_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline const ::std::string& MemoryLogRawDeallocation::allocator_name() const {
+  // @@protoc_insertion_point(field_get:tensorflow.MemoryLogRawDeallocation.allocator_name)
+  return allocator_name_.Get();
+}
+inline void MemoryLogRawDeallocation::set_allocator_name(const ::std::string& value) {
+  
+  allocator_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set:tensorflow.MemoryLogRawDeallocation.allocator_name)
+}
+#if LANG_CXX11
+inline void MemoryLogRawDeallocation::set_allocator_name(::std::string&& value) {
+  
+  allocator_name_.Set(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.MemoryLogRawDeallocation.allocator_name)
+}
+#endif
+inline void MemoryLogRawDeallocation::set_allocator_name(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  allocator_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
+              GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_char:tensorflow.MemoryLogRawDeallocation.allocator_name)
+}
+inline void MemoryLogRawDeallocation::set_allocator_name(const char* value,
+    size_t size) {
+  
+  allocator_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
+      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.MemoryLogRawDeallocation.allocator_name)
+}
+inline ::std::string* MemoryLogRawDeallocation::mutable_allocator_name() {
+  
+  // @@protoc_insertion_point(field_mutable:tensorflow.MemoryLogRawDeallocation.allocator_name)
+  return allocator_name_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline ::std::string* MemoryLogRawDeallocation::release_allocator_name() {
+  // @@protoc_insertion_point(field_release:tensorflow.MemoryLogRawDeallocation.allocator_name)
+  
+  return allocator_name_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline void MemoryLogRawDeallocation::set_allocated_allocator_name(::std::string* allocator_name) {
+  if (allocator_name != NULL) {
+    
+  } else {
+    
+  }
+  allocator_name_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), allocator_name,
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.MemoryLogRawDeallocation.allocator_name)
+}
+inline ::std::string* MemoryLogRawDeallocation::unsafe_arena_release_allocator_name() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.MemoryLogRawDeallocation.allocator_name)
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  
+  return allocator_name_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      GetArenaNoVirtual());
+}
+inline void MemoryLogRawDeallocation::unsafe_arena_set_allocated_allocator_name(
+    ::std::string* allocator_name) {
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (allocator_name != NULL) {
+    
+  } else {
+    
+  }
+  allocator_name_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      allocator_name, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.MemoryLogRawDeallocation.allocator_name)
+}
+
+// bool deferred = 5;
+inline void MemoryLogRawDeallocation::clear_deferred() {
+  deferred_ = false;
+}
+inline bool MemoryLogRawDeallocation::deferred() const {
+  // @@protoc_insertion_point(field_get:tensorflow.MemoryLogRawDeallocation.deferred)
+  return deferred_;
+}
+inline void MemoryLogRawDeallocation::set_deferred(bool value) {
+  
+  deferred_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.MemoryLogRawDeallocation.deferred)
+}
+
+#ifdef __GNUC__
+  #pragma GCC diagnostic pop
+#endif  // __GNUC__
+// -------------------------------------------------------------------
+
+// -------------------------------------------------------------------
+
+// -------------------------------------------------------------------
+
+// -------------------------------------------------------------------
+
+// -------------------------------------------------------------------
+
+
+// @@protoc_insertion_point(namespace_scope)
+
+}  // namespace tensorflow
+
+// @@protoc_insertion_point(global_scope)
+
+#include <google/protobuf/port_undef.inc>
+#endif  // PROTOBUF_INCLUDED_tensorflow_2fcore_2fframework_2flog_5fmemory_2eproto
diff --git a/tensorflow/core/framework/log_memory.proto b/tensorflow/core/framework/log_memory.proto
new file mode 100644 (file)
index 0000000..7f37ead
--- /dev/null
@@ -0,0 +1,93 @@
+syntax = "proto3";
+
+package tensorflow;
+option cc_enable_arenas = true;
+option java_outer_classname = "LogMemoryProtos";
+option java_multiple_files = true;
+option java_package = "org.tensorflow.framework";
+option go_package = "github.com/tensorflow/tensorflow/tensorflow/go/core/framework";
+import "tensorflow/core/framework/tensor_description.proto";
+
+message MemoryLogStep {
+  // Process-unique step id.
+  int64 step_id = 1;
+
+  // Handle describing the feeds and fetches of the step.
+  string handle = 2;
+};
+
+message MemoryLogTensorAllocation {
+  // Process-unique step id.
+  int64 step_id = 1;
+
+  // Name of the kernel making the allocation as set in GraphDef,
+  // e.g., "affine2/weights/Assign".
+  string kernel_name = 2;
+
+  // Allocated tensor details.
+  TensorDescription tensor = 3;
+};
+
+message MemoryLogTensorDeallocation {
+  // Id of the tensor buffer being deallocated, used to match to a
+  // corresponding allocation.
+  int64 allocation_id = 1;
+
+  // Name of the allocator used.
+  string allocator_name = 2;
+};
+
+message MemoryLogTensorOutput {
+  // Process-unique step id.
+  int64 step_id = 1;
+
+  // Name of the kernel producing an output as set in GraphDef, e.g.,
+  // "affine2/weights/Assign".
+  string kernel_name = 2;
+
+  // Index of the output being set.
+  int32 index = 3;
+
+  // Output tensor details.
+  TensorDescription tensor = 4;
+}
+
+message MemoryLogRawAllocation {
+  // Process-unique step id.
+  int64 step_id = 1;
+
+  // Name of the operation making the allocation.
+  string operation = 2;
+
+  // Number of bytes in the allocation.
+  int64 num_bytes = 3;
+
+  // Address of the allocation.
+  uint64 ptr = 4;
+
+  // Id of the tensor buffer being allocated, used to match to a
+  // corresponding deallocation.
+  int64 allocation_id = 5;
+
+  // Name of the allocator used.
+  string allocator_name = 6;
+};
+
+message MemoryLogRawDeallocation {
+  // Process-unique step id.
+  int64 step_id = 1;
+
+  // Name of the operation making the deallocation.
+  string operation = 2;
+
+  // Id of the tensor buffer being deallocated, used to match to a
+  // corresponding allocation.
+  int64 allocation_id = 3;
+
+  // Name of the allocator used.
+  string allocator_name = 4;
+
+  // True if the deallocation is queued and will be performed later,
+  // e.g. for GPU lazy freeing of buffers.
+  bool deferred = 5;
+};
diff --git a/tensorflow/core/framework/node_def.pb.cc b/tensorflow/core/framework/node_def.pb.cc
new file mode 100644 (file)
index 0000000..fc6ec05
--- /dev/null
@@ -0,0 +1,899 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: tensorflow/core/framework/node_def.proto
+
+#include "tensorflow/core/framework/node_def.pb.h"
+
+#include <algorithm>
+
+#include <google/protobuf/stubs/common.h>
+#include <google/protobuf/io/coded_stream.h>
+#include <google/protobuf/extension_set.h>
+#include <google/protobuf/wire_format_lite_inl.h>
+#include <google/protobuf/descriptor.h>
+#include <google/protobuf/generated_message_reflection.h>
+#include <google/protobuf/reflection_ops.h>
+#include <google/protobuf/wire_format.h>
+// @@protoc_insertion_point(includes)
+#include <google/protobuf/port_def.inc>
+
+extern PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fframework_2fattr_5fvalue_2eproto ::google::protobuf::internal::SCCInfo<2> scc_info_AttrValue_tensorflow_2fcore_2fframework_2fattr_5fvalue_2eproto;
+extern PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fframework_2fnode_5fdef_2eproto ::google::protobuf::internal::SCCInfo<1> scc_info_NodeDef_AttrEntry_DoNotUse_tensorflow_2fcore_2fframework_2fnode_5fdef_2eproto;
+namespace tensorflow {
+class NodeDef_AttrEntry_DoNotUseDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<NodeDef_AttrEntry_DoNotUse> _instance;
+} _NodeDef_AttrEntry_DoNotUse_default_instance_;
+class NodeDefDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<NodeDef> _instance;
+} _NodeDef_default_instance_;
+}  // namespace tensorflow
+static void InitDefaultsNodeDef_AttrEntry_DoNotUse_tensorflow_2fcore_2fframework_2fnode_5fdef_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_NodeDef_AttrEntry_DoNotUse_default_instance_;
+    new (ptr) ::tensorflow::NodeDef_AttrEntry_DoNotUse();
+  }
+  ::tensorflow::NodeDef_AttrEntry_DoNotUse::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<1> scc_info_NodeDef_AttrEntry_DoNotUse_tensorflow_2fcore_2fframework_2fnode_5fdef_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsNodeDef_AttrEntry_DoNotUse_tensorflow_2fcore_2fframework_2fnode_5fdef_2eproto}, {
+      &scc_info_AttrValue_tensorflow_2fcore_2fframework_2fattr_5fvalue_2eproto.base,}};
+
+static void InitDefaultsNodeDef_tensorflow_2fcore_2fframework_2fnode_5fdef_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_NodeDef_default_instance_;
+    new (ptr) ::tensorflow::NodeDef();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::NodeDef::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<1> scc_info_NodeDef_tensorflow_2fcore_2fframework_2fnode_5fdef_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsNodeDef_tensorflow_2fcore_2fframework_2fnode_5fdef_2eproto}, {
+      &scc_info_NodeDef_AttrEntry_DoNotUse_tensorflow_2fcore_2fframework_2fnode_5fdef_2eproto.base,}};
+
+void InitDefaults_tensorflow_2fcore_2fframework_2fnode_5fdef_2eproto() {
+  ::google::protobuf::internal::InitSCC(&scc_info_NodeDef_AttrEntry_DoNotUse_tensorflow_2fcore_2fframework_2fnode_5fdef_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_NodeDef_tensorflow_2fcore_2fframework_2fnode_5fdef_2eproto.base);
+}
+
+::google::protobuf::Metadata file_level_metadata_tensorflow_2fcore_2fframework_2fnode_5fdef_2eproto[2];
+constexpr ::google::protobuf::EnumDescriptor const** file_level_enum_descriptors_tensorflow_2fcore_2fframework_2fnode_5fdef_2eproto = nullptr;
+constexpr ::google::protobuf::ServiceDescriptor const** file_level_service_descriptors_tensorflow_2fcore_2fframework_2fnode_5fdef_2eproto = nullptr;
+
+const ::google::protobuf::uint32 TableStruct_tensorflow_2fcore_2fframework_2fnode_5fdef_2eproto::offsets[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = {
+  PROTOBUF_FIELD_OFFSET(::tensorflow::NodeDef_AttrEntry_DoNotUse, _has_bits_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::NodeDef_AttrEntry_DoNotUse, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::NodeDef_AttrEntry_DoNotUse, key_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::NodeDef_AttrEntry_DoNotUse, value_),
+  0,
+  1,
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::NodeDef, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::NodeDef, name_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::NodeDef, op_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::NodeDef, input_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::NodeDef, device_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::NodeDef, attr_),
+};
+static const ::google::protobuf::internal::MigrationSchema schemas[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = {
+  { 0, 7, sizeof(::tensorflow::NodeDef_AttrEntry_DoNotUse)},
+  { 9, -1, sizeof(::tensorflow::NodeDef)},
+};
+
+static ::google::protobuf::Message const * const file_default_instances[] = {
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_NodeDef_AttrEntry_DoNotUse_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_NodeDef_default_instance_),
+};
+
+::google::protobuf::internal::AssignDescriptorsTable assign_descriptors_table_tensorflow_2fcore_2fframework_2fnode_5fdef_2eproto = {
+  {}, AddDescriptors_tensorflow_2fcore_2fframework_2fnode_5fdef_2eproto, "tensorflow/core/framework/node_def.proto", schemas,
+  file_default_instances, TableStruct_tensorflow_2fcore_2fframework_2fnode_5fdef_2eproto::offsets,
+  file_level_metadata_tensorflow_2fcore_2fframework_2fnode_5fdef_2eproto, 2, file_level_enum_descriptors_tensorflow_2fcore_2fframework_2fnode_5fdef_2eproto, file_level_service_descriptors_tensorflow_2fcore_2fframework_2fnode_5fdef_2eproto,
+};
+
+::google::protobuf::internal::DescriptorTable descriptor_table_tensorflow_2fcore_2fframework_2fnode_5fdef_2eproto = {
+  false, InitDefaults_tensorflow_2fcore_2fframework_2fnode_5fdef_2eproto, 
+  "\n(tensorflow/core/framework/node_def.pro"
+  "to\022\ntensorflow\032*tensorflow/core/framewor"
+  "k/attr_value.proto\"\263\001\n\007NodeDef\022\014\n\004name\030\001"
+  " \001(\t\022\n\n\002op\030\002 \001(\t\022\r\n\005input\030\003 \003(\t\022\016\n\006devic"
+  "e\030\004 \001(\t\022+\n\004attr\030\005 \003(\0132\035.tensorflow.NodeD"
+  "ef.AttrEntry\032B\n\tAttrEntry\022\013\n\003key\030\001 \001(\t\022$"
+  "\n\005value\030\002 \001(\0132\025.tensorflow.AttrValue:\0028\001"
+  "Bi\n\030org.tensorflow.frameworkB\tNodeProtoP"
+  "\001Z=github.com/tensorflow/tensorflow/tens"
+  "orflow/go/core/framework\370\001\001b\006proto3"
+,
+  "tensorflow/core/framework/node_def.proto", &assign_descriptors_table_tensorflow_2fcore_2fframework_2fnode_5fdef_2eproto, 395,
+};
+
+void AddDescriptors_tensorflow_2fcore_2fframework_2fnode_5fdef_2eproto() {
+  static constexpr ::google::protobuf::internal::InitFunc deps[1] =
+  {
+    ::AddDescriptors_tensorflow_2fcore_2fframework_2fattr_5fvalue_2eproto,
+  };
+ ::google::protobuf::internal::AddDescriptors(&descriptor_table_tensorflow_2fcore_2fframework_2fnode_5fdef_2eproto, deps, 1);
+}
+
+// Force running AddDescriptors() at dynamic initialization time.
+static bool dynamic_init_dummy_tensorflow_2fcore_2fframework_2fnode_5fdef_2eproto = []() { AddDescriptors_tensorflow_2fcore_2fframework_2fnode_5fdef_2eproto(); return true; }();
+namespace tensorflow {
+
+// ===================================================================
+
+NodeDef_AttrEntry_DoNotUse::NodeDef_AttrEntry_DoNotUse() {}
+NodeDef_AttrEntry_DoNotUse::NodeDef_AttrEntry_DoNotUse(::google::protobuf::Arena* arena)
+    : SuperType(arena) {}
+void NodeDef_AttrEntry_DoNotUse::MergeFrom(const NodeDef_AttrEntry_DoNotUse& other) {
+  MergeFromInternal(other);
+}
+::google::protobuf::Metadata NodeDef_AttrEntry_DoNotUse::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fframework_2fnode_5fdef_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fframework_2fnode_5fdef_2eproto[0];
+}
+void NodeDef_AttrEntry_DoNotUse::MergeFrom(
+    const ::google::protobuf::Message& other) {
+  ::google::protobuf::Message::MergeFrom(other);
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool NodeDef_AttrEntry_DoNotUse::_ParseMap(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx) {
+  using MF = ::google::protobuf::internal::MapField<
+      NodeDef_AttrEntry_DoNotUse, EntryKeyType, EntryValueType,
+      kEntryKeyFieldType, kEntryValueFieldType,
+      kEntryDefaultEnumValue>;
+  auto mf = static_cast<MF*>(object);
+  Parser<MF, ::google::protobuf::Map<EntryKeyType, EntryValueType>> parser(mf);
+#define DO_(x) if (!(x)) return false
+  DO_(parser.ParseMap(begin, end));
+  DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+    parser.key().data(), static_cast<int>(parser.key().length()),
+    ::google::protobuf::internal::WireFormatLite::PARSE,
+    "tensorflow.NodeDef.AttrEntry.key"));
+#undef DO_
+  return true;
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+
+// ===================================================================
+
+void NodeDef::InitAsDefaultInstance() {
+}
+class NodeDef::HasBitSetters {
+ public:
+};
+
+void NodeDef::clear_attr() {
+  attr_.Clear();
+}
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int NodeDef::kNameFieldNumber;
+const int NodeDef::kOpFieldNumber;
+const int NodeDef::kInputFieldNumber;
+const int NodeDef::kDeviceFieldNumber;
+const int NodeDef::kAttrFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+NodeDef::NodeDef()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.NodeDef)
+}
+NodeDef::NodeDef(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena),
+  input_(arena),
+  attr_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.NodeDef)
+}
+NodeDef::NodeDef(const NodeDef& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL),
+      input_(from.input_) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  attr_.MergeFrom(from.attr_);
+  name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.name().size() > 0) {
+    name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.name(),
+      GetArenaNoVirtual());
+  }
+  op_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.op().size() > 0) {
+    op_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.op(),
+      GetArenaNoVirtual());
+  }
+  device_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.device().size() > 0) {
+    device_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.device(),
+      GetArenaNoVirtual());
+  }
+  // @@protoc_insertion_point(copy_constructor:tensorflow.NodeDef)
+}
+
+void NodeDef::SharedCtor() {
+  ::google::protobuf::internal::InitSCC(
+      &scc_info_NodeDef_tensorflow_2fcore_2fframework_2fnode_5fdef_2eproto.base);
+  name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  op_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  device_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+
+NodeDef::~NodeDef() {
+  // @@protoc_insertion_point(destructor:tensorflow.NodeDef)
+  SharedDtor();
+}
+
+void NodeDef::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+  name_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  op_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  device_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+
+void NodeDef::ArenaDtor(void* object) {
+  NodeDef* _this = reinterpret_cast< NodeDef* >(object);
+  (void)_this;
+}
+void NodeDef::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void NodeDef::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const NodeDef& NodeDef::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_NodeDef_tensorflow_2fcore_2fframework_2fnode_5fdef_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void NodeDef::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.NodeDef)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  input_.Clear();
+  attr_.Clear();
+  name_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+  op_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+  device_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* NodeDef::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<NodeDef*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // string name = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 10) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("tensorflow.NodeDef.name");
+        parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+        ::std::string* str = msg->mutable_name();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+        break;
+      }
+      // string op = 2;
+      case 2: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 18) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("tensorflow.NodeDef.op");
+        parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+        ::std::string* str = msg->mutable_op();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+        break;
+      }
+      // repeated string input = 3;
+      case 3: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 26) goto handle_unusual;
+        do {
+          ptr = Varint::Parse32Inline(ptr, &size);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          ctx->extra_parse_data().SetFieldName("tensorflow.NodeDef.input");
+          parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+          ::std::string* str = msg->add_input();
+          str->clear();
+          object = str;
+          if (size > end - ptr) goto len_delim_till_end;
+          auto newend = ptr + size;
+          if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+          if (ptr >= end) break;
+        } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 26 && (ptr += 1));
+        break;
+      }
+      // string device = 4;
+      case 4: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 34) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("tensorflow.NodeDef.device");
+        parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+        ::std::string* str = msg->mutable_device();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+        break;
+      }
+      // map<string, .tensorflow.AttrValue> attr = 5;
+      case 5: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 42) goto handle_unusual;
+        do {
+          ptr = Varint::Parse32Inline(ptr, &size);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          parser_till_end = ::google::protobuf::internal::SlowMapEntryParser;
+          auto parse_map = ::tensorflow::NodeDef_AttrEntry_DoNotUse::_ParseMap;
+          ctx->extra_parse_data().payload.clear();
+          ctx->extra_parse_data().parse_map = parse_map;
+          object = &msg->attr_;
+          if (size > end - ptr) goto len_delim_till_end;
+          auto newend = ptr + size;
+          GOOGLE_PROTOBUF_PARSER_ASSERT(parse_map(ptr, newend, object, ctx));
+          ptr = newend;
+          if (ptr >= end) break;
+        } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 42 && (ptr += 1));
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool NodeDef::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.NodeDef)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // string name = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (10 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_name()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->name().data(), static_cast<int>(this->name().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.NodeDef.name"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // string op = 2;
+      case 2: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (18 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_op()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->op().data(), static_cast<int>(this->op().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.NodeDef.op"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // repeated string input = 3;
+      case 3: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (26 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->add_input()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->input(this->input_size() - 1).data(),
+            static_cast<int>(this->input(this->input_size() - 1).length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.NodeDef.input"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // string device = 4;
+      case 4: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (34 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_device()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->device().data(), static_cast<int>(this->device().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.NodeDef.device"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // map<string, .tensorflow.AttrValue> attr = 5;
+      case 5: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (42 & 0xFF)) {
+          NodeDef_AttrEntry_DoNotUse::Parser< ::google::protobuf::internal::MapField<
+              NodeDef_AttrEntry_DoNotUse,
+              ::std::string, ::tensorflow::AttrValue,
+              ::google::protobuf::internal::WireFormatLite::TYPE_STRING,
+              ::google::protobuf::internal::WireFormatLite::TYPE_MESSAGE,
+              0 >,
+            ::google::protobuf::Map< ::std::string, ::tensorflow::AttrValue > > parser(&attr_);
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
+              input, &parser));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            parser.key().data(), static_cast<int>(parser.key().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.NodeDef.AttrEntry.key"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.NodeDef)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.NodeDef)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void NodeDef::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.NodeDef)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // string name = 1;
+  if (this->name().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->name().data(), static_cast<int>(this->name().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.NodeDef.name");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      1, this->name(), output);
+  }
+
+  // string op = 2;
+  if (this->op().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->op().data(), static_cast<int>(this->op().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.NodeDef.op");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      2, this->op(), output);
+  }
+
+  // repeated string input = 3;
+  for (int i = 0, n = this->input_size(); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->input(i).data(), static_cast<int>(this->input(i).length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.NodeDef.input");
+    ::google::protobuf::internal::WireFormatLite::WriteString(
+      3, this->input(i), output);
+  }
+
+  // string device = 4;
+  if (this->device().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->device().data(), static_cast<int>(this->device().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.NodeDef.device");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      4, this->device(), output);
+  }
+
+  // map<string, .tensorflow.AttrValue> attr = 5;
+  if (!this->attr().empty()) {
+    typedef ::google::protobuf::Map< ::std::string, ::tensorflow::AttrValue >::const_pointer
+        ConstPtr;
+    typedef ConstPtr SortItem;
+    typedef ::google::protobuf::internal::CompareByDerefFirst<SortItem> Less;
+    struct Utf8Check {
+      static void Check(ConstPtr p) {
+        ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+          p->first.data(), static_cast<int>(p->first.length()),
+          ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+          "tensorflow.NodeDef.AttrEntry.key");
+      }
+    };
+
+    if (output->IsSerializationDeterministic() &&
+        this->attr().size() > 1) {
+      ::std::unique_ptr<SortItem[]> items(
+          new SortItem[this->attr().size()]);
+      typedef ::google::protobuf::Map< ::std::string, ::tensorflow::AttrValue >::size_type size_type;
+      size_type n = 0;
+      for (::google::protobuf::Map< ::std::string, ::tensorflow::AttrValue >::const_iterator
+          it = this->attr().begin();
+          it != this->attr().end(); ++it, ++n) {
+        items[static_cast<ptrdiff_t>(n)] = SortItem(&*it);
+      }
+      ::std::sort(&items[0], &items[static_cast<ptrdiff_t>(n)], Less());
+      ::std::unique_ptr<NodeDef_AttrEntry_DoNotUse> entry;
+      for (size_type i = 0; i < n; i++) {
+        entry.reset(attr_.NewEntryWrapper(items[static_cast<ptrdiff_t>(i)]->first, items[static_cast<ptrdiff_t>(i)]->second));
+        ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(5, *entry, output);
+        if (entry->GetArena() != NULL) {
+          entry.release();
+        }
+        Utf8Check::Check(&(*items[static_cast<ptrdiff_t>(i)]));
+      }
+    } else {
+      ::std::unique_ptr<NodeDef_AttrEntry_DoNotUse> entry;
+      for (::google::protobuf::Map< ::std::string, ::tensorflow::AttrValue >::const_iterator
+          it = this->attr().begin();
+          it != this->attr().end(); ++it) {
+        entry.reset(attr_.NewEntryWrapper(it->first, it->second));
+        ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(5, *entry, output);
+        if (entry->GetArena() != NULL) {
+          entry.release();
+        }
+        Utf8Check::Check(&(*it));
+      }
+    }
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.NodeDef)
+}
+
+::google::protobuf::uint8* NodeDef::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.NodeDef)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // string name = 1;
+  if (this->name().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->name().data(), static_cast<int>(this->name().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.NodeDef.name");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        1, this->name(), target);
+  }
+
+  // string op = 2;
+  if (this->op().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->op().data(), static_cast<int>(this->op().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.NodeDef.op");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        2, this->op(), target);
+  }
+
+  // repeated string input = 3;
+  for (int i = 0, n = this->input_size(); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->input(i).data(), static_cast<int>(this->input(i).length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.NodeDef.input");
+    target = ::google::protobuf::internal::WireFormatLite::
+      WriteStringToArray(3, this->input(i), target);
+  }
+
+  // string device = 4;
+  if (this->device().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->device().data(), static_cast<int>(this->device().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.NodeDef.device");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        4, this->device(), target);
+  }
+
+  // map<string, .tensorflow.AttrValue> attr = 5;
+  if (!this->attr().empty()) {
+    typedef ::google::protobuf::Map< ::std::string, ::tensorflow::AttrValue >::const_pointer
+        ConstPtr;
+    typedef ConstPtr SortItem;
+    typedef ::google::protobuf::internal::CompareByDerefFirst<SortItem> Less;
+    struct Utf8Check {
+      static void Check(ConstPtr p) {
+        ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+          p->first.data(), static_cast<int>(p->first.length()),
+          ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+          "tensorflow.NodeDef.AttrEntry.key");
+      }
+    };
+
+    if (deterministic &&
+        this->attr().size() > 1) {
+      ::std::unique_ptr<SortItem[]> items(
+          new SortItem[this->attr().size()]);
+      typedef ::google::protobuf::Map< ::std::string, ::tensorflow::AttrValue >::size_type size_type;
+      size_type n = 0;
+      for (::google::protobuf::Map< ::std::string, ::tensorflow::AttrValue >::const_iterator
+          it = this->attr().begin();
+          it != this->attr().end(); ++it, ++n) {
+        items[static_cast<ptrdiff_t>(n)] = SortItem(&*it);
+      }
+      ::std::sort(&items[0], &items[static_cast<ptrdiff_t>(n)], Less());
+      ::std::unique_ptr<NodeDef_AttrEntry_DoNotUse> entry;
+      for (size_type i = 0; i < n; i++) {
+        entry.reset(attr_.NewEntryWrapper(items[static_cast<ptrdiff_t>(i)]->first, items[static_cast<ptrdiff_t>(i)]->second));
+        target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessageNoVirtualToArray(5, *entry, deterministic, target);
+        if (entry->GetArena() != NULL) {
+          entry.release();
+        }
+        Utf8Check::Check(&(*items[static_cast<ptrdiff_t>(i)]));
+      }
+    } else {
+      ::std::unique_ptr<NodeDef_AttrEntry_DoNotUse> entry;
+      for (::google::protobuf::Map< ::std::string, ::tensorflow::AttrValue >::const_iterator
+          it = this->attr().begin();
+          it != this->attr().end(); ++it) {
+        entry.reset(attr_.NewEntryWrapper(it->first, it->second));
+        target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessageNoVirtualToArray(5, *entry, deterministic, target);
+        if (entry->GetArena() != NULL) {
+          entry.release();
+        }
+        Utf8Check::Check(&(*it));
+      }
+    }
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.NodeDef)
+  return target;
+}
+
+size_t NodeDef::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.NodeDef)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // repeated string input = 3;
+  total_size += 1 *
+      ::google::protobuf::internal::FromIntSize(this->input_size());
+  for (int i = 0, n = this->input_size(); i < n; i++) {
+    total_size += ::google::protobuf::internal::WireFormatLite::StringSize(
+      this->input(i));
+  }
+
+  // map<string, .tensorflow.AttrValue> attr = 5;
+  total_size += 1 *
+      ::google::protobuf::internal::FromIntSize(this->attr_size());
+  {
+    ::std::unique_ptr<NodeDef_AttrEntry_DoNotUse> entry;
+    for (::google::protobuf::Map< ::std::string, ::tensorflow::AttrValue >::const_iterator
+        it = this->attr().begin();
+        it != this->attr().end(); ++it) {
+      if (entry.get() != NULL && entry->GetArena() != NULL) {
+        entry.release();
+      }
+      entry.reset(attr_.NewEntryWrapper(it->first, it->second));
+      total_size += ::google::protobuf::internal::WireFormatLite::
+          MessageSizeNoVirtual(*entry);
+    }
+    if (entry.get() != NULL && entry->GetArena() != NULL) {
+      entry.release();
+    }
+  }
+
+  // string name = 1;
+  if (this->name().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->name());
+  }
+
+  // string op = 2;
+  if (this->op().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->op());
+  }
+
+  // string device = 4;
+  if (this->device().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->device());
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void NodeDef::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.NodeDef)
+  GOOGLE_DCHECK_NE(&from, this);
+  const NodeDef* source =
+      ::google::protobuf::DynamicCastToGenerated<NodeDef>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.NodeDef)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.NodeDef)
+    MergeFrom(*source);
+  }
+}
+
+void NodeDef::MergeFrom(const NodeDef& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.NodeDef)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  input_.MergeFrom(from.input_);
+  attr_.MergeFrom(from.attr_);
+  if (from.name().size() > 0) {
+    set_name(from.name());
+  }
+  if (from.op().size() > 0) {
+    set_op(from.op());
+  }
+  if (from.device().size() > 0) {
+    set_device(from.device());
+  }
+}
+
+void NodeDef::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.NodeDef)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void NodeDef::CopyFrom(const NodeDef& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.NodeDef)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool NodeDef::IsInitialized() const {
+  return true;
+}
+
+void NodeDef::Swap(NodeDef* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    NodeDef* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void NodeDef::UnsafeArenaSwap(NodeDef* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void NodeDef::InternalSwap(NodeDef* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  input_.InternalSwap(CastToBase(&other->input_));
+  attr_.Swap(&other->attr_);
+  name_.Swap(&other->name_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+  op_.Swap(&other->op_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+  device_.Swap(&other->device_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+}
+
+::google::protobuf::Metadata NodeDef::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fframework_2fnode_5fdef_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fframework_2fnode_5fdef_2eproto[kIndexInFileMessages];
+}
+
+
+// @@protoc_insertion_point(namespace_scope)
+}  // namespace tensorflow
+namespace google {
+namespace protobuf {
+template<> PROTOBUF_NOINLINE ::tensorflow::NodeDef_AttrEntry_DoNotUse* Arena::CreateMaybeMessage< ::tensorflow::NodeDef_AttrEntry_DoNotUse >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::NodeDef_AttrEntry_DoNotUse >(arena);
+}
+template<> PROTOBUF_NOINLINE ::tensorflow::NodeDef* Arena::CreateMaybeMessage< ::tensorflow::NodeDef >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::NodeDef >(arena);
+}
+}  // namespace protobuf
+}  // namespace google
+
+// @@protoc_insertion_point(global_scope)
+#include <google/protobuf/port_undef.inc>
diff --git a/tensorflow/core/framework/node_def.pb.h b/tensorflow/core/framework/node_def.pb.h
new file mode 100644 (file)
index 0000000..4b603a1
--- /dev/null
@@ -0,0 +1,660 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: tensorflow/core/framework/node_def.proto
+
+#ifndef PROTOBUF_INCLUDED_tensorflow_2fcore_2fframework_2fnode_5fdef_2eproto
+#define PROTOBUF_INCLUDED_tensorflow_2fcore_2fframework_2fnode_5fdef_2eproto
+
+#include <limits>
+#include <string>
+
+#include <google/protobuf/port_def.inc>
+#if PROTOBUF_VERSION < 3006001
+#error This file was generated by a newer version of protoc which is
+#error incompatible with your Protocol Buffer headers. Please update
+#error your headers.
+#endif
+#if 3006001 < PROTOBUF_MIN_PROTOC_VERSION
+#error This file was generated by an older version of protoc which is
+#error incompatible with your Protocol Buffer headers. Please
+#error regenerate this file with a newer version of protoc.
+#endif
+
+#include <google/protobuf/port_undef.inc>
+#include <google/protobuf/io/coded_stream.h>
+#include <google/protobuf/arena.h>
+#include <google/protobuf/arenastring.h>
+#include <google/protobuf/generated_message_table_driven.h>
+#include <google/protobuf/generated_message_util.h>
+#include <google/protobuf/inlined_string_field.h>
+#include <google/protobuf/metadata.h>
+#include <google/protobuf/message.h>
+#include <google/protobuf/repeated_field.h>  // IWYU pragma: export
+#include <google/protobuf/extension_set.h>  // IWYU pragma: export
+#include <google/protobuf/map.h>  // IWYU pragma: export
+#include <google/protobuf/map_entry.h>
+#include <google/protobuf/map_field_inl.h>
+#include <google/protobuf/unknown_field_set.h>
+#include "tensorflow/core/framework/attr_value.pb.h"
+// @@protoc_insertion_point(includes)
+#include <google/protobuf/port_def.inc>
+#define PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fframework_2fnode_5fdef_2eproto
+
+// Internal implementation detail -- do not use these members.
+struct TableStruct_tensorflow_2fcore_2fframework_2fnode_5fdef_2eproto {
+  static const ::google::protobuf::internal::ParseTableField entries[]
+    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
+  static const ::google::protobuf::internal::AuxillaryParseTableField aux[]
+    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
+  static const ::google::protobuf::internal::ParseTable schema[2]
+    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
+  static const ::google::protobuf::internal::FieldMetadata field_metadata[];
+  static const ::google::protobuf::internal::SerializationTable serialization_table[];
+  static const ::google::protobuf::uint32 offsets[];
+};
+void AddDescriptors_tensorflow_2fcore_2fframework_2fnode_5fdef_2eproto();
+namespace tensorflow {
+class NodeDef;
+class NodeDefDefaultTypeInternal;
+extern NodeDefDefaultTypeInternal _NodeDef_default_instance_;
+class NodeDef_AttrEntry_DoNotUse;
+class NodeDef_AttrEntry_DoNotUseDefaultTypeInternal;
+extern NodeDef_AttrEntry_DoNotUseDefaultTypeInternal _NodeDef_AttrEntry_DoNotUse_default_instance_;
+}  // namespace tensorflow
+namespace google {
+namespace protobuf {
+template<> ::tensorflow::NodeDef* Arena::CreateMaybeMessage<::tensorflow::NodeDef>(Arena*);
+template<> ::tensorflow::NodeDef_AttrEntry_DoNotUse* Arena::CreateMaybeMessage<::tensorflow::NodeDef_AttrEntry_DoNotUse>(Arena*);
+}  // namespace protobuf
+}  // namespace google
+namespace tensorflow {
+
+// ===================================================================
+
+class NodeDef_AttrEntry_DoNotUse : public ::google::protobuf::internal::MapEntry<NodeDef_AttrEntry_DoNotUse, 
+    ::std::string, ::tensorflow::AttrValue,
+    ::google::protobuf::internal::WireFormatLite::TYPE_STRING,
+    ::google::protobuf::internal::WireFormatLite::TYPE_MESSAGE,
+    0 > {
+public:
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+static bool _ParseMap(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  typedef ::google::protobuf::internal::MapEntry<NodeDef_AttrEntry_DoNotUse, 
+    ::std::string, ::tensorflow::AttrValue,
+    ::google::protobuf::internal::WireFormatLite::TYPE_STRING,
+    ::google::protobuf::internal::WireFormatLite::TYPE_MESSAGE,
+    0 > SuperType;
+  NodeDef_AttrEntry_DoNotUse();
+  NodeDef_AttrEntry_DoNotUse(::google::protobuf::Arena* arena);
+  void MergeFrom(const NodeDef_AttrEntry_DoNotUse& other);
+  static const NodeDef_AttrEntry_DoNotUse* internal_default_instance() { return reinterpret_cast<const NodeDef_AttrEntry_DoNotUse*>(&_NodeDef_AttrEntry_DoNotUse_default_instance_); }
+  void MergeFrom(const ::google::protobuf::Message& other) final;
+  ::google::protobuf::Metadata GetMetadata() const;
+};
+
+// -------------------------------------------------------------------
+
+class NodeDef : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.NodeDef) */ {
+ public:
+  NodeDef();
+  virtual ~NodeDef();
+
+  NodeDef(const NodeDef& from);
+
+  inline NodeDef& operator=(const NodeDef& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  NodeDef(NodeDef&& from) noexcept
+    : NodeDef() {
+    *this = ::std::move(from);
+  }
+
+  inline NodeDef& operator=(NodeDef&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const NodeDef& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const NodeDef* internal_default_instance() {
+    return reinterpret_cast<const NodeDef*>(
+               &_NodeDef_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    1;
+
+  void UnsafeArenaSwap(NodeDef* other);
+  void Swap(NodeDef* other);
+  friend void swap(NodeDef& a, NodeDef& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline NodeDef* New() const final {
+    return CreateMaybeMessage<NodeDef>(NULL);
+  }
+
+  NodeDef* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<NodeDef>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const NodeDef& from);
+  void MergeFrom(const NodeDef& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(NodeDef* other);
+  protected:
+  explicit NodeDef(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+
+  // accessors -------------------------------------------------------
+
+  // repeated string input = 3;
+  int input_size() const;
+  void clear_input();
+  static const int kInputFieldNumber = 3;
+  const ::std::string& input(int index) const;
+  ::std::string* mutable_input(int index);
+  void set_input(int index, const ::std::string& value);
+  #if LANG_CXX11
+  void set_input(int index, ::std::string&& value);
+  #endif
+  void set_input(int index, const char* value);
+  void set_input(int index, const char* value, size_t size);
+  ::std::string* add_input();
+  void add_input(const ::std::string& value);
+  #if LANG_CXX11
+  void add_input(::std::string&& value);
+  #endif
+  void add_input(const char* value);
+  void add_input(const char* value, size_t size);
+  const ::google::protobuf::RepeatedPtrField<::std::string>& input() const;
+  ::google::protobuf::RepeatedPtrField<::std::string>* mutable_input();
+
+  // map<string, .tensorflow.AttrValue> attr = 5;
+  int attr_size() const;
+  void clear_attr();
+  static const int kAttrFieldNumber = 5;
+  const ::google::protobuf::Map< ::std::string, ::tensorflow::AttrValue >&
+      attr() const;
+  ::google::protobuf::Map< ::std::string, ::tensorflow::AttrValue >*
+      mutable_attr();
+
+  // string name = 1;
+  void clear_name();
+  static const int kNameFieldNumber = 1;
+  const ::std::string& name() const;
+  void set_name(const ::std::string& value);
+  #if LANG_CXX11
+  void set_name(::std::string&& value);
+  #endif
+  void set_name(const char* value);
+  void set_name(const char* value, size_t size);
+  ::std::string* mutable_name();
+  ::std::string* release_name();
+  void set_allocated_name(::std::string* name);
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  ::std::string* unsafe_arena_release_name();
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  void unsafe_arena_set_allocated_name(
+      ::std::string* name);
+
+  // string op = 2;
+  void clear_op();
+  static const int kOpFieldNumber = 2;
+  const ::std::string& op() const;
+  void set_op(const ::std::string& value);
+  #if LANG_CXX11
+  void set_op(::std::string&& value);
+  #endif
+  void set_op(const char* value);
+  void set_op(const char* value, size_t size);
+  ::std::string* mutable_op();
+  ::std::string* release_op();
+  void set_allocated_op(::std::string* op);
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  ::std::string* unsafe_arena_release_op();
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  void unsafe_arena_set_allocated_op(
+      ::std::string* op);
+
+  // string device = 4;
+  void clear_device();
+  static const int kDeviceFieldNumber = 4;
+  const ::std::string& device() const;
+  void set_device(const ::std::string& value);
+  #if LANG_CXX11
+  void set_device(::std::string&& value);
+  #endif
+  void set_device(const char* value);
+  void set_device(const char* value, size_t size);
+  ::std::string* mutable_device();
+  ::std::string* release_device();
+  void set_allocated_device(::std::string* device);
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  ::std::string* unsafe_arena_release_device();
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  void unsafe_arena_set_allocated_device(
+      ::std::string* device);
+
+  // @@protoc_insertion_point(class_scope:tensorflow.NodeDef)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  ::google::protobuf::RepeatedPtrField<::std::string> input_;
+  ::google::protobuf::internal::MapField<
+      NodeDef_AttrEntry_DoNotUse,
+      ::std::string, ::tensorflow::AttrValue,
+      ::google::protobuf::internal::WireFormatLite::TYPE_STRING,
+      ::google::protobuf::internal::WireFormatLite::TYPE_MESSAGE,
+      0 > attr_;
+  ::google::protobuf::internal::ArenaStringPtr name_;
+  ::google::protobuf::internal::ArenaStringPtr op_;
+  ::google::protobuf::internal::ArenaStringPtr device_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fframework_2fnode_5fdef_2eproto;
+};
+// ===================================================================
+
+
+// ===================================================================
+
+#ifdef __GNUC__
+  #pragma GCC diagnostic push
+  #pragma GCC diagnostic ignored "-Wstrict-aliasing"
+#endif  // __GNUC__
+// -------------------------------------------------------------------
+
+// NodeDef
+
+// string name = 1;
+inline void NodeDef::clear_name() {
+  name_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline const ::std::string& NodeDef::name() const {
+  // @@protoc_insertion_point(field_get:tensorflow.NodeDef.name)
+  return name_.Get();
+}
+inline void NodeDef::set_name(const ::std::string& value) {
+  
+  name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set:tensorflow.NodeDef.name)
+}
+#if LANG_CXX11
+inline void NodeDef::set_name(::std::string&& value) {
+  
+  name_.Set(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.NodeDef.name)
+}
+#endif
+inline void NodeDef::set_name(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
+              GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_char:tensorflow.NodeDef.name)
+}
+inline void NodeDef::set_name(const char* value,
+    size_t size) {
+  
+  name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
+      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.NodeDef.name)
+}
+inline ::std::string* NodeDef::mutable_name() {
+  
+  // @@protoc_insertion_point(field_mutable:tensorflow.NodeDef.name)
+  return name_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline ::std::string* NodeDef::release_name() {
+  // @@protoc_insertion_point(field_release:tensorflow.NodeDef.name)
+  
+  return name_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline void NodeDef::set_allocated_name(::std::string* name) {
+  if (name != NULL) {
+    
+  } else {
+    
+  }
+  name_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), name,
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.NodeDef.name)
+}
+inline ::std::string* NodeDef::unsafe_arena_release_name() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.NodeDef.name)
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  
+  return name_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      GetArenaNoVirtual());
+}
+inline void NodeDef::unsafe_arena_set_allocated_name(
+    ::std::string* name) {
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (name != NULL) {
+    
+  } else {
+    
+  }
+  name_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      name, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.NodeDef.name)
+}
+
+// string op = 2;
+inline void NodeDef::clear_op() {
+  op_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline const ::std::string& NodeDef::op() const {
+  // @@protoc_insertion_point(field_get:tensorflow.NodeDef.op)
+  return op_.Get();
+}
+inline void NodeDef::set_op(const ::std::string& value) {
+  
+  op_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set:tensorflow.NodeDef.op)
+}
+#if LANG_CXX11
+inline void NodeDef::set_op(::std::string&& value) {
+  
+  op_.Set(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.NodeDef.op)
+}
+#endif
+inline void NodeDef::set_op(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  op_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
+              GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_char:tensorflow.NodeDef.op)
+}
+inline void NodeDef::set_op(const char* value,
+    size_t size) {
+  
+  op_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
+      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.NodeDef.op)
+}
+inline ::std::string* NodeDef::mutable_op() {
+  
+  // @@protoc_insertion_point(field_mutable:tensorflow.NodeDef.op)
+  return op_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline ::std::string* NodeDef::release_op() {
+  // @@protoc_insertion_point(field_release:tensorflow.NodeDef.op)
+  
+  return op_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline void NodeDef::set_allocated_op(::std::string* op) {
+  if (op != NULL) {
+    
+  } else {
+    
+  }
+  op_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), op,
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.NodeDef.op)
+}
+inline ::std::string* NodeDef::unsafe_arena_release_op() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.NodeDef.op)
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  
+  return op_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      GetArenaNoVirtual());
+}
+inline void NodeDef::unsafe_arena_set_allocated_op(
+    ::std::string* op) {
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (op != NULL) {
+    
+  } else {
+    
+  }
+  op_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      op, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.NodeDef.op)
+}
+
+// repeated string input = 3;
+inline int NodeDef::input_size() const {
+  return input_.size();
+}
+inline void NodeDef::clear_input() {
+  input_.Clear();
+}
+inline const ::std::string& NodeDef::input(int index) const {
+  // @@protoc_insertion_point(field_get:tensorflow.NodeDef.input)
+  return input_.Get(index);
+}
+inline ::std::string* NodeDef::mutable_input(int index) {
+  // @@protoc_insertion_point(field_mutable:tensorflow.NodeDef.input)
+  return input_.Mutable(index);
+}
+inline void NodeDef::set_input(int index, const ::std::string& value) {
+  // @@protoc_insertion_point(field_set:tensorflow.NodeDef.input)
+  input_.Mutable(index)->assign(value);
+}
+#if LANG_CXX11
+inline void NodeDef::set_input(int index, ::std::string&& value) {
+  // @@protoc_insertion_point(field_set:tensorflow.NodeDef.input)
+  input_.Mutable(index)->assign(std::move(value));
+}
+#endif
+inline void NodeDef::set_input(int index, const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  input_.Mutable(index)->assign(value);
+  // @@protoc_insertion_point(field_set_char:tensorflow.NodeDef.input)
+}
+inline void NodeDef::set_input(int index, const char* value, size_t size) {
+  input_.Mutable(index)->assign(
+    reinterpret_cast<const char*>(value), size);
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.NodeDef.input)
+}
+inline ::std::string* NodeDef::add_input() {
+  // @@protoc_insertion_point(field_add_mutable:tensorflow.NodeDef.input)
+  return input_.Add();
+}
+inline void NodeDef::add_input(const ::std::string& value) {
+  input_.Add()->assign(value);
+  // @@protoc_insertion_point(field_add:tensorflow.NodeDef.input)
+}
+#if LANG_CXX11
+inline void NodeDef::add_input(::std::string&& value) {
+  input_.Add(std::move(value));
+  // @@protoc_insertion_point(field_add:tensorflow.NodeDef.input)
+}
+#endif
+inline void NodeDef::add_input(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  input_.Add()->assign(value);
+  // @@protoc_insertion_point(field_add_char:tensorflow.NodeDef.input)
+}
+inline void NodeDef::add_input(const char* value, size_t size) {
+  input_.Add()->assign(reinterpret_cast<const char*>(value), size);
+  // @@protoc_insertion_point(field_add_pointer:tensorflow.NodeDef.input)
+}
+inline const ::google::protobuf::RepeatedPtrField<::std::string>&
+NodeDef::input() const {
+  // @@protoc_insertion_point(field_list:tensorflow.NodeDef.input)
+  return input_;
+}
+inline ::google::protobuf::RepeatedPtrField<::std::string>*
+NodeDef::mutable_input() {
+  // @@protoc_insertion_point(field_mutable_list:tensorflow.NodeDef.input)
+  return &input_;
+}
+
+// string device = 4;
+inline void NodeDef::clear_device() {
+  device_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline const ::std::string& NodeDef::device() const {
+  // @@protoc_insertion_point(field_get:tensorflow.NodeDef.device)
+  return device_.Get();
+}
+inline void NodeDef::set_device(const ::std::string& value) {
+  
+  device_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set:tensorflow.NodeDef.device)
+}
+#if LANG_CXX11
+inline void NodeDef::set_device(::std::string&& value) {
+  
+  device_.Set(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.NodeDef.device)
+}
+#endif
+inline void NodeDef::set_device(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  device_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
+              GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_char:tensorflow.NodeDef.device)
+}
+inline void NodeDef::set_device(const char* value,
+    size_t size) {
+  
+  device_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
+      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.NodeDef.device)
+}
+inline ::std::string* NodeDef::mutable_device() {
+  
+  // @@protoc_insertion_point(field_mutable:tensorflow.NodeDef.device)
+  return device_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline ::std::string* NodeDef::release_device() {
+  // @@protoc_insertion_point(field_release:tensorflow.NodeDef.device)
+  
+  return device_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline void NodeDef::set_allocated_device(::std::string* device) {
+  if (device != NULL) {
+    
+  } else {
+    
+  }
+  device_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), device,
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.NodeDef.device)
+}
+inline ::std::string* NodeDef::unsafe_arena_release_device() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.NodeDef.device)
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  
+  return device_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      GetArenaNoVirtual());
+}
+inline void NodeDef::unsafe_arena_set_allocated_device(
+    ::std::string* device) {
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (device != NULL) {
+    
+  } else {
+    
+  }
+  device_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      device, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.NodeDef.device)
+}
+
+// map<string, .tensorflow.AttrValue> attr = 5;
+inline int NodeDef::attr_size() const {
+  return attr_.size();
+}
+inline const ::google::protobuf::Map< ::std::string, ::tensorflow::AttrValue >&
+NodeDef::attr() const {
+  // @@protoc_insertion_point(field_map:tensorflow.NodeDef.attr)
+  return attr_.GetMap();
+}
+inline ::google::protobuf::Map< ::std::string, ::tensorflow::AttrValue >*
+NodeDef::mutable_attr() {
+  // @@protoc_insertion_point(field_mutable_map:tensorflow.NodeDef.attr)
+  return attr_.MutableMap();
+}
+
+#ifdef __GNUC__
+  #pragma GCC diagnostic pop
+#endif  // __GNUC__
+// -------------------------------------------------------------------
+
+
+// @@protoc_insertion_point(namespace_scope)
+
+}  // namespace tensorflow
+
+// @@protoc_insertion_point(global_scope)
+
+#include <google/protobuf/port_undef.inc>
+#endif  // PROTOBUF_INCLUDED_tensorflow_2fcore_2fframework_2fnode_5fdef_2eproto
diff --git a/tensorflow/core/framework/node_def.proto b/tensorflow/core/framework/node_def.proto
new file mode 100644 (file)
index 0000000..0a095f9
--- /dev/null
@@ -0,0 +1,63 @@
+syntax = "proto3";
+
+package tensorflow;
+option cc_enable_arenas = true;
+option java_outer_classname = "NodeProto";
+option java_multiple_files = true;
+option java_package = "org.tensorflow.framework";
+option go_package = "github.com/tensorflow/tensorflow/tensorflow/go/core/framework";
+import "tensorflow/core/framework/attr_value.proto";
+
+message NodeDef {
+  // The name given to this operator. Used for naming inputs,
+  // logging, visualization, etc.  Unique within a single GraphDef.
+  // Must match the regexp "[A-Za-z0-9.][A-Za-z0-9_./]*".
+  string name = 1;
+
+  // The operation name.  There may be custom parameters in attrs.
+  // Op names starting with an underscore are reserved for internal use.
+  string op = 2;
+
+  // Each input is "node:src_output" with "node" being a string name and
+  // "src_output" indicating which output tensor to use from "node". If
+  // "src_output" is 0 the ":0" suffix can be omitted.  Regular inputs
+  // may optionally be followed by control inputs that have the format
+  // "^node".
+  repeated string input = 3;
+
+  // A (possibly partial) specification for the device on which this
+  // node should be placed.
+  // The expected syntax for this string is as follows:
+  //
+  // DEVICE_SPEC ::= PARTIAL_SPEC
+  //
+  // PARTIAL_SPEC ::= ("/" CONSTRAINT) *
+  // CONSTRAINT ::= ("job:" JOB_NAME)
+  //              | ("replica:" [1-9][0-9]*)
+  //              | ("task:" [1-9][0-9]*)
+  //              | ("device:" [A-Za-z]* ":" ([1-9][0-9]* | "*") )
+  //
+  // Valid values for this string include:
+  // * "/job:worker/replica:0/task:1/device:GPU:3"  (full specification)
+  // * "/job:worker/device:GPU:3"                   (partial specification)
+  // * ""                                    (no specification)
+  //
+  // If the constraints do not resolve to a single device (or if this
+  // field is empty or not present), the runtime will attempt to
+  // choose a device automatically.
+  string device = 4;
+
+  // Operation-specific graph-construction-time configuration.
+  // Note that this should include all attrs defined in the
+  // corresponding OpDef, including those with a value matching
+  // the default -- this allows the default to change and makes
+  // NodeDefs easier to interpret on their own.  However, if
+  // an attr with a default is not specified in this list, the
+  // default will be used.
+  // The "names" (keys) must match the regexp "[a-z][a-z0-9_]+" (and
+  // one of the names from the corresponding OpDef's attr field).
+  // The values must have a type matching the corresponding OpDef
+  // attr's type field.
+  // TODO(josh11b): Add some examples here showing best practices.
+  map<string, AttrValue> attr = 5;
+};
diff --git a/tensorflow/core/framework/op_def.pb.cc b/tensorflow/core/framework/op_def.pb.cc
new file mode 100644 (file)
index 0000000..3c70614
--- /dev/null
@@ -0,0 +1,3357 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: tensorflow/core/framework/op_def.proto
+
+#include "tensorflow/core/framework/op_def.pb.h"
+
+#include <algorithm>
+
+#include <google/protobuf/stubs/common.h>
+#include <google/protobuf/io/coded_stream.h>
+#include <google/protobuf/extension_set.h>
+#include <google/protobuf/wire_format_lite_inl.h>
+#include <google/protobuf/descriptor.h>
+#include <google/protobuf/generated_message_reflection.h>
+#include <google/protobuf/reflection_ops.h>
+#include <google/protobuf/wire_format.h>
+// @@protoc_insertion_point(includes)
+#include <google/protobuf/port_def.inc>
+
+extern PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fframework_2fattr_5fvalue_2eproto ::google::protobuf::internal::SCCInfo<2> scc_info_AttrValue_tensorflow_2fcore_2fframework_2fattr_5fvalue_2eproto;
+extern PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fframework_2fop_5fdef_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_OpDef_ArgDef_tensorflow_2fcore_2fframework_2fop_5fdef_2eproto;
+extern PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fframework_2fop_5fdef_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_OpDeprecation_tensorflow_2fcore_2fframework_2fop_5fdef_2eproto;
+extern PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fframework_2fop_5fdef_2eproto ::google::protobuf::internal::SCCInfo<1> scc_info_OpDef_AttrDef_tensorflow_2fcore_2fframework_2fop_5fdef_2eproto;
+extern PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fframework_2fop_5fdef_2eproto ::google::protobuf::internal::SCCInfo<3> scc_info_OpDef_tensorflow_2fcore_2fframework_2fop_5fdef_2eproto;
+namespace tensorflow {
+class OpDef_ArgDefDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<OpDef_ArgDef> _instance;
+} _OpDef_ArgDef_default_instance_;
+class OpDef_AttrDefDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<OpDef_AttrDef> _instance;
+} _OpDef_AttrDef_default_instance_;
+class OpDefDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<OpDef> _instance;
+} _OpDef_default_instance_;
+class OpDeprecationDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<OpDeprecation> _instance;
+} _OpDeprecation_default_instance_;
+class OpListDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<OpList> _instance;
+} _OpList_default_instance_;
+}  // namespace tensorflow
+static void InitDefaultsOpDef_ArgDef_tensorflow_2fcore_2fframework_2fop_5fdef_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_OpDef_ArgDef_default_instance_;
+    new (ptr) ::tensorflow::OpDef_ArgDef();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::OpDef_ArgDef::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<0> scc_info_OpDef_ArgDef_tensorflow_2fcore_2fframework_2fop_5fdef_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsOpDef_ArgDef_tensorflow_2fcore_2fframework_2fop_5fdef_2eproto}, {}};
+
+static void InitDefaultsOpDef_AttrDef_tensorflow_2fcore_2fframework_2fop_5fdef_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_OpDef_AttrDef_default_instance_;
+    new (ptr) ::tensorflow::OpDef_AttrDef();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::OpDef_AttrDef::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<1> scc_info_OpDef_AttrDef_tensorflow_2fcore_2fframework_2fop_5fdef_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsOpDef_AttrDef_tensorflow_2fcore_2fframework_2fop_5fdef_2eproto}, {
+      &scc_info_AttrValue_tensorflow_2fcore_2fframework_2fattr_5fvalue_2eproto.base,}};
+
+static void InitDefaultsOpDef_tensorflow_2fcore_2fframework_2fop_5fdef_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_OpDef_default_instance_;
+    new (ptr) ::tensorflow::OpDef();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::OpDef::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<3> scc_info_OpDef_tensorflow_2fcore_2fframework_2fop_5fdef_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 3, InitDefaultsOpDef_tensorflow_2fcore_2fframework_2fop_5fdef_2eproto}, {
+      &scc_info_OpDef_ArgDef_tensorflow_2fcore_2fframework_2fop_5fdef_2eproto.base,
+      &scc_info_OpDef_AttrDef_tensorflow_2fcore_2fframework_2fop_5fdef_2eproto.base,
+      &scc_info_OpDeprecation_tensorflow_2fcore_2fframework_2fop_5fdef_2eproto.base,}};
+
+static void InitDefaultsOpDeprecation_tensorflow_2fcore_2fframework_2fop_5fdef_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_OpDeprecation_default_instance_;
+    new (ptr) ::tensorflow::OpDeprecation();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::OpDeprecation::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<0> scc_info_OpDeprecation_tensorflow_2fcore_2fframework_2fop_5fdef_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsOpDeprecation_tensorflow_2fcore_2fframework_2fop_5fdef_2eproto}, {}};
+
+static void InitDefaultsOpList_tensorflow_2fcore_2fframework_2fop_5fdef_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_OpList_default_instance_;
+    new (ptr) ::tensorflow::OpList();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::OpList::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<1> scc_info_OpList_tensorflow_2fcore_2fframework_2fop_5fdef_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsOpList_tensorflow_2fcore_2fframework_2fop_5fdef_2eproto}, {
+      &scc_info_OpDef_tensorflow_2fcore_2fframework_2fop_5fdef_2eproto.base,}};
+
+void InitDefaults_tensorflow_2fcore_2fframework_2fop_5fdef_2eproto() {
+  ::google::protobuf::internal::InitSCC(&scc_info_OpDef_ArgDef_tensorflow_2fcore_2fframework_2fop_5fdef_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_OpDef_AttrDef_tensorflow_2fcore_2fframework_2fop_5fdef_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_OpDef_tensorflow_2fcore_2fframework_2fop_5fdef_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_OpDeprecation_tensorflow_2fcore_2fframework_2fop_5fdef_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_OpList_tensorflow_2fcore_2fframework_2fop_5fdef_2eproto.base);
+}
+
+::google::protobuf::Metadata file_level_metadata_tensorflow_2fcore_2fframework_2fop_5fdef_2eproto[5];
+constexpr ::google::protobuf::EnumDescriptor const** file_level_enum_descriptors_tensorflow_2fcore_2fframework_2fop_5fdef_2eproto = nullptr;
+constexpr ::google::protobuf::ServiceDescriptor const** file_level_service_descriptors_tensorflow_2fcore_2fframework_2fop_5fdef_2eproto = nullptr;
+
+const ::google::protobuf::uint32 TableStruct_tensorflow_2fcore_2fframework_2fop_5fdef_2eproto::offsets[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = {
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::OpDef_ArgDef, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::OpDef_ArgDef, name_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::OpDef_ArgDef, description_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::OpDef_ArgDef, type_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::OpDef_ArgDef, type_attr_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::OpDef_ArgDef, number_attr_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::OpDef_ArgDef, type_list_attr_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::OpDef_ArgDef, is_ref_),
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::OpDef_AttrDef, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::OpDef_AttrDef, name_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::OpDef_AttrDef, type_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::OpDef_AttrDef, default_value_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::OpDef_AttrDef, description_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::OpDef_AttrDef, has_minimum_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::OpDef_AttrDef, minimum_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::OpDef_AttrDef, allowed_values_),
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::OpDef, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::OpDef, name_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::OpDef, input_arg_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::OpDef, output_arg_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::OpDef, attr_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::OpDef, deprecation_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::OpDef, summary_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::OpDef, description_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::OpDef, is_commutative_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::OpDef, is_aggregate_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::OpDef, is_stateful_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::OpDef, allows_uninitialized_input_),
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::OpDeprecation, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::OpDeprecation, version_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::OpDeprecation, explanation_),
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::OpList, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::OpList, op_),
+};
+static const ::google::protobuf::internal::MigrationSchema schemas[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = {
+  { 0, -1, sizeof(::tensorflow::OpDef_ArgDef)},
+  { 12, -1, sizeof(::tensorflow::OpDef_AttrDef)},
+  { 24, -1, sizeof(::tensorflow::OpDef)},
+  { 40, -1, sizeof(::tensorflow::OpDeprecation)},
+  { 47, -1, sizeof(::tensorflow::OpList)},
+};
+
+static ::google::protobuf::Message const * const file_default_instances[] = {
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_OpDef_ArgDef_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_OpDef_AttrDef_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_OpDef_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_OpDeprecation_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_OpList_default_instance_),
+};
+
+::google::protobuf::internal::AssignDescriptorsTable assign_descriptors_table_tensorflow_2fcore_2fframework_2fop_5fdef_2eproto = {
+  {}, AddDescriptors_tensorflow_2fcore_2fframework_2fop_5fdef_2eproto, "tensorflow/core/framework/op_def.proto", schemas,
+  file_default_instances, TableStruct_tensorflow_2fcore_2fframework_2fop_5fdef_2eproto::offsets,
+  file_level_metadata_tensorflow_2fcore_2fframework_2fop_5fdef_2eproto, 5, file_level_enum_descriptors_tensorflow_2fcore_2fframework_2fop_5fdef_2eproto, file_level_service_descriptors_tensorflow_2fcore_2fframework_2fop_5fdef_2eproto,
+};
+
+::google::protobuf::internal::DescriptorTable descriptor_table_tensorflow_2fcore_2fframework_2fop_5fdef_2eproto = {
+  false, InitDefaults_tensorflow_2fcore_2fframework_2fop_5fdef_2eproto, 
+  "\n&tensorflow/core/framework/op_def.proto"
+  "\022\ntensorflow\032*tensorflow/core/framework/"
+  "attr_value.proto\032%tensorflow/core/framew"
+  "ork/types.proto\"\270\005\n\005OpDef\022\014\n\004name\030\001 \001(\t\022"
+  "+\n\tinput_arg\030\002 \003(\0132\030.tensorflow.OpDef.Ar"
+  "gDef\022,\n\noutput_arg\030\003 \003(\0132\030.tensorflow.Op"
+  "Def.ArgDef\022\'\n\004attr\030\004 \003(\0132\031.tensorflow.Op"
+  "Def.AttrDef\022.\n\013deprecation\030\010 \001(\0132\031.tenso"
+  "rflow.OpDeprecation\022\017\n\007summary\030\005 \001(\t\022\023\n\013"
+  "description\030\006 \001(\t\022\026\n\016is_commutative\030\022 \001("
+  "\010\022\024\n\014is_aggregate\030\020 \001(\010\022\023\n\013is_stateful\030\021"
+  " \001(\010\022\"\n\032allows_uninitialized_input\030\023 \001(\010"
+  "\032\237\001\n\006ArgDef\022\014\n\004name\030\001 \001(\t\022\023\n\013description"
+  "\030\002 \001(\t\022\"\n\004type\030\003 \001(\0162\024.tensorflow.DataTy"
+  "pe\022\021\n\ttype_attr\030\004 \001(\t\022\023\n\013number_attr\030\005 \001"
+  "(\t\022\026\n\016type_list_attr\030\006 \001(\t\022\016\n\006is_ref\030\020 \001"
+  "(\010\032\275\001\n\007AttrDef\022\014\n\004name\030\001 \001(\t\022\014\n\004type\030\002 \001"
+  "(\t\022,\n\rdefault_value\030\003 \001(\0132\025.tensorflow.A"
+  "ttrValue\022\023\n\013description\030\004 \001(\t\022\023\n\013has_min"
+  "imum\030\005 \001(\010\022\017\n\007minimum\030\006 \001(\003\022-\n\016allowed_v"
+  "alues\030\007 \001(\0132\025.tensorflow.AttrValue\"5\n\rOp"
+  "Deprecation\022\017\n\007version\030\001 \001(\005\022\023\n\013explanat"
+  "ion\030\002 \001(\t\"\'\n\006OpList\022\035\n\002op\030\001 \003(\0132\021.tensor"
+  "flow.OpDefBk\n\030org.tensorflow.frameworkB\013"
+  "OpDefProtosP\001Z=github.com/tensorflow/ten"
+  "sorflow/tensorflow/go/core/framework\370\001\001b"
+  "\006proto3"
+,
+  "tensorflow/core/framework/op_def.proto", &assign_descriptors_table_tensorflow_2fcore_2fframework_2fop_5fdef_2eproto, 1047,
+};
+
+void AddDescriptors_tensorflow_2fcore_2fframework_2fop_5fdef_2eproto() {
+  static constexpr ::google::protobuf::internal::InitFunc deps[2] =
+  {
+    ::AddDescriptors_tensorflow_2fcore_2fframework_2fattr_5fvalue_2eproto,
+    ::AddDescriptors_tensorflow_2fcore_2fframework_2ftypes_2eproto,
+  };
+ ::google::protobuf::internal::AddDescriptors(&descriptor_table_tensorflow_2fcore_2fframework_2fop_5fdef_2eproto, deps, 2);
+}
+
+// Force running AddDescriptors() at dynamic initialization time.
+static bool dynamic_init_dummy_tensorflow_2fcore_2fframework_2fop_5fdef_2eproto = []() { AddDescriptors_tensorflow_2fcore_2fframework_2fop_5fdef_2eproto(); return true; }();
+namespace tensorflow {
+
+// ===================================================================
+
+void OpDef_ArgDef::InitAsDefaultInstance() {
+}
+class OpDef_ArgDef::HasBitSetters {
+ public:
+};
+
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int OpDef_ArgDef::kNameFieldNumber;
+const int OpDef_ArgDef::kDescriptionFieldNumber;
+const int OpDef_ArgDef::kTypeFieldNumber;
+const int OpDef_ArgDef::kTypeAttrFieldNumber;
+const int OpDef_ArgDef::kNumberAttrFieldNumber;
+const int OpDef_ArgDef::kTypeListAttrFieldNumber;
+const int OpDef_ArgDef::kIsRefFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+OpDef_ArgDef::OpDef_ArgDef()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.OpDef.ArgDef)
+}
+OpDef_ArgDef::OpDef_ArgDef(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.OpDef.ArgDef)
+}
+OpDef_ArgDef::OpDef_ArgDef(const OpDef_ArgDef& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.name().size() > 0) {
+    name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.name(),
+      GetArenaNoVirtual());
+  }
+  description_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.description().size() > 0) {
+    description_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.description(),
+      GetArenaNoVirtual());
+  }
+  type_attr_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.type_attr().size() > 0) {
+    type_attr_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.type_attr(),
+      GetArenaNoVirtual());
+  }
+  number_attr_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.number_attr().size() > 0) {
+    number_attr_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.number_attr(),
+      GetArenaNoVirtual());
+  }
+  type_list_attr_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.type_list_attr().size() > 0) {
+    type_list_attr_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.type_list_attr(),
+      GetArenaNoVirtual());
+  }
+  ::memcpy(&type_, &from.type_,
+    static_cast<size_t>(reinterpret_cast<char*>(&is_ref_) -
+    reinterpret_cast<char*>(&type_)) + sizeof(is_ref_));
+  // @@protoc_insertion_point(copy_constructor:tensorflow.OpDef.ArgDef)
+}
+
+void OpDef_ArgDef::SharedCtor() {
+  ::google::protobuf::internal::InitSCC(
+      &scc_info_OpDef_ArgDef_tensorflow_2fcore_2fframework_2fop_5fdef_2eproto.base);
+  name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  description_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  type_attr_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  number_attr_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  type_list_attr_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  ::memset(&type_, 0, static_cast<size_t>(
+      reinterpret_cast<char*>(&is_ref_) -
+      reinterpret_cast<char*>(&type_)) + sizeof(is_ref_));
+}
+
+OpDef_ArgDef::~OpDef_ArgDef() {
+  // @@protoc_insertion_point(destructor:tensorflow.OpDef.ArgDef)
+  SharedDtor();
+}
+
+void OpDef_ArgDef::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+  name_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  description_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  type_attr_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  number_attr_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  type_list_attr_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+
+void OpDef_ArgDef::ArenaDtor(void* object) {
+  OpDef_ArgDef* _this = reinterpret_cast< OpDef_ArgDef* >(object);
+  (void)_this;
+}
+void OpDef_ArgDef::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void OpDef_ArgDef::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const OpDef_ArgDef& OpDef_ArgDef::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_OpDef_ArgDef_tensorflow_2fcore_2fframework_2fop_5fdef_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void OpDef_ArgDef::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.OpDef.ArgDef)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  name_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+  description_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+  type_attr_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+  number_attr_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+  type_list_attr_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+  ::memset(&type_, 0, static_cast<size_t>(
+      reinterpret_cast<char*>(&is_ref_) -
+      reinterpret_cast<char*>(&type_)) + sizeof(is_ref_));
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* OpDef_ArgDef::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<OpDef_ArgDef*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // string name = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 10) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("tensorflow.OpDef.ArgDef.name");
+        parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+        ::std::string* str = msg->mutable_name();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+        break;
+      }
+      // string description = 2;
+      case 2: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 18) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("tensorflow.OpDef.ArgDef.description");
+        parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+        ::std::string* str = msg->mutable_description();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+        break;
+      }
+      // .tensorflow.DataType type = 3;
+      case 3: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 24) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::tensorflow::DataType value = static_cast<::tensorflow::DataType>(val);
+        msg->set_type(value);
+        break;
+      }
+      // string type_attr = 4;
+      case 4: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 34) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("tensorflow.OpDef.ArgDef.type_attr");
+        parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+        ::std::string* str = msg->mutable_type_attr();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+        break;
+      }
+      // string number_attr = 5;
+      case 5: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 42) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("tensorflow.OpDef.ArgDef.number_attr");
+        parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+        ::std::string* str = msg->mutable_number_attr();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+        break;
+      }
+      // string type_list_attr = 6;
+      case 6: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 50) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("tensorflow.OpDef.ArgDef.type_list_attr");
+        parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+        ::std::string* str = msg->mutable_type_list_attr();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+        break;
+      }
+      // bool is_ref = 16;
+      case 16: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 128) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        bool value = val;
+        msg->set_is_ref(value);
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool OpDef_ArgDef::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.OpDef.ArgDef)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(16383u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // string name = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (10 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_name()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->name().data(), static_cast<int>(this->name().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.OpDef.ArgDef.name"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // string description = 2;
+      case 2: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (18 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_description()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->description().data(), static_cast<int>(this->description().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.OpDef.ArgDef.description"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // .tensorflow.DataType type = 3;
+      case 3: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (24 & 0xFF)) {
+          int value = 0;
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>(
+                 input, &value)));
+          set_type(static_cast< ::tensorflow::DataType >(value));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // string type_attr = 4;
+      case 4: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (34 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_type_attr()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->type_attr().data(), static_cast<int>(this->type_attr().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.OpDef.ArgDef.type_attr"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // string number_attr = 5;
+      case 5: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (42 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_number_attr()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->number_attr().data(), static_cast<int>(this->number_attr().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.OpDef.ArgDef.number_attr"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // string type_list_attr = 6;
+      case 6: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (50 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_type_list_attr()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->type_list_attr().data(), static_cast<int>(this->type_list_attr().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.OpDef.ArgDef.type_list_attr"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // bool is_ref = 16;
+      case 16: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (128 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
+                 input, &is_ref_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.OpDef.ArgDef)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.OpDef.ArgDef)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void OpDef_ArgDef::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.OpDef.ArgDef)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // string name = 1;
+  if (this->name().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->name().data(), static_cast<int>(this->name().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.OpDef.ArgDef.name");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      1, this->name(), output);
+  }
+
+  // string description = 2;
+  if (this->description().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->description().data(), static_cast<int>(this->description().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.OpDef.ArgDef.description");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      2, this->description(), output);
+  }
+
+  // .tensorflow.DataType type = 3;
+  if (this->type() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteEnum(
+      3, this->type(), output);
+  }
+
+  // string type_attr = 4;
+  if (this->type_attr().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->type_attr().data(), static_cast<int>(this->type_attr().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.OpDef.ArgDef.type_attr");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      4, this->type_attr(), output);
+  }
+
+  // string number_attr = 5;
+  if (this->number_attr().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->number_attr().data(), static_cast<int>(this->number_attr().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.OpDef.ArgDef.number_attr");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      5, this->number_attr(), output);
+  }
+
+  // string type_list_attr = 6;
+  if (this->type_list_attr().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->type_list_attr().data(), static_cast<int>(this->type_list_attr().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.OpDef.ArgDef.type_list_attr");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      6, this->type_list_attr(), output);
+  }
+
+  // bool is_ref = 16;
+  if (this->is_ref() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteBool(16, this->is_ref(), output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.OpDef.ArgDef)
+}
+
+::google::protobuf::uint8* OpDef_ArgDef::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.OpDef.ArgDef)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // string name = 1;
+  if (this->name().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->name().data(), static_cast<int>(this->name().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.OpDef.ArgDef.name");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        1, this->name(), target);
+  }
+
+  // string description = 2;
+  if (this->description().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->description().data(), static_cast<int>(this->description().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.OpDef.ArgDef.description");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        2, this->description(), target);
+  }
+
+  // .tensorflow.DataType type = 3;
+  if (this->type() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteEnumToArray(
+      3, this->type(), target);
+  }
+
+  // string type_attr = 4;
+  if (this->type_attr().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->type_attr().data(), static_cast<int>(this->type_attr().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.OpDef.ArgDef.type_attr");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        4, this->type_attr(), target);
+  }
+
+  // string number_attr = 5;
+  if (this->number_attr().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->number_attr().data(), static_cast<int>(this->number_attr().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.OpDef.ArgDef.number_attr");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        5, this->number_attr(), target);
+  }
+
+  // string type_list_attr = 6;
+  if (this->type_list_attr().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->type_list_attr().data(), static_cast<int>(this->type_list_attr().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.OpDef.ArgDef.type_list_attr");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        6, this->type_list_attr(), target);
+  }
+
+  // bool is_ref = 16;
+  if (this->is_ref() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(16, this->is_ref(), target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.OpDef.ArgDef)
+  return target;
+}
+
+size_t OpDef_ArgDef::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.OpDef.ArgDef)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // string name = 1;
+  if (this->name().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->name());
+  }
+
+  // string description = 2;
+  if (this->description().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->description());
+  }
+
+  // string type_attr = 4;
+  if (this->type_attr().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->type_attr());
+  }
+
+  // string number_attr = 5;
+  if (this->number_attr().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->number_attr());
+  }
+
+  // string type_list_attr = 6;
+  if (this->type_list_attr().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->type_list_attr());
+  }
+
+  // .tensorflow.DataType type = 3;
+  if (this->type() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::EnumSize(this->type());
+  }
+
+  // bool is_ref = 16;
+  if (this->is_ref() != 0) {
+    total_size += 2 + 1;
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void OpDef_ArgDef::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.OpDef.ArgDef)
+  GOOGLE_DCHECK_NE(&from, this);
+  const OpDef_ArgDef* source =
+      ::google::protobuf::DynamicCastToGenerated<OpDef_ArgDef>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.OpDef.ArgDef)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.OpDef.ArgDef)
+    MergeFrom(*source);
+  }
+}
+
+void OpDef_ArgDef::MergeFrom(const OpDef_ArgDef& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.OpDef.ArgDef)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  if (from.name().size() > 0) {
+    set_name(from.name());
+  }
+  if (from.description().size() > 0) {
+    set_description(from.description());
+  }
+  if (from.type_attr().size() > 0) {
+    set_type_attr(from.type_attr());
+  }
+  if (from.number_attr().size() > 0) {
+    set_number_attr(from.number_attr());
+  }
+  if (from.type_list_attr().size() > 0) {
+    set_type_list_attr(from.type_list_attr());
+  }
+  if (from.type() != 0) {
+    set_type(from.type());
+  }
+  if (from.is_ref() != 0) {
+    set_is_ref(from.is_ref());
+  }
+}
+
+void OpDef_ArgDef::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.OpDef.ArgDef)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void OpDef_ArgDef::CopyFrom(const OpDef_ArgDef& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.OpDef.ArgDef)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool OpDef_ArgDef::IsInitialized() const {
+  return true;
+}
+
+void OpDef_ArgDef::Swap(OpDef_ArgDef* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    OpDef_ArgDef* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void OpDef_ArgDef::UnsafeArenaSwap(OpDef_ArgDef* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void OpDef_ArgDef::InternalSwap(OpDef_ArgDef* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  name_.Swap(&other->name_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+  description_.Swap(&other->description_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+  type_attr_.Swap(&other->type_attr_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+  number_attr_.Swap(&other->number_attr_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+  type_list_attr_.Swap(&other->type_list_attr_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+  swap(type_, other->type_);
+  swap(is_ref_, other->is_ref_);
+}
+
+::google::protobuf::Metadata OpDef_ArgDef::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fframework_2fop_5fdef_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fframework_2fop_5fdef_2eproto[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+void OpDef_AttrDef::InitAsDefaultInstance() {
+  ::tensorflow::_OpDef_AttrDef_default_instance_._instance.get_mutable()->default_value_ = const_cast< ::tensorflow::AttrValue*>(
+      ::tensorflow::AttrValue::internal_default_instance());
+  ::tensorflow::_OpDef_AttrDef_default_instance_._instance.get_mutable()->allowed_values_ = const_cast< ::tensorflow::AttrValue*>(
+      ::tensorflow::AttrValue::internal_default_instance());
+}
+class OpDef_AttrDef::HasBitSetters {
+ public:
+  static const ::tensorflow::AttrValue& default_value(const OpDef_AttrDef* msg);
+  static const ::tensorflow::AttrValue& allowed_values(const OpDef_AttrDef* msg);
+};
+
+const ::tensorflow::AttrValue&
+OpDef_AttrDef::HasBitSetters::default_value(const OpDef_AttrDef* msg) {
+  return *msg->default_value_;
+}
+const ::tensorflow::AttrValue&
+OpDef_AttrDef::HasBitSetters::allowed_values(const OpDef_AttrDef* msg) {
+  return *msg->allowed_values_;
+}
+void OpDef_AttrDef::unsafe_arena_set_allocated_default_value(
+    ::tensorflow::AttrValue* default_value) {
+  if (GetArenaNoVirtual() == NULL) {
+    delete default_value_;
+  }
+  default_value_ = default_value;
+  if (default_value) {
+    
+  } else {
+    
+  }
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.OpDef.AttrDef.default_value)
+}
+void OpDef_AttrDef::clear_default_value() {
+  if (GetArenaNoVirtual() == NULL && default_value_ != NULL) {
+    delete default_value_;
+  }
+  default_value_ = NULL;
+}
+void OpDef_AttrDef::unsafe_arena_set_allocated_allowed_values(
+    ::tensorflow::AttrValue* allowed_values) {
+  if (GetArenaNoVirtual() == NULL) {
+    delete allowed_values_;
+  }
+  allowed_values_ = allowed_values;
+  if (allowed_values) {
+    
+  } else {
+    
+  }
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.OpDef.AttrDef.allowed_values)
+}
+void OpDef_AttrDef::clear_allowed_values() {
+  if (GetArenaNoVirtual() == NULL && allowed_values_ != NULL) {
+    delete allowed_values_;
+  }
+  allowed_values_ = NULL;
+}
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int OpDef_AttrDef::kNameFieldNumber;
+const int OpDef_AttrDef::kTypeFieldNumber;
+const int OpDef_AttrDef::kDefaultValueFieldNumber;
+const int OpDef_AttrDef::kDescriptionFieldNumber;
+const int OpDef_AttrDef::kHasMinimumFieldNumber;
+const int OpDef_AttrDef::kMinimumFieldNumber;
+const int OpDef_AttrDef::kAllowedValuesFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+OpDef_AttrDef::OpDef_AttrDef()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.OpDef.AttrDef)
+}
+OpDef_AttrDef::OpDef_AttrDef(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.OpDef.AttrDef)
+}
+OpDef_AttrDef::OpDef_AttrDef(const OpDef_AttrDef& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.name().size() > 0) {
+    name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.name(),
+      GetArenaNoVirtual());
+  }
+  type_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.type().size() > 0) {
+    type_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.type(),
+      GetArenaNoVirtual());
+  }
+  description_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.description().size() > 0) {
+    description_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.description(),
+      GetArenaNoVirtual());
+  }
+  if (from.has_default_value()) {
+    default_value_ = new ::tensorflow::AttrValue(*from.default_value_);
+  } else {
+    default_value_ = NULL;
+  }
+  if (from.has_allowed_values()) {
+    allowed_values_ = new ::tensorflow::AttrValue(*from.allowed_values_);
+  } else {
+    allowed_values_ = NULL;
+  }
+  ::memcpy(&minimum_, &from.minimum_,
+    static_cast<size_t>(reinterpret_cast<char*>(&has_minimum_) -
+    reinterpret_cast<char*>(&minimum_)) + sizeof(has_minimum_));
+  // @@protoc_insertion_point(copy_constructor:tensorflow.OpDef.AttrDef)
+}
+
+void OpDef_AttrDef::SharedCtor() {
+  ::google::protobuf::internal::InitSCC(
+      &scc_info_OpDef_AttrDef_tensorflow_2fcore_2fframework_2fop_5fdef_2eproto.base);
+  name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  type_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  description_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  ::memset(&default_value_, 0, static_cast<size_t>(
+      reinterpret_cast<char*>(&has_minimum_) -
+      reinterpret_cast<char*>(&default_value_)) + sizeof(has_minimum_));
+}
+
+OpDef_AttrDef::~OpDef_AttrDef() {
+  // @@protoc_insertion_point(destructor:tensorflow.OpDef.AttrDef)
+  SharedDtor();
+}
+
+void OpDef_AttrDef::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+  name_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  type_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  description_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (this != internal_default_instance()) delete default_value_;
+  if (this != internal_default_instance()) delete allowed_values_;
+}
+
+void OpDef_AttrDef::ArenaDtor(void* object) {
+  OpDef_AttrDef* _this = reinterpret_cast< OpDef_AttrDef* >(object);
+  (void)_this;
+}
+void OpDef_AttrDef::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void OpDef_AttrDef::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const OpDef_AttrDef& OpDef_AttrDef::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_OpDef_AttrDef_tensorflow_2fcore_2fframework_2fop_5fdef_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void OpDef_AttrDef::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.OpDef.AttrDef)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  name_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+  type_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+  description_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+  if (GetArenaNoVirtual() == NULL && default_value_ != NULL) {
+    delete default_value_;
+  }
+  default_value_ = NULL;
+  if (GetArenaNoVirtual() == NULL && allowed_values_ != NULL) {
+    delete allowed_values_;
+  }
+  allowed_values_ = NULL;
+  ::memset(&minimum_, 0, static_cast<size_t>(
+      reinterpret_cast<char*>(&has_minimum_) -
+      reinterpret_cast<char*>(&minimum_)) + sizeof(has_minimum_));
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* OpDef_AttrDef::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<OpDef_AttrDef*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // string name = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 10) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("tensorflow.OpDef.AttrDef.name");
+        parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+        ::std::string* str = msg->mutable_name();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+        break;
+      }
+      // string type = 2;
+      case 2: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 18) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("tensorflow.OpDef.AttrDef.type");
+        parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+        ::std::string* str = msg->mutable_type();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+        break;
+      }
+      // .tensorflow.AttrValue default_value = 3;
+      case 3: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 26) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        parser_till_end = ::tensorflow::AttrValue::_InternalParse;
+        object = msg->mutable_default_value();
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                       ptr, newend);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+        ptr = newend;
+        break;
+      }
+      // string description = 4;
+      case 4: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 34) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("tensorflow.OpDef.AttrDef.description");
+        parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+        ::std::string* str = msg->mutable_description();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+        break;
+      }
+      // bool has_minimum = 5;
+      case 5: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 40) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        bool value = val;
+        msg->set_has_minimum(value);
+        break;
+      }
+      // int64 minimum = 6;
+      case 6: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 48) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::google::protobuf::int64 value = val;
+        msg->set_minimum(value);
+        break;
+      }
+      // .tensorflow.AttrValue allowed_values = 7;
+      case 7: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 58) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        parser_till_end = ::tensorflow::AttrValue::_InternalParse;
+        object = msg->mutable_allowed_values();
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                       ptr, newend);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+        ptr = newend;
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool OpDef_AttrDef::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.OpDef.AttrDef)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // string name = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (10 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_name()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->name().data(), static_cast<int>(this->name().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.OpDef.AttrDef.name"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // string type = 2;
+      case 2: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (18 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_type()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->type().data(), static_cast<int>(this->type().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.OpDef.AttrDef.type"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // .tensorflow.AttrValue default_value = 3;
+      case 3: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (26 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+               input, mutable_default_value()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // string description = 4;
+      case 4: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (34 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_description()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->description().data(), static_cast<int>(this->description().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.OpDef.AttrDef.description"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // bool has_minimum = 5;
+      case 5: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (40 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
+                 input, &has_minimum_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // int64 minimum = 6;
+      case 6: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (48 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>(
+                 input, &minimum_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // .tensorflow.AttrValue allowed_values = 7;
+      case 7: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (58 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+               input, mutable_allowed_values()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.OpDef.AttrDef)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.OpDef.AttrDef)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void OpDef_AttrDef::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.OpDef.AttrDef)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // string name = 1;
+  if (this->name().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->name().data(), static_cast<int>(this->name().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.OpDef.AttrDef.name");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      1, this->name(), output);
+  }
+
+  // string type = 2;
+  if (this->type().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->type().data(), static_cast<int>(this->type().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.OpDef.AttrDef.type");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      2, this->type(), output);
+  }
+
+  // .tensorflow.AttrValue default_value = 3;
+  if (this->has_default_value()) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      3, HasBitSetters::default_value(this), output);
+  }
+
+  // string description = 4;
+  if (this->description().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->description().data(), static_cast<int>(this->description().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.OpDef.AttrDef.description");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      4, this->description(), output);
+  }
+
+  // bool has_minimum = 5;
+  if (this->has_minimum() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteBool(5, this->has_minimum(), output);
+  }
+
+  // int64 minimum = 6;
+  if (this->minimum() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt64(6, this->minimum(), output);
+  }
+
+  // .tensorflow.AttrValue allowed_values = 7;
+  if (this->has_allowed_values()) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      7, HasBitSetters::allowed_values(this), output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.OpDef.AttrDef)
+}
+
+::google::protobuf::uint8* OpDef_AttrDef::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.OpDef.AttrDef)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // string name = 1;
+  if (this->name().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->name().data(), static_cast<int>(this->name().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.OpDef.AttrDef.name");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        1, this->name(), target);
+  }
+
+  // string type = 2;
+  if (this->type().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->type().data(), static_cast<int>(this->type().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.OpDef.AttrDef.type");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        2, this->type(), target);
+  }
+
+  // .tensorflow.AttrValue default_value = 3;
+  if (this->has_default_value()) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        3, HasBitSetters::default_value(this), deterministic, target);
+  }
+
+  // string description = 4;
+  if (this->description().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->description().data(), static_cast<int>(this->description().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.OpDef.AttrDef.description");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        4, this->description(), target);
+  }
+
+  // bool has_minimum = 5;
+  if (this->has_minimum() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(5, this->has_minimum(), target);
+  }
+
+  // int64 minimum = 6;
+  if (this->minimum() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt64ToArray(6, this->minimum(), target);
+  }
+
+  // .tensorflow.AttrValue allowed_values = 7;
+  if (this->has_allowed_values()) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        7, HasBitSetters::allowed_values(this), deterministic, target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.OpDef.AttrDef)
+  return target;
+}
+
+size_t OpDef_AttrDef::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.OpDef.AttrDef)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // string name = 1;
+  if (this->name().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->name());
+  }
+
+  // string type = 2;
+  if (this->type().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->type());
+  }
+
+  // string description = 4;
+  if (this->description().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->description());
+  }
+
+  // .tensorflow.AttrValue default_value = 3;
+  if (this->has_default_value()) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::MessageSize(
+        *default_value_);
+  }
+
+  // .tensorflow.AttrValue allowed_values = 7;
+  if (this->has_allowed_values()) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::MessageSize(
+        *allowed_values_);
+  }
+
+  // int64 minimum = 6;
+  if (this->minimum() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::Int64Size(
+        this->minimum());
+  }
+
+  // bool has_minimum = 5;
+  if (this->has_minimum() != 0) {
+    total_size += 1 + 1;
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void OpDef_AttrDef::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.OpDef.AttrDef)
+  GOOGLE_DCHECK_NE(&from, this);
+  const OpDef_AttrDef* source =
+      ::google::protobuf::DynamicCastToGenerated<OpDef_AttrDef>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.OpDef.AttrDef)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.OpDef.AttrDef)
+    MergeFrom(*source);
+  }
+}
+
+void OpDef_AttrDef::MergeFrom(const OpDef_AttrDef& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.OpDef.AttrDef)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  if (from.name().size() > 0) {
+    set_name(from.name());
+  }
+  if (from.type().size() > 0) {
+    set_type(from.type());
+  }
+  if (from.description().size() > 0) {
+    set_description(from.description());
+  }
+  if (from.has_default_value()) {
+    mutable_default_value()->::tensorflow::AttrValue::MergeFrom(from.default_value());
+  }
+  if (from.has_allowed_values()) {
+    mutable_allowed_values()->::tensorflow::AttrValue::MergeFrom(from.allowed_values());
+  }
+  if (from.minimum() != 0) {
+    set_minimum(from.minimum());
+  }
+  if (from.has_minimum() != 0) {
+    set_has_minimum(from.has_minimum());
+  }
+}
+
+void OpDef_AttrDef::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.OpDef.AttrDef)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void OpDef_AttrDef::CopyFrom(const OpDef_AttrDef& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.OpDef.AttrDef)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool OpDef_AttrDef::IsInitialized() const {
+  return true;
+}
+
+void OpDef_AttrDef::Swap(OpDef_AttrDef* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    OpDef_AttrDef* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void OpDef_AttrDef::UnsafeArenaSwap(OpDef_AttrDef* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void OpDef_AttrDef::InternalSwap(OpDef_AttrDef* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  name_.Swap(&other->name_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+  type_.Swap(&other->type_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+  description_.Swap(&other->description_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+  swap(default_value_, other->default_value_);
+  swap(allowed_values_, other->allowed_values_);
+  swap(minimum_, other->minimum_);
+  swap(has_minimum_, other->has_minimum_);
+}
+
+::google::protobuf::Metadata OpDef_AttrDef::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fframework_2fop_5fdef_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fframework_2fop_5fdef_2eproto[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+void OpDef::InitAsDefaultInstance() {
+  ::tensorflow::_OpDef_default_instance_._instance.get_mutable()->deprecation_ = const_cast< ::tensorflow::OpDeprecation*>(
+      ::tensorflow::OpDeprecation::internal_default_instance());
+}
+class OpDef::HasBitSetters {
+ public:
+  static const ::tensorflow::OpDeprecation& deprecation(const OpDef* msg);
+};
+
+const ::tensorflow::OpDeprecation&
+OpDef::HasBitSetters::deprecation(const OpDef* msg) {
+  return *msg->deprecation_;
+}
+void OpDef::unsafe_arena_set_allocated_deprecation(
+    ::tensorflow::OpDeprecation* deprecation) {
+  if (GetArenaNoVirtual() == NULL) {
+    delete deprecation_;
+  }
+  deprecation_ = deprecation;
+  if (deprecation) {
+    
+  } else {
+    
+  }
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.OpDef.deprecation)
+}
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int OpDef::kNameFieldNumber;
+const int OpDef::kInputArgFieldNumber;
+const int OpDef::kOutputArgFieldNumber;
+const int OpDef::kAttrFieldNumber;
+const int OpDef::kDeprecationFieldNumber;
+const int OpDef::kSummaryFieldNumber;
+const int OpDef::kDescriptionFieldNumber;
+const int OpDef::kIsCommutativeFieldNumber;
+const int OpDef::kIsAggregateFieldNumber;
+const int OpDef::kIsStatefulFieldNumber;
+const int OpDef::kAllowsUninitializedInputFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+OpDef::OpDef()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.OpDef)
+}
+OpDef::OpDef(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena),
+  input_arg_(arena),
+  output_arg_(arena),
+  attr_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.OpDef)
+}
+OpDef::OpDef(const OpDef& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL),
+      input_arg_(from.input_arg_),
+      output_arg_(from.output_arg_),
+      attr_(from.attr_) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.name().size() > 0) {
+    name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.name(),
+      GetArenaNoVirtual());
+  }
+  summary_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.summary().size() > 0) {
+    summary_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.summary(),
+      GetArenaNoVirtual());
+  }
+  description_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.description().size() > 0) {
+    description_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.description(),
+      GetArenaNoVirtual());
+  }
+  if (from.has_deprecation()) {
+    deprecation_ = new ::tensorflow::OpDeprecation(*from.deprecation_);
+  } else {
+    deprecation_ = NULL;
+  }
+  ::memcpy(&is_commutative_, &from.is_commutative_,
+    static_cast<size_t>(reinterpret_cast<char*>(&allows_uninitialized_input_) -
+    reinterpret_cast<char*>(&is_commutative_)) + sizeof(allows_uninitialized_input_));
+  // @@protoc_insertion_point(copy_constructor:tensorflow.OpDef)
+}
+
+void OpDef::SharedCtor() {
+  ::google::protobuf::internal::InitSCC(
+      &scc_info_OpDef_tensorflow_2fcore_2fframework_2fop_5fdef_2eproto.base);
+  name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  summary_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  description_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  ::memset(&deprecation_, 0, static_cast<size_t>(
+      reinterpret_cast<char*>(&allows_uninitialized_input_) -
+      reinterpret_cast<char*>(&deprecation_)) + sizeof(allows_uninitialized_input_));
+}
+
+OpDef::~OpDef() {
+  // @@protoc_insertion_point(destructor:tensorflow.OpDef)
+  SharedDtor();
+}
+
+void OpDef::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+  name_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  summary_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  description_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (this != internal_default_instance()) delete deprecation_;
+}
+
+void OpDef::ArenaDtor(void* object) {
+  OpDef* _this = reinterpret_cast< OpDef* >(object);
+  (void)_this;
+}
+void OpDef::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void OpDef::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const OpDef& OpDef::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_OpDef_tensorflow_2fcore_2fframework_2fop_5fdef_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void OpDef::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.OpDef)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  input_arg_.Clear();
+  output_arg_.Clear();
+  attr_.Clear();
+  name_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+  summary_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+  description_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+  if (GetArenaNoVirtual() == NULL && deprecation_ != NULL) {
+    delete deprecation_;
+  }
+  deprecation_ = NULL;
+  ::memset(&is_commutative_, 0, static_cast<size_t>(
+      reinterpret_cast<char*>(&allows_uninitialized_input_) -
+      reinterpret_cast<char*>(&is_commutative_)) + sizeof(allows_uninitialized_input_));
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* OpDef::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<OpDef*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // string name = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 10) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("tensorflow.OpDef.name");
+        parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+        ::std::string* str = msg->mutable_name();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+        break;
+      }
+      // repeated .tensorflow.OpDef.ArgDef input_arg = 2;
+      case 2: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 18) goto handle_unusual;
+        do {
+          ptr = Varint::Parse32Inline(ptr, &size);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          parser_till_end = ::tensorflow::OpDef_ArgDef::_InternalParse;
+          object = msg->add_input_arg();
+          if (size > end - ptr) goto len_delim_till_end;
+          auto newend = ptr + size;
+          bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                         ptr, newend);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          ptr = newend;
+          if (ptr >= end) break;
+        } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 18 && (ptr += 1));
+        break;
+      }
+      // repeated .tensorflow.OpDef.ArgDef output_arg = 3;
+      case 3: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 26) goto handle_unusual;
+        do {
+          ptr = Varint::Parse32Inline(ptr, &size);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          parser_till_end = ::tensorflow::OpDef_ArgDef::_InternalParse;
+          object = msg->add_output_arg();
+          if (size > end - ptr) goto len_delim_till_end;
+          auto newend = ptr + size;
+          bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                         ptr, newend);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          ptr = newend;
+          if (ptr >= end) break;
+        } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 26 && (ptr += 1));
+        break;
+      }
+      // repeated .tensorflow.OpDef.AttrDef attr = 4;
+      case 4: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 34) goto handle_unusual;
+        do {
+          ptr = Varint::Parse32Inline(ptr, &size);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          parser_till_end = ::tensorflow::OpDef_AttrDef::_InternalParse;
+          object = msg->add_attr();
+          if (size > end - ptr) goto len_delim_till_end;
+          auto newend = ptr + size;
+          bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                         ptr, newend);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          ptr = newend;
+          if (ptr >= end) break;
+        } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 34 && (ptr += 1));
+        break;
+      }
+      // string summary = 5;
+      case 5: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 42) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("tensorflow.OpDef.summary");
+        parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+        ::std::string* str = msg->mutable_summary();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+        break;
+      }
+      // string description = 6;
+      case 6: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 50) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("tensorflow.OpDef.description");
+        parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+        ::std::string* str = msg->mutable_description();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+        break;
+      }
+      // .tensorflow.OpDeprecation deprecation = 8;
+      case 8: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 66) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        parser_till_end = ::tensorflow::OpDeprecation::_InternalParse;
+        object = msg->mutable_deprecation();
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                       ptr, newend);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+        ptr = newend;
+        break;
+      }
+      // bool is_aggregate = 16;
+      case 16: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 128) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        bool value = val;
+        msg->set_is_aggregate(value);
+        break;
+      }
+      // bool is_stateful = 17;
+      case 17: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 136) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        bool value = val;
+        msg->set_is_stateful(value);
+        break;
+      }
+      // bool is_commutative = 18;
+      case 18: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 144) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        bool value = val;
+        msg->set_is_commutative(value);
+        break;
+      }
+      // bool allows_uninitialized_input = 19;
+      case 19: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 152) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        bool value = val;
+        msg->set_allows_uninitialized_input(value);
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool OpDef::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.OpDef)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(16383u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // string name = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (10 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_name()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->name().data(), static_cast<int>(this->name().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.OpDef.name"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // repeated .tensorflow.OpDef.ArgDef input_arg = 2;
+      case 2: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (18 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+                input, add_input_arg()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // repeated .tensorflow.OpDef.ArgDef output_arg = 3;
+      case 3: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (26 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+                input, add_output_arg()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // repeated .tensorflow.OpDef.AttrDef attr = 4;
+      case 4: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (34 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+                input, add_attr()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // string summary = 5;
+      case 5: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (42 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_summary()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->summary().data(), static_cast<int>(this->summary().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.OpDef.summary"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // string description = 6;
+      case 6: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (50 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_description()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->description().data(), static_cast<int>(this->description().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.OpDef.description"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // .tensorflow.OpDeprecation deprecation = 8;
+      case 8: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (66 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+               input, mutable_deprecation()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // bool is_aggregate = 16;
+      case 16: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (128 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
+                 input, &is_aggregate_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // bool is_stateful = 17;
+      case 17: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (136 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
+                 input, &is_stateful_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // bool is_commutative = 18;
+      case 18: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (144 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
+                 input, &is_commutative_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // bool allows_uninitialized_input = 19;
+      case 19: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (152 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
+                 input, &allows_uninitialized_input_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.OpDef)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.OpDef)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void OpDef::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.OpDef)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // string name = 1;
+  if (this->name().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->name().data(), static_cast<int>(this->name().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.OpDef.name");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      1, this->name(), output);
+  }
+
+  // repeated .tensorflow.OpDef.ArgDef input_arg = 2;
+  for (unsigned int i = 0,
+      n = static_cast<unsigned int>(this->input_arg_size()); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      2,
+      this->input_arg(static_cast<int>(i)),
+      output);
+  }
+
+  // repeated .tensorflow.OpDef.ArgDef output_arg = 3;
+  for (unsigned int i = 0,
+      n = static_cast<unsigned int>(this->output_arg_size()); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      3,
+      this->output_arg(static_cast<int>(i)),
+      output);
+  }
+
+  // repeated .tensorflow.OpDef.AttrDef attr = 4;
+  for (unsigned int i = 0,
+      n = static_cast<unsigned int>(this->attr_size()); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      4,
+      this->attr(static_cast<int>(i)),
+      output);
+  }
+
+  // string summary = 5;
+  if (this->summary().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->summary().data(), static_cast<int>(this->summary().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.OpDef.summary");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      5, this->summary(), output);
+  }
+
+  // string description = 6;
+  if (this->description().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->description().data(), static_cast<int>(this->description().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.OpDef.description");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      6, this->description(), output);
+  }
+
+  // .tensorflow.OpDeprecation deprecation = 8;
+  if (this->has_deprecation()) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      8, HasBitSetters::deprecation(this), output);
+  }
+
+  // bool is_aggregate = 16;
+  if (this->is_aggregate() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteBool(16, this->is_aggregate(), output);
+  }
+
+  // bool is_stateful = 17;
+  if (this->is_stateful() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteBool(17, this->is_stateful(), output);
+  }
+
+  // bool is_commutative = 18;
+  if (this->is_commutative() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteBool(18, this->is_commutative(), output);
+  }
+
+  // bool allows_uninitialized_input = 19;
+  if (this->allows_uninitialized_input() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteBool(19, this->allows_uninitialized_input(), output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.OpDef)
+}
+
+::google::protobuf::uint8* OpDef::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.OpDef)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // string name = 1;
+  if (this->name().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->name().data(), static_cast<int>(this->name().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.OpDef.name");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        1, this->name(), target);
+  }
+
+  // repeated .tensorflow.OpDef.ArgDef input_arg = 2;
+  for (unsigned int i = 0,
+      n = static_cast<unsigned int>(this->input_arg_size()); i < n; i++) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        2, this->input_arg(static_cast<int>(i)), deterministic, target);
+  }
+
+  // repeated .tensorflow.OpDef.ArgDef output_arg = 3;
+  for (unsigned int i = 0,
+      n = static_cast<unsigned int>(this->output_arg_size()); i < n; i++) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        3, this->output_arg(static_cast<int>(i)), deterministic, target);
+  }
+
+  // repeated .tensorflow.OpDef.AttrDef attr = 4;
+  for (unsigned int i = 0,
+      n = static_cast<unsigned int>(this->attr_size()); i < n; i++) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        4, this->attr(static_cast<int>(i)), deterministic, target);
+  }
+
+  // string summary = 5;
+  if (this->summary().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->summary().data(), static_cast<int>(this->summary().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.OpDef.summary");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        5, this->summary(), target);
+  }
+
+  // string description = 6;
+  if (this->description().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->description().data(), static_cast<int>(this->description().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.OpDef.description");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        6, this->description(), target);
+  }
+
+  // .tensorflow.OpDeprecation deprecation = 8;
+  if (this->has_deprecation()) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        8, HasBitSetters::deprecation(this), deterministic, target);
+  }
+
+  // bool is_aggregate = 16;
+  if (this->is_aggregate() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(16, this->is_aggregate(), target);
+  }
+
+  // bool is_stateful = 17;
+  if (this->is_stateful() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(17, this->is_stateful(), target);
+  }
+
+  // bool is_commutative = 18;
+  if (this->is_commutative() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(18, this->is_commutative(), target);
+  }
+
+  // bool allows_uninitialized_input = 19;
+  if (this->allows_uninitialized_input() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(19, this->allows_uninitialized_input(), target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.OpDef)
+  return target;
+}
+
+size_t OpDef::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.OpDef)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // repeated .tensorflow.OpDef.ArgDef input_arg = 2;
+  {
+    unsigned int count = static_cast<unsigned int>(this->input_arg_size());
+    total_size += 1UL * count;
+    for (unsigned int i = 0; i < count; i++) {
+      total_size +=
+        ::google::protobuf::internal::WireFormatLite::MessageSize(
+          this->input_arg(static_cast<int>(i)));
+    }
+  }
+
+  // repeated .tensorflow.OpDef.ArgDef output_arg = 3;
+  {
+    unsigned int count = static_cast<unsigned int>(this->output_arg_size());
+    total_size += 1UL * count;
+    for (unsigned int i = 0; i < count; i++) {
+      total_size +=
+        ::google::protobuf::internal::WireFormatLite::MessageSize(
+          this->output_arg(static_cast<int>(i)));
+    }
+  }
+
+  // repeated .tensorflow.OpDef.AttrDef attr = 4;
+  {
+    unsigned int count = static_cast<unsigned int>(this->attr_size());
+    total_size += 1UL * count;
+    for (unsigned int i = 0; i < count; i++) {
+      total_size +=
+        ::google::protobuf::internal::WireFormatLite::MessageSize(
+          this->attr(static_cast<int>(i)));
+    }
+  }
+
+  // string name = 1;
+  if (this->name().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->name());
+  }
+
+  // string summary = 5;
+  if (this->summary().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->summary());
+  }
+
+  // string description = 6;
+  if (this->description().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->description());
+  }
+
+  // .tensorflow.OpDeprecation deprecation = 8;
+  if (this->has_deprecation()) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::MessageSize(
+        *deprecation_);
+  }
+
+  // bool is_commutative = 18;
+  if (this->is_commutative() != 0) {
+    total_size += 2 + 1;
+  }
+
+  // bool is_aggregate = 16;
+  if (this->is_aggregate() != 0) {
+    total_size += 2 + 1;
+  }
+
+  // bool is_stateful = 17;
+  if (this->is_stateful() != 0) {
+    total_size += 2 + 1;
+  }
+
+  // bool allows_uninitialized_input = 19;
+  if (this->allows_uninitialized_input() != 0) {
+    total_size += 2 + 1;
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void OpDef::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.OpDef)
+  GOOGLE_DCHECK_NE(&from, this);
+  const OpDef* source =
+      ::google::protobuf::DynamicCastToGenerated<OpDef>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.OpDef)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.OpDef)
+    MergeFrom(*source);
+  }
+}
+
+void OpDef::MergeFrom(const OpDef& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.OpDef)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  input_arg_.MergeFrom(from.input_arg_);
+  output_arg_.MergeFrom(from.output_arg_);
+  attr_.MergeFrom(from.attr_);
+  if (from.name().size() > 0) {
+    set_name(from.name());
+  }
+  if (from.summary().size() > 0) {
+    set_summary(from.summary());
+  }
+  if (from.description().size() > 0) {
+    set_description(from.description());
+  }
+  if (from.has_deprecation()) {
+    mutable_deprecation()->::tensorflow::OpDeprecation::MergeFrom(from.deprecation());
+  }
+  if (from.is_commutative() != 0) {
+    set_is_commutative(from.is_commutative());
+  }
+  if (from.is_aggregate() != 0) {
+    set_is_aggregate(from.is_aggregate());
+  }
+  if (from.is_stateful() != 0) {
+    set_is_stateful(from.is_stateful());
+  }
+  if (from.allows_uninitialized_input() != 0) {
+    set_allows_uninitialized_input(from.allows_uninitialized_input());
+  }
+}
+
+void OpDef::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.OpDef)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void OpDef::CopyFrom(const OpDef& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.OpDef)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool OpDef::IsInitialized() const {
+  return true;
+}
+
+void OpDef::Swap(OpDef* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    OpDef* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void OpDef::UnsafeArenaSwap(OpDef* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void OpDef::InternalSwap(OpDef* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  CastToBase(&input_arg_)->InternalSwap(CastToBase(&other->input_arg_));
+  CastToBase(&output_arg_)->InternalSwap(CastToBase(&other->output_arg_));
+  CastToBase(&attr_)->InternalSwap(CastToBase(&other->attr_));
+  name_.Swap(&other->name_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+  summary_.Swap(&other->summary_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+  description_.Swap(&other->description_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+  swap(deprecation_, other->deprecation_);
+  swap(is_commutative_, other->is_commutative_);
+  swap(is_aggregate_, other->is_aggregate_);
+  swap(is_stateful_, other->is_stateful_);
+  swap(allows_uninitialized_input_, other->allows_uninitialized_input_);
+}
+
+::google::protobuf::Metadata OpDef::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fframework_2fop_5fdef_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fframework_2fop_5fdef_2eproto[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+void OpDeprecation::InitAsDefaultInstance() {
+}
+class OpDeprecation::HasBitSetters {
+ public:
+};
+
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int OpDeprecation::kVersionFieldNumber;
+const int OpDeprecation::kExplanationFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+OpDeprecation::OpDeprecation()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.OpDeprecation)
+}
+OpDeprecation::OpDeprecation(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.OpDeprecation)
+}
+OpDeprecation::OpDeprecation(const OpDeprecation& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  explanation_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.explanation().size() > 0) {
+    explanation_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.explanation(),
+      GetArenaNoVirtual());
+  }
+  version_ = from.version_;
+  // @@protoc_insertion_point(copy_constructor:tensorflow.OpDeprecation)
+}
+
+void OpDeprecation::SharedCtor() {
+  ::google::protobuf::internal::InitSCC(
+      &scc_info_OpDeprecation_tensorflow_2fcore_2fframework_2fop_5fdef_2eproto.base);
+  explanation_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  version_ = 0;
+}
+
+OpDeprecation::~OpDeprecation() {
+  // @@protoc_insertion_point(destructor:tensorflow.OpDeprecation)
+  SharedDtor();
+}
+
+void OpDeprecation::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+  explanation_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+
+void OpDeprecation::ArenaDtor(void* object) {
+  OpDeprecation* _this = reinterpret_cast< OpDeprecation* >(object);
+  (void)_this;
+}
+void OpDeprecation::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void OpDeprecation::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const OpDeprecation& OpDeprecation::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_OpDeprecation_tensorflow_2fcore_2fframework_2fop_5fdef_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void OpDeprecation::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.OpDeprecation)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  explanation_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+  version_ = 0;
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* OpDeprecation::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<OpDeprecation*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // int32 version = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 8) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::google::protobuf::int32 value = val;
+        msg->set_version(value);
+        break;
+      }
+      // string explanation = 2;
+      case 2: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 18) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("tensorflow.OpDeprecation.explanation");
+        parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+        ::std::string* str = msg->mutable_explanation();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool OpDeprecation::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.OpDeprecation)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // int32 version = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (8 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
+                 input, &version_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // string explanation = 2;
+      case 2: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (18 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_explanation()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->explanation().data(), static_cast<int>(this->explanation().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.OpDeprecation.explanation"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.OpDeprecation)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.OpDeprecation)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void OpDeprecation::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.OpDeprecation)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // int32 version = 1;
+  if (this->version() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt32(1, this->version(), output);
+  }
+
+  // string explanation = 2;
+  if (this->explanation().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->explanation().data(), static_cast<int>(this->explanation().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.OpDeprecation.explanation");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      2, this->explanation(), output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.OpDeprecation)
+}
+
+::google::protobuf::uint8* OpDeprecation::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.OpDeprecation)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // int32 version = 1;
+  if (this->version() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt32ToArray(1, this->version(), target);
+  }
+
+  // string explanation = 2;
+  if (this->explanation().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->explanation().data(), static_cast<int>(this->explanation().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.OpDeprecation.explanation");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        2, this->explanation(), target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.OpDeprecation)
+  return target;
+}
+
+size_t OpDeprecation::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.OpDeprecation)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // string explanation = 2;
+  if (this->explanation().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->explanation());
+  }
+
+  // int32 version = 1;
+  if (this->version() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::Int32Size(
+        this->version());
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void OpDeprecation::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.OpDeprecation)
+  GOOGLE_DCHECK_NE(&from, this);
+  const OpDeprecation* source =
+      ::google::protobuf::DynamicCastToGenerated<OpDeprecation>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.OpDeprecation)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.OpDeprecation)
+    MergeFrom(*source);
+  }
+}
+
+void OpDeprecation::MergeFrom(const OpDeprecation& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.OpDeprecation)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  if (from.explanation().size() > 0) {
+    set_explanation(from.explanation());
+  }
+  if (from.version() != 0) {
+    set_version(from.version());
+  }
+}
+
+void OpDeprecation::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.OpDeprecation)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void OpDeprecation::CopyFrom(const OpDeprecation& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.OpDeprecation)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool OpDeprecation::IsInitialized() const {
+  return true;
+}
+
+void OpDeprecation::Swap(OpDeprecation* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    OpDeprecation* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void OpDeprecation::UnsafeArenaSwap(OpDeprecation* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void OpDeprecation::InternalSwap(OpDeprecation* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  explanation_.Swap(&other->explanation_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+  swap(version_, other->version_);
+}
+
+::google::protobuf::Metadata OpDeprecation::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fframework_2fop_5fdef_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fframework_2fop_5fdef_2eproto[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+void OpList::InitAsDefaultInstance() {
+}
+class OpList::HasBitSetters {
+ public:
+};
+
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int OpList::kOpFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+OpList::OpList()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.OpList)
+}
+OpList::OpList(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena),
+  op_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.OpList)
+}
+OpList::OpList(const OpList& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL),
+      op_(from.op_) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  // @@protoc_insertion_point(copy_constructor:tensorflow.OpList)
+}
+
+void OpList::SharedCtor() {
+  ::google::protobuf::internal::InitSCC(
+      &scc_info_OpList_tensorflow_2fcore_2fframework_2fop_5fdef_2eproto.base);
+}
+
+OpList::~OpList() {
+  // @@protoc_insertion_point(destructor:tensorflow.OpList)
+  SharedDtor();
+}
+
+void OpList::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+}
+
+void OpList::ArenaDtor(void* object) {
+  OpList* _this = reinterpret_cast< OpList* >(object);
+  (void)_this;
+}
+void OpList::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void OpList::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const OpList& OpList::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_OpList_tensorflow_2fcore_2fframework_2fop_5fdef_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void OpList::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.OpList)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  op_.Clear();
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* OpList::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<OpList*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // repeated .tensorflow.OpDef op = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 10) goto handle_unusual;
+        do {
+          ptr = Varint::Parse32Inline(ptr, &size);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          parser_till_end = ::tensorflow::OpDef::_InternalParse;
+          object = msg->add_op();
+          if (size > end - ptr) goto len_delim_till_end;
+          auto newend = ptr + size;
+          bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                         ptr, newend);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          ptr = newend;
+          if (ptr >= end) break;
+        } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 10 && (ptr += 1));
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool OpList::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.OpList)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // repeated .tensorflow.OpDef op = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (10 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+                input, add_op()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.OpList)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.OpList)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void OpList::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.OpList)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // repeated .tensorflow.OpDef op = 1;
+  for (unsigned int i = 0,
+      n = static_cast<unsigned int>(this->op_size()); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      1,
+      this->op(static_cast<int>(i)),
+      output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.OpList)
+}
+
+::google::protobuf::uint8* OpList::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.OpList)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // repeated .tensorflow.OpDef op = 1;
+  for (unsigned int i = 0,
+      n = static_cast<unsigned int>(this->op_size()); i < n; i++) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        1, this->op(static_cast<int>(i)), deterministic, target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.OpList)
+  return target;
+}
+
+size_t OpList::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.OpList)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // repeated .tensorflow.OpDef op = 1;
+  {
+    unsigned int count = static_cast<unsigned int>(this->op_size());
+    total_size += 1UL * count;
+    for (unsigned int i = 0; i < count; i++) {
+      total_size +=
+        ::google::protobuf::internal::WireFormatLite::MessageSize(
+          this->op(static_cast<int>(i)));
+    }
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void OpList::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.OpList)
+  GOOGLE_DCHECK_NE(&from, this);
+  const OpList* source =
+      ::google::protobuf::DynamicCastToGenerated<OpList>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.OpList)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.OpList)
+    MergeFrom(*source);
+  }
+}
+
+void OpList::MergeFrom(const OpList& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.OpList)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  op_.MergeFrom(from.op_);
+}
+
+void OpList::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.OpList)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void OpList::CopyFrom(const OpList& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.OpList)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool OpList::IsInitialized() const {
+  return true;
+}
+
+void OpList::Swap(OpList* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    OpList* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void OpList::UnsafeArenaSwap(OpList* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void OpList::InternalSwap(OpList* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  CastToBase(&op_)->InternalSwap(CastToBase(&other->op_));
+}
+
+::google::protobuf::Metadata OpList::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fframework_2fop_5fdef_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fframework_2fop_5fdef_2eproto[kIndexInFileMessages];
+}
+
+
+// @@protoc_insertion_point(namespace_scope)
+}  // namespace tensorflow
+namespace google {
+namespace protobuf {
+template<> PROTOBUF_NOINLINE ::tensorflow::OpDef_ArgDef* Arena::CreateMaybeMessage< ::tensorflow::OpDef_ArgDef >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::OpDef_ArgDef >(arena);
+}
+template<> PROTOBUF_NOINLINE ::tensorflow::OpDef_AttrDef* Arena::CreateMaybeMessage< ::tensorflow::OpDef_AttrDef >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::OpDef_AttrDef >(arena);
+}
+template<> PROTOBUF_NOINLINE ::tensorflow::OpDef* Arena::CreateMaybeMessage< ::tensorflow::OpDef >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::OpDef >(arena);
+}
+template<> PROTOBUF_NOINLINE ::tensorflow::OpDeprecation* Arena::CreateMaybeMessage< ::tensorflow::OpDeprecation >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::OpDeprecation >(arena);
+}
+template<> PROTOBUF_NOINLINE ::tensorflow::OpList* Arena::CreateMaybeMessage< ::tensorflow::OpList >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::OpList >(arena);
+}
+}  // namespace protobuf
+}  // namespace google
+
+// @@protoc_insertion_point(global_scope)
+#include <google/protobuf/port_undef.inc>
diff --git a/tensorflow/core/framework/op_def.pb.h b/tensorflow/core/framework/op_def.pb.h
new file mode 100644 (file)
index 0000000..c5f5b10
--- /dev/null
@@ -0,0 +1,2487 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: tensorflow/core/framework/op_def.proto
+
+#ifndef PROTOBUF_INCLUDED_tensorflow_2fcore_2fframework_2fop_5fdef_2eproto
+#define PROTOBUF_INCLUDED_tensorflow_2fcore_2fframework_2fop_5fdef_2eproto
+
+#include <limits>
+#include <string>
+
+#include <google/protobuf/port_def.inc>
+#if PROTOBUF_VERSION < 3006001
+#error This file was generated by a newer version of protoc which is
+#error incompatible with your Protocol Buffer headers. Please update
+#error your headers.
+#endif
+#if 3006001 < PROTOBUF_MIN_PROTOC_VERSION
+#error This file was generated by an older version of protoc which is
+#error incompatible with your Protocol Buffer headers. Please
+#error regenerate this file with a newer version of protoc.
+#endif
+
+#include <google/protobuf/port_undef.inc>
+#include <google/protobuf/io/coded_stream.h>
+#include <google/protobuf/arena.h>
+#include <google/protobuf/arenastring.h>
+#include <google/protobuf/generated_message_table_driven.h>
+#include <google/protobuf/generated_message_util.h>
+#include <google/protobuf/inlined_string_field.h>
+#include <google/protobuf/metadata.h>
+#include <google/protobuf/message.h>
+#include <google/protobuf/repeated_field.h>  // IWYU pragma: export
+#include <google/protobuf/extension_set.h>  // IWYU pragma: export
+#include <google/protobuf/unknown_field_set.h>
+#include "tensorflow/core/framework/attr_value.pb.h"
+#include "tensorflow/core/framework/types.pb.h"
+// @@protoc_insertion_point(includes)
+#include <google/protobuf/port_def.inc>
+#define PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fframework_2fop_5fdef_2eproto
+
+// Internal implementation detail -- do not use these members.
+struct TableStruct_tensorflow_2fcore_2fframework_2fop_5fdef_2eproto {
+  static const ::google::protobuf::internal::ParseTableField entries[]
+    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
+  static const ::google::protobuf::internal::AuxillaryParseTableField aux[]
+    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
+  static const ::google::protobuf::internal::ParseTable schema[5]
+    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
+  static const ::google::protobuf::internal::FieldMetadata field_metadata[];
+  static const ::google::protobuf::internal::SerializationTable serialization_table[];
+  static const ::google::protobuf::uint32 offsets[];
+};
+void AddDescriptors_tensorflow_2fcore_2fframework_2fop_5fdef_2eproto();
+namespace tensorflow {
+class OpDef;
+class OpDefDefaultTypeInternal;
+extern OpDefDefaultTypeInternal _OpDef_default_instance_;
+class OpDef_ArgDef;
+class OpDef_ArgDefDefaultTypeInternal;
+extern OpDef_ArgDefDefaultTypeInternal _OpDef_ArgDef_default_instance_;
+class OpDef_AttrDef;
+class OpDef_AttrDefDefaultTypeInternal;
+extern OpDef_AttrDefDefaultTypeInternal _OpDef_AttrDef_default_instance_;
+class OpDeprecation;
+class OpDeprecationDefaultTypeInternal;
+extern OpDeprecationDefaultTypeInternal _OpDeprecation_default_instance_;
+class OpList;
+class OpListDefaultTypeInternal;
+extern OpListDefaultTypeInternal _OpList_default_instance_;
+}  // namespace tensorflow
+namespace google {
+namespace protobuf {
+template<> ::tensorflow::OpDef* Arena::CreateMaybeMessage<::tensorflow::OpDef>(Arena*);
+template<> ::tensorflow::OpDef_ArgDef* Arena::CreateMaybeMessage<::tensorflow::OpDef_ArgDef>(Arena*);
+template<> ::tensorflow::OpDef_AttrDef* Arena::CreateMaybeMessage<::tensorflow::OpDef_AttrDef>(Arena*);
+template<> ::tensorflow::OpDeprecation* Arena::CreateMaybeMessage<::tensorflow::OpDeprecation>(Arena*);
+template<> ::tensorflow::OpList* Arena::CreateMaybeMessage<::tensorflow::OpList>(Arena*);
+}  // namespace protobuf
+}  // namespace google
+namespace tensorflow {
+
+// ===================================================================
+
+class OpDef_ArgDef : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.OpDef.ArgDef) */ {
+ public:
+  OpDef_ArgDef();
+  virtual ~OpDef_ArgDef();
+
+  OpDef_ArgDef(const OpDef_ArgDef& from);
+
+  inline OpDef_ArgDef& operator=(const OpDef_ArgDef& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  OpDef_ArgDef(OpDef_ArgDef&& from) noexcept
+    : OpDef_ArgDef() {
+    *this = ::std::move(from);
+  }
+
+  inline OpDef_ArgDef& operator=(OpDef_ArgDef&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const OpDef_ArgDef& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const OpDef_ArgDef* internal_default_instance() {
+    return reinterpret_cast<const OpDef_ArgDef*>(
+               &_OpDef_ArgDef_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    0;
+
+  void UnsafeArenaSwap(OpDef_ArgDef* other);
+  void Swap(OpDef_ArgDef* other);
+  friend void swap(OpDef_ArgDef& a, OpDef_ArgDef& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline OpDef_ArgDef* New() const final {
+    return CreateMaybeMessage<OpDef_ArgDef>(NULL);
+  }
+
+  OpDef_ArgDef* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<OpDef_ArgDef>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const OpDef_ArgDef& from);
+  void MergeFrom(const OpDef_ArgDef& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(OpDef_ArgDef* other);
+  protected:
+  explicit OpDef_ArgDef(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // string name = 1;
+  void clear_name();
+  static const int kNameFieldNumber = 1;
+  const ::std::string& name() const;
+  void set_name(const ::std::string& value);
+  #if LANG_CXX11
+  void set_name(::std::string&& value);
+  #endif
+  void set_name(const char* value);
+  void set_name(const char* value, size_t size);
+  ::std::string* mutable_name();
+  ::std::string* release_name();
+  void set_allocated_name(::std::string* name);
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  ::std::string* unsafe_arena_release_name();
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  void unsafe_arena_set_allocated_name(
+      ::std::string* name);
+
+  // string description = 2;
+  void clear_description();
+  static const int kDescriptionFieldNumber = 2;
+  const ::std::string& description() const;
+  void set_description(const ::std::string& value);
+  #if LANG_CXX11
+  void set_description(::std::string&& value);
+  #endif
+  void set_description(const char* value);
+  void set_description(const char* value, size_t size);
+  ::std::string* mutable_description();
+  ::std::string* release_description();
+  void set_allocated_description(::std::string* description);
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  ::std::string* unsafe_arena_release_description();
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  void unsafe_arena_set_allocated_description(
+      ::std::string* description);
+
+  // string type_attr = 4;
+  void clear_type_attr();
+  static const int kTypeAttrFieldNumber = 4;
+  const ::std::string& type_attr() const;
+  void set_type_attr(const ::std::string& value);
+  #if LANG_CXX11
+  void set_type_attr(::std::string&& value);
+  #endif
+  void set_type_attr(const char* value);
+  void set_type_attr(const char* value, size_t size);
+  ::std::string* mutable_type_attr();
+  ::std::string* release_type_attr();
+  void set_allocated_type_attr(::std::string* type_attr);
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  ::std::string* unsafe_arena_release_type_attr();
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  void unsafe_arena_set_allocated_type_attr(
+      ::std::string* type_attr);
+
+  // string number_attr = 5;
+  void clear_number_attr();
+  static const int kNumberAttrFieldNumber = 5;
+  const ::std::string& number_attr() const;
+  void set_number_attr(const ::std::string& value);
+  #if LANG_CXX11
+  void set_number_attr(::std::string&& value);
+  #endif
+  void set_number_attr(const char* value);
+  void set_number_attr(const char* value, size_t size);
+  ::std::string* mutable_number_attr();
+  ::std::string* release_number_attr();
+  void set_allocated_number_attr(::std::string* number_attr);
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  ::std::string* unsafe_arena_release_number_attr();
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  void unsafe_arena_set_allocated_number_attr(
+      ::std::string* number_attr);
+
+  // string type_list_attr = 6;
+  void clear_type_list_attr();
+  static const int kTypeListAttrFieldNumber = 6;
+  const ::std::string& type_list_attr() const;
+  void set_type_list_attr(const ::std::string& value);
+  #if LANG_CXX11
+  void set_type_list_attr(::std::string&& value);
+  #endif
+  void set_type_list_attr(const char* value);
+  void set_type_list_attr(const char* value, size_t size);
+  ::std::string* mutable_type_list_attr();
+  ::std::string* release_type_list_attr();
+  void set_allocated_type_list_attr(::std::string* type_list_attr);
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  ::std::string* unsafe_arena_release_type_list_attr();
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  void unsafe_arena_set_allocated_type_list_attr(
+      ::std::string* type_list_attr);
+
+  // .tensorflow.DataType type = 3;
+  void clear_type();
+  static const int kTypeFieldNumber = 3;
+  ::tensorflow::DataType type() const;
+  void set_type(::tensorflow::DataType value);
+
+  // bool is_ref = 16;
+  void clear_is_ref();
+  static const int kIsRefFieldNumber = 16;
+  bool is_ref() const;
+  void set_is_ref(bool value);
+
+  // @@protoc_insertion_point(class_scope:tensorflow.OpDef.ArgDef)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  ::google::protobuf::internal::ArenaStringPtr name_;
+  ::google::protobuf::internal::ArenaStringPtr description_;
+  ::google::protobuf::internal::ArenaStringPtr type_attr_;
+  ::google::protobuf::internal::ArenaStringPtr number_attr_;
+  ::google::protobuf::internal::ArenaStringPtr type_list_attr_;
+  int type_;
+  bool is_ref_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fframework_2fop_5fdef_2eproto;
+};
+// -------------------------------------------------------------------
+
+class OpDef_AttrDef : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.OpDef.AttrDef) */ {
+ public:
+  OpDef_AttrDef();
+  virtual ~OpDef_AttrDef();
+
+  OpDef_AttrDef(const OpDef_AttrDef& from);
+
+  inline OpDef_AttrDef& operator=(const OpDef_AttrDef& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  OpDef_AttrDef(OpDef_AttrDef&& from) noexcept
+    : OpDef_AttrDef() {
+    *this = ::std::move(from);
+  }
+
+  inline OpDef_AttrDef& operator=(OpDef_AttrDef&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const OpDef_AttrDef& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const OpDef_AttrDef* internal_default_instance() {
+    return reinterpret_cast<const OpDef_AttrDef*>(
+               &_OpDef_AttrDef_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    1;
+
+  void UnsafeArenaSwap(OpDef_AttrDef* other);
+  void Swap(OpDef_AttrDef* other);
+  friend void swap(OpDef_AttrDef& a, OpDef_AttrDef& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline OpDef_AttrDef* New() const final {
+    return CreateMaybeMessage<OpDef_AttrDef>(NULL);
+  }
+
+  OpDef_AttrDef* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<OpDef_AttrDef>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const OpDef_AttrDef& from);
+  void MergeFrom(const OpDef_AttrDef& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(OpDef_AttrDef* other);
+  protected:
+  explicit OpDef_AttrDef(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // string name = 1;
+  void clear_name();
+  static const int kNameFieldNumber = 1;
+  const ::std::string& name() const;
+  void set_name(const ::std::string& value);
+  #if LANG_CXX11
+  void set_name(::std::string&& value);
+  #endif
+  void set_name(const char* value);
+  void set_name(const char* value, size_t size);
+  ::std::string* mutable_name();
+  ::std::string* release_name();
+  void set_allocated_name(::std::string* name);
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  ::std::string* unsafe_arena_release_name();
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  void unsafe_arena_set_allocated_name(
+      ::std::string* name);
+
+  // string type = 2;
+  void clear_type();
+  static const int kTypeFieldNumber = 2;
+  const ::std::string& type() const;
+  void set_type(const ::std::string& value);
+  #if LANG_CXX11
+  void set_type(::std::string&& value);
+  #endif
+  void set_type(const char* value);
+  void set_type(const char* value, size_t size);
+  ::std::string* mutable_type();
+  ::std::string* release_type();
+  void set_allocated_type(::std::string* type);
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  ::std::string* unsafe_arena_release_type();
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  void unsafe_arena_set_allocated_type(
+      ::std::string* type);
+
+  // string description = 4;
+  void clear_description();
+  static const int kDescriptionFieldNumber = 4;
+  const ::std::string& description() const;
+  void set_description(const ::std::string& value);
+  #if LANG_CXX11
+  void set_description(::std::string&& value);
+  #endif
+  void set_description(const char* value);
+  void set_description(const char* value, size_t size);
+  ::std::string* mutable_description();
+  ::std::string* release_description();
+  void set_allocated_description(::std::string* description);
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  ::std::string* unsafe_arena_release_description();
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  void unsafe_arena_set_allocated_description(
+      ::std::string* description);
+
+  // .tensorflow.AttrValue default_value = 3;
+  bool has_default_value() const;
+  void clear_default_value();
+  static const int kDefaultValueFieldNumber = 3;
+  const ::tensorflow::AttrValue& default_value() const;
+  ::tensorflow::AttrValue* release_default_value();
+  ::tensorflow::AttrValue* mutable_default_value();
+  void set_allocated_default_value(::tensorflow::AttrValue* default_value);
+  void unsafe_arena_set_allocated_default_value(
+      ::tensorflow::AttrValue* default_value);
+  ::tensorflow::AttrValue* unsafe_arena_release_default_value();
+
+  // .tensorflow.AttrValue allowed_values = 7;
+  bool has_allowed_values() const;
+  void clear_allowed_values();
+  static const int kAllowedValuesFieldNumber = 7;
+  const ::tensorflow::AttrValue& allowed_values() const;
+  ::tensorflow::AttrValue* release_allowed_values();
+  ::tensorflow::AttrValue* mutable_allowed_values();
+  void set_allocated_allowed_values(::tensorflow::AttrValue* allowed_values);
+  void unsafe_arena_set_allocated_allowed_values(
+      ::tensorflow::AttrValue* allowed_values);
+  ::tensorflow::AttrValue* unsafe_arena_release_allowed_values();
+
+  // int64 minimum = 6;
+  void clear_minimum();
+  static const int kMinimumFieldNumber = 6;
+  ::google::protobuf::int64 minimum() const;
+  void set_minimum(::google::protobuf::int64 value);
+
+  // bool has_minimum = 5;
+  void clear_has_minimum();
+  static const int kHasMinimumFieldNumber = 5;
+  bool has_minimum() const;
+  void set_has_minimum(bool value);
+
+  // @@protoc_insertion_point(class_scope:tensorflow.OpDef.AttrDef)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  ::google::protobuf::internal::ArenaStringPtr name_;
+  ::google::protobuf::internal::ArenaStringPtr type_;
+  ::google::protobuf::internal::ArenaStringPtr description_;
+  ::tensorflow::AttrValue* default_value_;
+  ::tensorflow::AttrValue* allowed_values_;
+  ::google::protobuf::int64 minimum_;
+  bool has_minimum_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fframework_2fop_5fdef_2eproto;
+};
+// -------------------------------------------------------------------
+
+class OpDef : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.OpDef) */ {
+ public:
+  OpDef();
+  virtual ~OpDef();
+
+  OpDef(const OpDef& from);
+
+  inline OpDef& operator=(const OpDef& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  OpDef(OpDef&& from) noexcept
+    : OpDef() {
+    *this = ::std::move(from);
+  }
+
+  inline OpDef& operator=(OpDef&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const OpDef& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const OpDef* internal_default_instance() {
+    return reinterpret_cast<const OpDef*>(
+               &_OpDef_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    2;
+
+  void UnsafeArenaSwap(OpDef* other);
+  void Swap(OpDef* other);
+  friend void swap(OpDef& a, OpDef& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline OpDef* New() const final {
+    return CreateMaybeMessage<OpDef>(NULL);
+  }
+
+  OpDef* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<OpDef>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const OpDef& from);
+  void MergeFrom(const OpDef& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(OpDef* other);
+  protected:
+  explicit OpDef(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  typedef OpDef_ArgDef ArgDef;
+  typedef OpDef_AttrDef AttrDef;
+
+  // accessors -------------------------------------------------------
+
+  // repeated .tensorflow.OpDef.ArgDef input_arg = 2;
+  int input_arg_size() const;
+  void clear_input_arg();
+  static const int kInputArgFieldNumber = 2;
+  ::tensorflow::OpDef_ArgDef* mutable_input_arg(int index);
+  ::google::protobuf::RepeatedPtrField< ::tensorflow::OpDef_ArgDef >*
+      mutable_input_arg();
+  const ::tensorflow::OpDef_ArgDef& input_arg(int index) const;
+  ::tensorflow::OpDef_ArgDef* add_input_arg();
+  const ::google::protobuf::RepeatedPtrField< ::tensorflow::OpDef_ArgDef >&
+      input_arg() const;
+
+  // repeated .tensorflow.OpDef.ArgDef output_arg = 3;
+  int output_arg_size() const;
+  void clear_output_arg();
+  static const int kOutputArgFieldNumber = 3;
+  ::tensorflow::OpDef_ArgDef* mutable_output_arg(int index);
+  ::google::protobuf::RepeatedPtrField< ::tensorflow::OpDef_ArgDef >*
+      mutable_output_arg();
+  const ::tensorflow::OpDef_ArgDef& output_arg(int index) const;
+  ::tensorflow::OpDef_ArgDef* add_output_arg();
+  const ::google::protobuf::RepeatedPtrField< ::tensorflow::OpDef_ArgDef >&
+      output_arg() const;
+
+  // repeated .tensorflow.OpDef.AttrDef attr = 4;
+  int attr_size() const;
+  void clear_attr();
+  static const int kAttrFieldNumber = 4;
+  ::tensorflow::OpDef_AttrDef* mutable_attr(int index);
+  ::google::protobuf::RepeatedPtrField< ::tensorflow::OpDef_AttrDef >*
+      mutable_attr();
+  const ::tensorflow::OpDef_AttrDef& attr(int index) const;
+  ::tensorflow::OpDef_AttrDef* add_attr();
+  const ::google::protobuf::RepeatedPtrField< ::tensorflow::OpDef_AttrDef >&
+      attr() const;
+
+  // string name = 1;
+  void clear_name();
+  static const int kNameFieldNumber = 1;
+  const ::std::string& name() const;
+  void set_name(const ::std::string& value);
+  #if LANG_CXX11
+  void set_name(::std::string&& value);
+  #endif
+  void set_name(const char* value);
+  void set_name(const char* value, size_t size);
+  ::std::string* mutable_name();
+  ::std::string* release_name();
+  void set_allocated_name(::std::string* name);
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  ::std::string* unsafe_arena_release_name();
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  void unsafe_arena_set_allocated_name(
+      ::std::string* name);
+
+  // string summary = 5;
+  void clear_summary();
+  static const int kSummaryFieldNumber = 5;
+  const ::std::string& summary() const;
+  void set_summary(const ::std::string& value);
+  #if LANG_CXX11
+  void set_summary(::std::string&& value);
+  #endif
+  void set_summary(const char* value);
+  void set_summary(const char* value, size_t size);
+  ::std::string* mutable_summary();
+  ::std::string* release_summary();
+  void set_allocated_summary(::std::string* summary);
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  ::std::string* unsafe_arena_release_summary();
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  void unsafe_arena_set_allocated_summary(
+      ::std::string* summary);
+
+  // string description = 6;
+  void clear_description();
+  static const int kDescriptionFieldNumber = 6;
+  const ::std::string& description() const;
+  void set_description(const ::std::string& value);
+  #if LANG_CXX11
+  void set_description(::std::string&& value);
+  #endif
+  void set_description(const char* value);
+  void set_description(const char* value, size_t size);
+  ::std::string* mutable_description();
+  ::std::string* release_description();
+  void set_allocated_description(::std::string* description);
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  ::std::string* unsafe_arena_release_description();
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  void unsafe_arena_set_allocated_description(
+      ::std::string* description);
+
+  // .tensorflow.OpDeprecation deprecation = 8;
+  bool has_deprecation() const;
+  void clear_deprecation();
+  static const int kDeprecationFieldNumber = 8;
+  const ::tensorflow::OpDeprecation& deprecation() const;
+  ::tensorflow::OpDeprecation* release_deprecation();
+  ::tensorflow::OpDeprecation* mutable_deprecation();
+  void set_allocated_deprecation(::tensorflow::OpDeprecation* deprecation);
+  void unsafe_arena_set_allocated_deprecation(
+      ::tensorflow::OpDeprecation* deprecation);
+  ::tensorflow::OpDeprecation* unsafe_arena_release_deprecation();
+
+  // bool is_commutative = 18;
+  void clear_is_commutative();
+  static const int kIsCommutativeFieldNumber = 18;
+  bool is_commutative() const;
+  void set_is_commutative(bool value);
+
+  // bool is_aggregate = 16;
+  void clear_is_aggregate();
+  static const int kIsAggregateFieldNumber = 16;
+  bool is_aggregate() const;
+  void set_is_aggregate(bool value);
+
+  // bool is_stateful = 17;
+  void clear_is_stateful();
+  static const int kIsStatefulFieldNumber = 17;
+  bool is_stateful() const;
+  void set_is_stateful(bool value);
+
+  // bool allows_uninitialized_input = 19;
+  void clear_allows_uninitialized_input();
+  static const int kAllowsUninitializedInputFieldNumber = 19;
+  bool allows_uninitialized_input() const;
+  void set_allows_uninitialized_input(bool value);
+
+  // @@protoc_insertion_point(class_scope:tensorflow.OpDef)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  ::google::protobuf::RepeatedPtrField< ::tensorflow::OpDef_ArgDef > input_arg_;
+  ::google::protobuf::RepeatedPtrField< ::tensorflow::OpDef_ArgDef > output_arg_;
+  ::google::protobuf::RepeatedPtrField< ::tensorflow::OpDef_AttrDef > attr_;
+  ::google::protobuf::internal::ArenaStringPtr name_;
+  ::google::protobuf::internal::ArenaStringPtr summary_;
+  ::google::protobuf::internal::ArenaStringPtr description_;
+  ::tensorflow::OpDeprecation* deprecation_;
+  bool is_commutative_;
+  bool is_aggregate_;
+  bool is_stateful_;
+  bool allows_uninitialized_input_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fframework_2fop_5fdef_2eproto;
+};
+// -------------------------------------------------------------------
+
+class OpDeprecation : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.OpDeprecation) */ {
+ public:
+  OpDeprecation();
+  virtual ~OpDeprecation();
+
+  OpDeprecation(const OpDeprecation& from);
+
+  inline OpDeprecation& operator=(const OpDeprecation& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  OpDeprecation(OpDeprecation&& from) noexcept
+    : OpDeprecation() {
+    *this = ::std::move(from);
+  }
+
+  inline OpDeprecation& operator=(OpDeprecation&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const OpDeprecation& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const OpDeprecation* internal_default_instance() {
+    return reinterpret_cast<const OpDeprecation*>(
+               &_OpDeprecation_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    3;
+
+  void UnsafeArenaSwap(OpDeprecation* other);
+  void Swap(OpDeprecation* other);
+  friend void swap(OpDeprecation& a, OpDeprecation& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline OpDeprecation* New() const final {
+    return CreateMaybeMessage<OpDeprecation>(NULL);
+  }
+
+  OpDeprecation* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<OpDeprecation>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const OpDeprecation& from);
+  void MergeFrom(const OpDeprecation& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(OpDeprecation* other);
+  protected:
+  explicit OpDeprecation(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // string explanation = 2;
+  void clear_explanation();
+  static const int kExplanationFieldNumber = 2;
+  const ::std::string& explanation() const;
+  void set_explanation(const ::std::string& value);
+  #if LANG_CXX11
+  void set_explanation(::std::string&& value);
+  #endif
+  void set_explanation(const char* value);
+  void set_explanation(const char* value, size_t size);
+  ::std::string* mutable_explanation();
+  ::std::string* release_explanation();
+  void set_allocated_explanation(::std::string* explanation);
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  ::std::string* unsafe_arena_release_explanation();
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  void unsafe_arena_set_allocated_explanation(
+      ::std::string* explanation);
+
+  // int32 version = 1;
+  void clear_version();
+  static const int kVersionFieldNumber = 1;
+  ::google::protobuf::int32 version() const;
+  void set_version(::google::protobuf::int32 value);
+
+  // @@protoc_insertion_point(class_scope:tensorflow.OpDeprecation)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  ::google::protobuf::internal::ArenaStringPtr explanation_;
+  ::google::protobuf::int32 version_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fframework_2fop_5fdef_2eproto;
+};
+// -------------------------------------------------------------------
+
+class OpList : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.OpList) */ {
+ public:
+  OpList();
+  virtual ~OpList();
+
+  OpList(const OpList& from);
+
+  inline OpList& operator=(const OpList& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  OpList(OpList&& from) noexcept
+    : OpList() {
+    *this = ::std::move(from);
+  }
+
+  inline OpList& operator=(OpList&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const OpList& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const OpList* internal_default_instance() {
+    return reinterpret_cast<const OpList*>(
+               &_OpList_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    4;
+
+  void UnsafeArenaSwap(OpList* other);
+  void Swap(OpList* other);
+  friend void swap(OpList& a, OpList& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline OpList* New() const final {
+    return CreateMaybeMessage<OpList>(NULL);
+  }
+
+  OpList* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<OpList>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const OpList& from);
+  void MergeFrom(const OpList& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(OpList* other);
+  protected:
+  explicit OpList(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // repeated .tensorflow.OpDef op = 1;
+  int op_size() const;
+  void clear_op();
+  static const int kOpFieldNumber = 1;
+  ::tensorflow::OpDef* mutable_op(int index);
+  ::google::protobuf::RepeatedPtrField< ::tensorflow::OpDef >*
+      mutable_op();
+  const ::tensorflow::OpDef& op(int index) const;
+  ::tensorflow::OpDef* add_op();
+  const ::google::protobuf::RepeatedPtrField< ::tensorflow::OpDef >&
+      op() const;
+
+  // @@protoc_insertion_point(class_scope:tensorflow.OpList)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  ::google::protobuf::RepeatedPtrField< ::tensorflow::OpDef > op_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fframework_2fop_5fdef_2eproto;
+};
+// ===================================================================
+
+
+// ===================================================================
+
+#ifdef __GNUC__
+  #pragma GCC diagnostic push
+  #pragma GCC diagnostic ignored "-Wstrict-aliasing"
+#endif  // __GNUC__
+// OpDef_ArgDef
+
+// string name = 1;
+inline void OpDef_ArgDef::clear_name() {
+  name_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline const ::std::string& OpDef_ArgDef::name() const {
+  // @@protoc_insertion_point(field_get:tensorflow.OpDef.ArgDef.name)
+  return name_.Get();
+}
+inline void OpDef_ArgDef::set_name(const ::std::string& value) {
+  
+  name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set:tensorflow.OpDef.ArgDef.name)
+}
+#if LANG_CXX11
+inline void OpDef_ArgDef::set_name(::std::string&& value) {
+  
+  name_.Set(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.OpDef.ArgDef.name)
+}
+#endif
+inline void OpDef_ArgDef::set_name(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
+              GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_char:tensorflow.OpDef.ArgDef.name)
+}
+inline void OpDef_ArgDef::set_name(const char* value,
+    size_t size) {
+  
+  name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
+      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.OpDef.ArgDef.name)
+}
+inline ::std::string* OpDef_ArgDef::mutable_name() {
+  
+  // @@protoc_insertion_point(field_mutable:tensorflow.OpDef.ArgDef.name)
+  return name_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline ::std::string* OpDef_ArgDef::release_name() {
+  // @@protoc_insertion_point(field_release:tensorflow.OpDef.ArgDef.name)
+  
+  return name_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline void OpDef_ArgDef::set_allocated_name(::std::string* name) {
+  if (name != NULL) {
+    
+  } else {
+    
+  }
+  name_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), name,
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.OpDef.ArgDef.name)
+}
+inline ::std::string* OpDef_ArgDef::unsafe_arena_release_name() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.OpDef.ArgDef.name)
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  
+  return name_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      GetArenaNoVirtual());
+}
+inline void OpDef_ArgDef::unsafe_arena_set_allocated_name(
+    ::std::string* name) {
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (name != NULL) {
+    
+  } else {
+    
+  }
+  name_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      name, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.OpDef.ArgDef.name)
+}
+
+// string description = 2;
+inline void OpDef_ArgDef::clear_description() {
+  description_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline const ::std::string& OpDef_ArgDef::description() const {
+  // @@protoc_insertion_point(field_get:tensorflow.OpDef.ArgDef.description)
+  return description_.Get();
+}
+inline void OpDef_ArgDef::set_description(const ::std::string& value) {
+  
+  description_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set:tensorflow.OpDef.ArgDef.description)
+}
+#if LANG_CXX11
+inline void OpDef_ArgDef::set_description(::std::string&& value) {
+  
+  description_.Set(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.OpDef.ArgDef.description)
+}
+#endif
+inline void OpDef_ArgDef::set_description(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  description_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
+              GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_char:tensorflow.OpDef.ArgDef.description)
+}
+inline void OpDef_ArgDef::set_description(const char* value,
+    size_t size) {
+  
+  description_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
+      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.OpDef.ArgDef.description)
+}
+inline ::std::string* OpDef_ArgDef::mutable_description() {
+  
+  // @@protoc_insertion_point(field_mutable:tensorflow.OpDef.ArgDef.description)
+  return description_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline ::std::string* OpDef_ArgDef::release_description() {
+  // @@protoc_insertion_point(field_release:tensorflow.OpDef.ArgDef.description)
+  
+  return description_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline void OpDef_ArgDef::set_allocated_description(::std::string* description) {
+  if (description != NULL) {
+    
+  } else {
+    
+  }
+  description_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), description,
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.OpDef.ArgDef.description)
+}
+inline ::std::string* OpDef_ArgDef::unsafe_arena_release_description() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.OpDef.ArgDef.description)
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  
+  return description_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      GetArenaNoVirtual());
+}
+inline void OpDef_ArgDef::unsafe_arena_set_allocated_description(
+    ::std::string* description) {
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (description != NULL) {
+    
+  } else {
+    
+  }
+  description_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      description, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.OpDef.ArgDef.description)
+}
+
+// .tensorflow.DataType type = 3;
+inline void OpDef_ArgDef::clear_type() {
+  type_ = 0;
+}
+inline ::tensorflow::DataType OpDef_ArgDef::type() const {
+  // @@protoc_insertion_point(field_get:tensorflow.OpDef.ArgDef.type)
+  return static_cast< ::tensorflow::DataType >(type_);
+}
+inline void OpDef_ArgDef::set_type(::tensorflow::DataType value) {
+  
+  type_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.OpDef.ArgDef.type)
+}
+
+// string type_attr = 4;
+inline void OpDef_ArgDef::clear_type_attr() {
+  type_attr_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline const ::std::string& OpDef_ArgDef::type_attr() const {
+  // @@protoc_insertion_point(field_get:tensorflow.OpDef.ArgDef.type_attr)
+  return type_attr_.Get();
+}
+inline void OpDef_ArgDef::set_type_attr(const ::std::string& value) {
+  
+  type_attr_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set:tensorflow.OpDef.ArgDef.type_attr)
+}
+#if LANG_CXX11
+inline void OpDef_ArgDef::set_type_attr(::std::string&& value) {
+  
+  type_attr_.Set(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.OpDef.ArgDef.type_attr)
+}
+#endif
+inline void OpDef_ArgDef::set_type_attr(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  type_attr_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
+              GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_char:tensorflow.OpDef.ArgDef.type_attr)
+}
+inline void OpDef_ArgDef::set_type_attr(const char* value,
+    size_t size) {
+  
+  type_attr_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
+      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.OpDef.ArgDef.type_attr)
+}
+inline ::std::string* OpDef_ArgDef::mutable_type_attr() {
+  
+  // @@protoc_insertion_point(field_mutable:tensorflow.OpDef.ArgDef.type_attr)
+  return type_attr_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline ::std::string* OpDef_ArgDef::release_type_attr() {
+  // @@protoc_insertion_point(field_release:tensorflow.OpDef.ArgDef.type_attr)
+  
+  return type_attr_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline void OpDef_ArgDef::set_allocated_type_attr(::std::string* type_attr) {
+  if (type_attr != NULL) {
+    
+  } else {
+    
+  }
+  type_attr_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), type_attr,
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.OpDef.ArgDef.type_attr)
+}
+inline ::std::string* OpDef_ArgDef::unsafe_arena_release_type_attr() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.OpDef.ArgDef.type_attr)
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  
+  return type_attr_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      GetArenaNoVirtual());
+}
+inline void OpDef_ArgDef::unsafe_arena_set_allocated_type_attr(
+    ::std::string* type_attr) {
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (type_attr != NULL) {
+    
+  } else {
+    
+  }
+  type_attr_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      type_attr, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.OpDef.ArgDef.type_attr)
+}
+
+// string number_attr = 5;
+inline void OpDef_ArgDef::clear_number_attr() {
+  number_attr_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline const ::std::string& OpDef_ArgDef::number_attr() const {
+  // @@protoc_insertion_point(field_get:tensorflow.OpDef.ArgDef.number_attr)
+  return number_attr_.Get();
+}
+inline void OpDef_ArgDef::set_number_attr(const ::std::string& value) {
+  
+  number_attr_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set:tensorflow.OpDef.ArgDef.number_attr)
+}
+#if LANG_CXX11
+inline void OpDef_ArgDef::set_number_attr(::std::string&& value) {
+  
+  number_attr_.Set(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.OpDef.ArgDef.number_attr)
+}
+#endif
+inline void OpDef_ArgDef::set_number_attr(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  number_attr_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
+              GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_char:tensorflow.OpDef.ArgDef.number_attr)
+}
+inline void OpDef_ArgDef::set_number_attr(const char* value,
+    size_t size) {
+  
+  number_attr_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
+      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.OpDef.ArgDef.number_attr)
+}
+inline ::std::string* OpDef_ArgDef::mutable_number_attr() {
+  
+  // @@protoc_insertion_point(field_mutable:tensorflow.OpDef.ArgDef.number_attr)
+  return number_attr_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline ::std::string* OpDef_ArgDef::release_number_attr() {
+  // @@protoc_insertion_point(field_release:tensorflow.OpDef.ArgDef.number_attr)
+  
+  return number_attr_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline void OpDef_ArgDef::set_allocated_number_attr(::std::string* number_attr) {
+  if (number_attr != NULL) {
+    
+  } else {
+    
+  }
+  number_attr_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), number_attr,
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.OpDef.ArgDef.number_attr)
+}
+inline ::std::string* OpDef_ArgDef::unsafe_arena_release_number_attr() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.OpDef.ArgDef.number_attr)
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  
+  return number_attr_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      GetArenaNoVirtual());
+}
+inline void OpDef_ArgDef::unsafe_arena_set_allocated_number_attr(
+    ::std::string* number_attr) {
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (number_attr != NULL) {
+    
+  } else {
+    
+  }
+  number_attr_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      number_attr, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.OpDef.ArgDef.number_attr)
+}
+
+// string type_list_attr = 6;
+inline void OpDef_ArgDef::clear_type_list_attr() {
+  type_list_attr_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline const ::std::string& OpDef_ArgDef::type_list_attr() const {
+  // @@protoc_insertion_point(field_get:tensorflow.OpDef.ArgDef.type_list_attr)
+  return type_list_attr_.Get();
+}
+inline void OpDef_ArgDef::set_type_list_attr(const ::std::string& value) {
+  
+  type_list_attr_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set:tensorflow.OpDef.ArgDef.type_list_attr)
+}
+#if LANG_CXX11
+inline void OpDef_ArgDef::set_type_list_attr(::std::string&& value) {
+  
+  type_list_attr_.Set(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.OpDef.ArgDef.type_list_attr)
+}
+#endif
+inline void OpDef_ArgDef::set_type_list_attr(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  type_list_attr_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
+              GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_char:tensorflow.OpDef.ArgDef.type_list_attr)
+}
+inline void OpDef_ArgDef::set_type_list_attr(const char* value,
+    size_t size) {
+  
+  type_list_attr_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
+      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.OpDef.ArgDef.type_list_attr)
+}
+inline ::std::string* OpDef_ArgDef::mutable_type_list_attr() {
+  
+  // @@protoc_insertion_point(field_mutable:tensorflow.OpDef.ArgDef.type_list_attr)
+  return type_list_attr_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline ::std::string* OpDef_ArgDef::release_type_list_attr() {
+  // @@protoc_insertion_point(field_release:tensorflow.OpDef.ArgDef.type_list_attr)
+  
+  return type_list_attr_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline void OpDef_ArgDef::set_allocated_type_list_attr(::std::string* type_list_attr) {
+  if (type_list_attr != NULL) {
+    
+  } else {
+    
+  }
+  type_list_attr_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), type_list_attr,
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.OpDef.ArgDef.type_list_attr)
+}
+inline ::std::string* OpDef_ArgDef::unsafe_arena_release_type_list_attr() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.OpDef.ArgDef.type_list_attr)
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  
+  return type_list_attr_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      GetArenaNoVirtual());
+}
+inline void OpDef_ArgDef::unsafe_arena_set_allocated_type_list_attr(
+    ::std::string* type_list_attr) {
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (type_list_attr != NULL) {
+    
+  } else {
+    
+  }
+  type_list_attr_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      type_list_attr, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.OpDef.ArgDef.type_list_attr)
+}
+
+// bool is_ref = 16;
+inline void OpDef_ArgDef::clear_is_ref() {
+  is_ref_ = false;
+}
+inline bool OpDef_ArgDef::is_ref() const {
+  // @@protoc_insertion_point(field_get:tensorflow.OpDef.ArgDef.is_ref)
+  return is_ref_;
+}
+inline void OpDef_ArgDef::set_is_ref(bool value) {
+  
+  is_ref_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.OpDef.ArgDef.is_ref)
+}
+
+// -------------------------------------------------------------------
+
+// OpDef_AttrDef
+
+// string name = 1;
+inline void OpDef_AttrDef::clear_name() {
+  name_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline const ::std::string& OpDef_AttrDef::name() const {
+  // @@protoc_insertion_point(field_get:tensorflow.OpDef.AttrDef.name)
+  return name_.Get();
+}
+inline void OpDef_AttrDef::set_name(const ::std::string& value) {
+  
+  name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set:tensorflow.OpDef.AttrDef.name)
+}
+#if LANG_CXX11
+inline void OpDef_AttrDef::set_name(::std::string&& value) {
+  
+  name_.Set(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.OpDef.AttrDef.name)
+}
+#endif
+inline void OpDef_AttrDef::set_name(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
+              GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_char:tensorflow.OpDef.AttrDef.name)
+}
+inline void OpDef_AttrDef::set_name(const char* value,
+    size_t size) {
+  
+  name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
+      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.OpDef.AttrDef.name)
+}
+inline ::std::string* OpDef_AttrDef::mutable_name() {
+  
+  // @@protoc_insertion_point(field_mutable:tensorflow.OpDef.AttrDef.name)
+  return name_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline ::std::string* OpDef_AttrDef::release_name() {
+  // @@protoc_insertion_point(field_release:tensorflow.OpDef.AttrDef.name)
+  
+  return name_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline void OpDef_AttrDef::set_allocated_name(::std::string* name) {
+  if (name != NULL) {
+    
+  } else {
+    
+  }
+  name_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), name,
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.OpDef.AttrDef.name)
+}
+inline ::std::string* OpDef_AttrDef::unsafe_arena_release_name() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.OpDef.AttrDef.name)
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  
+  return name_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      GetArenaNoVirtual());
+}
+inline void OpDef_AttrDef::unsafe_arena_set_allocated_name(
+    ::std::string* name) {
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (name != NULL) {
+    
+  } else {
+    
+  }
+  name_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      name, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.OpDef.AttrDef.name)
+}
+
+// string type = 2;
+inline void OpDef_AttrDef::clear_type() {
+  type_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline const ::std::string& OpDef_AttrDef::type() const {
+  // @@protoc_insertion_point(field_get:tensorflow.OpDef.AttrDef.type)
+  return type_.Get();
+}
+inline void OpDef_AttrDef::set_type(const ::std::string& value) {
+  
+  type_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set:tensorflow.OpDef.AttrDef.type)
+}
+#if LANG_CXX11
+inline void OpDef_AttrDef::set_type(::std::string&& value) {
+  
+  type_.Set(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.OpDef.AttrDef.type)
+}
+#endif
+inline void OpDef_AttrDef::set_type(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  type_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
+              GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_char:tensorflow.OpDef.AttrDef.type)
+}
+inline void OpDef_AttrDef::set_type(const char* value,
+    size_t size) {
+  
+  type_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
+      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.OpDef.AttrDef.type)
+}
+inline ::std::string* OpDef_AttrDef::mutable_type() {
+  
+  // @@protoc_insertion_point(field_mutable:tensorflow.OpDef.AttrDef.type)
+  return type_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline ::std::string* OpDef_AttrDef::release_type() {
+  // @@protoc_insertion_point(field_release:tensorflow.OpDef.AttrDef.type)
+  
+  return type_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline void OpDef_AttrDef::set_allocated_type(::std::string* type) {
+  if (type != NULL) {
+    
+  } else {
+    
+  }
+  type_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), type,
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.OpDef.AttrDef.type)
+}
+inline ::std::string* OpDef_AttrDef::unsafe_arena_release_type() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.OpDef.AttrDef.type)
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  
+  return type_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      GetArenaNoVirtual());
+}
+inline void OpDef_AttrDef::unsafe_arena_set_allocated_type(
+    ::std::string* type) {
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (type != NULL) {
+    
+  } else {
+    
+  }
+  type_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      type, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.OpDef.AttrDef.type)
+}
+
+// .tensorflow.AttrValue default_value = 3;
+inline bool OpDef_AttrDef::has_default_value() const {
+  return this != internal_default_instance() && default_value_ != NULL;
+}
+inline const ::tensorflow::AttrValue& OpDef_AttrDef::default_value() const {
+  const ::tensorflow::AttrValue* p = default_value_;
+  // @@protoc_insertion_point(field_get:tensorflow.OpDef.AttrDef.default_value)
+  return p != NULL ? *p : *reinterpret_cast<const ::tensorflow::AttrValue*>(
+      &::tensorflow::_AttrValue_default_instance_);
+}
+inline ::tensorflow::AttrValue* OpDef_AttrDef::release_default_value() {
+  // @@protoc_insertion_point(field_release:tensorflow.OpDef.AttrDef.default_value)
+  
+  ::tensorflow::AttrValue* temp = default_value_;
+  if (GetArenaNoVirtual() != NULL) {
+    temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
+  }
+  default_value_ = NULL;
+  return temp;
+}
+inline ::tensorflow::AttrValue* OpDef_AttrDef::unsafe_arena_release_default_value() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.OpDef.AttrDef.default_value)
+  
+  ::tensorflow::AttrValue* temp = default_value_;
+  default_value_ = NULL;
+  return temp;
+}
+inline ::tensorflow::AttrValue* OpDef_AttrDef::mutable_default_value() {
+  
+  if (default_value_ == NULL) {
+    auto* p = CreateMaybeMessage<::tensorflow::AttrValue>(GetArenaNoVirtual());
+    default_value_ = p;
+  }
+  // @@protoc_insertion_point(field_mutable:tensorflow.OpDef.AttrDef.default_value)
+  return default_value_;
+}
+inline void OpDef_AttrDef::set_allocated_default_value(::tensorflow::AttrValue* default_value) {
+  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
+  if (message_arena == NULL) {
+    delete reinterpret_cast< ::google::protobuf::MessageLite*>(default_value_);
+  }
+  if (default_value) {
+    ::google::protobuf::Arena* submessage_arena =
+      reinterpret_cast<::google::protobuf::MessageLite*>(default_value)->GetArena();
+    if (message_arena != submessage_arena) {
+      default_value = ::google::protobuf::internal::GetOwnedMessage(
+          message_arena, default_value, submessage_arena);
+    }
+    
+  } else {
+    
+  }
+  default_value_ = default_value;
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.OpDef.AttrDef.default_value)
+}
+
+// string description = 4;
+inline void OpDef_AttrDef::clear_description() {
+  description_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline const ::std::string& OpDef_AttrDef::description() const {
+  // @@protoc_insertion_point(field_get:tensorflow.OpDef.AttrDef.description)
+  return description_.Get();
+}
+inline void OpDef_AttrDef::set_description(const ::std::string& value) {
+  
+  description_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set:tensorflow.OpDef.AttrDef.description)
+}
+#if LANG_CXX11
+inline void OpDef_AttrDef::set_description(::std::string&& value) {
+  
+  description_.Set(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.OpDef.AttrDef.description)
+}
+#endif
+inline void OpDef_AttrDef::set_description(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  description_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
+              GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_char:tensorflow.OpDef.AttrDef.description)
+}
+inline void OpDef_AttrDef::set_description(const char* value,
+    size_t size) {
+  
+  description_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
+      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.OpDef.AttrDef.description)
+}
+inline ::std::string* OpDef_AttrDef::mutable_description() {
+  
+  // @@protoc_insertion_point(field_mutable:tensorflow.OpDef.AttrDef.description)
+  return description_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline ::std::string* OpDef_AttrDef::release_description() {
+  // @@protoc_insertion_point(field_release:tensorflow.OpDef.AttrDef.description)
+  
+  return description_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline void OpDef_AttrDef::set_allocated_description(::std::string* description) {
+  if (description != NULL) {
+    
+  } else {
+    
+  }
+  description_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), description,
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.OpDef.AttrDef.description)
+}
+inline ::std::string* OpDef_AttrDef::unsafe_arena_release_description() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.OpDef.AttrDef.description)
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  
+  return description_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      GetArenaNoVirtual());
+}
+inline void OpDef_AttrDef::unsafe_arena_set_allocated_description(
+    ::std::string* description) {
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (description != NULL) {
+    
+  } else {
+    
+  }
+  description_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      description, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.OpDef.AttrDef.description)
+}
+
+// bool has_minimum = 5;
+inline void OpDef_AttrDef::clear_has_minimum() {
+  has_minimum_ = false;
+}
+inline bool OpDef_AttrDef::has_minimum() const {
+  // @@protoc_insertion_point(field_get:tensorflow.OpDef.AttrDef.has_minimum)
+  return has_minimum_;
+}
+inline void OpDef_AttrDef::set_has_minimum(bool value) {
+  
+  has_minimum_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.OpDef.AttrDef.has_minimum)
+}
+
+// int64 minimum = 6;
+inline void OpDef_AttrDef::clear_minimum() {
+  minimum_ = PROTOBUF_LONGLONG(0);
+}
+inline ::google::protobuf::int64 OpDef_AttrDef::minimum() const {
+  // @@protoc_insertion_point(field_get:tensorflow.OpDef.AttrDef.minimum)
+  return minimum_;
+}
+inline void OpDef_AttrDef::set_minimum(::google::protobuf::int64 value) {
+  
+  minimum_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.OpDef.AttrDef.minimum)
+}
+
+// .tensorflow.AttrValue allowed_values = 7;
+inline bool OpDef_AttrDef::has_allowed_values() const {
+  return this != internal_default_instance() && allowed_values_ != NULL;
+}
+inline const ::tensorflow::AttrValue& OpDef_AttrDef::allowed_values() const {
+  const ::tensorflow::AttrValue* p = allowed_values_;
+  // @@protoc_insertion_point(field_get:tensorflow.OpDef.AttrDef.allowed_values)
+  return p != NULL ? *p : *reinterpret_cast<const ::tensorflow::AttrValue*>(
+      &::tensorflow::_AttrValue_default_instance_);
+}
+inline ::tensorflow::AttrValue* OpDef_AttrDef::release_allowed_values() {
+  // @@protoc_insertion_point(field_release:tensorflow.OpDef.AttrDef.allowed_values)
+  
+  ::tensorflow::AttrValue* temp = allowed_values_;
+  if (GetArenaNoVirtual() != NULL) {
+    temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
+  }
+  allowed_values_ = NULL;
+  return temp;
+}
+inline ::tensorflow::AttrValue* OpDef_AttrDef::unsafe_arena_release_allowed_values() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.OpDef.AttrDef.allowed_values)
+  
+  ::tensorflow::AttrValue* temp = allowed_values_;
+  allowed_values_ = NULL;
+  return temp;
+}
+inline ::tensorflow::AttrValue* OpDef_AttrDef::mutable_allowed_values() {
+  
+  if (allowed_values_ == NULL) {
+    auto* p = CreateMaybeMessage<::tensorflow::AttrValue>(GetArenaNoVirtual());
+    allowed_values_ = p;
+  }
+  // @@protoc_insertion_point(field_mutable:tensorflow.OpDef.AttrDef.allowed_values)
+  return allowed_values_;
+}
+inline void OpDef_AttrDef::set_allocated_allowed_values(::tensorflow::AttrValue* allowed_values) {
+  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
+  if (message_arena == NULL) {
+    delete reinterpret_cast< ::google::protobuf::MessageLite*>(allowed_values_);
+  }
+  if (allowed_values) {
+    ::google::protobuf::Arena* submessage_arena =
+      reinterpret_cast<::google::protobuf::MessageLite*>(allowed_values)->GetArena();
+    if (message_arena != submessage_arena) {
+      allowed_values = ::google::protobuf::internal::GetOwnedMessage(
+          message_arena, allowed_values, submessage_arena);
+    }
+    
+  } else {
+    
+  }
+  allowed_values_ = allowed_values;
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.OpDef.AttrDef.allowed_values)
+}
+
+// -------------------------------------------------------------------
+
+// OpDef
+
+// string name = 1;
+inline void OpDef::clear_name() {
+  name_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline const ::std::string& OpDef::name() const {
+  // @@protoc_insertion_point(field_get:tensorflow.OpDef.name)
+  return name_.Get();
+}
+inline void OpDef::set_name(const ::std::string& value) {
+  
+  name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set:tensorflow.OpDef.name)
+}
+#if LANG_CXX11
+inline void OpDef::set_name(::std::string&& value) {
+  
+  name_.Set(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.OpDef.name)
+}
+#endif
+inline void OpDef::set_name(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
+              GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_char:tensorflow.OpDef.name)
+}
+inline void OpDef::set_name(const char* value,
+    size_t size) {
+  
+  name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
+      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.OpDef.name)
+}
+inline ::std::string* OpDef::mutable_name() {
+  
+  // @@protoc_insertion_point(field_mutable:tensorflow.OpDef.name)
+  return name_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline ::std::string* OpDef::release_name() {
+  // @@protoc_insertion_point(field_release:tensorflow.OpDef.name)
+  
+  return name_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline void OpDef::set_allocated_name(::std::string* name) {
+  if (name != NULL) {
+    
+  } else {
+    
+  }
+  name_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), name,
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.OpDef.name)
+}
+inline ::std::string* OpDef::unsafe_arena_release_name() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.OpDef.name)
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  
+  return name_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      GetArenaNoVirtual());
+}
+inline void OpDef::unsafe_arena_set_allocated_name(
+    ::std::string* name) {
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (name != NULL) {
+    
+  } else {
+    
+  }
+  name_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      name, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.OpDef.name)
+}
+
+// repeated .tensorflow.OpDef.ArgDef input_arg = 2;
+inline int OpDef::input_arg_size() const {
+  return input_arg_.size();
+}
+inline void OpDef::clear_input_arg() {
+  input_arg_.Clear();
+}
+inline ::tensorflow::OpDef_ArgDef* OpDef::mutable_input_arg(int index) {
+  // @@protoc_insertion_point(field_mutable:tensorflow.OpDef.input_arg)
+  return input_arg_.Mutable(index);
+}
+inline ::google::protobuf::RepeatedPtrField< ::tensorflow::OpDef_ArgDef >*
+OpDef::mutable_input_arg() {
+  // @@protoc_insertion_point(field_mutable_list:tensorflow.OpDef.input_arg)
+  return &input_arg_;
+}
+inline const ::tensorflow::OpDef_ArgDef& OpDef::input_arg(int index) const {
+  // @@protoc_insertion_point(field_get:tensorflow.OpDef.input_arg)
+  return input_arg_.Get(index);
+}
+inline ::tensorflow::OpDef_ArgDef* OpDef::add_input_arg() {
+  // @@protoc_insertion_point(field_add:tensorflow.OpDef.input_arg)
+  return input_arg_.Add();
+}
+inline const ::google::protobuf::RepeatedPtrField< ::tensorflow::OpDef_ArgDef >&
+OpDef::input_arg() const {
+  // @@protoc_insertion_point(field_list:tensorflow.OpDef.input_arg)
+  return input_arg_;
+}
+
+// repeated .tensorflow.OpDef.ArgDef output_arg = 3;
+inline int OpDef::output_arg_size() const {
+  return output_arg_.size();
+}
+inline void OpDef::clear_output_arg() {
+  output_arg_.Clear();
+}
+inline ::tensorflow::OpDef_ArgDef* OpDef::mutable_output_arg(int index) {
+  // @@protoc_insertion_point(field_mutable:tensorflow.OpDef.output_arg)
+  return output_arg_.Mutable(index);
+}
+inline ::google::protobuf::RepeatedPtrField< ::tensorflow::OpDef_ArgDef >*
+OpDef::mutable_output_arg() {
+  // @@protoc_insertion_point(field_mutable_list:tensorflow.OpDef.output_arg)
+  return &output_arg_;
+}
+inline const ::tensorflow::OpDef_ArgDef& OpDef::output_arg(int index) const {
+  // @@protoc_insertion_point(field_get:tensorflow.OpDef.output_arg)
+  return output_arg_.Get(index);
+}
+inline ::tensorflow::OpDef_ArgDef* OpDef::add_output_arg() {
+  // @@protoc_insertion_point(field_add:tensorflow.OpDef.output_arg)
+  return output_arg_.Add();
+}
+inline const ::google::protobuf::RepeatedPtrField< ::tensorflow::OpDef_ArgDef >&
+OpDef::output_arg() const {
+  // @@protoc_insertion_point(field_list:tensorflow.OpDef.output_arg)
+  return output_arg_;
+}
+
+// repeated .tensorflow.OpDef.AttrDef attr = 4;
+inline int OpDef::attr_size() const {
+  return attr_.size();
+}
+inline void OpDef::clear_attr() {
+  attr_.Clear();
+}
+inline ::tensorflow::OpDef_AttrDef* OpDef::mutable_attr(int index) {
+  // @@protoc_insertion_point(field_mutable:tensorflow.OpDef.attr)
+  return attr_.Mutable(index);
+}
+inline ::google::protobuf::RepeatedPtrField< ::tensorflow::OpDef_AttrDef >*
+OpDef::mutable_attr() {
+  // @@protoc_insertion_point(field_mutable_list:tensorflow.OpDef.attr)
+  return &attr_;
+}
+inline const ::tensorflow::OpDef_AttrDef& OpDef::attr(int index) const {
+  // @@protoc_insertion_point(field_get:tensorflow.OpDef.attr)
+  return attr_.Get(index);
+}
+inline ::tensorflow::OpDef_AttrDef* OpDef::add_attr() {
+  // @@protoc_insertion_point(field_add:tensorflow.OpDef.attr)
+  return attr_.Add();
+}
+inline const ::google::protobuf::RepeatedPtrField< ::tensorflow::OpDef_AttrDef >&
+OpDef::attr() const {
+  // @@protoc_insertion_point(field_list:tensorflow.OpDef.attr)
+  return attr_;
+}
+
+// .tensorflow.OpDeprecation deprecation = 8;
+inline bool OpDef::has_deprecation() const {
+  return this != internal_default_instance() && deprecation_ != NULL;
+}
+inline void OpDef::clear_deprecation() {
+  if (GetArenaNoVirtual() == NULL && deprecation_ != NULL) {
+    delete deprecation_;
+  }
+  deprecation_ = NULL;
+}
+inline const ::tensorflow::OpDeprecation& OpDef::deprecation() const {
+  const ::tensorflow::OpDeprecation* p = deprecation_;
+  // @@protoc_insertion_point(field_get:tensorflow.OpDef.deprecation)
+  return p != NULL ? *p : *reinterpret_cast<const ::tensorflow::OpDeprecation*>(
+      &::tensorflow::_OpDeprecation_default_instance_);
+}
+inline ::tensorflow::OpDeprecation* OpDef::release_deprecation() {
+  // @@protoc_insertion_point(field_release:tensorflow.OpDef.deprecation)
+  
+  ::tensorflow::OpDeprecation* temp = deprecation_;
+  if (GetArenaNoVirtual() != NULL) {
+    temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
+  }
+  deprecation_ = NULL;
+  return temp;
+}
+inline ::tensorflow::OpDeprecation* OpDef::unsafe_arena_release_deprecation() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.OpDef.deprecation)
+  
+  ::tensorflow::OpDeprecation* temp = deprecation_;
+  deprecation_ = NULL;
+  return temp;
+}
+inline ::tensorflow::OpDeprecation* OpDef::mutable_deprecation() {
+  
+  if (deprecation_ == NULL) {
+    auto* p = CreateMaybeMessage<::tensorflow::OpDeprecation>(GetArenaNoVirtual());
+    deprecation_ = p;
+  }
+  // @@protoc_insertion_point(field_mutable:tensorflow.OpDef.deprecation)
+  return deprecation_;
+}
+inline void OpDef::set_allocated_deprecation(::tensorflow::OpDeprecation* deprecation) {
+  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
+  if (message_arena == NULL) {
+    delete deprecation_;
+  }
+  if (deprecation) {
+    ::google::protobuf::Arena* submessage_arena =
+      ::google::protobuf::Arena::GetArena(deprecation);
+    if (message_arena != submessage_arena) {
+      deprecation = ::google::protobuf::internal::GetOwnedMessage(
+          message_arena, deprecation, submessage_arena);
+    }
+    
+  } else {
+    
+  }
+  deprecation_ = deprecation;
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.OpDef.deprecation)
+}
+
+// string summary = 5;
+inline void OpDef::clear_summary() {
+  summary_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline const ::std::string& OpDef::summary() const {
+  // @@protoc_insertion_point(field_get:tensorflow.OpDef.summary)
+  return summary_.Get();
+}
+inline void OpDef::set_summary(const ::std::string& value) {
+  
+  summary_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set:tensorflow.OpDef.summary)
+}
+#if LANG_CXX11
+inline void OpDef::set_summary(::std::string&& value) {
+  
+  summary_.Set(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.OpDef.summary)
+}
+#endif
+inline void OpDef::set_summary(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  summary_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
+              GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_char:tensorflow.OpDef.summary)
+}
+inline void OpDef::set_summary(const char* value,
+    size_t size) {
+  
+  summary_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
+      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.OpDef.summary)
+}
+inline ::std::string* OpDef::mutable_summary() {
+  
+  // @@protoc_insertion_point(field_mutable:tensorflow.OpDef.summary)
+  return summary_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline ::std::string* OpDef::release_summary() {
+  // @@protoc_insertion_point(field_release:tensorflow.OpDef.summary)
+  
+  return summary_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline void OpDef::set_allocated_summary(::std::string* summary) {
+  if (summary != NULL) {
+    
+  } else {
+    
+  }
+  summary_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), summary,
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.OpDef.summary)
+}
+inline ::std::string* OpDef::unsafe_arena_release_summary() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.OpDef.summary)
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  
+  return summary_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      GetArenaNoVirtual());
+}
+inline void OpDef::unsafe_arena_set_allocated_summary(
+    ::std::string* summary) {
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (summary != NULL) {
+    
+  } else {
+    
+  }
+  summary_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      summary, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.OpDef.summary)
+}
+
+// string description = 6;
+inline void OpDef::clear_description() {
+  description_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline const ::std::string& OpDef::description() const {
+  // @@protoc_insertion_point(field_get:tensorflow.OpDef.description)
+  return description_.Get();
+}
+inline void OpDef::set_description(const ::std::string& value) {
+  
+  description_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set:tensorflow.OpDef.description)
+}
+#if LANG_CXX11
+inline void OpDef::set_description(::std::string&& value) {
+  
+  description_.Set(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.OpDef.description)
+}
+#endif
+inline void OpDef::set_description(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  description_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
+              GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_char:tensorflow.OpDef.description)
+}
+inline void OpDef::set_description(const char* value,
+    size_t size) {
+  
+  description_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
+      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.OpDef.description)
+}
+inline ::std::string* OpDef::mutable_description() {
+  
+  // @@protoc_insertion_point(field_mutable:tensorflow.OpDef.description)
+  return description_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline ::std::string* OpDef::release_description() {
+  // @@protoc_insertion_point(field_release:tensorflow.OpDef.description)
+  
+  return description_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline void OpDef::set_allocated_description(::std::string* description) {
+  if (description != NULL) {
+    
+  } else {
+    
+  }
+  description_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), description,
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.OpDef.description)
+}
+inline ::std::string* OpDef::unsafe_arena_release_description() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.OpDef.description)
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  
+  return description_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      GetArenaNoVirtual());
+}
+inline void OpDef::unsafe_arena_set_allocated_description(
+    ::std::string* description) {
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (description != NULL) {
+    
+  } else {
+    
+  }
+  description_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      description, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.OpDef.description)
+}
+
+// bool is_commutative = 18;
+inline void OpDef::clear_is_commutative() {
+  is_commutative_ = false;
+}
+inline bool OpDef::is_commutative() const {
+  // @@protoc_insertion_point(field_get:tensorflow.OpDef.is_commutative)
+  return is_commutative_;
+}
+inline void OpDef::set_is_commutative(bool value) {
+  
+  is_commutative_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.OpDef.is_commutative)
+}
+
+// bool is_aggregate = 16;
+inline void OpDef::clear_is_aggregate() {
+  is_aggregate_ = false;
+}
+inline bool OpDef::is_aggregate() const {
+  // @@protoc_insertion_point(field_get:tensorflow.OpDef.is_aggregate)
+  return is_aggregate_;
+}
+inline void OpDef::set_is_aggregate(bool value) {
+  
+  is_aggregate_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.OpDef.is_aggregate)
+}
+
+// bool is_stateful = 17;
+inline void OpDef::clear_is_stateful() {
+  is_stateful_ = false;
+}
+inline bool OpDef::is_stateful() const {
+  // @@protoc_insertion_point(field_get:tensorflow.OpDef.is_stateful)
+  return is_stateful_;
+}
+inline void OpDef::set_is_stateful(bool value) {
+  
+  is_stateful_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.OpDef.is_stateful)
+}
+
+// bool allows_uninitialized_input = 19;
+inline void OpDef::clear_allows_uninitialized_input() {
+  allows_uninitialized_input_ = false;
+}
+inline bool OpDef::allows_uninitialized_input() const {
+  // @@protoc_insertion_point(field_get:tensorflow.OpDef.allows_uninitialized_input)
+  return allows_uninitialized_input_;
+}
+inline void OpDef::set_allows_uninitialized_input(bool value) {
+  
+  allows_uninitialized_input_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.OpDef.allows_uninitialized_input)
+}
+
+// -------------------------------------------------------------------
+
+// OpDeprecation
+
+// int32 version = 1;
+inline void OpDeprecation::clear_version() {
+  version_ = 0;
+}
+inline ::google::protobuf::int32 OpDeprecation::version() const {
+  // @@protoc_insertion_point(field_get:tensorflow.OpDeprecation.version)
+  return version_;
+}
+inline void OpDeprecation::set_version(::google::protobuf::int32 value) {
+  
+  version_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.OpDeprecation.version)
+}
+
+// string explanation = 2;
+inline void OpDeprecation::clear_explanation() {
+  explanation_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline const ::std::string& OpDeprecation::explanation() const {
+  // @@protoc_insertion_point(field_get:tensorflow.OpDeprecation.explanation)
+  return explanation_.Get();
+}
+inline void OpDeprecation::set_explanation(const ::std::string& value) {
+  
+  explanation_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set:tensorflow.OpDeprecation.explanation)
+}
+#if LANG_CXX11
+inline void OpDeprecation::set_explanation(::std::string&& value) {
+  
+  explanation_.Set(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.OpDeprecation.explanation)
+}
+#endif
+inline void OpDeprecation::set_explanation(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  explanation_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
+              GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_char:tensorflow.OpDeprecation.explanation)
+}
+inline void OpDeprecation::set_explanation(const char* value,
+    size_t size) {
+  
+  explanation_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
+      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.OpDeprecation.explanation)
+}
+inline ::std::string* OpDeprecation::mutable_explanation() {
+  
+  // @@protoc_insertion_point(field_mutable:tensorflow.OpDeprecation.explanation)
+  return explanation_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline ::std::string* OpDeprecation::release_explanation() {
+  // @@protoc_insertion_point(field_release:tensorflow.OpDeprecation.explanation)
+  
+  return explanation_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline void OpDeprecation::set_allocated_explanation(::std::string* explanation) {
+  if (explanation != NULL) {
+    
+  } else {
+    
+  }
+  explanation_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), explanation,
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.OpDeprecation.explanation)
+}
+inline ::std::string* OpDeprecation::unsafe_arena_release_explanation() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.OpDeprecation.explanation)
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  
+  return explanation_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      GetArenaNoVirtual());
+}
+inline void OpDeprecation::unsafe_arena_set_allocated_explanation(
+    ::std::string* explanation) {
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (explanation != NULL) {
+    
+  } else {
+    
+  }
+  explanation_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      explanation, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.OpDeprecation.explanation)
+}
+
+// -------------------------------------------------------------------
+
+// OpList
+
+// repeated .tensorflow.OpDef op = 1;
+inline int OpList::op_size() const {
+  return op_.size();
+}
+inline void OpList::clear_op() {
+  op_.Clear();
+}
+inline ::tensorflow::OpDef* OpList::mutable_op(int index) {
+  // @@protoc_insertion_point(field_mutable:tensorflow.OpList.op)
+  return op_.Mutable(index);
+}
+inline ::google::protobuf::RepeatedPtrField< ::tensorflow::OpDef >*
+OpList::mutable_op() {
+  // @@protoc_insertion_point(field_mutable_list:tensorflow.OpList.op)
+  return &op_;
+}
+inline const ::tensorflow::OpDef& OpList::op(int index) const {
+  // @@protoc_insertion_point(field_get:tensorflow.OpList.op)
+  return op_.Get(index);
+}
+inline ::tensorflow::OpDef* OpList::add_op() {
+  // @@protoc_insertion_point(field_add:tensorflow.OpList.op)
+  return op_.Add();
+}
+inline const ::google::protobuf::RepeatedPtrField< ::tensorflow::OpDef >&
+OpList::op() const {
+  // @@protoc_insertion_point(field_list:tensorflow.OpList.op)
+  return op_;
+}
+
+#ifdef __GNUC__
+  #pragma GCC diagnostic pop
+#endif  // __GNUC__
+// -------------------------------------------------------------------
+
+// -------------------------------------------------------------------
+
+// -------------------------------------------------------------------
+
+// -------------------------------------------------------------------
+
+
+// @@protoc_insertion_point(namespace_scope)
+
+}  // namespace tensorflow
+
+// @@protoc_insertion_point(global_scope)
+
+#include <google/protobuf/port_undef.inc>
+#endif  // PROTOBUF_INCLUDED_tensorflow_2fcore_2fframework_2fop_5fdef_2eproto
diff --git a/tensorflow/core/framework/op_def.proto b/tensorflow/core/framework/op_def.proto
new file mode 100644 (file)
index 0000000..aea2d2b
--- /dev/null
@@ -0,0 +1,166 @@
+syntax = "proto3";
+
+package tensorflow;
+option cc_enable_arenas = true;
+option java_outer_classname = "OpDefProtos";
+option java_multiple_files = true;
+option java_package = "org.tensorflow.framework";
+option go_package = "github.com/tensorflow/tensorflow/tensorflow/go/core/framework";
+import "tensorflow/core/framework/attr_value.proto";
+import "tensorflow/core/framework/types.proto";
+
+// Defines an operation. A NodeDef in a GraphDef specifies an Op by
+// using the "op" field which should match the name of a OpDef.
+// LINT.IfChange
+message OpDef {
+  // Op names starting with an underscore are reserved for internal use.
+  // Names should be CamelCase and match the regexp "[A-Z][a-zA-Z0-9_]*".
+  string name = 1;
+
+  // For describing inputs and outputs.
+  message ArgDef {
+    // Name for the input/output.  Should match the regexp "[a-z][a-z0-9_]*".
+    string name = 1;
+
+    // Human readable description.
+    string description = 2;
+
+    // Describes the type of one or more tensors that are accepted/produced
+    // by this input/output arg.  The only legal combinations are:
+    // * For a single tensor: either the "type" field is set or the
+    //   "type_attr" field is set to the name of an attr with type "type".
+    // * For a sequence of tensors with the same type: the "number_attr"
+    //   field will be set to the name of an attr with type "int", and
+    //   either the "type" or "type_attr" field will be set as for
+    //   single tensors.
+    // * For a sequence of tensors, the "type_list_attr" field will be set
+    //   to the name of an attr with type "list(type)".
+    DataType type = 3;
+    string type_attr = 4;    // if specified, attr must have type "type"
+    string number_attr = 5;  // if specified, attr must have type "int"
+    // If specified, attr must have type "list(type)", and none of
+    // type, type_attr, and number_attr may be specified.
+    string type_list_attr = 6;
+
+    // For inputs: if true, the inputs are required to be refs.
+    //   By default, inputs can be either refs or non-refs.
+    // For outputs: if true, outputs are refs, otherwise they are not.
+    bool is_ref = 16;
+  };
+
+  // Description of the input(s).
+  repeated ArgDef input_arg = 2;
+
+  // Description of the output(s).
+  repeated ArgDef output_arg = 3;
+
+  // Description of the graph-construction-time configuration of this
+  // Op.  That is to say, this describes the attr fields that will
+  // be specified in the NodeDef.
+  message AttrDef {
+    // A descriptive name for the argument.  May be used, e.g. by the
+    // Python client, as a keyword argument name, and so should match
+    // the regexp "[a-z][a-z0-9_]+".
+    string name = 1;
+
+    // One of the type names from attr_value.proto ("string", "list(string)",
+    // "int", etc.).
+    string type = 2;
+
+    // A reasonable default for this attribute if the user does not supply
+    // a value.  If not specified, the user must supply a value.
+    AttrValue default_value = 3;
+
+    // Human-readable description.
+    string description = 4;
+
+    // TODO(josh11b): bool is_optional?
+
+    // --- Constraints ---
+    // These constraints are only in effect if specified.  Default is no
+    // constraints.
+
+    // For type == "int", this is a minimum value.  For "list(___)"
+    // types, this is the minimum length.
+    bool has_minimum = 5;
+    int64 minimum = 6;
+
+    // The set of allowed values.  Has type that is the "list" version
+    // of the "type" field above (uses the "list" field of AttrValue).
+    // If type == "type" or "list(type)" above, then the "type" field
+    // of "allowed_values.list" has the set of allowed DataTypes.
+    // If type == "string" or "list(string)", then the "s" field of
+    // "allowed_values.list" has the set of allowed strings.
+    AttrValue allowed_values = 7;
+  }
+  repeated AttrDef attr = 4;
+
+  // Optional deprecation based on GraphDef versions.
+  OpDeprecation deprecation = 8;
+
+  // One-line human-readable description of what the Op does.
+  string summary = 5;
+
+  // Additional, longer human-readable description of what the Op does.
+  string description = 6;
+
+  // -------------------------------------------------------------------------
+  // Which optimizations this operation can participate in.
+
+  // True if the operation is commutative ("op(a,b) == op(b,a)" for all inputs)
+  bool is_commutative = 18;
+
+  // If is_aggregate is true, then this operation accepts N >= 2
+  // inputs and produces 1 output all of the same type.  Should be
+  // associative and commutative, and produce output with the same
+  // shape as the input.  The optimizer may replace an aggregate op
+  // taking input from multiple devices with a tree of aggregate ops
+  // that aggregate locally within each device (and possibly within
+  // groups of nearby devices) before communicating.
+  // TODO(josh11b): Implement that optimization.
+  bool is_aggregate = 16;  // for things like add
+
+  // Other optimizations go here, like
+  //   can_alias_input, rewrite_when_output_unused, partitioning_strategy, etc.
+
+  // -------------------------------------------------------------------------
+  // Optimization constraints.
+
+  // Ops are marked as stateful if their behavior depends on some state beyond
+  // their input tensors (e.g. variable reading op) or if they have
+  // a side-effect (e.g. printing or asserting ops). Equivalently, stateless ops
+  // must always produce the same output for the same input and have
+  // no side-effects.
+  //
+  // By default Ops may be moved between devices.  Stateful ops should
+  // either not be moved, or should only be moved if that state can also
+  // be moved (e.g. via some sort of save / restore).
+  // Stateful ops are guaranteed to never be optimized away by Common
+  // Subexpression Elimination (CSE).
+  bool is_stateful = 17;  // for things like variables, queue
+
+  // -------------------------------------------------------------------------
+  // Non-standard options.
+
+  // By default, all inputs to an Op must be initialized Tensors.  Ops
+  // that may initialize tensors for the first time should set this
+  // field to true, to allow the Op to take an uninitialized Tensor as
+  // input.
+  bool allows_uninitialized_input = 19;  // for Assign, etc.
+};
+// LINT.ThenChange(
+//     https://www.tensorflow.org/code/tensorflow/core/framework/op_def_util.cc)
+
+// Information about version-dependent deprecation of an op
+message OpDeprecation {
+  // First GraphDef version at which the op is disallowed.
+  int32 version = 1;
+
+  // Explanation of why it was deprecated and what to use instead.
+  string explanation = 2;
+};
+
+// A collection of OpDefs
+message OpList {
+  repeated OpDef op = 1;
+};
diff --git a/tensorflow/core/framework/reader_base.pb.cc b/tensorflow/core/framework/reader_base.pb.cc
new file mode 100644 (file)
index 0000000..7d0a9ca
--- /dev/null
@@ -0,0 +1,565 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: tensorflow/core/framework/reader_base.proto
+
+#include "tensorflow/core/framework/reader_base.pb.h"
+
+#include <algorithm>
+
+#include <google/protobuf/stubs/common.h>
+#include <google/protobuf/io/coded_stream.h>
+#include <google/protobuf/extension_set.h>
+#include <google/protobuf/wire_format_lite_inl.h>
+#include <google/protobuf/descriptor.h>
+#include <google/protobuf/generated_message_reflection.h>
+#include <google/protobuf/reflection_ops.h>
+#include <google/protobuf/wire_format.h>
+// @@protoc_insertion_point(includes)
+#include <google/protobuf/port_def.inc>
+
+namespace tensorflow {
+class ReaderBaseStateDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<ReaderBaseState> _instance;
+} _ReaderBaseState_default_instance_;
+}  // namespace tensorflow
+static void InitDefaultsReaderBaseState_tensorflow_2fcore_2fframework_2freader_5fbase_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_ReaderBaseState_default_instance_;
+    new (ptr) ::tensorflow::ReaderBaseState();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::ReaderBaseState::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<0> scc_info_ReaderBaseState_tensorflow_2fcore_2fframework_2freader_5fbase_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsReaderBaseState_tensorflow_2fcore_2fframework_2freader_5fbase_2eproto}, {}};
+
+void InitDefaults_tensorflow_2fcore_2fframework_2freader_5fbase_2eproto() {
+  ::google::protobuf::internal::InitSCC(&scc_info_ReaderBaseState_tensorflow_2fcore_2fframework_2freader_5fbase_2eproto.base);
+}
+
+::google::protobuf::Metadata file_level_metadata_tensorflow_2fcore_2fframework_2freader_5fbase_2eproto[1];
+constexpr ::google::protobuf::EnumDescriptor const** file_level_enum_descriptors_tensorflow_2fcore_2fframework_2freader_5fbase_2eproto = nullptr;
+constexpr ::google::protobuf::ServiceDescriptor const** file_level_service_descriptors_tensorflow_2fcore_2fframework_2freader_5fbase_2eproto = nullptr;
+
+const ::google::protobuf::uint32 TableStruct_tensorflow_2fcore_2fframework_2freader_5fbase_2eproto::offsets[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = {
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::ReaderBaseState, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::ReaderBaseState, work_started_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::ReaderBaseState, work_finished_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::ReaderBaseState, num_records_produced_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::ReaderBaseState, current_work_),
+};
+static const ::google::protobuf::internal::MigrationSchema schemas[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = {
+  { 0, -1, sizeof(::tensorflow::ReaderBaseState)},
+};
+
+static ::google::protobuf::Message const * const file_default_instances[] = {
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_ReaderBaseState_default_instance_),
+};
+
+::google::protobuf::internal::AssignDescriptorsTable assign_descriptors_table_tensorflow_2fcore_2fframework_2freader_5fbase_2eproto = {
+  {}, AddDescriptors_tensorflow_2fcore_2fframework_2freader_5fbase_2eproto, "tensorflow/core/framework/reader_base.proto", schemas,
+  file_default_instances, TableStruct_tensorflow_2fcore_2fframework_2freader_5fbase_2eproto::offsets,
+  file_level_metadata_tensorflow_2fcore_2fframework_2freader_5fbase_2eproto, 1, file_level_enum_descriptors_tensorflow_2fcore_2fframework_2freader_5fbase_2eproto, file_level_service_descriptors_tensorflow_2fcore_2fframework_2freader_5fbase_2eproto,
+};
+
+::google::protobuf::internal::DescriptorTable descriptor_table_tensorflow_2fcore_2fframework_2freader_5fbase_2eproto = {
+  false, InitDefaults_tensorflow_2fcore_2fframework_2freader_5fbase_2eproto, 
+  "\n+tensorflow/core/framework/reader_base."
+  "proto\022\ntensorflow\"r\n\017ReaderBaseState\022\024\n\014"
+  "work_started\030\001 \001(\003\022\025\n\rwork_finished\030\002 \001("
+  "\003\022\034\n\024num_records_produced\030\003 \001(\003\022\024\n\014curre"
+  "nt_work\030\004 \001(\014Bp\n\030org.tensorflow.framewor"
+  "kB\020ReaderBaseProtosP\001Z=github.com/tensor"
+  "flow/tensorflow/tensorflow/go/core/frame"
+  "work\370\001\001b\006proto3"
+,
+  "tensorflow/core/framework/reader_base.proto", &assign_descriptors_table_tensorflow_2fcore_2fframework_2freader_5fbase_2eproto, 295,
+};
+
+void AddDescriptors_tensorflow_2fcore_2fframework_2freader_5fbase_2eproto() {
+  static constexpr ::google::protobuf::internal::InitFunc deps[1] =
+  {
+  };
+ ::google::protobuf::internal::AddDescriptors(&descriptor_table_tensorflow_2fcore_2fframework_2freader_5fbase_2eproto, deps, 0);
+}
+
+// Force running AddDescriptors() at dynamic initialization time.
+static bool dynamic_init_dummy_tensorflow_2fcore_2fframework_2freader_5fbase_2eproto = []() { AddDescriptors_tensorflow_2fcore_2fframework_2freader_5fbase_2eproto(); return true; }();
+namespace tensorflow {
+
+// ===================================================================
+
+void ReaderBaseState::InitAsDefaultInstance() {
+}
+class ReaderBaseState::HasBitSetters {
+ public:
+};
+
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int ReaderBaseState::kWorkStartedFieldNumber;
+const int ReaderBaseState::kWorkFinishedFieldNumber;
+const int ReaderBaseState::kNumRecordsProducedFieldNumber;
+const int ReaderBaseState::kCurrentWorkFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+ReaderBaseState::ReaderBaseState()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.ReaderBaseState)
+}
+ReaderBaseState::ReaderBaseState(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.ReaderBaseState)
+}
+ReaderBaseState::ReaderBaseState(const ReaderBaseState& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  current_work_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.current_work().size() > 0) {
+    current_work_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.current_work(),
+      GetArenaNoVirtual());
+  }
+  ::memcpy(&work_started_, &from.work_started_,
+    static_cast<size_t>(reinterpret_cast<char*>(&num_records_produced_) -
+    reinterpret_cast<char*>(&work_started_)) + sizeof(num_records_produced_));
+  // @@protoc_insertion_point(copy_constructor:tensorflow.ReaderBaseState)
+}
+
+void ReaderBaseState::SharedCtor() {
+  ::google::protobuf::internal::InitSCC(
+      &scc_info_ReaderBaseState_tensorflow_2fcore_2fframework_2freader_5fbase_2eproto.base);
+  current_work_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  ::memset(&work_started_, 0, static_cast<size_t>(
+      reinterpret_cast<char*>(&num_records_produced_) -
+      reinterpret_cast<char*>(&work_started_)) + sizeof(num_records_produced_));
+}
+
+ReaderBaseState::~ReaderBaseState() {
+  // @@protoc_insertion_point(destructor:tensorflow.ReaderBaseState)
+  SharedDtor();
+}
+
+void ReaderBaseState::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+  current_work_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+
+void ReaderBaseState::ArenaDtor(void* object) {
+  ReaderBaseState* _this = reinterpret_cast< ReaderBaseState* >(object);
+  (void)_this;
+}
+void ReaderBaseState::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void ReaderBaseState::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const ReaderBaseState& ReaderBaseState::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_ReaderBaseState_tensorflow_2fcore_2fframework_2freader_5fbase_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void ReaderBaseState::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.ReaderBaseState)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  current_work_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+  ::memset(&work_started_, 0, static_cast<size_t>(
+      reinterpret_cast<char*>(&num_records_produced_) -
+      reinterpret_cast<char*>(&work_started_)) + sizeof(num_records_produced_));
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* ReaderBaseState::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<ReaderBaseState*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // int64 work_started = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 8) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::google::protobuf::int64 value = val;
+        msg->set_work_started(value);
+        break;
+      }
+      // int64 work_finished = 2;
+      case 2: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 16) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::google::protobuf::int64 value = val;
+        msg->set_work_finished(value);
+        break;
+      }
+      // int64 num_records_produced = 3;
+      case 3: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 24) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::google::protobuf::int64 value = val;
+        msg->set_num_records_produced(value);
+        break;
+      }
+      // bytes current_work = 4;
+      case 4: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 34) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        parser_till_end = ::google::protobuf::internal::StringParser;
+        ::std::string* str = msg->mutable_current_work();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        str->append(ptr, size);
+        ptr += size;
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool ReaderBaseState::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.ReaderBaseState)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // int64 work_started = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (8 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>(
+                 input, &work_started_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // int64 work_finished = 2;
+      case 2: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (16 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>(
+                 input, &work_finished_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // int64 num_records_produced = 3;
+      case 3: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (24 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>(
+                 input, &num_records_produced_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // bytes current_work = 4;
+      case 4: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (34 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadBytes(
+                input, this->mutable_current_work()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.ReaderBaseState)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.ReaderBaseState)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void ReaderBaseState::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.ReaderBaseState)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // int64 work_started = 1;
+  if (this->work_started() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt64(1, this->work_started(), output);
+  }
+
+  // int64 work_finished = 2;
+  if (this->work_finished() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt64(2, this->work_finished(), output);
+  }
+
+  // int64 num_records_produced = 3;
+  if (this->num_records_produced() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt64(3, this->num_records_produced(), output);
+  }
+
+  // bytes current_work = 4;
+  if (this->current_work().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteBytesMaybeAliased(
+      4, this->current_work(), output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.ReaderBaseState)
+}
+
+::google::protobuf::uint8* ReaderBaseState::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.ReaderBaseState)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // int64 work_started = 1;
+  if (this->work_started() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt64ToArray(1, this->work_started(), target);
+  }
+
+  // int64 work_finished = 2;
+  if (this->work_finished() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt64ToArray(2, this->work_finished(), target);
+  }
+
+  // int64 num_records_produced = 3;
+  if (this->num_records_produced() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt64ToArray(3, this->num_records_produced(), target);
+  }
+
+  // bytes current_work = 4;
+  if (this->current_work().size() > 0) {
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteBytesToArray(
+        4, this->current_work(), target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.ReaderBaseState)
+  return target;
+}
+
+size_t ReaderBaseState::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.ReaderBaseState)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // bytes current_work = 4;
+  if (this->current_work().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::BytesSize(
+        this->current_work());
+  }
+
+  // int64 work_started = 1;
+  if (this->work_started() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::Int64Size(
+        this->work_started());
+  }
+
+  // int64 work_finished = 2;
+  if (this->work_finished() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::Int64Size(
+        this->work_finished());
+  }
+
+  // int64 num_records_produced = 3;
+  if (this->num_records_produced() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::Int64Size(
+        this->num_records_produced());
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void ReaderBaseState::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.ReaderBaseState)
+  GOOGLE_DCHECK_NE(&from, this);
+  const ReaderBaseState* source =
+      ::google::protobuf::DynamicCastToGenerated<ReaderBaseState>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.ReaderBaseState)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.ReaderBaseState)
+    MergeFrom(*source);
+  }
+}
+
+void ReaderBaseState::MergeFrom(const ReaderBaseState& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.ReaderBaseState)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  if (from.current_work().size() > 0) {
+    set_current_work(from.current_work());
+  }
+  if (from.work_started() != 0) {
+    set_work_started(from.work_started());
+  }
+  if (from.work_finished() != 0) {
+    set_work_finished(from.work_finished());
+  }
+  if (from.num_records_produced() != 0) {
+    set_num_records_produced(from.num_records_produced());
+  }
+}
+
+void ReaderBaseState::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.ReaderBaseState)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void ReaderBaseState::CopyFrom(const ReaderBaseState& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.ReaderBaseState)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool ReaderBaseState::IsInitialized() const {
+  return true;
+}
+
+void ReaderBaseState::Swap(ReaderBaseState* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    ReaderBaseState* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void ReaderBaseState::UnsafeArenaSwap(ReaderBaseState* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void ReaderBaseState::InternalSwap(ReaderBaseState* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  current_work_.Swap(&other->current_work_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+  swap(work_started_, other->work_started_);
+  swap(work_finished_, other->work_finished_);
+  swap(num_records_produced_, other->num_records_produced_);
+}
+
+::google::protobuf::Metadata ReaderBaseState::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fframework_2freader_5fbase_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fframework_2freader_5fbase_2eproto[kIndexInFileMessages];
+}
+
+
+// @@protoc_insertion_point(namespace_scope)
+}  // namespace tensorflow
+namespace google {
+namespace protobuf {
+template<> PROTOBUF_NOINLINE ::tensorflow::ReaderBaseState* Arena::CreateMaybeMessage< ::tensorflow::ReaderBaseState >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::ReaderBaseState >(arena);
+}
+}  // namespace protobuf
+}  // namespace google
+
+// @@protoc_insertion_point(global_scope)
+#include <google/protobuf/port_undef.inc>
diff --git a/tensorflow/core/framework/reader_base.pb.h b/tensorflow/core/framework/reader_base.pb.h
new file mode 100644 (file)
index 0000000..5228e29
--- /dev/null
@@ -0,0 +1,366 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: tensorflow/core/framework/reader_base.proto
+
+#ifndef PROTOBUF_INCLUDED_tensorflow_2fcore_2fframework_2freader_5fbase_2eproto
+#define PROTOBUF_INCLUDED_tensorflow_2fcore_2fframework_2freader_5fbase_2eproto
+
+#include <limits>
+#include <string>
+
+#include <google/protobuf/port_def.inc>
+#if PROTOBUF_VERSION < 3006001
+#error This file was generated by a newer version of protoc which is
+#error incompatible with your Protocol Buffer headers. Please update
+#error your headers.
+#endif
+#if 3006001 < PROTOBUF_MIN_PROTOC_VERSION
+#error This file was generated by an older version of protoc which is
+#error incompatible with your Protocol Buffer headers. Please
+#error regenerate this file with a newer version of protoc.
+#endif
+
+#include <google/protobuf/port_undef.inc>
+#include <google/protobuf/io/coded_stream.h>
+#include <google/protobuf/arena.h>
+#include <google/protobuf/arenastring.h>
+#include <google/protobuf/generated_message_table_driven.h>
+#include <google/protobuf/generated_message_util.h>
+#include <google/protobuf/inlined_string_field.h>
+#include <google/protobuf/metadata.h>
+#include <google/protobuf/message.h>
+#include <google/protobuf/repeated_field.h>  // IWYU pragma: export
+#include <google/protobuf/extension_set.h>  // IWYU pragma: export
+#include <google/protobuf/unknown_field_set.h>
+// @@protoc_insertion_point(includes)
+#include <google/protobuf/port_def.inc>
+#define PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fframework_2freader_5fbase_2eproto
+
+// Internal implementation detail -- do not use these members.
+struct TableStruct_tensorflow_2fcore_2fframework_2freader_5fbase_2eproto {
+  static const ::google::protobuf::internal::ParseTableField entries[]
+    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
+  static const ::google::protobuf::internal::AuxillaryParseTableField aux[]
+    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
+  static const ::google::protobuf::internal::ParseTable schema[1]
+    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
+  static const ::google::protobuf::internal::FieldMetadata field_metadata[];
+  static const ::google::protobuf::internal::SerializationTable serialization_table[];
+  static const ::google::protobuf::uint32 offsets[];
+};
+void AddDescriptors_tensorflow_2fcore_2fframework_2freader_5fbase_2eproto();
+namespace tensorflow {
+class ReaderBaseState;
+class ReaderBaseStateDefaultTypeInternal;
+extern ReaderBaseStateDefaultTypeInternal _ReaderBaseState_default_instance_;
+}  // namespace tensorflow
+namespace google {
+namespace protobuf {
+template<> ::tensorflow::ReaderBaseState* Arena::CreateMaybeMessage<::tensorflow::ReaderBaseState>(Arena*);
+}  // namespace protobuf
+}  // namespace google
+namespace tensorflow {
+
+// ===================================================================
+
+class ReaderBaseState : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.ReaderBaseState) */ {
+ public:
+  ReaderBaseState();
+  virtual ~ReaderBaseState();
+
+  ReaderBaseState(const ReaderBaseState& from);
+
+  inline ReaderBaseState& operator=(const ReaderBaseState& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  ReaderBaseState(ReaderBaseState&& from) noexcept
+    : ReaderBaseState() {
+    *this = ::std::move(from);
+  }
+
+  inline ReaderBaseState& operator=(ReaderBaseState&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const ReaderBaseState& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const ReaderBaseState* internal_default_instance() {
+    return reinterpret_cast<const ReaderBaseState*>(
+               &_ReaderBaseState_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    0;
+
+  void UnsafeArenaSwap(ReaderBaseState* other);
+  void Swap(ReaderBaseState* other);
+  friend void swap(ReaderBaseState& a, ReaderBaseState& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline ReaderBaseState* New() const final {
+    return CreateMaybeMessage<ReaderBaseState>(NULL);
+  }
+
+  ReaderBaseState* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<ReaderBaseState>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const ReaderBaseState& from);
+  void MergeFrom(const ReaderBaseState& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(ReaderBaseState* other);
+  protected:
+  explicit ReaderBaseState(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // bytes current_work = 4;
+  void clear_current_work();
+  static const int kCurrentWorkFieldNumber = 4;
+  const ::std::string& current_work() const;
+  void set_current_work(const ::std::string& value);
+  #if LANG_CXX11
+  void set_current_work(::std::string&& value);
+  #endif
+  void set_current_work(const char* value);
+  void set_current_work(const void* value, size_t size);
+  ::std::string* mutable_current_work();
+  ::std::string* release_current_work();
+  void set_allocated_current_work(::std::string* current_work);
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  ::std::string* unsafe_arena_release_current_work();
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  void unsafe_arena_set_allocated_current_work(
+      ::std::string* current_work);
+
+  // int64 work_started = 1;
+  void clear_work_started();
+  static const int kWorkStartedFieldNumber = 1;
+  ::google::protobuf::int64 work_started() const;
+  void set_work_started(::google::protobuf::int64 value);
+
+  // int64 work_finished = 2;
+  void clear_work_finished();
+  static const int kWorkFinishedFieldNumber = 2;
+  ::google::protobuf::int64 work_finished() const;
+  void set_work_finished(::google::protobuf::int64 value);
+
+  // int64 num_records_produced = 3;
+  void clear_num_records_produced();
+  static const int kNumRecordsProducedFieldNumber = 3;
+  ::google::protobuf::int64 num_records_produced() const;
+  void set_num_records_produced(::google::protobuf::int64 value);
+
+  // @@protoc_insertion_point(class_scope:tensorflow.ReaderBaseState)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  ::google::protobuf::internal::ArenaStringPtr current_work_;
+  ::google::protobuf::int64 work_started_;
+  ::google::protobuf::int64 work_finished_;
+  ::google::protobuf::int64 num_records_produced_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fframework_2freader_5fbase_2eproto;
+};
+// ===================================================================
+
+
+// ===================================================================
+
+#ifdef __GNUC__
+  #pragma GCC diagnostic push
+  #pragma GCC diagnostic ignored "-Wstrict-aliasing"
+#endif  // __GNUC__
+// ReaderBaseState
+
+// int64 work_started = 1;
+inline void ReaderBaseState::clear_work_started() {
+  work_started_ = PROTOBUF_LONGLONG(0);
+}
+inline ::google::protobuf::int64 ReaderBaseState::work_started() const {
+  // @@protoc_insertion_point(field_get:tensorflow.ReaderBaseState.work_started)
+  return work_started_;
+}
+inline void ReaderBaseState::set_work_started(::google::protobuf::int64 value) {
+  
+  work_started_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.ReaderBaseState.work_started)
+}
+
+// int64 work_finished = 2;
+inline void ReaderBaseState::clear_work_finished() {
+  work_finished_ = PROTOBUF_LONGLONG(0);
+}
+inline ::google::protobuf::int64 ReaderBaseState::work_finished() const {
+  // @@protoc_insertion_point(field_get:tensorflow.ReaderBaseState.work_finished)
+  return work_finished_;
+}
+inline void ReaderBaseState::set_work_finished(::google::protobuf::int64 value) {
+  
+  work_finished_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.ReaderBaseState.work_finished)
+}
+
+// int64 num_records_produced = 3;
+inline void ReaderBaseState::clear_num_records_produced() {
+  num_records_produced_ = PROTOBUF_LONGLONG(0);
+}
+inline ::google::protobuf::int64 ReaderBaseState::num_records_produced() const {
+  // @@protoc_insertion_point(field_get:tensorflow.ReaderBaseState.num_records_produced)
+  return num_records_produced_;
+}
+inline void ReaderBaseState::set_num_records_produced(::google::protobuf::int64 value) {
+  
+  num_records_produced_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.ReaderBaseState.num_records_produced)
+}
+
+// bytes current_work = 4;
+inline void ReaderBaseState::clear_current_work() {
+  current_work_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline const ::std::string& ReaderBaseState::current_work() const {
+  // @@protoc_insertion_point(field_get:tensorflow.ReaderBaseState.current_work)
+  return current_work_.Get();
+}
+inline void ReaderBaseState::set_current_work(const ::std::string& value) {
+  
+  current_work_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set:tensorflow.ReaderBaseState.current_work)
+}
+#if LANG_CXX11
+inline void ReaderBaseState::set_current_work(::std::string&& value) {
+  
+  current_work_.Set(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.ReaderBaseState.current_work)
+}
+#endif
+inline void ReaderBaseState::set_current_work(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  current_work_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
+              GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_char:tensorflow.ReaderBaseState.current_work)
+}
+inline void ReaderBaseState::set_current_work(const void* value,
+    size_t size) {
+  
+  current_work_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
+      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.ReaderBaseState.current_work)
+}
+inline ::std::string* ReaderBaseState::mutable_current_work() {
+  
+  // @@protoc_insertion_point(field_mutable:tensorflow.ReaderBaseState.current_work)
+  return current_work_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline ::std::string* ReaderBaseState::release_current_work() {
+  // @@protoc_insertion_point(field_release:tensorflow.ReaderBaseState.current_work)
+  
+  return current_work_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline void ReaderBaseState::set_allocated_current_work(::std::string* current_work) {
+  if (current_work != NULL) {
+    
+  } else {
+    
+  }
+  current_work_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), current_work,
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.ReaderBaseState.current_work)
+}
+inline ::std::string* ReaderBaseState::unsafe_arena_release_current_work() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.ReaderBaseState.current_work)
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  
+  return current_work_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      GetArenaNoVirtual());
+}
+inline void ReaderBaseState::unsafe_arena_set_allocated_current_work(
+    ::std::string* current_work) {
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (current_work != NULL) {
+    
+  } else {
+    
+  }
+  current_work_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      current_work, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.ReaderBaseState.current_work)
+}
+
+#ifdef __GNUC__
+  #pragma GCC diagnostic pop
+#endif  // __GNUC__
+
+// @@protoc_insertion_point(namespace_scope)
+
+}  // namespace tensorflow
+
+// @@protoc_insertion_point(global_scope)
+
+#include <google/protobuf/port_undef.inc>
+#endif  // PROTOBUF_INCLUDED_tensorflow_2fcore_2fframework_2freader_5fbase_2eproto
diff --git a/tensorflow/core/framework/reader_base.proto b/tensorflow/core/framework/reader_base.proto
new file mode 100644 (file)
index 0000000..9e187cf
--- /dev/null
@@ -0,0 +1,17 @@
+syntax = "proto3";
+
+package tensorflow;
+option cc_enable_arenas = true;
+option java_outer_classname = "ReaderBaseProtos";
+option java_multiple_files = true;
+option java_package = "org.tensorflow.framework";
+option go_package = "github.com/tensorflow/tensorflow/tensorflow/go/core/framework";
+
+// For serializing and restoring the state of ReaderBase, see
+// reader_base.h for details.
+message ReaderBaseState {
+  int64 work_started = 1;
+  int64 work_finished = 2;
+  int64 num_records_produced = 3;
+  bytes current_work = 4;
+};
diff --git a/tensorflow/core/framework/remote_fused_graph_execute_info.pb.cc b/tensorflow/core/framework/remote_fused_graph_execute_info.pb.cc
new file mode 100644 (file)
index 0000000..86fbfb0
--- /dev/null
@@ -0,0 +1,1296 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: tensorflow/core/framework/remote_fused_graph_execute_info.proto
+
+#include "tensorflow/core/framework/remote_fused_graph_execute_info.pb.h"
+
+#include <algorithm>
+
+#include <google/protobuf/stubs/common.h>
+#include <google/protobuf/io/coded_stream.h>
+#include <google/protobuf/extension_set.h>
+#include <google/protobuf/wire_format_lite_inl.h>
+#include <google/protobuf/descriptor.h>
+#include <google/protobuf/generated_message_reflection.h>
+#include <google/protobuf/reflection_ops.h>
+#include <google/protobuf/wire_format.h>
+// @@protoc_insertion_point(includes)
+#include <google/protobuf/port_def.inc>
+
+extern PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fframework_2fgraph_2eproto ::google::protobuf::internal::SCCInfo<3> scc_info_GraphDef_tensorflow_2fcore_2fframework_2fgraph_2eproto;
+extern PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fframework_2fremote_5ffused_5fgraph_5fexecute_5finfo_2eproto ::google::protobuf::internal::SCCInfo<1> scc_info_RemoteFusedGraphExecuteInfo_TensorShapeTypeProto_tensorflow_2fcore_2fframework_2fremote_5ffused_5fgraph_5fexecute_5finfo_2eproto;
+extern PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fframework_2ftensor_5fshape_2eproto ::google::protobuf::internal::SCCInfo<1> scc_info_TensorShapeProto_tensorflow_2fcore_2fframework_2ftensor_5fshape_2eproto;
+namespace tensorflow {
+class RemoteFusedGraphExecuteInfo_TensorShapeTypeProtoDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<RemoteFusedGraphExecuteInfo_TensorShapeTypeProto> _instance;
+} _RemoteFusedGraphExecuteInfo_TensorShapeTypeProto_default_instance_;
+class RemoteFusedGraphExecuteInfoDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<RemoteFusedGraphExecuteInfo> _instance;
+} _RemoteFusedGraphExecuteInfo_default_instance_;
+}  // namespace tensorflow
+static void InitDefaultsRemoteFusedGraphExecuteInfo_TensorShapeTypeProto_tensorflow_2fcore_2fframework_2fremote_5ffused_5fgraph_5fexecute_5finfo_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_RemoteFusedGraphExecuteInfo_TensorShapeTypeProto_default_instance_;
+    new (ptr) ::tensorflow::RemoteFusedGraphExecuteInfo_TensorShapeTypeProto();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::RemoteFusedGraphExecuteInfo_TensorShapeTypeProto::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<1> scc_info_RemoteFusedGraphExecuteInfo_TensorShapeTypeProto_tensorflow_2fcore_2fframework_2fremote_5ffused_5fgraph_5fexecute_5finfo_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsRemoteFusedGraphExecuteInfo_TensorShapeTypeProto_tensorflow_2fcore_2fframework_2fremote_5ffused_5fgraph_5fexecute_5finfo_2eproto}, {
+      &scc_info_TensorShapeProto_tensorflow_2fcore_2fframework_2ftensor_5fshape_2eproto.base,}};
+
+static void InitDefaultsRemoteFusedGraphExecuteInfo_tensorflow_2fcore_2fframework_2fremote_5ffused_5fgraph_5fexecute_5finfo_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_RemoteFusedGraphExecuteInfo_default_instance_;
+    new (ptr) ::tensorflow::RemoteFusedGraphExecuteInfo();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::RemoteFusedGraphExecuteInfo::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<2> scc_info_RemoteFusedGraphExecuteInfo_tensorflow_2fcore_2fframework_2fremote_5ffused_5fgraph_5fexecute_5finfo_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 2, InitDefaultsRemoteFusedGraphExecuteInfo_tensorflow_2fcore_2fframework_2fremote_5ffused_5fgraph_5fexecute_5finfo_2eproto}, {
+      &scc_info_GraphDef_tensorflow_2fcore_2fframework_2fgraph_2eproto.base,
+      &scc_info_RemoteFusedGraphExecuteInfo_TensorShapeTypeProto_tensorflow_2fcore_2fframework_2fremote_5ffused_5fgraph_5fexecute_5finfo_2eproto.base,}};
+
+void InitDefaults_tensorflow_2fcore_2fframework_2fremote_5ffused_5fgraph_5fexecute_5finfo_2eproto() {
+  ::google::protobuf::internal::InitSCC(&scc_info_RemoteFusedGraphExecuteInfo_TensorShapeTypeProto_tensorflow_2fcore_2fframework_2fremote_5ffused_5fgraph_5fexecute_5finfo_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_RemoteFusedGraphExecuteInfo_tensorflow_2fcore_2fframework_2fremote_5ffused_5fgraph_5fexecute_5finfo_2eproto.base);
+}
+
+::google::protobuf::Metadata file_level_metadata_tensorflow_2fcore_2fframework_2fremote_5ffused_5fgraph_5fexecute_5finfo_2eproto[2];
+constexpr ::google::protobuf::EnumDescriptor const** file_level_enum_descriptors_tensorflow_2fcore_2fframework_2fremote_5ffused_5fgraph_5fexecute_5finfo_2eproto = nullptr;
+constexpr ::google::protobuf::ServiceDescriptor const** file_level_service_descriptors_tensorflow_2fcore_2fframework_2fremote_5ffused_5fgraph_5fexecute_5finfo_2eproto = nullptr;
+
+const ::google::protobuf::uint32 TableStruct_tensorflow_2fcore_2fframework_2fremote_5ffused_5fgraph_5fexecute_5finfo_2eproto::offsets[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = {
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::RemoteFusedGraphExecuteInfo_TensorShapeTypeProto, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::RemoteFusedGraphExecuteInfo_TensorShapeTypeProto, dtype_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::RemoteFusedGraphExecuteInfo_TensorShapeTypeProto, shape_),
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::RemoteFusedGraphExecuteInfo, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::RemoteFusedGraphExecuteInfo, remote_graph_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::RemoteFusedGraphExecuteInfo, graph_input_node_name_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::RemoteFusedGraphExecuteInfo, graph_output_node_name_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::RemoteFusedGraphExecuteInfo, executor_name_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::RemoteFusedGraphExecuteInfo, serialized_executor_parameters_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::RemoteFusedGraphExecuteInfo, default_graph_input_tensor_shape_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::RemoteFusedGraphExecuteInfo, default_graph_output_tensor_shape_),
+};
+static const ::google::protobuf::internal::MigrationSchema schemas[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = {
+  { 0, -1, sizeof(::tensorflow::RemoteFusedGraphExecuteInfo_TensorShapeTypeProto)},
+  { 7, -1, sizeof(::tensorflow::RemoteFusedGraphExecuteInfo)},
+};
+
+static ::google::protobuf::Message const * const file_default_instances[] = {
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_RemoteFusedGraphExecuteInfo_TensorShapeTypeProto_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_RemoteFusedGraphExecuteInfo_default_instance_),
+};
+
+::google::protobuf::internal::AssignDescriptorsTable assign_descriptors_table_tensorflow_2fcore_2fframework_2fremote_5ffused_5fgraph_5fexecute_5finfo_2eproto = {
+  {}, AddDescriptors_tensorflow_2fcore_2fframework_2fremote_5ffused_5fgraph_5fexecute_5finfo_2eproto, "tensorflow/core/framework/remote_fused_graph_execute_info.proto", schemas,
+  file_default_instances, TableStruct_tensorflow_2fcore_2fframework_2fremote_5ffused_5fgraph_5fexecute_5finfo_2eproto::offsets,
+  file_level_metadata_tensorflow_2fcore_2fframework_2fremote_5ffused_5fgraph_5fexecute_5finfo_2eproto, 2, file_level_enum_descriptors_tensorflow_2fcore_2fframework_2fremote_5ffused_5fgraph_5fexecute_5finfo_2eproto, file_level_service_descriptors_tensorflow_2fcore_2fframework_2fremote_5ffused_5fgraph_5fexecute_5finfo_2eproto,
+};
+
+::google::protobuf::internal::DescriptorTable descriptor_table_tensorflow_2fcore_2fframework_2fremote_5ffused_5fgraph_5fexecute_5finfo_2eproto = {
+  false, InitDefaults_tensorflow_2fcore_2fframework_2fremote_5ffused_5fgraph_5fexecute_5finfo_2eproto, 
+  "\n\?tensorflow/core/framework/remote_fused"
+  "_graph_execute_info.proto\022\ntensorflow\032%t"
+  "ensorflow/core/framework/graph.proto\032,te"
+  "nsorflow/core/framework/tensor_shape.pro"
+  "to\032%tensorflow/core/framework/types.prot"
+  "o\"\202\004\n\033RemoteFusedGraphExecuteInfo\022*\n\014rem"
+  "ote_graph\030\001 \001(\0132\024.tensorflow.GraphDef\022\035\n"
+  "\025graph_input_node_name\030\002 \003(\t\022\036\n\026graph_ou"
+  "tput_node_name\030\003 \003(\t\022\025\n\rexecutor_name\030\004 "
+  "\001(\t\022&\n\036serialized_executor_parameters\030\005 "
+  "\001(\014\022f\n default_graph_input_tensor_shape\030"
+  "\006 \003(\0132<.tensorflow.RemoteFusedGraphExecu"
+  "teInfo.TensorShapeTypeProto\022g\n!default_g"
+  "raph_output_tensor_shape\030\007 \003(\0132<.tensorf"
+  "low.RemoteFusedGraphExecuteInfo.TensorSh"
+  "apeTypeProto\032h\n\024TensorShapeTypeProto\022#\n\005"
+  "dtype\030\001 \001(\0162\024.tensorflow.DataType\022+\n\005sha"
+  "pe\030\002 \001(\0132\034.tensorflow.TensorShapeProtoB\200"
+  "\001\n\030org.tensorflow.frameworkB RemoteFused"
+  "GraphExecuteInfoProtoP\001Z=github.com/tens"
+  "orflow/tensorflow/tensorflow/go/core/fra"
+  "mework\370\001\001b\006proto3"
+,
+  "tensorflow/core/framework/remote_fused_graph_execute_info.proto", &assign_descriptors_table_tensorflow_2fcore_2fframework_2fremote_5ffused_5fgraph_5fexecute_5finfo_2eproto, 857,
+};
+
+void AddDescriptors_tensorflow_2fcore_2fframework_2fremote_5ffused_5fgraph_5fexecute_5finfo_2eproto() {
+  static constexpr ::google::protobuf::internal::InitFunc deps[3] =
+  {
+    ::AddDescriptors_tensorflow_2fcore_2fframework_2fgraph_2eproto,
+    ::AddDescriptors_tensorflow_2fcore_2fframework_2ftensor_5fshape_2eproto,
+    ::AddDescriptors_tensorflow_2fcore_2fframework_2ftypes_2eproto,
+  };
+ ::google::protobuf::internal::AddDescriptors(&descriptor_table_tensorflow_2fcore_2fframework_2fremote_5ffused_5fgraph_5fexecute_5finfo_2eproto, deps, 3);
+}
+
+// Force running AddDescriptors() at dynamic initialization time.
+static bool dynamic_init_dummy_tensorflow_2fcore_2fframework_2fremote_5ffused_5fgraph_5fexecute_5finfo_2eproto = []() { AddDescriptors_tensorflow_2fcore_2fframework_2fremote_5ffused_5fgraph_5fexecute_5finfo_2eproto(); return true; }();
+namespace tensorflow {
+
+// ===================================================================
+
+void RemoteFusedGraphExecuteInfo_TensorShapeTypeProto::InitAsDefaultInstance() {
+  ::tensorflow::_RemoteFusedGraphExecuteInfo_TensorShapeTypeProto_default_instance_._instance.get_mutable()->shape_ = const_cast< ::tensorflow::TensorShapeProto*>(
+      ::tensorflow::TensorShapeProto::internal_default_instance());
+}
+class RemoteFusedGraphExecuteInfo_TensorShapeTypeProto::HasBitSetters {
+ public:
+  static const ::tensorflow::TensorShapeProto& shape(const RemoteFusedGraphExecuteInfo_TensorShapeTypeProto* msg);
+};
+
+const ::tensorflow::TensorShapeProto&
+RemoteFusedGraphExecuteInfo_TensorShapeTypeProto::HasBitSetters::shape(const RemoteFusedGraphExecuteInfo_TensorShapeTypeProto* msg) {
+  return *msg->shape_;
+}
+void RemoteFusedGraphExecuteInfo_TensorShapeTypeProto::unsafe_arena_set_allocated_shape(
+    ::tensorflow::TensorShapeProto* shape) {
+  if (GetArenaNoVirtual() == NULL) {
+    delete shape_;
+  }
+  shape_ = shape;
+  if (shape) {
+    
+  } else {
+    
+  }
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.RemoteFusedGraphExecuteInfo.TensorShapeTypeProto.shape)
+}
+void RemoteFusedGraphExecuteInfo_TensorShapeTypeProto::clear_shape() {
+  if (GetArenaNoVirtual() == NULL && shape_ != NULL) {
+    delete shape_;
+  }
+  shape_ = NULL;
+}
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int RemoteFusedGraphExecuteInfo_TensorShapeTypeProto::kDtypeFieldNumber;
+const int RemoteFusedGraphExecuteInfo_TensorShapeTypeProto::kShapeFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+RemoteFusedGraphExecuteInfo_TensorShapeTypeProto::RemoteFusedGraphExecuteInfo_TensorShapeTypeProto()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.RemoteFusedGraphExecuteInfo.TensorShapeTypeProto)
+}
+RemoteFusedGraphExecuteInfo_TensorShapeTypeProto::RemoteFusedGraphExecuteInfo_TensorShapeTypeProto(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.RemoteFusedGraphExecuteInfo.TensorShapeTypeProto)
+}
+RemoteFusedGraphExecuteInfo_TensorShapeTypeProto::RemoteFusedGraphExecuteInfo_TensorShapeTypeProto(const RemoteFusedGraphExecuteInfo_TensorShapeTypeProto& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  if (from.has_shape()) {
+    shape_ = new ::tensorflow::TensorShapeProto(*from.shape_);
+  } else {
+    shape_ = NULL;
+  }
+  dtype_ = from.dtype_;
+  // @@protoc_insertion_point(copy_constructor:tensorflow.RemoteFusedGraphExecuteInfo.TensorShapeTypeProto)
+}
+
+void RemoteFusedGraphExecuteInfo_TensorShapeTypeProto::SharedCtor() {
+  ::google::protobuf::internal::InitSCC(
+      &scc_info_RemoteFusedGraphExecuteInfo_TensorShapeTypeProto_tensorflow_2fcore_2fframework_2fremote_5ffused_5fgraph_5fexecute_5finfo_2eproto.base);
+  ::memset(&shape_, 0, static_cast<size_t>(
+      reinterpret_cast<char*>(&dtype_) -
+      reinterpret_cast<char*>(&shape_)) + sizeof(dtype_));
+}
+
+RemoteFusedGraphExecuteInfo_TensorShapeTypeProto::~RemoteFusedGraphExecuteInfo_TensorShapeTypeProto() {
+  // @@protoc_insertion_point(destructor:tensorflow.RemoteFusedGraphExecuteInfo.TensorShapeTypeProto)
+  SharedDtor();
+}
+
+void RemoteFusedGraphExecuteInfo_TensorShapeTypeProto::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+  if (this != internal_default_instance()) delete shape_;
+}
+
+void RemoteFusedGraphExecuteInfo_TensorShapeTypeProto::ArenaDtor(void* object) {
+  RemoteFusedGraphExecuteInfo_TensorShapeTypeProto* _this = reinterpret_cast< RemoteFusedGraphExecuteInfo_TensorShapeTypeProto* >(object);
+  (void)_this;
+}
+void RemoteFusedGraphExecuteInfo_TensorShapeTypeProto::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void RemoteFusedGraphExecuteInfo_TensorShapeTypeProto::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const RemoteFusedGraphExecuteInfo_TensorShapeTypeProto& RemoteFusedGraphExecuteInfo_TensorShapeTypeProto::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_RemoteFusedGraphExecuteInfo_TensorShapeTypeProto_tensorflow_2fcore_2fframework_2fremote_5ffused_5fgraph_5fexecute_5finfo_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void RemoteFusedGraphExecuteInfo_TensorShapeTypeProto::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.RemoteFusedGraphExecuteInfo.TensorShapeTypeProto)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  if (GetArenaNoVirtual() == NULL && shape_ != NULL) {
+    delete shape_;
+  }
+  shape_ = NULL;
+  dtype_ = 0;
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* RemoteFusedGraphExecuteInfo_TensorShapeTypeProto::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<RemoteFusedGraphExecuteInfo_TensorShapeTypeProto*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // .tensorflow.DataType dtype = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 8) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::tensorflow::DataType value = static_cast<::tensorflow::DataType>(val);
+        msg->set_dtype(value);
+        break;
+      }
+      // .tensorflow.TensorShapeProto shape = 2;
+      case 2: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 18) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        parser_till_end = ::tensorflow::TensorShapeProto::_InternalParse;
+        object = msg->mutable_shape();
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                       ptr, newend);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+        ptr = newend;
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool RemoteFusedGraphExecuteInfo_TensorShapeTypeProto::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.RemoteFusedGraphExecuteInfo.TensorShapeTypeProto)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // .tensorflow.DataType dtype = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (8 & 0xFF)) {
+          int value = 0;
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>(
+                 input, &value)));
+          set_dtype(static_cast< ::tensorflow::DataType >(value));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // .tensorflow.TensorShapeProto shape = 2;
+      case 2: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (18 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+               input, mutable_shape()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.RemoteFusedGraphExecuteInfo.TensorShapeTypeProto)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.RemoteFusedGraphExecuteInfo.TensorShapeTypeProto)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void RemoteFusedGraphExecuteInfo_TensorShapeTypeProto::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.RemoteFusedGraphExecuteInfo.TensorShapeTypeProto)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // .tensorflow.DataType dtype = 1;
+  if (this->dtype() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteEnum(
+      1, this->dtype(), output);
+  }
+
+  // .tensorflow.TensorShapeProto shape = 2;
+  if (this->has_shape()) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      2, HasBitSetters::shape(this), output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.RemoteFusedGraphExecuteInfo.TensorShapeTypeProto)
+}
+
+::google::protobuf::uint8* RemoteFusedGraphExecuteInfo_TensorShapeTypeProto::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.RemoteFusedGraphExecuteInfo.TensorShapeTypeProto)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // .tensorflow.DataType dtype = 1;
+  if (this->dtype() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteEnumToArray(
+      1, this->dtype(), target);
+  }
+
+  // .tensorflow.TensorShapeProto shape = 2;
+  if (this->has_shape()) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        2, HasBitSetters::shape(this), deterministic, target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.RemoteFusedGraphExecuteInfo.TensorShapeTypeProto)
+  return target;
+}
+
+size_t RemoteFusedGraphExecuteInfo_TensorShapeTypeProto::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.RemoteFusedGraphExecuteInfo.TensorShapeTypeProto)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // .tensorflow.TensorShapeProto shape = 2;
+  if (this->has_shape()) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::MessageSize(
+        *shape_);
+  }
+
+  // .tensorflow.DataType dtype = 1;
+  if (this->dtype() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::EnumSize(this->dtype());
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void RemoteFusedGraphExecuteInfo_TensorShapeTypeProto::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.RemoteFusedGraphExecuteInfo.TensorShapeTypeProto)
+  GOOGLE_DCHECK_NE(&from, this);
+  const RemoteFusedGraphExecuteInfo_TensorShapeTypeProto* source =
+      ::google::protobuf::DynamicCastToGenerated<RemoteFusedGraphExecuteInfo_TensorShapeTypeProto>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.RemoteFusedGraphExecuteInfo.TensorShapeTypeProto)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.RemoteFusedGraphExecuteInfo.TensorShapeTypeProto)
+    MergeFrom(*source);
+  }
+}
+
+void RemoteFusedGraphExecuteInfo_TensorShapeTypeProto::MergeFrom(const RemoteFusedGraphExecuteInfo_TensorShapeTypeProto& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.RemoteFusedGraphExecuteInfo.TensorShapeTypeProto)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  if (from.has_shape()) {
+    mutable_shape()->::tensorflow::TensorShapeProto::MergeFrom(from.shape());
+  }
+  if (from.dtype() != 0) {
+    set_dtype(from.dtype());
+  }
+}
+
+void RemoteFusedGraphExecuteInfo_TensorShapeTypeProto::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.RemoteFusedGraphExecuteInfo.TensorShapeTypeProto)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void RemoteFusedGraphExecuteInfo_TensorShapeTypeProto::CopyFrom(const RemoteFusedGraphExecuteInfo_TensorShapeTypeProto& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.RemoteFusedGraphExecuteInfo.TensorShapeTypeProto)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool RemoteFusedGraphExecuteInfo_TensorShapeTypeProto::IsInitialized() const {
+  return true;
+}
+
+void RemoteFusedGraphExecuteInfo_TensorShapeTypeProto::Swap(RemoteFusedGraphExecuteInfo_TensorShapeTypeProto* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    RemoteFusedGraphExecuteInfo_TensorShapeTypeProto* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void RemoteFusedGraphExecuteInfo_TensorShapeTypeProto::UnsafeArenaSwap(RemoteFusedGraphExecuteInfo_TensorShapeTypeProto* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void RemoteFusedGraphExecuteInfo_TensorShapeTypeProto::InternalSwap(RemoteFusedGraphExecuteInfo_TensorShapeTypeProto* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  swap(shape_, other->shape_);
+  swap(dtype_, other->dtype_);
+}
+
+::google::protobuf::Metadata RemoteFusedGraphExecuteInfo_TensorShapeTypeProto::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fframework_2fremote_5ffused_5fgraph_5fexecute_5finfo_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fframework_2fremote_5ffused_5fgraph_5fexecute_5finfo_2eproto[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+void RemoteFusedGraphExecuteInfo::InitAsDefaultInstance() {
+  ::tensorflow::_RemoteFusedGraphExecuteInfo_default_instance_._instance.get_mutable()->remote_graph_ = const_cast< ::tensorflow::GraphDef*>(
+      ::tensorflow::GraphDef::internal_default_instance());
+}
+class RemoteFusedGraphExecuteInfo::HasBitSetters {
+ public:
+  static const ::tensorflow::GraphDef& remote_graph(const RemoteFusedGraphExecuteInfo* msg);
+};
+
+const ::tensorflow::GraphDef&
+RemoteFusedGraphExecuteInfo::HasBitSetters::remote_graph(const RemoteFusedGraphExecuteInfo* msg) {
+  return *msg->remote_graph_;
+}
+void RemoteFusedGraphExecuteInfo::unsafe_arena_set_allocated_remote_graph(
+    ::tensorflow::GraphDef* remote_graph) {
+  if (GetArenaNoVirtual() == NULL) {
+    delete remote_graph_;
+  }
+  remote_graph_ = remote_graph;
+  if (remote_graph) {
+    
+  } else {
+    
+  }
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.RemoteFusedGraphExecuteInfo.remote_graph)
+}
+void RemoteFusedGraphExecuteInfo::clear_remote_graph() {
+  if (GetArenaNoVirtual() == NULL && remote_graph_ != NULL) {
+    delete remote_graph_;
+  }
+  remote_graph_ = NULL;
+}
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int RemoteFusedGraphExecuteInfo::kRemoteGraphFieldNumber;
+const int RemoteFusedGraphExecuteInfo::kGraphInputNodeNameFieldNumber;
+const int RemoteFusedGraphExecuteInfo::kGraphOutputNodeNameFieldNumber;
+const int RemoteFusedGraphExecuteInfo::kExecutorNameFieldNumber;
+const int RemoteFusedGraphExecuteInfo::kSerializedExecutorParametersFieldNumber;
+const int RemoteFusedGraphExecuteInfo::kDefaultGraphInputTensorShapeFieldNumber;
+const int RemoteFusedGraphExecuteInfo::kDefaultGraphOutputTensorShapeFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+RemoteFusedGraphExecuteInfo::RemoteFusedGraphExecuteInfo()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.RemoteFusedGraphExecuteInfo)
+}
+RemoteFusedGraphExecuteInfo::RemoteFusedGraphExecuteInfo(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena),
+  graph_input_node_name_(arena),
+  graph_output_node_name_(arena),
+  default_graph_input_tensor_shape_(arena),
+  default_graph_output_tensor_shape_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.RemoteFusedGraphExecuteInfo)
+}
+RemoteFusedGraphExecuteInfo::RemoteFusedGraphExecuteInfo(const RemoteFusedGraphExecuteInfo& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL),
+      graph_input_node_name_(from.graph_input_node_name_),
+      graph_output_node_name_(from.graph_output_node_name_),
+      default_graph_input_tensor_shape_(from.default_graph_input_tensor_shape_),
+      default_graph_output_tensor_shape_(from.default_graph_output_tensor_shape_) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  executor_name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.executor_name().size() > 0) {
+    executor_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.executor_name(),
+      GetArenaNoVirtual());
+  }
+  serialized_executor_parameters_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.serialized_executor_parameters().size() > 0) {
+    serialized_executor_parameters_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.serialized_executor_parameters(),
+      GetArenaNoVirtual());
+  }
+  if (from.has_remote_graph()) {
+    remote_graph_ = new ::tensorflow::GraphDef(*from.remote_graph_);
+  } else {
+    remote_graph_ = NULL;
+  }
+  // @@protoc_insertion_point(copy_constructor:tensorflow.RemoteFusedGraphExecuteInfo)
+}
+
+void RemoteFusedGraphExecuteInfo::SharedCtor() {
+  ::google::protobuf::internal::InitSCC(
+      &scc_info_RemoteFusedGraphExecuteInfo_tensorflow_2fcore_2fframework_2fremote_5ffused_5fgraph_5fexecute_5finfo_2eproto.base);
+  executor_name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  serialized_executor_parameters_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  remote_graph_ = NULL;
+}
+
+RemoteFusedGraphExecuteInfo::~RemoteFusedGraphExecuteInfo() {
+  // @@protoc_insertion_point(destructor:tensorflow.RemoteFusedGraphExecuteInfo)
+  SharedDtor();
+}
+
+void RemoteFusedGraphExecuteInfo::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+  executor_name_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  serialized_executor_parameters_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (this != internal_default_instance()) delete remote_graph_;
+}
+
+void RemoteFusedGraphExecuteInfo::ArenaDtor(void* object) {
+  RemoteFusedGraphExecuteInfo* _this = reinterpret_cast< RemoteFusedGraphExecuteInfo* >(object);
+  (void)_this;
+}
+void RemoteFusedGraphExecuteInfo::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void RemoteFusedGraphExecuteInfo::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const RemoteFusedGraphExecuteInfo& RemoteFusedGraphExecuteInfo::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_RemoteFusedGraphExecuteInfo_tensorflow_2fcore_2fframework_2fremote_5ffused_5fgraph_5fexecute_5finfo_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void RemoteFusedGraphExecuteInfo::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.RemoteFusedGraphExecuteInfo)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  graph_input_node_name_.Clear();
+  graph_output_node_name_.Clear();
+  default_graph_input_tensor_shape_.Clear();
+  default_graph_output_tensor_shape_.Clear();
+  executor_name_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+  serialized_executor_parameters_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+  if (GetArenaNoVirtual() == NULL && remote_graph_ != NULL) {
+    delete remote_graph_;
+  }
+  remote_graph_ = NULL;
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* RemoteFusedGraphExecuteInfo::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<RemoteFusedGraphExecuteInfo*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // .tensorflow.GraphDef remote_graph = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 10) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        parser_till_end = ::tensorflow::GraphDef::_InternalParse;
+        object = msg->mutable_remote_graph();
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                       ptr, newend);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+        ptr = newend;
+        break;
+      }
+      // repeated string graph_input_node_name = 2;
+      case 2: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 18) goto handle_unusual;
+        do {
+          ptr = Varint::Parse32Inline(ptr, &size);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          ctx->extra_parse_data().SetFieldName("tensorflow.RemoteFusedGraphExecuteInfo.graph_input_node_name");
+          parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+          ::std::string* str = msg->add_graph_input_node_name();
+          str->clear();
+          object = str;
+          if (size > end - ptr) goto len_delim_till_end;
+          auto newend = ptr + size;
+          if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+          if (ptr >= end) break;
+        } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 18 && (ptr += 1));
+        break;
+      }
+      // repeated string graph_output_node_name = 3;
+      case 3: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 26) goto handle_unusual;
+        do {
+          ptr = Varint::Parse32Inline(ptr, &size);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          ctx->extra_parse_data().SetFieldName("tensorflow.RemoteFusedGraphExecuteInfo.graph_output_node_name");
+          parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+          ::std::string* str = msg->add_graph_output_node_name();
+          str->clear();
+          object = str;
+          if (size > end - ptr) goto len_delim_till_end;
+          auto newend = ptr + size;
+          if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+          if (ptr >= end) break;
+        } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 26 && (ptr += 1));
+        break;
+      }
+      // string executor_name = 4;
+      case 4: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 34) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("tensorflow.RemoteFusedGraphExecuteInfo.executor_name");
+        parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+        ::std::string* str = msg->mutable_executor_name();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+        break;
+      }
+      // bytes serialized_executor_parameters = 5;
+      case 5: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 42) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        parser_till_end = ::google::protobuf::internal::StringParser;
+        ::std::string* str = msg->mutable_serialized_executor_parameters();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        str->append(ptr, size);
+        ptr += size;
+        break;
+      }
+      // repeated .tensorflow.RemoteFusedGraphExecuteInfo.TensorShapeTypeProto default_graph_input_tensor_shape = 6;
+      case 6: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 50) goto handle_unusual;
+        do {
+          ptr = Varint::Parse32Inline(ptr, &size);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          parser_till_end = ::tensorflow::RemoteFusedGraphExecuteInfo_TensorShapeTypeProto::_InternalParse;
+          object = msg->add_default_graph_input_tensor_shape();
+          if (size > end - ptr) goto len_delim_till_end;
+          auto newend = ptr + size;
+          bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                         ptr, newend);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          ptr = newend;
+          if (ptr >= end) break;
+        } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 50 && (ptr += 1));
+        break;
+      }
+      // repeated .tensorflow.RemoteFusedGraphExecuteInfo.TensorShapeTypeProto default_graph_output_tensor_shape = 7;
+      case 7: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 58) goto handle_unusual;
+        do {
+          ptr = Varint::Parse32Inline(ptr, &size);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          parser_till_end = ::tensorflow::RemoteFusedGraphExecuteInfo_TensorShapeTypeProto::_InternalParse;
+          object = msg->add_default_graph_output_tensor_shape();
+          if (size > end - ptr) goto len_delim_till_end;
+          auto newend = ptr + size;
+          bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                         ptr, newend);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          ptr = newend;
+          if (ptr >= end) break;
+        } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 58 && (ptr += 1));
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool RemoteFusedGraphExecuteInfo::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.RemoteFusedGraphExecuteInfo)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // .tensorflow.GraphDef remote_graph = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (10 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+               input, mutable_remote_graph()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // repeated string graph_input_node_name = 2;
+      case 2: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (18 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->add_graph_input_node_name()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->graph_input_node_name(this->graph_input_node_name_size() - 1).data(),
+            static_cast<int>(this->graph_input_node_name(this->graph_input_node_name_size() - 1).length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.RemoteFusedGraphExecuteInfo.graph_input_node_name"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // repeated string graph_output_node_name = 3;
+      case 3: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (26 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->add_graph_output_node_name()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->graph_output_node_name(this->graph_output_node_name_size() - 1).data(),
+            static_cast<int>(this->graph_output_node_name(this->graph_output_node_name_size() - 1).length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.RemoteFusedGraphExecuteInfo.graph_output_node_name"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // string executor_name = 4;
+      case 4: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (34 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_executor_name()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->executor_name().data(), static_cast<int>(this->executor_name().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.RemoteFusedGraphExecuteInfo.executor_name"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // bytes serialized_executor_parameters = 5;
+      case 5: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (42 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadBytes(
+                input, this->mutable_serialized_executor_parameters()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // repeated .tensorflow.RemoteFusedGraphExecuteInfo.TensorShapeTypeProto default_graph_input_tensor_shape = 6;
+      case 6: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (50 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+                input, add_default_graph_input_tensor_shape()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // repeated .tensorflow.RemoteFusedGraphExecuteInfo.TensorShapeTypeProto default_graph_output_tensor_shape = 7;
+      case 7: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (58 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+                input, add_default_graph_output_tensor_shape()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.RemoteFusedGraphExecuteInfo)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.RemoteFusedGraphExecuteInfo)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void RemoteFusedGraphExecuteInfo::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.RemoteFusedGraphExecuteInfo)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // .tensorflow.GraphDef remote_graph = 1;
+  if (this->has_remote_graph()) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      1, HasBitSetters::remote_graph(this), output);
+  }
+
+  // repeated string graph_input_node_name = 2;
+  for (int i = 0, n = this->graph_input_node_name_size(); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->graph_input_node_name(i).data(), static_cast<int>(this->graph_input_node_name(i).length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.RemoteFusedGraphExecuteInfo.graph_input_node_name");
+    ::google::protobuf::internal::WireFormatLite::WriteString(
+      2, this->graph_input_node_name(i), output);
+  }
+
+  // repeated string graph_output_node_name = 3;
+  for (int i = 0, n = this->graph_output_node_name_size(); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->graph_output_node_name(i).data(), static_cast<int>(this->graph_output_node_name(i).length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.RemoteFusedGraphExecuteInfo.graph_output_node_name");
+    ::google::protobuf::internal::WireFormatLite::WriteString(
+      3, this->graph_output_node_name(i), output);
+  }
+
+  // string executor_name = 4;
+  if (this->executor_name().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->executor_name().data(), static_cast<int>(this->executor_name().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.RemoteFusedGraphExecuteInfo.executor_name");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      4, this->executor_name(), output);
+  }
+
+  // bytes serialized_executor_parameters = 5;
+  if (this->serialized_executor_parameters().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteBytesMaybeAliased(
+      5, this->serialized_executor_parameters(), output);
+  }
+
+  // repeated .tensorflow.RemoteFusedGraphExecuteInfo.TensorShapeTypeProto default_graph_input_tensor_shape = 6;
+  for (unsigned int i = 0,
+      n = static_cast<unsigned int>(this->default_graph_input_tensor_shape_size()); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      6,
+      this->default_graph_input_tensor_shape(static_cast<int>(i)),
+      output);
+  }
+
+  // repeated .tensorflow.RemoteFusedGraphExecuteInfo.TensorShapeTypeProto default_graph_output_tensor_shape = 7;
+  for (unsigned int i = 0,
+      n = static_cast<unsigned int>(this->default_graph_output_tensor_shape_size()); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      7,
+      this->default_graph_output_tensor_shape(static_cast<int>(i)),
+      output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.RemoteFusedGraphExecuteInfo)
+}
+
+::google::protobuf::uint8* RemoteFusedGraphExecuteInfo::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.RemoteFusedGraphExecuteInfo)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // .tensorflow.GraphDef remote_graph = 1;
+  if (this->has_remote_graph()) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        1, HasBitSetters::remote_graph(this), deterministic, target);
+  }
+
+  // repeated string graph_input_node_name = 2;
+  for (int i = 0, n = this->graph_input_node_name_size(); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->graph_input_node_name(i).data(), static_cast<int>(this->graph_input_node_name(i).length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.RemoteFusedGraphExecuteInfo.graph_input_node_name");
+    target = ::google::protobuf::internal::WireFormatLite::
+      WriteStringToArray(2, this->graph_input_node_name(i), target);
+  }
+
+  // repeated string graph_output_node_name = 3;
+  for (int i = 0, n = this->graph_output_node_name_size(); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->graph_output_node_name(i).data(), static_cast<int>(this->graph_output_node_name(i).length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.RemoteFusedGraphExecuteInfo.graph_output_node_name");
+    target = ::google::protobuf::internal::WireFormatLite::
+      WriteStringToArray(3, this->graph_output_node_name(i), target);
+  }
+
+  // string executor_name = 4;
+  if (this->executor_name().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->executor_name().data(), static_cast<int>(this->executor_name().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.RemoteFusedGraphExecuteInfo.executor_name");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        4, this->executor_name(), target);
+  }
+
+  // bytes serialized_executor_parameters = 5;
+  if (this->serialized_executor_parameters().size() > 0) {
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteBytesToArray(
+        5, this->serialized_executor_parameters(), target);
+  }
+
+  // repeated .tensorflow.RemoteFusedGraphExecuteInfo.TensorShapeTypeProto default_graph_input_tensor_shape = 6;
+  for (unsigned int i = 0,
+      n = static_cast<unsigned int>(this->default_graph_input_tensor_shape_size()); i < n; i++) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        6, this->default_graph_input_tensor_shape(static_cast<int>(i)), deterministic, target);
+  }
+
+  // repeated .tensorflow.RemoteFusedGraphExecuteInfo.TensorShapeTypeProto default_graph_output_tensor_shape = 7;
+  for (unsigned int i = 0,
+      n = static_cast<unsigned int>(this->default_graph_output_tensor_shape_size()); i < n; i++) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        7, this->default_graph_output_tensor_shape(static_cast<int>(i)), deterministic, target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.RemoteFusedGraphExecuteInfo)
+  return target;
+}
+
+size_t RemoteFusedGraphExecuteInfo::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.RemoteFusedGraphExecuteInfo)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // repeated string graph_input_node_name = 2;
+  total_size += 1 *
+      ::google::protobuf::internal::FromIntSize(this->graph_input_node_name_size());
+  for (int i = 0, n = this->graph_input_node_name_size(); i < n; i++) {
+    total_size += ::google::protobuf::internal::WireFormatLite::StringSize(
+      this->graph_input_node_name(i));
+  }
+
+  // repeated string graph_output_node_name = 3;
+  total_size += 1 *
+      ::google::protobuf::internal::FromIntSize(this->graph_output_node_name_size());
+  for (int i = 0, n = this->graph_output_node_name_size(); i < n; i++) {
+    total_size += ::google::protobuf::internal::WireFormatLite::StringSize(
+      this->graph_output_node_name(i));
+  }
+
+  // repeated .tensorflow.RemoteFusedGraphExecuteInfo.TensorShapeTypeProto default_graph_input_tensor_shape = 6;
+  {
+    unsigned int count = static_cast<unsigned int>(this->default_graph_input_tensor_shape_size());
+    total_size += 1UL * count;
+    for (unsigned int i = 0; i < count; i++) {
+      total_size +=
+        ::google::protobuf::internal::WireFormatLite::MessageSize(
+          this->default_graph_input_tensor_shape(static_cast<int>(i)));
+    }
+  }
+
+  // repeated .tensorflow.RemoteFusedGraphExecuteInfo.TensorShapeTypeProto default_graph_output_tensor_shape = 7;
+  {
+    unsigned int count = static_cast<unsigned int>(this->default_graph_output_tensor_shape_size());
+    total_size += 1UL * count;
+    for (unsigned int i = 0; i < count; i++) {
+      total_size +=
+        ::google::protobuf::internal::WireFormatLite::MessageSize(
+          this->default_graph_output_tensor_shape(static_cast<int>(i)));
+    }
+  }
+
+  // string executor_name = 4;
+  if (this->executor_name().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->executor_name());
+  }
+
+  // bytes serialized_executor_parameters = 5;
+  if (this->serialized_executor_parameters().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::BytesSize(
+        this->serialized_executor_parameters());
+  }
+
+  // .tensorflow.GraphDef remote_graph = 1;
+  if (this->has_remote_graph()) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::MessageSize(
+        *remote_graph_);
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void RemoteFusedGraphExecuteInfo::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.RemoteFusedGraphExecuteInfo)
+  GOOGLE_DCHECK_NE(&from, this);
+  const RemoteFusedGraphExecuteInfo* source =
+      ::google::protobuf::DynamicCastToGenerated<RemoteFusedGraphExecuteInfo>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.RemoteFusedGraphExecuteInfo)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.RemoteFusedGraphExecuteInfo)
+    MergeFrom(*source);
+  }
+}
+
+void RemoteFusedGraphExecuteInfo::MergeFrom(const RemoteFusedGraphExecuteInfo& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.RemoteFusedGraphExecuteInfo)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  graph_input_node_name_.MergeFrom(from.graph_input_node_name_);
+  graph_output_node_name_.MergeFrom(from.graph_output_node_name_);
+  default_graph_input_tensor_shape_.MergeFrom(from.default_graph_input_tensor_shape_);
+  default_graph_output_tensor_shape_.MergeFrom(from.default_graph_output_tensor_shape_);
+  if (from.executor_name().size() > 0) {
+    set_executor_name(from.executor_name());
+  }
+  if (from.serialized_executor_parameters().size() > 0) {
+    set_serialized_executor_parameters(from.serialized_executor_parameters());
+  }
+  if (from.has_remote_graph()) {
+    mutable_remote_graph()->::tensorflow::GraphDef::MergeFrom(from.remote_graph());
+  }
+}
+
+void RemoteFusedGraphExecuteInfo::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.RemoteFusedGraphExecuteInfo)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void RemoteFusedGraphExecuteInfo::CopyFrom(const RemoteFusedGraphExecuteInfo& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.RemoteFusedGraphExecuteInfo)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool RemoteFusedGraphExecuteInfo::IsInitialized() const {
+  return true;
+}
+
+void RemoteFusedGraphExecuteInfo::Swap(RemoteFusedGraphExecuteInfo* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    RemoteFusedGraphExecuteInfo* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void RemoteFusedGraphExecuteInfo::UnsafeArenaSwap(RemoteFusedGraphExecuteInfo* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void RemoteFusedGraphExecuteInfo::InternalSwap(RemoteFusedGraphExecuteInfo* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  graph_input_node_name_.InternalSwap(CastToBase(&other->graph_input_node_name_));
+  graph_output_node_name_.InternalSwap(CastToBase(&other->graph_output_node_name_));
+  CastToBase(&default_graph_input_tensor_shape_)->InternalSwap(CastToBase(&other->default_graph_input_tensor_shape_));
+  CastToBase(&default_graph_output_tensor_shape_)->InternalSwap(CastToBase(&other->default_graph_output_tensor_shape_));
+  executor_name_.Swap(&other->executor_name_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+  serialized_executor_parameters_.Swap(&other->serialized_executor_parameters_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+  swap(remote_graph_, other->remote_graph_);
+}
+
+::google::protobuf::Metadata RemoteFusedGraphExecuteInfo::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fframework_2fremote_5ffused_5fgraph_5fexecute_5finfo_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fframework_2fremote_5ffused_5fgraph_5fexecute_5finfo_2eproto[kIndexInFileMessages];
+}
+
+
+// @@protoc_insertion_point(namespace_scope)
+}  // namespace tensorflow
+namespace google {
+namespace protobuf {
+template<> PROTOBUF_NOINLINE ::tensorflow::RemoteFusedGraphExecuteInfo_TensorShapeTypeProto* Arena::CreateMaybeMessage< ::tensorflow::RemoteFusedGraphExecuteInfo_TensorShapeTypeProto >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::RemoteFusedGraphExecuteInfo_TensorShapeTypeProto >(arena);
+}
+template<> PROTOBUF_NOINLINE ::tensorflow::RemoteFusedGraphExecuteInfo* Arena::CreateMaybeMessage< ::tensorflow::RemoteFusedGraphExecuteInfo >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::RemoteFusedGraphExecuteInfo >(arena);
+}
+}  // namespace protobuf
+}  // namespace google
+
+// @@protoc_insertion_point(global_scope)
+#include <google/protobuf/port_undef.inc>
diff --git a/tensorflow/core/framework/remote_fused_graph_execute_info.pb.h b/tensorflow/core/framework/remote_fused_graph_execute_info.pb.h
new file mode 100644 (file)
index 0000000..e2f26c1
--- /dev/null
@@ -0,0 +1,965 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: tensorflow/core/framework/remote_fused_graph_execute_info.proto
+
+#ifndef PROTOBUF_INCLUDED_tensorflow_2fcore_2fframework_2fremote_5ffused_5fgraph_5fexecute_5finfo_2eproto
+#define PROTOBUF_INCLUDED_tensorflow_2fcore_2fframework_2fremote_5ffused_5fgraph_5fexecute_5finfo_2eproto
+
+#include <limits>
+#include <string>
+
+#include <google/protobuf/port_def.inc>
+#if PROTOBUF_VERSION < 3006001
+#error This file was generated by a newer version of protoc which is
+#error incompatible with your Protocol Buffer headers. Please update
+#error your headers.
+#endif
+#if 3006001 < PROTOBUF_MIN_PROTOC_VERSION
+#error This file was generated by an older version of protoc which is
+#error incompatible with your Protocol Buffer headers. Please
+#error regenerate this file with a newer version of protoc.
+#endif
+
+#include <google/protobuf/port_undef.inc>
+#include <google/protobuf/io/coded_stream.h>
+#include <google/protobuf/arena.h>
+#include <google/protobuf/arenastring.h>
+#include <google/protobuf/generated_message_table_driven.h>
+#include <google/protobuf/generated_message_util.h>
+#include <google/protobuf/inlined_string_field.h>
+#include <google/protobuf/metadata.h>
+#include <google/protobuf/message.h>
+#include <google/protobuf/repeated_field.h>  // IWYU pragma: export
+#include <google/protobuf/extension_set.h>  // IWYU pragma: export
+#include <google/protobuf/unknown_field_set.h>
+#include "tensorflow/core/framework/graph.pb.h"
+#include "tensorflow/core/framework/tensor_shape.pb.h"
+#include "tensorflow/core/framework/types.pb.h"
+// @@protoc_insertion_point(includes)
+#include <google/protobuf/port_def.inc>
+#define PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fframework_2fremote_5ffused_5fgraph_5fexecute_5finfo_2eproto
+
+// Internal implementation detail -- do not use these members.
+struct TableStruct_tensorflow_2fcore_2fframework_2fremote_5ffused_5fgraph_5fexecute_5finfo_2eproto {
+  static const ::google::protobuf::internal::ParseTableField entries[]
+    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
+  static const ::google::protobuf::internal::AuxillaryParseTableField aux[]
+    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
+  static const ::google::protobuf::internal::ParseTable schema[2]
+    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
+  static const ::google::protobuf::internal::FieldMetadata field_metadata[];
+  static const ::google::protobuf::internal::SerializationTable serialization_table[];
+  static const ::google::protobuf::uint32 offsets[];
+};
+void AddDescriptors_tensorflow_2fcore_2fframework_2fremote_5ffused_5fgraph_5fexecute_5finfo_2eproto();
+namespace tensorflow {
+class RemoteFusedGraphExecuteInfo;
+class RemoteFusedGraphExecuteInfoDefaultTypeInternal;
+extern RemoteFusedGraphExecuteInfoDefaultTypeInternal _RemoteFusedGraphExecuteInfo_default_instance_;
+class RemoteFusedGraphExecuteInfo_TensorShapeTypeProto;
+class RemoteFusedGraphExecuteInfo_TensorShapeTypeProtoDefaultTypeInternal;
+extern RemoteFusedGraphExecuteInfo_TensorShapeTypeProtoDefaultTypeInternal _RemoteFusedGraphExecuteInfo_TensorShapeTypeProto_default_instance_;
+}  // namespace tensorflow
+namespace google {
+namespace protobuf {
+template<> ::tensorflow::RemoteFusedGraphExecuteInfo* Arena::CreateMaybeMessage<::tensorflow::RemoteFusedGraphExecuteInfo>(Arena*);
+template<> ::tensorflow::RemoteFusedGraphExecuteInfo_TensorShapeTypeProto* Arena::CreateMaybeMessage<::tensorflow::RemoteFusedGraphExecuteInfo_TensorShapeTypeProto>(Arena*);
+}  // namespace protobuf
+}  // namespace google
+namespace tensorflow {
+
+// ===================================================================
+
+class RemoteFusedGraphExecuteInfo_TensorShapeTypeProto : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.RemoteFusedGraphExecuteInfo.TensorShapeTypeProto) */ {
+ public:
+  RemoteFusedGraphExecuteInfo_TensorShapeTypeProto();
+  virtual ~RemoteFusedGraphExecuteInfo_TensorShapeTypeProto();
+
+  RemoteFusedGraphExecuteInfo_TensorShapeTypeProto(const RemoteFusedGraphExecuteInfo_TensorShapeTypeProto& from);
+
+  inline RemoteFusedGraphExecuteInfo_TensorShapeTypeProto& operator=(const RemoteFusedGraphExecuteInfo_TensorShapeTypeProto& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  RemoteFusedGraphExecuteInfo_TensorShapeTypeProto(RemoteFusedGraphExecuteInfo_TensorShapeTypeProto&& from) noexcept
+    : RemoteFusedGraphExecuteInfo_TensorShapeTypeProto() {
+    *this = ::std::move(from);
+  }
+
+  inline RemoteFusedGraphExecuteInfo_TensorShapeTypeProto& operator=(RemoteFusedGraphExecuteInfo_TensorShapeTypeProto&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const RemoteFusedGraphExecuteInfo_TensorShapeTypeProto& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const RemoteFusedGraphExecuteInfo_TensorShapeTypeProto* internal_default_instance() {
+    return reinterpret_cast<const RemoteFusedGraphExecuteInfo_TensorShapeTypeProto*>(
+               &_RemoteFusedGraphExecuteInfo_TensorShapeTypeProto_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    0;
+
+  void UnsafeArenaSwap(RemoteFusedGraphExecuteInfo_TensorShapeTypeProto* other);
+  void Swap(RemoteFusedGraphExecuteInfo_TensorShapeTypeProto* other);
+  friend void swap(RemoteFusedGraphExecuteInfo_TensorShapeTypeProto& a, RemoteFusedGraphExecuteInfo_TensorShapeTypeProto& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline RemoteFusedGraphExecuteInfo_TensorShapeTypeProto* New() const final {
+    return CreateMaybeMessage<RemoteFusedGraphExecuteInfo_TensorShapeTypeProto>(NULL);
+  }
+
+  RemoteFusedGraphExecuteInfo_TensorShapeTypeProto* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<RemoteFusedGraphExecuteInfo_TensorShapeTypeProto>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const RemoteFusedGraphExecuteInfo_TensorShapeTypeProto& from);
+  void MergeFrom(const RemoteFusedGraphExecuteInfo_TensorShapeTypeProto& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(RemoteFusedGraphExecuteInfo_TensorShapeTypeProto* other);
+  protected:
+  explicit RemoteFusedGraphExecuteInfo_TensorShapeTypeProto(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // .tensorflow.TensorShapeProto shape = 2;
+  bool has_shape() const;
+  void clear_shape();
+  static const int kShapeFieldNumber = 2;
+  const ::tensorflow::TensorShapeProto& shape() const;
+  ::tensorflow::TensorShapeProto* release_shape();
+  ::tensorflow::TensorShapeProto* mutable_shape();
+  void set_allocated_shape(::tensorflow::TensorShapeProto* shape);
+  void unsafe_arena_set_allocated_shape(
+      ::tensorflow::TensorShapeProto* shape);
+  ::tensorflow::TensorShapeProto* unsafe_arena_release_shape();
+
+  // .tensorflow.DataType dtype = 1;
+  void clear_dtype();
+  static const int kDtypeFieldNumber = 1;
+  ::tensorflow::DataType dtype() const;
+  void set_dtype(::tensorflow::DataType value);
+
+  // @@protoc_insertion_point(class_scope:tensorflow.RemoteFusedGraphExecuteInfo.TensorShapeTypeProto)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  ::tensorflow::TensorShapeProto* shape_;
+  int dtype_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fframework_2fremote_5ffused_5fgraph_5fexecute_5finfo_2eproto;
+};
+// -------------------------------------------------------------------
+
+class RemoteFusedGraphExecuteInfo : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.RemoteFusedGraphExecuteInfo) */ {
+ public:
+  RemoteFusedGraphExecuteInfo();
+  virtual ~RemoteFusedGraphExecuteInfo();
+
+  RemoteFusedGraphExecuteInfo(const RemoteFusedGraphExecuteInfo& from);
+
+  inline RemoteFusedGraphExecuteInfo& operator=(const RemoteFusedGraphExecuteInfo& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  RemoteFusedGraphExecuteInfo(RemoteFusedGraphExecuteInfo&& from) noexcept
+    : RemoteFusedGraphExecuteInfo() {
+    *this = ::std::move(from);
+  }
+
+  inline RemoteFusedGraphExecuteInfo& operator=(RemoteFusedGraphExecuteInfo&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const RemoteFusedGraphExecuteInfo& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const RemoteFusedGraphExecuteInfo* internal_default_instance() {
+    return reinterpret_cast<const RemoteFusedGraphExecuteInfo*>(
+               &_RemoteFusedGraphExecuteInfo_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    1;
+
+  void UnsafeArenaSwap(RemoteFusedGraphExecuteInfo* other);
+  void Swap(RemoteFusedGraphExecuteInfo* other);
+  friend void swap(RemoteFusedGraphExecuteInfo& a, RemoteFusedGraphExecuteInfo& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline RemoteFusedGraphExecuteInfo* New() const final {
+    return CreateMaybeMessage<RemoteFusedGraphExecuteInfo>(NULL);
+  }
+
+  RemoteFusedGraphExecuteInfo* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<RemoteFusedGraphExecuteInfo>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const RemoteFusedGraphExecuteInfo& from);
+  void MergeFrom(const RemoteFusedGraphExecuteInfo& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(RemoteFusedGraphExecuteInfo* other);
+  protected:
+  explicit RemoteFusedGraphExecuteInfo(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  typedef RemoteFusedGraphExecuteInfo_TensorShapeTypeProto TensorShapeTypeProto;
+
+  // accessors -------------------------------------------------------
+
+  // repeated string graph_input_node_name = 2;
+  int graph_input_node_name_size() const;
+  void clear_graph_input_node_name();
+  static const int kGraphInputNodeNameFieldNumber = 2;
+  const ::std::string& graph_input_node_name(int index) const;
+  ::std::string* mutable_graph_input_node_name(int index);
+  void set_graph_input_node_name(int index, const ::std::string& value);
+  #if LANG_CXX11
+  void set_graph_input_node_name(int index, ::std::string&& value);
+  #endif
+  void set_graph_input_node_name(int index, const char* value);
+  void set_graph_input_node_name(int index, const char* value, size_t size);
+  ::std::string* add_graph_input_node_name();
+  void add_graph_input_node_name(const ::std::string& value);
+  #if LANG_CXX11
+  void add_graph_input_node_name(::std::string&& value);
+  #endif
+  void add_graph_input_node_name(const char* value);
+  void add_graph_input_node_name(const char* value, size_t size);
+  const ::google::protobuf::RepeatedPtrField<::std::string>& graph_input_node_name() const;
+  ::google::protobuf::RepeatedPtrField<::std::string>* mutable_graph_input_node_name();
+
+  // repeated string graph_output_node_name = 3;
+  int graph_output_node_name_size() const;
+  void clear_graph_output_node_name();
+  static const int kGraphOutputNodeNameFieldNumber = 3;
+  const ::std::string& graph_output_node_name(int index) const;
+  ::std::string* mutable_graph_output_node_name(int index);
+  void set_graph_output_node_name(int index, const ::std::string& value);
+  #if LANG_CXX11
+  void set_graph_output_node_name(int index, ::std::string&& value);
+  #endif
+  void set_graph_output_node_name(int index, const char* value);
+  void set_graph_output_node_name(int index, const char* value, size_t size);
+  ::std::string* add_graph_output_node_name();
+  void add_graph_output_node_name(const ::std::string& value);
+  #if LANG_CXX11
+  void add_graph_output_node_name(::std::string&& value);
+  #endif
+  void add_graph_output_node_name(const char* value);
+  void add_graph_output_node_name(const char* value, size_t size);
+  const ::google::protobuf::RepeatedPtrField<::std::string>& graph_output_node_name() const;
+  ::google::protobuf::RepeatedPtrField<::std::string>* mutable_graph_output_node_name();
+
+  // repeated .tensorflow.RemoteFusedGraphExecuteInfo.TensorShapeTypeProto default_graph_input_tensor_shape = 6;
+  int default_graph_input_tensor_shape_size() const;
+  void clear_default_graph_input_tensor_shape();
+  static const int kDefaultGraphInputTensorShapeFieldNumber = 6;
+  ::tensorflow::RemoteFusedGraphExecuteInfo_TensorShapeTypeProto* mutable_default_graph_input_tensor_shape(int index);
+  ::google::protobuf::RepeatedPtrField< ::tensorflow::RemoteFusedGraphExecuteInfo_TensorShapeTypeProto >*
+      mutable_default_graph_input_tensor_shape();
+  const ::tensorflow::RemoteFusedGraphExecuteInfo_TensorShapeTypeProto& default_graph_input_tensor_shape(int index) const;
+  ::tensorflow::RemoteFusedGraphExecuteInfo_TensorShapeTypeProto* add_default_graph_input_tensor_shape();
+  const ::google::protobuf::RepeatedPtrField< ::tensorflow::RemoteFusedGraphExecuteInfo_TensorShapeTypeProto >&
+      default_graph_input_tensor_shape() const;
+
+  // repeated .tensorflow.RemoteFusedGraphExecuteInfo.TensorShapeTypeProto default_graph_output_tensor_shape = 7;
+  int default_graph_output_tensor_shape_size() const;
+  void clear_default_graph_output_tensor_shape();
+  static const int kDefaultGraphOutputTensorShapeFieldNumber = 7;
+  ::tensorflow::RemoteFusedGraphExecuteInfo_TensorShapeTypeProto* mutable_default_graph_output_tensor_shape(int index);
+  ::google::protobuf::RepeatedPtrField< ::tensorflow::RemoteFusedGraphExecuteInfo_TensorShapeTypeProto >*
+      mutable_default_graph_output_tensor_shape();
+  const ::tensorflow::RemoteFusedGraphExecuteInfo_TensorShapeTypeProto& default_graph_output_tensor_shape(int index) const;
+  ::tensorflow::RemoteFusedGraphExecuteInfo_TensorShapeTypeProto* add_default_graph_output_tensor_shape();
+  const ::google::protobuf::RepeatedPtrField< ::tensorflow::RemoteFusedGraphExecuteInfo_TensorShapeTypeProto >&
+      default_graph_output_tensor_shape() const;
+
+  // string executor_name = 4;
+  void clear_executor_name();
+  static const int kExecutorNameFieldNumber = 4;
+  const ::std::string& executor_name() const;
+  void set_executor_name(const ::std::string& value);
+  #if LANG_CXX11
+  void set_executor_name(::std::string&& value);
+  #endif
+  void set_executor_name(const char* value);
+  void set_executor_name(const char* value, size_t size);
+  ::std::string* mutable_executor_name();
+  ::std::string* release_executor_name();
+  void set_allocated_executor_name(::std::string* executor_name);
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  ::std::string* unsafe_arena_release_executor_name();
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  void unsafe_arena_set_allocated_executor_name(
+      ::std::string* executor_name);
+
+  // bytes serialized_executor_parameters = 5;
+  void clear_serialized_executor_parameters();
+  static const int kSerializedExecutorParametersFieldNumber = 5;
+  const ::std::string& serialized_executor_parameters() const;
+  void set_serialized_executor_parameters(const ::std::string& value);
+  #if LANG_CXX11
+  void set_serialized_executor_parameters(::std::string&& value);
+  #endif
+  void set_serialized_executor_parameters(const char* value);
+  void set_serialized_executor_parameters(const void* value, size_t size);
+  ::std::string* mutable_serialized_executor_parameters();
+  ::std::string* release_serialized_executor_parameters();
+  void set_allocated_serialized_executor_parameters(::std::string* serialized_executor_parameters);
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  ::std::string* unsafe_arena_release_serialized_executor_parameters();
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  void unsafe_arena_set_allocated_serialized_executor_parameters(
+      ::std::string* serialized_executor_parameters);
+
+  // .tensorflow.GraphDef remote_graph = 1;
+  bool has_remote_graph() const;
+  void clear_remote_graph();
+  static const int kRemoteGraphFieldNumber = 1;
+  const ::tensorflow::GraphDef& remote_graph() const;
+  ::tensorflow::GraphDef* release_remote_graph();
+  ::tensorflow::GraphDef* mutable_remote_graph();
+  void set_allocated_remote_graph(::tensorflow::GraphDef* remote_graph);
+  void unsafe_arena_set_allocated_remote_graph(
+      ::tensorflow::GraphDef* remote_graph);
+  ::tensorflow::GraphDef* unsafe_arena_release_remote_graph();
+
+  // @@protoc_insertion_point(class_scope:tensorflow.RemoteFusedGraphExecuteInfo)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  ::google::protobuf::RepeatedPtrField<::std::string> graph_input_node_name_;
+  ::google::protobuf::RepeatedPtrField<::std::string> graph_output_node_name_;
+  ::google::protobuf::RepeatedPtrField< ::tensorflow::RemoteFusedGraphExecuteInfo_TensorShapeTypeProto > default_graph_input_tensor_shape_;
+  ::google::protobuf::RepeatedPtrField< ::tensorflow::RemoteFusedGraphExecuteInfo_TensorShapeTypeProto > default_graph_output_tensor_shape_;
+  ::google::protobuf::internal::ArenaStringPtr executor_name_;
+  ::google::protobuf::internal::ArenaStringPtr serialized_executor_parameters_;
+  ::tensorflow::GraphDef* remote_graph_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fframework_2fremote_5ffused_5fgraph_5fexecute_5finfo_2eproto;
+};
+// ===================================================================
+
+
+// ===================================================================
+
+#ifdef __GNUC__
+  #pragma GCC diagnostic push
+  #pragma GCC diagnostic ignored "-Wstrict-aliasing"
+#endif  // __GNUC__
+// RemoteFusedGraphExecuteInfo_TensorShapeTypeProto
+
+// .tensorflow.DataType dtype = 1;
+inline void RemoteFusedGraphExecuteInfo_TensorShapeTypeProto::clear_dtype() {
+  dtype_ = 0;
+}
+inline ::tensorflow::DataType RemoteFusedGraphExecuteInfo_TensorShapeTypeProto::dtype() const {
+  // @@protoc_insertion_point(field_get:tensorflow.RemoteFusedGraphExecuteInfo.TensorShapeTypeProto.dtype)
+  return static_cast< ::tensorflow::DataType >(dtype_);
+}
+inline void RemoteFusedGraphExecuteInfo_TensorShapeTypeProto::set_dtype(::tensorflow::DataType value) {
+  
+  dtype_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.RemoteFusedGraphExecuteInfo.TensorShapeTypeProto.dtype)
+}
+
+// .tensorflow.TensorShapeProto shape = 2;
+inline bool RemoteFusedGraphExecuteInfo_TensorShapeTypeProto::has_shape() const {
+  return this != internal_default_instance() && shape_ != NULL;
+}
+inline const ::tensorflow::TensorShapeProto& RemoteFusedGraphExecuteInfo_TensorShapeTypeProto::shape() const {
+  const ::tensorflow::TensorShapeProto* p = shape_;
+  // @@protoc_insertion_point(field_get:tensorflow.RemoteFusedGraphExecuteInfo.TensorShapeTypeProto.shape)
+  return p != NULL ? *p : *reinterpret_cast<const ::tensorflow::TensorShapeProto*>(
+      &::tensorflow::_TensorShapeProto_default_instance_);
+}
+inline ::tensorflow::TensorShapeProto* RemoteFusedGraphExecuteInfo_TensorShapeTypeProto::release_shape() {
+  // @@protoc_insertion_point(field_release:tensorflow.RemoteFusedGraphExecuteInfo.TensorShapeTypeProto.shape)
+  
+  ::tensorflow::TensorShapeProto* temp = shape_;
+  if (GetArenaNoVirtual() != NULL) {
+    temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
+  }
+  shape_ = NULL;
+  return temp;
+}
+inline ::tensorflow::TensorShapeProto* RemoteFusedGraphExecuteInfo_TensorShapeTypeProto::unsafe_arena_release_shape() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.RemoteFusedGraphExecuteInfo.TensorShapeTypeProto.shape)
+  
+  ::tensorflow::TensorShapeProto* temp = shape_;
+  shape_ = NULL;
+  return temp;
+}
+inline ::tensorflow::TensorShapeProto* RemoteFusedGraphExecuteInfo_TensorShapeTypeProto::mutable_shape() {
+  
+  if (shape_ == NULL) {
+    auto* p = CreateMaybeMessage<::tensorflow::TensorShapeProto>(GetArenaNoVirtual());
+    shape_ = p;
+  }
+  // @@protoc_insertion_point(field_mutable:tensorflow.RemoteFusedGraphExecuteInfo.TensorShapeTypeProto.shape)
+  return shape_;
+}
+inline void RemoteFusedGraphExecuteInfo_TensorShapeTypeProto::set_allocated_shape(::tensorflow::TensorShapeProto* shape) {
+  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
+  if (message_arena == NULL) {
+    delete reinterpret_cast< ::google::protobuf::MessageLite*>(shape_);
+  }
+  if (shape) {
+    ::google::protobuf::Arena* submessage_arena =
+      reinterpret_cast<::google::protobuf::MessageLite*>(shape)->GetArena();
+    if (message_arena != submessage_arena) {
+      shape = ::google::protobuf::internal::GetOwnedMessage(
+          message_arena, shape, submessage_arena);
+    }
+    
+  } else {
+    
+  }
+  shape_ = shape;
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.RemoteFusedGraphExecuteInfo.TensorShapeTypeProto.shape)
+}
+
+// -------------------------------------------------------------------
+
+// RemoteFusedGraphExecuteInfo
+
+// .tensorflow.GraphDef remote_graph = 1;
+inline bool RemoteFusedGraphExecuteInfo::has_remote_graph() const {
+  return this != internal_default_instance() && remote_graph_ != NULL;
+}
+inline const ::tensorflow::GraphDef& RemoteFusedGraphExecuteInfo::remote_graph() const {
+  const ::tensorflow::GraphDef* p = remote_graph_;
+  // @@protoc_insertion_point(field_get:tensorflow.RemoteFusedGraphExecuteInfo.remote_graph)
+  return p != NULL ? *p : *reinterpret_cast<const ::tensorflow::GraphDef*>(
+      &::tensorflow::_GraphDef_default_instance_);
+}
+inline ::tensorflow::GraphDef* RemoteFusedGraphExecuteInfo::release_remote_graph() {
+  // @@protoc_insertion_point(field_release:tensorflow.RemoteFusedGraphExecuteInfo.remote_graph)
+  
+  ::tensorflow::GraphDef* temp = remote_graph_;
+  if (GetArenaNoVirtual() != NULL) {
+    temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
+  }
+  remote_graph_ = NULL;
+  return temp;
+}
+inline ::tensorflow::GraphDef* RemoteFusedGraphExecuteInfo::unsafe_arena_release_remote_graph() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.RemoteFusedGraphExecuteInfo.remote_graph)
+  
+  ::tensorflow::GraphDef* temp = remote_graph_;
+  remote_graph_ = NULL;
+  return temp;
+}
+inline ::tensorflow::GraphDef* RemoteFusedGraphExecuteInfo::mutable_remote_graph() {
+  
+  if (remote_graph_ == NULL) {
+    auto* p = CreateMaybeMessage<::tensorflow::GraphDef>(GetArenaNoVirtual());
+    remote_graph_ = p;
+  }
+  // @@protoc_insertion_point(field_mutable:tensorflow.RemoteFusedGraphExecuteInfo.remote_graph)
+  return remote_graph_;
+}
+inline void RemoteFusedGraphExecuteInfo::set_allocated_remote_graph(::tensorflow::GraphDef* remote_graph) {
+  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
+  if (message_arena == NULL) {
+    delete reinterpret_cast< ::google::protobuf::MessageLite*>(remote_graph_);
+  }
+  if (remote_graph) {
+    ::google::protobuf::Arena* submessage_arena =
+      reinterpret_cast<::google::protobuf::MessageLite*>(remote_graph)->GetArena();
+    if (message_arena != submessage_arena) {
+      remote_graph = ::google::protobuf::internal::GetOwnedMessage(
+          message_arena, remote_graph, submessage_arena);
+    }
+    
+  } else {
+    
+  }
+  remote_graph_ = remote_graph;
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.RemoteFusedGraphExecuteInfo.remote_graph)
+}
+
+// repeated string graph_input_node_name = 2;
+inline int RemoteFusedGraphExecuteInfo::graph_input_node_name_size() const {
+  return graph_input_node_name_.size();
+}
+inline void RemoteFusedGraphExecuteInfo::clear_graph_input_node_name() {
+  graph_input_node_name_.Clear();
+}
+inline const ::std::string& RemoteFusedGraphExecuteInfo::graph_input_node_name(int index) const {
+  // @@protoc_insertion_point(field_get:tensorflow.RemoteFusedGraphExecuteInfo.graph_input_node_name)
+  return graph_input_node_name_.Get(index);
+}
+inline ::std::string* RemoteFusedGraphExecuteInfo::mutable_graph_input_node_name(int index) {
+  // @@protoc_insertion_point(field_mutable:tensorflow.RemoteFusedGraphExecuteInfo.graph_input_node_name)
+  return graph_input_node_name_.Mutable(index);
+}
+inline void RemoteFusedGraphExecuteInfo::set_graph_input_node_name(int index, const ::std::string& value) {
+  // @@protoc_insertion_point(field_set:tensorflow.RemoteFusedGraphExecuteInfo.graph_input_node_name)
+  graph_input_node_name_.Mutable(index)->assign(value);
+}
+#if LANG_CXX11
+inline void RemoteFusedGraphExecuteInfo::set_graph_input_node_name(int index, ::std::string&& value) {
+  // @@protoc_insertion_point(field_set:tensorflow.RemoteFusedGraphExecuteInfo.graph_input_node_name)
+  graph_input_node_name_.Mutable(index)->assign(std::move(value));
+}
+#endif
+inline void RemoteFusedGraphExecuteInfo::set_graph_input_node_name(int index, const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  graph_input_node_name_.Mutable(index)->assign(value);
+  // @@protoc_insertion_point(field_set_char:tensorflow.RemoteFusedGraphExecuteInfo.graph_input_node_name)
+}
+inline void RemoteFusedGraphExecuteInfo::set_graph_input_node_name(int index, const char* value, size_t size) {
+  graph_input_node_name_.Mutable(index)->assign(
+    reinterpret_cast<const char*>(value), size);
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.RemoteFusedGraphExecuteInfo.graph_input_node_name)
+}
+inline ::std::string* RemoteFusedGraphExecuteInfo::add_graph_input_node_name() {
+  // @@protoc_insertion_point(field_add_mutable:tensorflow.RemoteFusedGraphExecuteInfo.graph_input_node_name)
+  return graph_input_node_name_.Add();
+}
+inline void RemoteFusedGraphExecuteInfo::add_graph_input_node_name(const ::std::string& value) {
+  graph_input_node_name_.Add()->assign(value);
+  // @@protoc_insertion_point(field_add:tensorflow.RemoteFusedGraphExecuteInfo.graph_input_node_name)
+}
+#if LANG_CXX11
+inline void RemoteFusedGraphExecuteInfo::add_graph_input_node_name(::std::string&& value) {
+  graph_input_node_name_.Add(std::move(value));
+  // @@protoc_insertion_point(field_add:tensorflow.RemoteFusedGraphExecuteInfo.graph_input_node_name)
+}
+#endif
+inline void RemoteFusedGraphExecuteInfo::add_graph_input_node_name(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  graph_input_node_name_.Add()->assign(value);
+  // @@protoc_insertion_point(field_add_char:tensorflow.RemoteFusedGraphExecuteInfo.graph_input_node_name)
+}
+inline void RemoteFusedGraphExecuteInfo::add_graph_input_node_name(const char* value, size_t size) {
+  graph_input_node_name_.Add()->assign(reinterpret_cast<const char*>(value), size);
+  // @@protoc_insertion_point(field_add_pointer:tensorflow.RemoteFusedGraphExecuteInfo.graph_input_node_name)
+}
+inline const ::google::protobuf::RepeatedPtrField<::std::string>&
+RemoteFusedGraphExecuteInfo::graph_input_node_name() const {
+  // @@protoc_insertion_point(field_list:tensorflow.RemoteFusedGraphExecuteInfo.graph_input_node_name)
+  return graph_input_node_name_;
+}
+inline ::google::protobuf::RepeatedPtrField<::std::string>*
+RemoteFusedGraphExecuteInfo::mutable_graph_input_node_name() {
+  // @@protoc_insertion_point(field_mutable_list:tensorflow.RemoteFusedGraphExecuteInfo.graph_input_node_name)
+  return &graph_input_node_name_;
+}
+
+// repeated string graph_output_node_name = 3;
+inline int RemoteFusedGraphExecuteInfo::graph_output_node_name_size() const {
+  return graph_output_node_name_.size();
+}
+inline void RemoteFusedGraphExecuteInfo::clear_graph_output_node_name() {
+  graph_output_node_name_.Clear();
+}
+inline const ::std::string& RemoteFusedGraphExecuteInfo::graph_output_node_name(int index) const {
+  // @@protoc_insertion_point(field_get:tensorflow.RemoteFusedGraphExecuteInfo.graph_output_node_name)
+  return graph_output_node_name_.Get(index);
+}
+inline ::std::string* RemoteFusedGraphExecuteInfo::mutable_graph_output_node_name(int index) {
+  // @@protoc_insertion_point(field_mutable:tensorflow.RemoteFusedGraphExecuteInfo.graph_output_node_name)
+  return graph_output_node_name_.Mutable(index);
+}
+inline void RemoteFusedGraphExecuteInfo::set_graph_output_node_name(int index, const ::std::string& value) {
+  // @@protoc_insertion_point(field_set:tensorflow.RemoteFusedGraphExecuteInfo.graph_output_node_name)
+  graph_output_node_name_.Mutable(index)->assign(value);
+}
+#if LANG_CXX11
+inline void RemoteFusedGraphExecuteInfo::set_graph_output_node_name(int index, ::std::string&& value) {
+  // @@protoc_insertion_point(field_set:tensorflow.RemoteFusedGraphExecuteInfo.graph_output_node_name)
+  graph_output_node_name_.Mutable(index)->assign(std::move(value));
+}
+#endif
+inline void RemoteFusedGraphExecuteInfo::set_graph_output_node_name(int index, const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  graph_output_node_name_.Mutable(index)->assign(value);
+  // @@protoc_insertion_point(field_set_char:tensorflow.RemoteFusedGraphExecuteInfo.graph_output_node_name)
+}
+inline void RemoteFusedGraphExecuteInfo::set_graph_output_node_name(int index, const char* value, size_t size) {
+  graph_output_node_name_.Mutable(index)->assign(
+    reinterpret_cast<const char*>(value), size);
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.RemoteFusedGraphExecuteInfo.graph_output_node_name)
+}
+inline ::std::string* RemoteFusedGraphExecuteInfo::add_graph_output_node_name() {
+  // @@protoc_insertion_point(field_add_mutable:tensorflow.RemoteFusedGraphExecuteInfo.graph_output_node_name)
+  return graph_output_node_name_.Add();
+}
+inline void RemoteFusedGraphExecuteInfo::add_graph_output_node_name(const ::std::string& value) {
+  graph_output_node_name_.Add()->assign(value);
+  // @@protoc_insertion_point(field_add:tensorflow.RemoteFusedGraphExecuteInfo.graph_output_node_name)
+}
+#if LANG_CXX11
+inline void RemoteFusedGraphExecuteInfo::add_graph_output_node_name(::std::string&& value) {
+  graph_output_node_name_.Add(std::move(value));
+  // @@protoc_insertion_point(field_add:tensorflow.RemoteFusedGraphExecuteInfo.graph_output_node_name)
+}
+#endif
+inline void RemoteFusedGraphExecuteInfo::add_graph_output_node_name(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  graph_output_node_name_.Add()->assign(value);
+  // @@protoc_insertion_point(field_add_char:tensorflow.RemoteFusedGraphExecuteInfo.graph_output_node_name)
+}
+inline void RemoteFusedGraphExecuteInfo::add_graph_output_node_name(const char* value, size_t size) {
+  graph_output_node_name_.Add()->assign(reinterpret_cast<const char*>(value), size);
+  // @@protoc_insertion_point(field_add_pointer:tensorflow.RemoteFusedGraphExecuteInfo.graph_output_node_name)
+}
+inline const ::google::protobuf::RepeatedPtrField<::std::string>&
+RemoteFusedGraphExecuteInfo::graph_output_node_name() const {
+  // @@protoc_insertion_point(field_list:tensorflow.RemoteFusedGraphExecuteInfo.graph_output_node_name)
+  return graph_output_node_name_;
+}
+inline ::google::protobuf::RepeatedPtrField<::std::string>*
+RemoteFusedGraphExecuteInfo::mutable_graph_output_node_name() {
+  // @@protoc_insertion_point(field_mutable_list:tensorflow.RemoteFusedGraphExecuteInfo.graph_output_node_name)
+  return &graph_output_node_name_;
+}
+
+// string executor_name = 4;
+inline void RemoteFusedGraphExecuteInfo::clear_executor_name() {
+  executor_name_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline const ::std::string& RemoteFusedGraphExecuteInfo::executor_name() const {
+  // @@protoc_insertion_point(field_get:tensorflow.RemoteFusedGraphExecuteInfo.executor_name)
+  return executor_name_.Get();
+}
+inline void RemoteFusedGraphExecuteInfo::set_executor_name(const ::std::string& value) {
+  
+  executor_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set:tensorflow.RemoteFusedGraphExecuteInfo.executor_name)
+}
+#if LANG_CXX11
+inline void RemoteFusedGraphExecuteInfo::set_executor_name(::std::string&& value) {
+  
+  executor_name_.Set(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.RemoteFusedGraphExecuteInfo.executor_name)
+}
+#endif
+inline void RemoteFusedGraphExecuteInfo::set_executor_name(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  executor_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
+              GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_char:tensorflow.RemoteFusedGraphExecuteInfo.executor_name)
+}
+inline void RemoteFusedGraphExecuteInfo::set_executor_name(const char* value,
+    size_t size) {
+  
+  executor_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
+      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.RemoteFusedGraphExecuteInfo.executor_name)
+}
+inline ::std::string* RemoteFusedGraphExecuteInfo::mutable_executor_name() {
+  
+  // @@protoc_insertion_point(field_mutable:tensorflow.RemoteFusedGraphExecuteInfo.executor_name)
+  return executor_name_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline ::std::string* RemoteFusedGraphExecuteInfo::release_executor_name() {
+  // @@protoc_insertion_point(field_release:tensorflow.RemoteFusedGraphExecuteInfo.executor_name)
+  
+  return executor_name_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline void RemoteFusedGraphExecuteInfo::set_allocated_executor_name(::std::string* executor_name) {
+  if (executor_name != NULL) {
+    
+  } else {
+    
+  }
+  executor_name_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), executor_name,
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.RemoteFusedGraphExecuteInfo.executor_name)
+}
+inline ::std::string* RemoteFusedGraphExecuteInfo::unsafe_arena_release_executor_name() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.RemoteFusedGraphExecuteInfo.executor_name)
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  
+  return executor_name_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      GetArenaNoVirtual());
+}
+inline void RemoteFusedGraphExecuteInfo::unsafe_arena_set_allocated_executor_name(
+    ::std::string* executor_name) {
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (executor_name != NULL) {
+    
+  } else {
+    
+  }
+  executor_name_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      executor_name, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.RemoteFusedGraphExecuteInfo.executor_name)
+}
+
+// bytes serialized_executor_parameters = 5;
+inline void RemoteFusedGraphExecuteInfo::clear_serialized_executor_parameters() {
+  serialized_executor_parameters_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline const ::std::string& RemoteFusedGraphExecuteInfo::serialized_executor_parameters() const {
+  // @@protoc_insertion_point(field_get:tensorflow.RemoteFusedGraphExecuteInfo.serialized_executor_parameters)
+  return serialized_executor_parameters_.Get();
+}
+inline void RemoteFusedGraphExecuteInfo::set_serialized_executor_parameters(const ::std::string& value) {
+  
+  serialized_executor_parameters_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set:tensorflow.RemoteFusedGraphExecuteInfo.serialized_executor_parameters)
+}
+#if LANG_CXX11
+inline void RemoteFusedGraphExecuteInfo::set_serialized_executor_parameters(::std::string&& value) {
+  
+  serialized_executor_parameters_.Set(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.RemoteFusedGraphExecuteInfo.serialized_executor_parameters)
+}
+#endif
+inline void RemoteFusedGraphExecuteInfo::set_serialized_executor_parameters(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  serialized_executor_parameters_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
+              GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_char:tensorflow.RemoteFusedGraphExecuteInfo.serialized_executor_parameters)
+}
+inline void RemoteFusedGraphExecuteInfo::set_serialized_executor_parameters(const void* value,
+    size_t size) {
+  
+  serialized_executor_parameters_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
+      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.RemoteFusedGraphExecuteInfo.serialized_executor_parameters)
+}
+inline ::std::string* RemoteFusedGraphExecuteInfo::mutable_serialized_executor_parameters() {
+  
+  // @@protoc_insertion_point(field_mutable:tensorflow.RemoteFusedGraphExecuteInfo.serialized_executor_parameters)
+  return serialized_executor_parameters_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline ::std::string* RemoteFusedGraphExecuteInfo::release_serialized_executor_parameters() {
+  // @@protoc_insertion_point(field_release:tensorflow.RemoteFusedGraphExecuteInfo.serialized_executor_parameters)
+  
+  return serialized_executor_parameters_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline void RemoteFusedGraphExecuteInfo::set_allocated_serialized_executor_parameters(::std::string* serialized_executor_parameters) {
+  if (serialized_executor_parameters != NULL) {
+    
+  } else {
+    
+  }
+  serialized_executor_parameters_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), serialized_executor_parameters,
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.RemoteFusedGraphExecuteInfo.serialized_executor_parameters)
+}
+inline ::std::string* RemoteFusedGraphExecuteInfo::unsafe_arena_release_serialized_executor_parameters() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.RemoteFusedGraphExecuteInfo.serialized_executor_parameters)
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  
+  return serialized_executor_parameters_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      GetArenaNoVirtual());
+}
+inline void RemoteFusedGraphExecuteInfo::unsafe_arena_set_allocated_serialized_executor_parameters(
+    ::std::string* serialized_executor_parameters) {
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (serialized_executor_parameters != NULL) {
+    
+  } else {
+    
+  }
+  serialized_executor_parameters_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      serialized_executor_parameters, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.RemoteFusedGraphExecuteInfo.serialized_executor_parameters)
+}
+
+// repeated .tensorflow.RemoteFusedGraphExecuteInfo.TensorShapeTypeProto default_graph_input_tensor_shape = 6;
+inline int RemoteFusedGraphExecuteInfo::default_graph_input_tensor_shape_size() const {
+  return default_graph_input_tensor_shape_.size();
+}
+inline void RemoteFusedGraphExecuteInfo::clear_default_graph_input_tensor_shape() {
+  default_graph_input_tensor_shape_.Clear();
+}
+inline ::tensorflow::RemoteFusedGraphExecuteInfo_TensorShapeTypeProto* RemoteFusedGraphExecuteInfo::mutable_default_graph_input_tensor_shape(int index) {
+  // @@protoc_insertion_point(field_mutable:tensorflow.RemoteFusedGraphExecuteInfo.default_graph_input_tensor_shape)
+  return default_graph_input_tensor_shape_.Mutable(index);
+}
+inline ::google::protobuf::RepeatedPtrField< ::tensorflow::RemoteFusedGraphExecuteInfo_TensorShapeTypeProto >*
+RemoteFusedGraphExecuteInfo::mutable_default_graph_input_tensor_shape() {
+  // @@protoc_insertion_point(field_mutable_list:tensorflow.RemoteFusedGraphExecuteInfo.default_graph_input_tensor_shape)
+  return &default_graph_input_tensor_shape_;
+}
+inline const ::tensorflow::RemoteFusedGraphExecuteInfo_TensorShapeTypeProto& RemoteFusedGraphExecuteInfo::default_graph_input_tensor_shape(int index) const {
+  // @@protoc_insertion_point(field_get:tensorflow.RemoteFusedGraphExecuteInfo.default_graph_input_tensor_shape)
+  return default_graph_input_tensor_shape_.Get(index);
+}
+inline ::tensorflow::RemoteFusedGraphExecuteInfo_TensorShapeTypeProto* RemoteFusedGraphExecuteInfo::add_default_graph_input_tensor_shape() {
+  // @@protoc_insertion_point(field_add:tensorflow.RemoteFusedGraphExecuteInfo.default_graph_input_tensor_shape)
+  return default_graph_input_tensor_shape_.Add();
+}
+inline const ::google::protobuf::RepeatedPtrField< ::tensorflow::RemoteFusedGraphExecuteInfo_TensorShapeTypeProto >&
+RemoteFusedGraphExecuteInfo::default_graph_input_tensor_shape() const {
+  // @@protoc_insertion_point(field_list:tensorflow.RemoteFusedGraphExecuteInfo.default_graph_input_tensor_shape)
+  return default_graph_input_tensor_shape_;
+}
+
+// repeated .tensorflow.RemoteFusedGraphExecuteInfo.TensorShapeTypeProto default_graph_output_tensor_shape = 7;
+inline int RemoteFusedGraphExecuteInfo::default_graph_output_tensor_shape_size() const {
+  return default_graph_output_tensor_shape_.size();
+}
+inline void RemoteFusedGraphExecuteInfo::clear_default_graph_output_tensor_shape() {
+  default_graph_output_tensor_shape_.Clear();
+}
+inline ::tensorflow::RemoteFusedGraphExecuteInfo_TensorShapeTypeProto* RemoteFusedGraphExecuteInfo::mutable_default_graph_output_tensor_shape(int index) {
+  // @@protoc_insertion_point(field_mutable:tensorflow.RemoteFusedGraphExecuteInfo.default_graph_output_tensor_shape)
+  return default_graph_output_tensor_shape_.Mutable(index);
+}
+inline ::google::protobuf::RepeatedPtrField< ::tensorflow::RemoteFusedGraphExecuteInfo_TensorShapeTypeProto >*
+RemoteFusedGraphExecuteInfo::mutable_default_graph_output_tensor_shape() {
+  // @@protoc_insertion_point(field_mutable_list:tensorflow.RemoteFusedGraphExecuteInfo.default_graph_output_tensor_shape)
+  return &default_graph_output_tensor_shape_;
+}
+inline const ::tensorflow::RemoteFusedGraphExecuteInfo_TensorShapeTypeProto& RemoteFusedGraphExecuteInfo::default_graph_output_tensor_shape(int index) const {
+  // @@protoc_insertion_point(field_get:tensorflow.RemoteFusedGraphExecuteInfo.default_graph_output_tensor_shape)
+  return default_graph_output_tensor_shape_.Get(index);
+}
+inline ::tensorflow::RemoteFusedGraphExecuteInfo_TensorShapeTypeProto* RemoteFusedGraphExecuteInfo::add_default_graph_output_tensor_shape() {
+  // @@protoc_insertion_point(field_add:tensorflow.RemoteFusedGraphExecuteInfo.default_graph_output_tensor_shape)
+  return default_graph_output_tensor_shape_.Add();
+}
+inline const ::google::protobuf::RepeatedPtrField< ::tensorflow::RemoteFusedGraphExecuteInfo_TensorShapeTypeProto >&
+RemoteFusedGraphExecuteInfo::default_graph_output_tensor_shape() const {
+  // @@protoc_insertion_point(field_list:tensorflow.RemoteFusedGraphExecuteInfo.default_graph_output_tensor_shape)
+  return default_graph_output_tensor_shape_;
+}
+
+#ifdef __GNUC__
+  #pragma GCC diagnostic pop
+#endif  // __GNUC__
+// -------------------------------------------------------------------
+
+
+// @@protoc_insertion_point(namespace_scope)
+
+}  // namespace tensorflow
+
+// @@protoc_insertion_point(global_scope)
+
+#include <google/protobuf/port_undef.inc>
+#endif  // PROTOBUF_INCLUDED_tensorflow_2fcore_2fframework_2fremote_5ffused_5fgraph_5fexecute_5finfo_2eproto
diff --git a/tensorflow/core/framework/remote_fused_graph_execute_info.proto b/tensorflow/core/framework/remote_fused_graph_execute_info.proto
new file mode 100644 (file)
index 0000000..1007272
--- /dev/null
@@ -0,0 +1,47 @@
+syntax = "proto3";
+
+package tensorflow;
+option cc_enable_arenas = true;
+option java_outer_classname = "RemoteFusedGraphExecuteInfoProto";
+option java_multiple_files = true;
+option java_package = "org.tensorflow.framework";
+option go_package = "github.com/tensorflow/tensorflow/tensorflow/go/core/framework";
+import "tensorflow/core/framework/graph.proto";
+import "tensorflow/core/framework/tensor_shape.proto";
+import "tensorflow/core/framework/types.proto";
+
+// Protocol buffer representing a handle to a tensorflow resource. Handles are
+// not valid across executions, but can be serialized back and forth from within
+// a single run.
+message RemoteFusedGraphExecuteInfo {
+
+  message TensorShapeTypeProto {
+    DataType dtype = 1;
+    TensorShapeProto shape = 2;
+  }
+
+  // Definition of remote graph
+  GraphDef remote_graph = 1;
+
+  // Remote fused graph input node name
+  repeated string graph_input_node_name = 2;
+
+  // Remote fused graph output node name
+  repeated string graph_output_node_name = 3;
+
+  // Executor's name
+  string executor_name = 4;
+
+  // Optional: Parameters given to the executor
+  bytes serialized_executor_parameters = 5;
+
+  // Optional: Default graph input tensor shape used to allocate memory
+  // before executing op
+  repeated TensorShapeTypeProto default_graph_input_tensor_shape = 6;
+
+  // Optional: Default graph input tensor shape used to allocate memory
+  // before executing op
+  // TODO(satok): Remote output tensor shape once shape information is stored
+  // in NodeDef
+  repeated TensorShapeTypeProto default_graph_output_tensor_shape = 7;
+};
diff --git a/tensorflow/core/framework/resource_handle.pb.cc b/tensorflow/core/framework/resource_handle.pb.cc
new file mode 100644 (file)
index 0000000..f03875a
--- /dev/null
@@ -0,0 +1,703 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: tensorflow/core/framework/resource_handle.proto
+
+#include "tensorflow/core/framework/resource_handle.pb.h"
+
+#include <algorithm>
+
+#include <google/protobuf/stubs/common.h>
+#include <google/protobuf/io/coded_stream.h>
+#include <google/protobuf/extension_set.h>
+#include <google/protobuf/wire_format_lite_inl.h>
+#include <google/protobuf/descriptor.h>
+#include <google/protobuf/generated_message_reflection.h>
+#include <google/protobuf/reflection_ops.h>
+#include <google/protobuf/wire_format.h>
+// @@protoc_insertion_point(includes)
+#include <google/protobuf/port_def.inc>
+
+namespace tensorflow {
+class ResourceHandleProtoDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<ResourceHandleProto> _instance;
+} _ResourceHandleProto_default_instance_;
+}  // namespace tensorflow
+static void InitDefaultsResourceHandleProto_tensorflow_2fcore_2fframework_2fresource_5fhandle_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_ResourceHandleProto_default_instance_;
+    new (ptr) ::tensorflow::ResourceHandleProto();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::ResourceHandleProto::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<0> scc_info_ResourceHandleProto_tensorflow_2fcore_2fframework_2fresource_5fhandle_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsResourceHandleProto_tensorflow_2fcore_2fframework_2fresource_5fhandle_2eproto}, {}};
+
+void InitDefaults_tensorflow_2fcore_2fframework_2fresource_5fhandle_2eproto() {
+  ::google::protobuf::internal::InitSCC(&scc_info_ResourceHandleProto_tensorflow_2fcore_2fframework_2fresource_5fhandle_2eproto.base);
+}
+
+::google::protobuf::Metadata file_level_metadata_tensorflow_2fcore_2fframework_2fresource_5fhandle_2eproto[1];
+constexpr ::google::protobuf::EnumDescriptor const** file_level_enum_descriptors_tensorflow_2fcore_2fframework_2fresource_5fhandle_2eproto = nullptr;
+constexpr ::google::protobuf::ServiceDescriptor const** file_level_service_descriptors_tensorflow_2fcore_2fframework_2fresource_5fhandle_2eproto = nullptr;
+
+const ::google::protobuf::uint32 TableStruct_tensorflow_2fcore_2fframework_2fresource_5fhandle_2eproto::offsets[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = {
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::ResourceHandleProto, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::ResourceHandleProto, device_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::ResourceHandleProto, container_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::ResourceHandleProto, name_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::ResourceHandleProto, hash_code_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::ResourceHandleProto, maybe_type_name_),
+};
+static const ::google::protobuf::internal::MigrationSchema schemas[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = {
+  { 0, -1, sizeof(::tensorflow::ResourceHandleProto)},
+};
+
+static ::google::protobuf::Message const * const file_default_instances[] = {
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_ResourceHandleProto_default_instance_),
+};
+
+::google::protobuf::internal::AssignDescriptorsTable assign_descriptors_table_tensorflow_2fcore_2fframework_2fresource_5fhandle_2eproto = {
+  {}, AddDescriptors_tensorflow_2fcore_2fframework_2fresource_5fhandle_2eproto, "tensorflow/core/framework/resource_handle.proto", schemas,
+  file_default_instances, TableStruct_tensorflow_2fcore_2fframework_2fresource_5fhandle_2eproto::offsets,
+  file_level_metadata_tensorflow_2fcore_2fframework_2fresource_5fhandle_2eproto, 1, file_level_enum_descriptors_tensorflow_2fcore_2fframework_2fresource_5fhandle_2eproto, file_level_service_descriptors_tensorflow_2fcore_2fframework_2fresource_5fhandle_2eproto,
+};
+
+::google::protobuf::internal::DescriptorTable descriptor_table_tensorflow_2fcore_2fframework_2fresource_5fhandle_2eproto = {
+  false, InitDefaults_tensorflow_2fcore_2fframework_2fresource_5fhandle_2eproto, 
+  "\n/tensorflow/core/framework/resource_han"
+  "dle.proto\022\ntensorflow\"r\n\023ResourceHandleP"
+  "roto\022\016\n\006device\030\001 \001(\t\022\021\n\tcontainer\030\002 \001(\t\022"
+  "\014\n\004name\030\003 \001(\t\022\021\n\thash_code\030\004 \001(\004\022\027\n\017mayb"
+  "e_type_name\030\005 \001(\tBn\n\030org.tensorflow.fram"
+  "eworkB\016ResourceHandleP\001Z=github.com/tens"
+  "orflow/tensorflow/tensorflow/go/core/fra"
+  "mework\370\001\001b\006proto3"
+,
+  "tensorflow/core/framework/resource_handle.proto", &assign_descriptors_table_tensorflow_2fcore_2fframework_2fresource_5fhandle_2eproto, 297,
+};
+
+void AddDescriptors_tensorflow_2fcore_2fframework_2fresource_5fhandle_2eproto() {
+  static constexpr ::google::protobuf::internal::InitFunc deps[1] =
+  {
+  };
+ ::google::protobuf::internal::AddDescriptors(&descriptor_table_tensorflow_2fcore_2fframework_2fresource_5fhandle_2eproto, deps, 0);
+}
+
+// Force running AddDescriptors() at dynamic initialization time.
+static bool dynamic_init_dummy_tensorflow_2fcore_2fframework_2fresource_5fhandle_2eproto = []() { AddDescriptors_tensorflow_2fcore_2fframework_2fresource_5fhandle_2eproto(); return true; }();
+namespace tensorflow {
+
+// ===================================================================
+
+void ResourceHandleProto::InitAsDefaultInstance() {
+}
+class ResourceHandleProto::HasBitSetters {
+ public:
+};
+
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int ResourceHandleProto::kDeviceFieldNumber;
+const int ResourceHandleProto::kContainerFieldNumber;
+const int ResourceHandleProto::kNameFieldNumber;
+const int ResourceHandleProto::kHashCodeFieldNumber;
+const int ResourceHandleProto::kMaybeTypeNameFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+ResourceHandleProto::ResourceHandleProto()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.ResourceHandleProto)
+}
+ResourceHandleProto::ResourceHandleProto(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.ResourceHandleProto)
+}
+ResourceHandleProto::ResourceHandleProto(const ResourceHandleProto& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  device_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.device().size() > 0) {
+    device_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.device(),
+      GetArenaNoVirtual());
+  }
+  container_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.container().size() > 0) {
+    container_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.container(),
+      GetArenaNoVirtual());
+  }
+  name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.name().size() > 0) {
+    name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.name(),
+      GetArenaNoVirtual());
+  }
+  maybe_type_name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.maybe_type_name().size() > 0) {
+    maybe_type_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.maybe_type_name(),
+      GetArenaNoVirtual());
+  }
+  hash_code_ = from.hash_code_;
+  // @@protoc_insertion_point(copy_constructor:tensorflow.ResourceHandleProto)
+}
+
+void ResourceHandleProto::SharedCtor() {
+  ::google::protobuf::internal::InitSCC(
+      &scc_info_ResourceHandleProto_tensorflow_2fcore_2fframework_2fresource_5fhandle_2eproto.base);
+  device_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  container_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  maybe_type_name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  hash_code_ = PROTOBUF_ULONGLONG(0);
+}
+
+ResourceHandleProto::~ResourceHandleProto() {
+  // @@protoc_insertion_point(destructor:tensorflow.ResourceHandleProto)
+  SharedDtor();
+}
+
+void ResourceHandleProto::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+  device_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  container_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  name_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  maybe_type_name_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+
+void ResourceHandleProto::ArenaDtor(void* object) {
+  ResourceHandleProto* _this = reinterpret_cast< ResourceHandleProto* >(object);
+  (void)_this;
+}
+void ResourceHandleProto::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void ResourceHandleProto::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const ResourceHandleProto& ResourceHandleProto::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_ResourceHandleProto_tensorflow_2fcore_2fframework_2fresource_5fhandle_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void ResourceHandleProto::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.ResourceHandleProto)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  device_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+  container_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+  name_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+  maybe_type_name_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+  hash_code_ = PROTOBUF_ULONGLONG(0);
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* ResourceHandleProto::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<ResourceHandleProto*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // string device = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 10) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("tensorflow.ResourceHandleProto.device");
+        parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+        ::std::string* str = msg->mutable_device();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+        break;
+      }
+      // string container = 2;
+      case 2: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 18) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("tensorflow.ResourceHandleProto.container");
+        parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+        ::std::string* str = msg->mutable_container();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+        break;
+      }
+      // string name = 3;
+      case 3: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 26) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("tensorflow.ResourceHandleProto.name");
+        parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+        ::std::string* str = msg->mutable_name();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+        break;
+      }
+      // uint64 hash_code = 4;
+      case 4: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 32) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::google::protobuf::uint64 value = val;
+        msg->set_hash_code(value);
+        break;
+      }
+      // string maybe_type_name = 5;
+      case 5: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 42) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("tensorflow.ResourceHandleProto.maybe_type_name");
+        parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+        ::std::string* str = msg->mutable_maybe_type_name();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool ResourceHandleProto::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.ResourceHandleProto)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // string device = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (10 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_device()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->device().data(), static_cast<int>(this->device().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.ResourceHandleProto.device"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // string container = 2;
+      case 2: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (18 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_container()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->container().data(), static_cast<int>(this->container().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.ResourceHandleProto.container"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // string name = 3;
+      case 3: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (26 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_name()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->name().data(), static_cast<int>(this->name().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.ResourceHandleProto.name"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // uint64 hash_code = 4;
+      case 4: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (32 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_UINT64>(
+                 input, &hash_code_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // string maybe_type_name = 5;
+      case 5: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (42 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_maybe_type_name()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->maybe_type_name().data(), static_cast<int>(this->maybe_type_name().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.ResourceHandleProto.maybe_type_name"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.ResourceHandleProto)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.ResourceHandleProto)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void ResourceHandleProto::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.ResourceHandleProto)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // string device = 1;
+  if (this->device().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->device().data(), static_cast<int>(this->device().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.ResourceHandleProto.device");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      1, this->device(), output);
+  }
+
+  // string container = 2;
+  if (this->container().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->container().data(), static_cast<int>(this->container().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.ResourceHandleProto.container");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      2, this->container(), output);
+  }
+
+  // string name = 3;
+  if (this->name().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->name().data(), static_cast<int>(this->name().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.ResourceHandleProto.name");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      3, this->name(), output);
+  }
+
+  // uint64 hash_code = 4;
+  if (this->hash_code() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteUInt64(4, this->hash_code(), output);
+  }
+
+  // string maybe_type_name = 5;
+  if (this->maybe_type_name().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->maybe_type_name().data(), static_cast<int>(this->maybe_type_name().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.ResourceHandleProto.maybe_type_name");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      5, this->maybe_type_name(), output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.ResourceHandleProto)
+}
+
+::google::protobuf::uint8* ResourceHandleProto::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.ResourceHandleProto)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // string device = 1;
+  if (this->device().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->device().data(), static_cast<int>(this->device().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.ResourceHandleProto.device");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        1, this->device(), target);
+  }
+
+  // string container = 2;
+  if (this->container().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->container().data(), static_cast<int>(this->container().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.ResourceHandleProto.container");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        2, this->container(), target);
+  }
+
+  // string name = 3;
+  if (this->name().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->name().data(), static_cast<int>(this->name().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.ResourceHandleProto.name");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        3, this->name(), target);
+  }
+
+  // uint64 hash_code = 4;
+  if (this->hash_code() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteUInt64ToArray(4, this->hash_code(), target);
+  }
+
+  // string maybe_type_name = 5;
+  if (this->maybe_type_name().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->maybe_type_name().data(), static_cast<int>(this->maybe_type_name().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.ResourceHandleProto.maybe_type_name");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        5, this->maybe_type_name(), target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.ResourceHandleProto)
+  return target;
+}
+
+size_t ResourceHandleProto::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.ResourceHandleProto)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // string device = 1;
+  if (this->device().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->device());
+  }
+
+  // string container = 2;
+  if (this->container().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->container());
+  }
+
+  // string name = 3;
+  if (this->name().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->name());
+  }
+
+  // string maybe_type_name = 5;
+  if (this->maybe_type_name().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->maybe_type_name());
+  }
+
+  // uint64 hash_code = 4;
+  if (this->hash_code() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::UInt64Size(
+        this->hash_code());
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void ResourceHandleProto::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.ResourceHandleProto)
+  GOOGLE_DCHECK_NE(&from, this);
+  const ResourceHandleProto* source =
+      ::google::protobuf::DynamicCastToGenerated<ResourceHandleProto>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.ResourceHandleProto)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.ResourceHandleProto)
+    MergeFrom(*source);
+  }
+}
+
+void ResourceHandleProto::MergeFrom(const ResourceHandleProto& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.ResourceHandleProto)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  if (from.device().size() > 0) {
+    set_device(from.device());
+  }
+  if (from.container().size() > 0) {
+    set_container(from.container());
+  }
+  if (from.name().size() > 0) {
+    set_name(from.name());
+  }
+  if (from.maybe_type_name().size() > 0) {
+    set_maybe_type_name(from.maybe_type_name());
+  }
+  if (from.hash_code() != 0) {
+    set_hash_code(from.hash_code());
+  }
+}
+
+void ResourceHandleProto::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.ResourceHandleProto)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void ResourceHandleProto::CopyFrom(const ResourceHandleProto& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.ResourceHandleProto)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool ResourceHandleProto::IsInitialized() const {
+  return true;
+}
+
+void ResourceHandleProto::Swap(ResourceHandleProto* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    ResourceHandleProto* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void ResourceHandleProto::UnsafeArenaSwap(ResourceHandleProto* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void ResourceHandleProto::InternalSwap(ResourceHandleProto* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  device_.Swap(&other->device_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+  container_.Swap(&other->container_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+  name_.Swap(&other->name_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+  maybe_type_name_.Swap(&other->maybe_type_name_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+  swap(hash_code_, other->hash_code_);
+}
+
+::google::protobuf::Metadata ResourceHandleProto::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fframework_2fresource_5fhandle_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fframework_2fresource_5fhandle_2eproto[kIndexInFileMessages];
+}
+
+
+// @@protoc_insertion_point(namespace_scope)
+}  // namespace tensorflow
+namespace google {
+namespace protobuf {
+template<> PROTOBUF_NOINLINE ::tensorflow::ResourceHandleProto* Arena::CreateMaybeMessage< ::tensorflow::ResourceHandleProto >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::ResourceHandleProto >(arena);
+}
+}  // namespace protobuf
+}  // namespace google
+
+// @@protoc_insertion_point(global_scope)
+#include <google/protobuf/port_undef.inc>
diff --git a/tensorflow/core/framework/resource_handle.pb.h b/tensorflow/core/framework/resource_handle.pb.h
new file mode 100644 (file)
index 0000000..19b6a3c
--- /dev/null
@@ -0,0 +1,621 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: tensorflow/core/framework/resource_handle.proto
+
+#ifndef PROTOBUF_INCLUDED_tensorflow_2fcore_2fframework_2fresource_5fhandle_2eproto
+#define PROTOBUF_INCLUDED_tensorflow_2fcore_2fframework_2fresource_5fhandle_2eproto
+
+#include <limits>
+#include <string>
+
+#include <google/protobuf/port_def.inc>
+#if PROTOBUF_VERSION < 3006001
+#error This file was generated by a newer version of protoc which is
+#error incompatible with your Protocol Buffer headers. Please update
+#error your headers.
+#endif
+#if 3006001 < PROTOBUF_MIN_PROTOC_VERSION
+#error This file was generated by an older version of protoc which is
+#error incompatible with your Protocol Buffer headers. Please
+#error regenerate this file with a newer version of protoc.
+#endif
+
+#include <google/protobuf/port_undef.inc>
+#include <google/protobuf/io/coded_stream.h>
+#include <google/protobuf/arena.h>
+#include <google/protobuf/arenastring.h>
+#include <google/protobuf/generated_message_table_driven.h>
+#include <google/protobuf/generated_message_util.h>
+#include <google/protobuf/inlined_string_field.h>
+#include <google/protobuf/metadata.h>
+#include <google/protobuf/message.h>
+#include <google/protobuf/repeated_field.h>  // IWYU pragma: export
+#include <google/protobuf/extension_set.h>  // IWYU pragma: export
+#include <google/protobuf/unknown_field_set.h>
+// @@protoc_insertion_point(includes)
+#include <google/protobuf/port_def.inc>
+#define PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fframework_2fresource_5fhandle_2eproto
+
+// Internal implementation detail -- do not use these members.
+struct TableStruct_tensorflow_2fcore_2fframework_2fresource_5fhandle_2eproto {
+  static const ::google::protobuf::internal::ParseTableField entries[]
+    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
+  static const ::google::protobuf::internal::AuxillaryParseTableField aux[]
+    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
+  static const ::google::protobuf::internal::ParseTable schema[1]
+    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
+  static const ::google::protobuf::internal::FieldMetadata field_metadata[];
+  static const ::google::protobuf::internal::SerializationTable serialization_table[];
+  static const ::google::protobuf::uint32 offsets[];
+};
+void AddDescriptors_tensorflow_2fcore_2fframework_2fresource_5fhandle_2eproto();
+namespace tensorflow {
+class ResourceHandleProto;
+class ResourceHandleProtoDefaultTypeInternal;
+extern ResourceHandleProtoDefaultTypeInternal _ResourceHandleProto_default_instance_;
+}  // namespace tensorflow
+namespace google {
+namespace protobuf {
+template<> ::tensorflow::ResourceHandleProto* Arena::CreateMaybeMessage<::tensorflow::ResourceHandleProto>(Arena*);
+}  // namespace protobuf
+}  // namespace google
+namespace tensorflow {
+
+// ===================================================================
+
+class ResourceHandleProto : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.ResourceHandleProto) */ {
+ public:
+  ResourceHandleProto();
+  virtual ~ResourceHandleProto();
+
+  ResourceHandleProto(const ResourceHandleProto& from);
+
+  inline ResourceHandleProto& operator=(const ResourceHandleProto& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  ResourceHandleProto(ResourceHandleProto&& from) noexcept
+    : ResourceHandleProto() {
+    *this = ::std::move(from);
+  }
+
+  inline ResourceHandleProto& operator=(ResourceHandleProto&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const ResourceHandleProto& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const ResourceHandleProto* internal_default_instance() {
+    return reinterpret_cast<const ResourceHandleProto*>(
+               &_ResourceHandleProto_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    0;
+
+  void UnsafeArenaSwap(ResourceHandleProto* other);
+  void Swap(ResourceHandleProto* other);
+  friend void swap(ResourceHandleProto& a, ResourceHandleProto& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline ResourceHandleProto* New() const final {
+    return CreateMaybeMessage<ResourceHandleProto>(NULL);
+  }
+
+  ResourceHandleProto* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<ResourceHandleProto>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const ResourceHandleProto& from);
+  void MergeFrom(const ResourceHandleProto& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(ResourceHandleProto* other);
+  protected:
+  explicit ResourceHandleProto(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // string device = 1;
+  void clear_device();
+  static const int kDeviceFieldNumber = 1;
+  const ::std::string& device() const;
+  void set_device(const ::std::string& value);
+  #if LANG_CXX11
+  void set_device(::std::string&& value);
+  #endif
+  void set_device(const char* value);
+  void set_device(const char* value, size_t size);
+  ::std::string* mutable_device();
+  ::std::string* release_device();
+  void set_allocated_device(::std::string* device);
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  ::std::string* unsafe_arena_release_device();
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  void unsafe_arena_set_allocated_device(
+      ::std::string* device);
+
+  // string container = 2;
+  void clear_container();
+  static const int kContainerFieldNumber = 2;
+  const ::std::string& container() const;
+  void set_container(const ::std::string& value);
+  #if LANG_CXX11
+  void set_container(::std::string&& value);
+  #endif
+  void set_container(const char* value);
+  void set_container(const char* value, size_t size);
+  ::std::string* mutable_container();
+  ::std::string* release_container();
+  void set_allocated_container(::std::string* container);
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  ::std::string* unsafe_arena_release_container();
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  void unsafe_arena_set_allocated_container(
+      ::std::string* container);
+
+  // string name = 3;
+  void clear_name();
+  static const int kNameFieldNumber = 3;
+  const ::std::string& name() const;
+  void set_name(const ::std::string& value);
+  #if LANG_CXX11
+  void set_name(::std::string&& value);
+  #endif
+  void set_name(const char* value);
+  void set_name(const char* value, size_t size);
+  ::std::string* mutable_name();
+  ::std::string* release_name();
+  void set_allocated_name(::std::string* name);
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  ::std::string* unsafe_arena_release_name();
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  void unsafe_arena_set_allocated_name(
+      ::std::string* name);
+
+  // string maybe_type_name = 5;
+  void clear_maybe_type_name();
+  static const int kMaybeTypeNameFieldNumber = 5;
+  const ::std::string& maybe_type_name() const;
+  void set_maybe_type_name(const ::std::string& value);
+  #if LANG_CXX11
+  void set_maybe_type_name(::std::string&& value);
+  #endif
+  void set_maybe_type_name(const char* value);
+  void set_maybe_type_name(const char* value, size_t size);
+  ::std::string* mutable_maybe_type_name();
+  ::std::string* release_maybe_type_name();
+  void set_allocated_maybe_type_name(::std::string* maybe_type_name);
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  ::std::string* unsafe_arena_release_maybe_type_name();
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  void unsafe_arena_set_allocated_maybe_type_name(
+      ::std::string* maybe_type_name);
+
+  // uint64 hash_code = 4;
+  void clear_hash_code();
+  static const int kHashCodeFieldNumber = 4;
+  ::google::protobuf::uint64 hash_code() const;
+  void set_hash_code(::google::protobuf::uint64 value);
+
+  // @@protoc_insertion_point(class_scope:tensorflow.ResourceHandleProto)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  ::google::protobuf::internal::ArenaStringPtr device_;
+  ::google::protobuf::internal::ArenaStringPtr container_;
+  ::google::protobuf::internal::ArenaStringPtr name_;
+  ::google::protobuf::internal::ArenaStringPtr maybe_type_name_;
+  ::google::protobuf::uint64 hash_code_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fframework_2fresource_5fhandle_2eproto;
+};
+// ===================================================================
+
+
+// ===================================================================
+
+#ifdef __GNUC__
+  #pragma GCC diagnostic push
+  #pragma GCC diagnostic ignored "-Wstrict-aliasing"
+#endif  // __GNUC__
+// ResourceHandleProto
+
+// string device = 1;
+inline void ResourceHandleProto::clear_device() {
+  device_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline const ::std::string& ResourceHandleProto::device() const {
+  // @@protoc_insertion_point(field_get:tensorflow.ResourceHandleProto.device)
+  return device_.Get();
+}
+inline void ResourceHandleProto::set_device(const ::std::string& value) {
+  
+  device_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set:tensorflow.ResourceHandleProto.device)
+}
+#if LANG_CXX11
+inline void ResourceHandleProto::set_device(::std::string&& value) {
+  
+  device_.Set(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.ResourceHandleProto.device)
+}
+#endif
+inline void ResourceHandleProto::set_device(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  device_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
+              GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_char:tensorflow.ResourceHandleProto.device)
+}
+inline void ResourceHandleProto::set_device(const char* value,
+    size_t size) {
+  
+  device_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
+      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.ResourceHandleProto.device)
+}
+inline ::std::string* ResourceHandleProto::mutable_device() {
+  
+  // @@protoc_insertion_point(field_mutable:tensorflow.ResourceHandleProto.device)
+  return device_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline ::std::string* ResourceHandleProto::release_device() {
+  // @@protoc_insertion_point(field_release:tensorflow.ResourceHandleProto.device)
+  
+  return device_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline void ResourceHandleProto::set_allocated_device(::std::string* device) {
+  if (device != NULL) {
+    
+  } else {
+    
+  }
+  device_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), device,
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.ResourceHandleProto.device)
+}
+inline ::std::string* ResourceHandleProto::unsafe_arena_release_device() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.ResourceHandleProto.device)
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  
+  return device_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      GetArenaNoVirtual());
+}
+inline void ResourceHandleProto::unsafe_arena_set_allocated_device(
+    ::std::string* device) {
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (device != NULL) {
+    
+  } else {
+    
+  }
+  device_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      device, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.ResourceHandleProto.device)
+}
+
+// string container = 2;
+inline void ResourceHandleProto::clear_container() {
+  container_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline const ::std::string& ResourceHandleProto::container() const {
+  // @@protoc_insertion_point(field_get:tensorflow.ResourceHandleProto.container)
+  return container_.Get();
+}
+inline void ResourceHandleProto::set_container(const ::std::string& value) {
+  
+  container_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set:tensorflow.ResourceHandleProto.container)
+}
+#if LANG_CXX11
+inline void ResourceHandleProto::set_container(::std::string&& value) {
+  
+  container_.Set(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.ResourceHandleProto.container)
+}
+#endif
+inline void ResourceHandleProto::set_container(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  container_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
+              GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_char:tensorflow.ResourceHandleProto.container)
+}
+inline void ResourceHandleProto::set_container(const char* value,
+    size_t size) {
+  
+  container_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
+      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.ResourceHandleProto.container)
+}
+inline ::std::string* ResourceHandleProto::mutable_container() {
+  
+  // @@protoc_insertion_point(field_mutable:tensorflow.ResourceHandleProto.container)
+  return container_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline ::std::string* ResourceHandleProto::release_container() {
+  // @@protoc_insertion_point(field_release:tensorflow.ResourceHandleProto.container)
+  
+  return container_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline void ResourceHandleProto::set_allocated_container(::std::string* container) {
+  if (container != NULL) {
+    
+  } else {
+    
+  }
+  container_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), container,
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.ResourceHandleProto.container)
+}
+inline ::std::string* ResourceHandleProto::unsafe_arena_release_container() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.ResourceHandleProto.container)
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  
+  return container_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      GetArenaNoVirtual());
+}
+inline void ResourceHandleProto::unsafe_arena_set_allocated_container(
+    ::std::string* container) {
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (container != NULL) {
+    
+  } else {
+    
+  }
+  container_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      container, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.ResourceHandleProto.container)
+}
+
+// string name = 3;
+inline void ResourceHandleProto::clear_name() {
+  name_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline const ::std::string& ResourceHandleProto::name() const {
+  // @@protoc_insertion_point(field_get:tensorflow.ResourceHandleProto.name)
+  return name_.Get();
+}
+inline void ResourceHandleProto::set_name(const ::std::string& value) {
+  
+  name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set:tensorflow.ResourceHandleProto.name)
+}
+#if LANG_CXX11
+inline void ResourceHandleProto::set_name(::std::string&& value) {
+  
+  name_.Set(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.ResourceHandleProto.name)
+}
+#endif
+inline void ResourceHandleProto::set_name(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
+              GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_char:tensorflow.ResourceHandleProto.name)
+}
+inline void ResourceHandleProto::set_name(const char* value,
+    size_t size) {
+  
+  name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
+      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.ResourceHandleProto.name)
+}
+inline ::std::string* ResourceHandleProto::mutable_name() {
+  
+  // @@protoc_insertion_point(field_mutable:tensorflow.ResourceHandleProto.name)
+  return name_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline ::std::string* ResourceHandleProto::release_name() {
+  // @@protoc_insertion_point(field_release:tensorflow.ResourceHandleProto.name)
+  
+  return name_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline void ResourceHandleProto::set_allocated_name(::std::string* name) {
+  if (name != NULL) {
+    
+  } else {
+    
+  }
+  name_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), name,
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.ResourceHandleProto.name)
+}
+inline ::std::string* ResourceHandleProto::unsafe_arena_release_name() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.ResourceHandleProto.name)
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  
+  return name_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      GetArenaNoVirtual());
+}
+inline void ResourceHandleProto::unsafe_arena_set_allocated_name(
+    ::std::string* name) {
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (name != NULL) {
+    
+  } else {
+    
+  }
+  name_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      name, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.ResourceHandleProto.name)
+}
+
+// uint64 hash_code = 4;
+inline void ResourceHandleProto::clear_hash_code() {
+  hash_code_ = PROTOBUF_ULONGLONG(0);
+}
+inline ::google::protobuf::uint64 ResourceHandleProto::hash_code() const {
+  // @@protoc_insertion_point(field_get:tensorflow.ResourceHandleProto.hash_code)
+  return hash_code_;
+}
+inline void ResourceHandleProto::set_hash_code(::google::protobuf::uint64 value) {
+  
+  hash_code_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.ResourceHandleProto.hash_code)
+}
+
+// string maybe_type_name = 5;
+inline void ResourceHandleProto::clear_maybe_type_name() {
+  maybe_type_name_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline const ::std::string& ResourceHandleProto::maybe_type_name() const {
+  // @@protoc_insertion_point(field_get:tensorflow.ResourceHandleProto.maybe_type_name)
+  return maybe_type_name_.Get();
+}
+inline void ResourceHandleProto::set_maybe_type_name(const ::std::string& value) {
+  
+  maybe_type_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set:tensorflow.ResourceHandleProto.maybe_type_name)
+}
+#if LANG_CXX11
+inline void ResourceHandleProto::set_maybe_type_name(::std::string&& value) {
+  
+  maybe_type_name_.Set(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.ResourceHandleProto.maybe_type_name)
+}
+#endif
+inline void ResourceHandleProto::set_maybe_type_name(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  maybe_type_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
+              GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_char:tensorflow.ResourceHandleProto.maybe_type_name)
+}
+inline void ResourceHandleProto::set_maybe_type_name(const char* value,
+    size_t size) {
+  
+  maybe_type_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
+      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.ResourceHandleProto.maybe_type_name)
+}
+inline ::std::string* ResourceHandleProto::mutable_maybe_type_name() {
+  
+  // @@protoc_insertion_point(field_mutable:tensorflow.ResourceHandleProto.maybe_type_name)
+  return maybe_type_name_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline ::std::string* ResourceHandleProto::release_maybe_type_name() {
+  // @@protoc_insertion_point(field_release:tensorflow.ResourceHandleProto.maybe_type_name)
+  
+  return maybe_type_name_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline void ResourceHandleProto::set_allocated_maybe_type_name(::std::string* maybe_type_name) {
+  if (maybe_type_name != NULL) {
+    
+  } else {
+    
+  }
+  maybe_type_name_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), maybe_type_name,
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.ResourceHandleProto.maybe_type_name)
+}
+inline ::std::string* ResourceHandleProto::unsafe_arena_release_maybe_type_name() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.ResourceHandleProto.maybe_type_name)
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  
+  return maybe_type_name_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      GetArenaNoVirtual());
+}
+inline void ResourceHandleProto::unsafe_arena_set_allocated_maybe_type_name(
+    ::std::string* maybe_type_name) {
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (maybe_type_name != NULL) {
+    
+  } else {
+    
+  }
+  maybe_type_name_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      maybe_type_name, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.ResourceHandleProto.maybe_type_name)
+}
+
+#ifdef __GNUC__
+  #pragma GCC diagnostic pop
+#endif  // __GNUC__
+
+// @@protoc_insertion_point(namespace_scope)
+
+}  // namespace tensorflow
+
+// @@protoc_insertion_point(global_scope)
+
+#include <google/protobuf/port_undef.inc>
+#endif  // PROTOBUF_INCLUDED_tensorflow_2fcore_2fframework_2fresource_5fhandle_2eproto
diff --git a/tensorflow/core/framework/resource_handle.proto b/tensorflow/core/framework/resource_handle.proto
new file mode 100644 (file)
index 0000000..a54d3d9
--- /dev/null
@@ -0,0 +1,30 @@
+syntax = "proto3";
+
+package tensorflow;
+option cc_enable_arenas = true;
+option java_outer_classname = "ResourceHandle";
+option java_multiple_files = true;
+option java_package = "org.tensorflow.framework";
+option go_package = "github.com/tensorflow/tensorflow/tensorflow/go/core/framework";
+
+// Protocol buffer representing a handle to a tensorflow resource. Handles are
+// not valid across executions, but can be serialized back and forth from within
+// a single run.
+message ResourceHandleProto {
+  // Unique name for the device containing the resource.
+  string device = 1;
+
+  // Container in which this resource is placed.
+  string container = 2;
+
+  // Unique name of this resource.
+  string name = 3;
+
+  // Hash code for the type of the resource. Is only valid in the same device
+  // and in the same execution.
+  uint64 hash_code = 4;
+
+  // For debug-only, the name of the type pointed to by this handle, if
+  // available.
+  string maybe_type_name = 5;
+};
diff --git a/tensorflow/core/framework/step_stats.pb.cc b/tensorflow/core/framework/step_stats.pb.cc
new file mode 100644 (file)
index 0000000..da1cd4a
--- /dev/null
@@ -0,0 +1,3944 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: tensorflow/core/framework/step_stats.proto
+
+#include "tensorflow/core/framework/step_stats.pb.h"
+
+#include <algorithm>
+
+#include <google/protobuf/stubs/common.h>
+#include <google/protobuf/io/coded_stream.h>
+#include <google/protobuf/extension_set.h>
+#include <google/protobuf/wire_format_lite_inl.h>
+#include <google/protobuf/descriptor.h>
+#include <google/protobuf/generated_message_reflection.h>
+#include <google/protobuf/reflection_ops.h>
+#include <google/protobuf/wire_format.h>
+// @@protoc_insertion_point(includes)
+#include <google/protobuf/port_def.inc>
+
+extern PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fframework_2fallocation_5fdescription_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_AllocationDescription_tensorflow_2fcore_2fframework_2fallocation_5fdescription_2eproto;
+extern PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fframework_2fstep_5fstats_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_AllocationRecord_tensorflow_2fcore_2fframework_2fstep_5fstats_2eproto;
+extern PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fframework_2fstep_5fstats_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_MemoryStats_tensorflow_2fcore_2fframework_2fstep_5fstats_2eproto;
+extern PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fframework_2fstep_5fstats_2eproto ::google::protobuf::internal::SCCInfo<1> scc_info_AllocatorMemoryUsed_tensorflow_2fcore_2fframework_2fstep_5fstats_2eproto;
+extern PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fframework_2fstep_5fstats_2eproto ::google::protobuf::internal::SCCInfo<1> scc_info_DeviceStepStats_tensorflow_2fcore_2fframework_2fstep_5fstats_2eproto;
+extern PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fframework_2fstep_5fstats_2eproto ::google::protobuf::internal::SCCInfo<1> scc_info_NodeOutput_tensorflow_2fcore_2fframework_2fstep_5fstats_2eproto;
+extern PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fframework_2fstep_5fstats_2eproto ::google::protobuf::internal::SCCInfo<4> scc_info_NodeExecStats_tensorflow_2fcore_2fframework_2fstep_5fstats_2eproto;
+extern PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fframework_2ftensor_5fdescription_2eproto ::google::protobuf::internal::SCCInfo<2> scc_info_TensorDescription_tensorflow_2fcore_2fframework_2ftensor_5fdescription_2eproto;
+namespace tensorflow {
+class AllocationRecordDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<AllocationRecord> _instance;
+} _AllocationRecord_default_instance_;
+class AllocatorMemoryUsedDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<AllocatorMemoryUsed> _instance;
+} _AllocatorMemoryUsed_default_instance_;
+class NodeOutputDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<NodeOutput> _instance;
+} _NodeOutput_default_instance_;
+class MemoryStatsDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<MemoryStats> _instance;
+} _MemoryStats_default_instance_;
+class NodeExecStatsDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<NodeExecStats> _instance;
+} _NodeExecStats_default_instance_;
+class DeviceStepStatsDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<DeviceStepStats> _instance;
+} _DeviceStepStats_default_instance_;
+class StepStatsDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<StepStats> _instance;
+} _StepStats_default_instance_;
+}  // namespace tensorflow
+static void InitDefaultsAllocationRecord_tensorflow_2fcore_2fframework_2fstep_5fstats_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_AllocationRecord_default_instance_;
+    new (ptr) ::tensorflow::AllocationRecord();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::AllocationRecord::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<0> scc_info_AllocationRecord_tensorflow_2fcore_2fframework_2fstep_5fstats_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsAllocationRecord_tensorflow_2fcore_2fframework_2fstep_5fstats_2eproto}, {}};
+
+static void InitDefaultsAllocatorMemoryUsed_tensorflow_2fcore_2fframework_2fstep_5fstats_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_AllocatorMemoryUsed_default_instance_;
+    new (ptr) ::tensorflow::AllocatorMemoryUsed();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::AllocatorMemoryUsed::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<1> scc_info_AllocatorMemoryUsed_tensorflow_2fcore_2fframework_2fstep_5fstats_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsAllocatorMemoryUsed_tensorflow_2fcore_2fframework_2fstep_5fstats_2eproto}, {
+      &scc_info_AllocationRecord_tensorflow_2fcore_2fframework_2fstep_5fstats_2eproto.base,}};
+
+static void InitDefaultsNodeOutput_tensorflow_2fcore_2fframework_2fstep_5fstats_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_NodeOutput_default_instance_;
+    new (ptr) ::tensorflow::NodeOutput();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::NodeOutput::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<1> scc_info_NodeOutput_tensorflow_2fcore_2fframework_2fstep_5fstats_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsNodeOutput_tensorflow_2fcore_2fframework_2fstep_5fstats_2eproto}, {
+      &scc_info_TensorDescription_tensorflow_2fcore_2fframework_2ftensor_5fdescription_2eproto.base,}};
+
+static void InitDefaultsMemoryStats_tensorflow_2fcore_2fframework_2fstep_5fstats_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_MemoryStats_default_instance_;
+    new (ptr) ::tensorflow::MemoryStats();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::MemoryStats::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<0> scc_info_MemoryStats_tensorflow_2fcore_2fframework_2fstep_5fstats_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsMemoryStats_tensorflow_2fcore_2fframework_2fstep_5fstats_2eproto}, {}};
+
+static void InitDefaultsNodeExecStats_tensorflow_2fcore_2fframework_2fstep_5fstats_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_NodeExecStats_default_instance_;
+    new (ptr) ::tensorflow::NodeExecStats();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::NodeExecStats::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<4> scc_info_NodeExecStats_tensorflow_2fcore_2fframework_2fstep_5fstats_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 4, InitDefaultsNodeExecStats_tensorflow_2fcore_2fframework_2fstep_5fstats_2eproto}, {
+      &scc_info_AllocatorMemoryUsed_tensorflow_2fcore_2fframework_2fstep_5fstats_2eproto.base,
+      &scc_info_NodeOutput_tensorflow_2fcore_2fframework_2fstep_5fstats_2eproto.base,
+      &scc_info_AllocationDescription_tensorflow_2fcore_2fframework_2fallocation_5fdescription_2eproto.base,
+      &scc_info_MemoryStats_tensorflow_2fcore_2fframework_2fstep_5fstats_2eproto.base,}};
+
+static void InitDefaultsDeviceStepStats_tensorflow_2fcore_2fframework_2fstep_5fstats_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_DeviceStepStats_default_instance_;
+    new (ptr) ::tensorflow::DeviceStepStats();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::DeviceStepStats::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<1> scc_info_DeviceStepStats_tensorflow_2fcore_2fframework_2fstep_5fstats_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsDeviceStepStats_tensorflow_2fcore_2fframework_2fstep_5fstats_2eproto}, {
+      &scc_info_NodeExecStats_tensorflow_2fcore_2fframework_2fstep_5fstats_2eproto.base,}};
+
+static void InitDefaultsStepStats_tensorflow_2fcore_2fframework_2fstep_5fstats_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_StepStats_default_instance_;
+    new (ptr) ::tensorflow::StepStats();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::StepStats::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<1> scc_info_StepStats_tensorflow_2fcore_2fframework_2fstep_5fstats_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsStepStats_tensorflow_2fcore_2fframework_2fstep_5fstats_2eproto}, {
+      &scc_info_DeviceStepStats_tensorflow_2fcore_2fframework_2fstep_5fstats_2eproto.base,}};
+
+void InitDefaults_tensorflow_2fcore_2fframework_2fstep_5fstats_2eproto() {
+  ::google::protobuf::internal::InitSCC(&scc_info_AllocationRecord_tensorflow_2fcore_2fframework_2fstep_5fstats_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_AllocatorMemoryUsed_tensorflow_2fcore_2fframework_2fstep_5fstats_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_NodeOutput_tensorflow_2fcore_2fframework_2fstep_5fstats_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_MemoryStats_tensorflow_2fcore_2fframework_2fstep_5fstats_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_NodeExecStats_tensorflow_2fcore_2fframework_2fstep_5fstats_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_DeviceStepStats_tensorflow_2fcore_2fframework_2fstep_5fstats_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_StepStats_tensorflow_2fcore_2fframework_2fstep_5fstats_2eproto.base);
+}
+
+::google::protobuf::Metadata file_level_metadata_tensorflow_2fcore_2fframework_2fstep_5fstats_2eproto[7];
+constexpr ::google::protobuf::EnumDescriptor const** file_level_enum_descriptors_tensorflow_2fcore_2fframework_2fstep_5fstats_2eproto = nullptr;
+constexpr ::google::protobuf::ServiceDescriptor const** file_level_service_descriptors_tensorflow_2fcore_2fframework_2fstep_5fstats_2eproto = nullptr;
+
+const ::google::protobuf::uint32 TableStruct_tensorflow_2fcore_2fframework_2fstep_5fstats_2eproto::offsets[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = {
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::AllocationRecord, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::AllocationRecord, alloc_micros_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::AllocationRecord, alloc_bytes_),
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::AllocatorMemoryUsed, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::AllocatorMemoryUsed, allocator_name_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::AllocatorMemoryUsed, total_bytes_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::AllocatorMemoryUsed, peak_bytes_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::AllocatorMemoryUsed, live_bytes_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::AllocatorMemoryUsed, allocation_records_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::AllocatorMemoryUsed, allocator_bytes_in_use_),
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::NodeOutput, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::NodeOutput, slot_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::NodeOutput, tensor_description_),
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::MemoryStats, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::MemoryStats, temp_memory_size_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::MemoryStats, persistent_memory_size_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::MemoryStats, persistent_tensor_alloc_ids_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::MemoryStats, device_temp_memory_size_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::MemoryStats, device_persistent_memory_size_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::MemoryStats, device_persistent_tensor_alloc_ids_),
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::NodeExecStats, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::NodeExecStats, node_name_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::NodeExecStats, all_start_micros_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::NodeExecStats, op_start_rel_micros_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::NodeExecStats, op_end_rel_micros_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::NodeExecStats, all_end_rel_micros_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::NodeExecStats, memory_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::NodeExecStats, output_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::NodeExecStats, timeline_label_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::NodeExecStats, scheduled_micros_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::NodeExecStats, thread_id_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::NodeExecStats, referenced_tensor_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::NodeExecStats, memory_stats_),
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::DeviceStepStats, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::DeviceStepStats, device_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::DeviceStepStats, node_stats_),
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::StepStats, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::StepStats, dev_stats_),
+};
+static const ::google::protobuf::internal::MigrationSchema schemas[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = {
+  { 0, -1, sizeof(::tensorflow::AllocationRecord)},
+  { 7, -1, sizeof(::tensorflow::AllocatorMemoryUsed)},
+  { 18, -1, sizeof(::tensorflow::NodeOutput)},
+  { 25, -1, sizeof(::tensorflow::MemoryStats)},
+  { 36, -1, sizeof(::tensorflow::NodeExecStats)},
+  { 53, -1, sizeof(::tensorflow::DeviceStepStats)},
+  { 60, -1, sizeof(::tensorflow::StepStats)},
+};
+
+static ::google::protobuf::Message const * const file_default_instances[] = {
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_AllocationRecord_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_AllocatorMemoryUsed_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_NodeOutput_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_MemoryStats_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_NodeExecStats_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_DeviceStepStats_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_StepStats_default_instance_),
+};
+
+::google::protobuf::internal::AssignDescriptorsTable assign_descriptors_table_tensorflow_2fcore_2fframework_2fstep_5fstats_2eproto = {
+  {}, AddDescriptors_tensorflow_2fcore_2fframework_2fstep_5fstats_2eproto, "tensorflow/core/framework/step_stats.proto", schemas,
+  file_default_instances, TableStruct_tensorflow_2fcore_2fframework_2fstep_5fstats_2eproto::offsets,
+  file_level_metadata_tensorflow_2fcore_2fframework_2fstep_5fstats_2eproto, 7, file_level_enum_descriptors_tensorflow_2fcore_2fframework_2fstep_5fstats_2eproto, file_level_service_descriptors_tensorflow_2fcore_2fframework_2fstep_5fstats_2eproto,
+};
+
+::google::protobuf::internal::DescriptorTable descriptor_table_tensorflow_2fcore_2fframework_2fstep_5fstats_2eproto = {
+  false, InitDefaults_tensorflow_2fcore_2fframework_2fstep_5fstats_2eproto, 
+  "\n*tensorflow/core/framework/step_stats.p"
+  "roto\022\ntensorflow\0326tensorflow/core/framew"
+  "ork/allocation_description.proto\0322tensor"
+  "flow/core/framework/tensor_description.p"
+  "roto\"=\n\020AllocationRecord\022\024\n\014alloc_micros"
+  "\030\001 \001(\003\022\023\n\013alloc_bytes\030\002 \001(\003\"\304\001\n\023Allocato"
+  "rMemoryUsed\022\026\n\016allocator_name\030\001 \001(\t\022\023\n\013t"
+  "otal_bytes\030\002 \001(\003\022\022\n\npeak_bytes\030\003 \001(\003\022\022\n\n"
+  "live_bytes\030\004 \001(\003\0228\n\022allocation_records\030\006"
+  " \003(\0132\034.tensorflow.AllocationRecord\022\036\n\026al"
+  "locator_bytes_in_use\030\005 \001(\003\"U\n\nNodeOutput"
+  "\022\014\n\004slot\030\001 \001(\005\0229\n\022tensor_description\030\003 \001"
+  "(\0132\035.tensorflow.TensorDescription\"\354\001\n\013Me"
+  "moryStats\022\030\n\020temp_memory_size\030\001 \001(\003\022\036\n\026p"
+  "ersistent_memory_size\030\003 \001(\003\022#\n\033persisten"
+  "t_tensor_alloc_ids\030\005 \003(\003\022#\n\027device_temp_"
+  "memory_size\030\002 \001(\003B\002\030\001\022)\n\035device_persiste"
+  "nt_memory_size\030\004 \001(\003B\002\030\001\022.\n\"device_persi"
+  "stent_tensor_alloc_ids\030\006 \003(\003B\002\030\001\"\233\003\n\rNod"
+  "eExecStats\022\021\n\tnode_name\030\001 \001(\t\022\030\n\020all_sta"
+  "rt_micros\030\002 \001(\003\022\033\n\023op_start_rel_micros\030\003"
+  " \001(\003\022\031\n\021op_end_rel_micros\030\004 \001(\003\022\032\n\022all_e"
+  "nd_rel_micros\030\005 \001(\003\022/\n\006memory\030\006 \003(\0132\037.te"
+  "nsorflow.AllocatorMemoryUsed\022&\n\006output\030\007"
+  " \003(\0132\026.tensorflow.NodeOutput\022\026\n\016timeline"
+  "_label\030\010 \001(\t\022\030\n\020scheduled_micros\030\t \001(\003\022\021"
+  "\n\tthread_id\030\n \001(\r\022<\n\021referenced_tensor\030\013"
+  " \003(\0132!.tensorflow.AllocationDescription\022"
+  "-\n\014memory_stats\030\014 \001(\0132\027.tensorflow.Memor"
+  "yStats\"P\n\017DeviceStepStats\022\016\n\006device\030\001 \001("
+  "\t\022-\n\nnode_stats\030\002 \003(\0132\031.tensorflow.NodeE"
+  "xecStats\";\n\tStepStats\022.\n\tdev_stats\030\001 \003(\013"
+  "2\033.tensorflow.DeviceStepStatsBo\n\030org.ten"
+  "sorflow.frameworkB\017StepStatsProtosP\001Z=gi"
+  "thub.com/tensorflow/tensorflow/tensorflo"
+  "w/go/core/framework\370\001\001b\006proto3"
+,
+  "tensorflow/core/framework/step_stats.proto", &assign_descriptors_table_tensorflow_2fcore_2fframework_2fstep_5fstats_2eproto, 1430,
+};
+
+void AddDescriptors_tensorflow_2fcore_2fframework_2fstep_5fstats_2eproto() {
+  static constexpr ::google::protobuf::internal::InitFunc deps[2] =
+  {
+    ::AddDescriptors_tensorflow_2fcore_2fframework_2fallocation_5fdescription_2eproto,
+    ::AddDescriptors_tensorflow_2fcore_2fframework_2ftensor_5fdescription_2eproto,
+  };
+ ::google::protobuf::internal::AddDescriptors(&descriptor_table_tensorflow_2fcore_2fframework_2fstep_5fstats_2eproto, deps, 2);
+}
+
+// Force running AddDescriptors() at dynamic initialization time.
+static bool dynamic_init_dummy_tensorflow_2fcore_2fframework_2fstep_5fstats_2eproto = []() { AddDescriptors_tensorflow_2fcore_2fframework_2fstep_5fstats_2eproto(); return true; }();
+namespace tensorflow {
+
+// ===================================================================
+
+void AllocationRecord::InitAsDefaultInstance() {
+}
+class AllocationRecord::HasBitSetters {
+ public:
+};
+
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int AllocationRecord::kAllocMicrosFieldNumber;
+const int AllocationRecord::kAllocBytesFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+AllocationRecord::AllocationRecord()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.AllocationRecord)
+}
+AllocationRecord::AllocationRecord(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.AllocationRecord)
+}
+AllocationRecord::AllocationRecord(const AllocationRecord& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::memcpy(&alloc_micros_, &from.alloc_micros_,
+    static_cast<size_t>(reinterpret_cast<char*>(&alloc_bytes_) -
+    reinterpret_cast<char*>(&alloc_micros_)) + sizeof(alloc_bytes_));
+  // @@protoc_insertion_point(copy_constructor:tensorflow.AllocationRecord)
+}
+
+void AllocationRecord::SharedCtor() {
+  ::memset(&alloc_micros_, 0, static_cast<size_t>(
+      reinterpret_cast<char*>(&alloc_bytes_) -
+      reinterpret_cast<char*>(&alloc_micros_)) + sizeof(alloc_bytes_));
+}
+
+AllocationRecord::~AllocationRecord() {
+  // @@protoc_insertion_point(destructor:tensorflow.AllocationRecord)
+  SharedDtor();
+}
+
+void AllocationRecord::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+}
+
+void AllocationRecord::ArenaDtor(void* object) {
+  AllocationRecord* _this = reinterpret_cast< AllocationRecord* >(object);
+  (void)_this;
+}
+void AllocationRecord::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void AllocationRecord::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const AllocationRecord& AllocationRecord::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_AllocationRecord_tensorflow_2fcore_2fframework_2fstep_5fstats_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void AllocationRecord::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.AllocationRecord)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  ::memset(&alloc_micros_, 0, static_cast<size_t>(
+      reinterpret_cast<char*>(&alloc_bytes_) -
+      reinterpret_cast<char*>(&alloc_micros_)) + sizeof(alloc_bytes_));
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* AllocationRecord::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<AllocationRecord*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // int64 alloc_micros = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 8) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::google::protobuf::int64 value = val;
+        msg->set_alloc_micros(value);
+        break;
+      }
+      // int64 alloc_bytes = 2;
+      case 2: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 16) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::google::protobuf::int64 value = val;
+        msg->set_alloc_bytes(value);
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool AllocationRecord::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.AllocationRecord)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // int64 alloc_micros = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (8 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>(
+                 input, &alloc_micros_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // int64 alloc_bytes = 2;
+      case 2: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (16 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>(
+                 input, &alloc_bytes_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.AllocationRecord)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.AllocationRecord)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void AllocationRecord::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.AllocationRecord)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // int64 alloc_micros = 1;
+  if (this->alloc_micros() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt64(1, this->alloc_micros(), output);
+  }
+
+  // int64 alloc_bytes = 2;
+  if (this->alloc_bytes() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt64(2, this->alloc_bytes(), output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.AllocationRecord)
+}
+
+::google::protobuf::uint8* AllocationRecord::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.AllocationRecord)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // int64 alloc_micros = 1;
+  if (this->alloc_micros() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt64ToArray(1, this->alloc_micros(), target);
+  }
+
+  // int64 alloc_bytes = 2;
+  if (this->alloc_bytes() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt64ToArray(2, this->alloc_bytes(), target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.AllocationRecord)
+  return target;
+}
+
+size_t AllocationRecord::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.AllocationRecord)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // int64 alloc_micros = 1;
+  if (this->alloc_micros() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::Int64Size(
+        this->alloc_micros());
+  }
+
+  // int64 alloc_bytes = 2;
+  if (this->alloc_bytes() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::Int64Size(
+        this->alloc_bytes());
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void AllocationRecord::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.AllocationRecord)
+  GOOGLE_DCHECK_NE(&from, this);
+  const AllocationRecord* source =
+      ::google::protobuf::DynamicCastToGenerated<AllocationRecord>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.AllocationRecord)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.AllocationRecord)
+    MergeFrom(*source);
+  }
+}
+
+void AllocationRecord::MergeFrom(const AllocationRecord& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.AllocationRecord)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  if (from.alloc_micros() != 0) {
+    set_alloc_micros(from.alloc_micros());
+  }
+  if (from.alloc_bytes() != 0) {
+    set_alloc_bytes(from.alloc_bytes());
+  }
+}
+
+void AllocationRecord::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.AllocationRecord)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void AllocationRecord::CopyFrom(const AllocationRecord& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.AllocationRecord)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool AllocationRecord::IsInitialized() const {
+  return true;
+}
+
+void AllocationRecord::Swap(AllocationRecord* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    AllocationRecord* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void AllocationRecord::UnsafeArenaSwap(AllocationRecord* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void AllocationRecord::InternalSwap(AllocationRecord* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  swap(alloc_micros_, other->alloc_micros_);
+  swap(alloc_bytes_, other->alloc_bytes_);
+}
+
+::google::protobuf::Metadata AllocationRecord::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fframework_2fstep_5fstats_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fframework_2fstep_5fstats_2eproto[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+void AllocatorMemoryUsed::InitAsDefaultInstance() {
+}
+class AllocatorMemoryUsed::HasBitSetters {
+ public:
+};
+
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int AllocatorMemoryUsed::kAllocatorNameFieldNumber;
+const int AllocatorMemoryUsed::kTotalBytesFieldNumber;
+const int AllocatorMemoryUsed::kPeakBytesFieldNumber;
+const int AllocatorMemoryUsed::kLiveBytesFieldNumber;
+const int AllocatorMemoryUsed::kAllocationRecordsFieldNumber;
+const int AllocatorMemoryUsed::kAllocatorBytesInUseFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+AllocatorMemoryUsed::AllocatorMemoryUsed()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.AllocatorMemoryUsed)
+}
+AllocatorMemoryUsed::AllocatorMemoryUsed(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena),
+  allocation_records_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.AllocatorMemoryUsed)
+}
+AllocatorMemoryUsed::AllocatorMemoryUsed(const AllocatorMemoryUsed& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL),
+      allocation_records_(from.allocation_records_) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  allocator_name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.allocator_name().size() > 0) {
+    allocator_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.allocator_name(),
+      GetArenaNoVirtual());
+  }
+  ::memcpy(&total_bytes_, &from.total_bytes_,
+    static_cast<size_t>(reinterpret_cast<char*>(&allocator_bytes_in_use_) -
+    reinterpret_cast<char*>(&total_bytes_)) + sizeof(allocator_bytes_in_use_));
+  // @@protoc_insertion_point(copy_constructor:tensorflow.AllocatorMemoryUsed)
+}
+
+void AllocatorMemoryUsed::SharedCtor() {
+  ::google::protobuf::internal::InitSCC(
+      &scc_info_AllocatorMemoryUsed_tensorflow_2fcore_2fframework_2fstep_5fstats_2eproto.base);
+  allocator_name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  ::memset(&total_bytes_, 0, static_cast<size_t>(
+      reinterpret_cast<char*>(&allocator_bytes_in_use_) -
+      reinterpret_cast<char*>(&total_bytes_)) + sizeof(allocator_bytes_in_use_));
+}
+
+AllocatorMemoryUsed::~AllocatorMemoryUsed() {
+  // @@protoc_insertion_point(destructor:tensorflow.AllocatorMemoryUsed)
+  SharedDtor();
+}
+
+void AllocatorMemoryUsed::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+  allocator_name_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+
+void AllocatorMemoryUsed::ArenaDtor(void* object) {
+  AllocatorMemoryUsed* _this = reinterpret_cast< AllocatorMemoryUsed* >(object);
+  (void)_this;
+}
+void AllocatorMemoryUsed::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void AllocatorMemoryUsed::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const AllocatorMemoryUsed& AllocatorMemoryUsed::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_AllocatorMemoryUsed_tensorflow_2fcore_2fframework_2fstep_5fstats_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void AllocatorMemoryUsed::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.AllocatorMemoryUsed)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  allocation_records_.Clear();
+  allocator_name_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+  ::memset(&total_bytes_, 0, static_cast<size_t>(
+      reinterpret_cast<char*>(&allocator_bytes_in_use_) -
+      reinterpret_cast<char*>(&total_bytes_)) + sizeof(allocator_bytes_in_use_));
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* AllocatorMemoryUsed::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<AllocatorMemoryUsed*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // string allocator_name = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 10) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("tensorflow.AllocatorMemoryUsed.allocator_name");
+        parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+        ::std::string* str = msg->mutable_allocator_name();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+        break;
+      }
+      // int64 total_bytes = 2;
+      case 2: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 16) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::google::protobuf::int64 value = val;
+        msg->set_total_bytes(value);
+        break;
+      }
+      // int64 peak_bytes = 3;
+      case 3: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 24) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::google::protobuf::int64 value = val;
+        msg->set_peak_bytes(value);
+        break;
+      }
+      // int64 live_bytes = 4;
+      case 4: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 32) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::google::protobuf::int64 value = val;
+        msg->set_live_bytes(value);
+        break;
+      }
+      // int64 allocator_bytes_in_use = 5;
+      case 5: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 40) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::google::protobuf::int64 value = val;
+        msg->set_allocator_bytes_in_use(value);
+        break;
+      }
+      // repeated .tensorflow.AllocationRecord allocation_records = 6;
+      case 6: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 50) goto handle_unusual;
+        do {
+          ptr = Varint::Parse32Inline(ptr, &size);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          parser_till_end = ::tensorflow::AllocationRecord::_InternalParse;
+          object = msg->add_allocation_records();
+          if (size > end - ptr) goto len_delim_till_end;
+          auto newend = ptr + size;
+          bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                         ptr, newend);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          ptr = newend;
+          if (ptr >= end) break;
+        } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 50 && (ptr += 1));
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool AllocatorMemoryUsed::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.AllocatorMemoryUsed)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // string allocator_name = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (10 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_allocator_name()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->allocator_name().data(), static_cast<int>(this->allocator_name().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.AllocatorMemoryUsed.allocator_name"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // int64 total_bytes = 2;
+      case 2: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (16 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>(
+                 input, &total_bytes_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // int64 peak_bytes = 3;
+      case 3: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (24 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>(
+                 input, &peak_bytes_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // int64 live_bytes = 4;
+      case 4: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (32 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>(
+                 input, &live_bytes_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // int64 allocator_bytes_in_use = 5;
+      case 5: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (40 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>(
+                 input, &allocator_bytes_in_use_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // repeated .tensorflow.AllocationRecord allocation_records = 6;
+      case 6: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (50 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+                input, add_allocation_records()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.AllocatorMemoryUsed)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.AllocatorMemoryUsed)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void AllocatorMemoryUsed::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.AllocatorMemoryUsed)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // string allocator_name = 1;
+  if (this->allocator_name().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->allocator_name().data(), static_cast<int>(this->allocator_name().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.AllocatorMemoryUsed.allocator_name");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      1, this->allocator_name(), output);
+  }
+
+  // int64 total_bytes = 2;
+  if (this->total_bytes() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt64(2, this->total_bytes(), output);
+  }
+
+  // int64 peak_bytes = 3;
+  if (this->peak_bytes() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt64(3, this->peak_bytes(), output);
+  }
+
+  // int64 live_bytes = 4;
+  if (this->live_bytes() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt64(4, this->live_bytes(), output);
+  }
+
+  // int64 allocator_bytes_in_use = 5;
+  if (this->allocator_bytes_in_use() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt64(5, this->allocator_bytes_in_use(), output);
+  }
+
+  // repeated .tensorflow.AllocationRecord allocation_records = 6;
+  for (unsigned int i = 0,
+      n = static_cast<unsigned int>(this->allocation_records_size()); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      6,
+      this->allocation_records(static_cast<int>(i)),
+      output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.AllocatorMemoryUsed)
+}
+
+::google::protobuf::uint8* AllocatorMemoryUsed::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.AllocatorMemoryUsed)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // string allocator_name = 1;
+  if (this->allocator_name().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->allocator_name().data(), static_cast<int>(this->allocator_name().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.AllocatorMemoryUsed.allocator_name");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        1, this->allocator_name(), target);
+  }
+
+  // int64 total_bytes = 2;
+  if (this->total_bytes() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt64ToArray(2, this->total_bytes(), target);
+  }
+
+  // int64 peak_bytes = 3;
+  if (this->peak_bytes() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt64ToArray(3, this->peak_bytes(), target);
+  }
+
+  // int64 live_bytes = 4;
+  if (this->live_bytes() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt64ToArray(4, this->live_bytes(), target);
+  }
+
+  // int64 allocator_bytes_in_use = 5;
+  if (this->allocator_bytes_in_use() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt64ToArray(5, this->allocator_bytes_in_use(), target);
+  }
+
+  // repeated .tensorflow.AllocationRecord allocation_records = 6;
+  for (unsigned int i = 0,
+      n = static_cast<unsigned int>(this->allocation_records_size()); i < n; i++) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        6, this->allocation_records(static_cast<int>(i)), deterministic, target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.AllocatorMemoryUsed)
+  return target;
+}
+
+size_t AllocatorMemoryUsed::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.AllocatorMemoryUsed)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // repeated .tensorflow.AllocationRecord allocation_records = 6;
+  {
+    unsigned int count = static_cast<unsigned int>(this->allocation_records_size());
+    total_size += 1UL * count;
+    for (unsigned int i = 0; i < count; i++) {
+      total_size +=
+        ::google::protobuf::internal::WireFormatLite::MessageSize(
+          this->allocation_records(static_cast<int>(i)));
+    }
+  }
+
+  // string allocator_name = 1;
+  if (this->allocator_name().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->allocator_name());
+  }
+
+  // int64 total_bytes = 2;
+  if (this->total_bytes() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::Int64Size(
+        this->total_bytes());
+  }
+
+  // int64 peak_bytes = 3;
+  if (this->peak_bytes() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::Int64Size(
+        this->peak_bytes());
+  }
+
+  // int64 live_bytes = 4;
+  if (this->live_bytes() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::Int64Size(
+        this->live_bytes());
+  }
+
+  // int64 allocator_bytes_in_use = 5;
+  if (this->allocator_bytes_in_use() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::Int64Size(
+        this->allocator_bytes_in_use());
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void AllocatorMemoryUsed::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.AllocatorMemoryUsed)
+  GOOGLE_DCHECK_NE(&from, this);
+  const AllocatorMemoryUsed* source =
+      ::google::protobuf::DynamicCastToGenerated<AllocatorMemoryUsed>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.AllocatorMemoryUsed)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.AllocatorMemoryUsed)
+    MergeFrom(*source);
+  }
+}
+
+void AllocatorMemoryUsed::MergeFrom(const AllocatorMemoryUsed& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.AllocatorMemoryUsed)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  allocation_records_.MergeFrom(from.allocation_records_);
+  if (from.allocator_name().size() > 0) {
+    set_allocator_name(from.allocator_name());
+  }
+  if (from.total_bytes() != 0) {
+    set_total_bytes(from.total_bytes());
+  }
+  if (from.peak_bytes() != 0) {
+    set_peak_bytes(from.peak_bytes());
+  }
+  if (from.live_bytes() != 0) {
+    set_live_bytes(from.live_bytes());
+  }
+  if (from.allocator_bytes_in_use() != 0) {
+    set_allocator_bytes_in_use(from.allocator_bytes_in_use());
+  }
+}
+
+void AllocatorMemoryUsed::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.AllocatorMemoryUsed)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void AllocatorMemoryUsed::CopyFrom(const AllocatorMemoryUsed& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.AllocatorMemoryUsed)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool AllocatorMemoryUsed::IsInitialized() const {
+  return true;
+}
+
+void AllocatorMemoryUsed::Swap(AllocatorMemoryUsed* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    AllocatorMemoryUsed* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void AllocatorMemoryUsed::UnsafeArenaSwap(AllocatorMemoryUsed* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void AllocatorMemoryUsed::InternalSwap(AllocatorMemoryUsed* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  CastToBase(&allocation_records_)->InternalSwap(CastToBase(&other->allocation_records_));
+  allocator_name_.Swap(&other->allocator_name_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+  swap(total_bytes_, other->total_bytes_);
+  swap(peak_bytes_, other->peak_bytes_);
+  swap(live_bytes_, other->live_bytes_);
+  swap(allocator_bytes_in_use_, other->allocator_bytes_in_use_);
+}
+
+::google::protobuf::Metadata AllocatorMemoryUsed::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fframework_2fstep_5fstats_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fframework_2fstep_5fstats_2eproto[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+void NodeOutput::InitAsDefaultInstance() {
+  ::tensorflow::_NodeOutput_default_instance_._instance.get_mutable()->tensor_description_ = const_cast< ::tensorflow::TensorDescription*>(
+      ::tensorflow::TensorDescription::internal_default_instance());
+}
+class NodeOutput::HasBitSetters {
+ public:
+  static const ::tensorflow::TensorDescription& tensor_description(const NodeOutput* msg);
+};
+
+const ::tensorflow::TensorDescription&
+NodeOutput::HasBitSetters::tensor_description(const NodeOutput* msg) {
+  return *msg->tensor_description_;
+}
+void NodeOutput::unsafe_arena_set_allocated_tensor_description(
+    ::tensorflow::TensorDescription* tensor_description) {
+  if (GetArenaNoVirtual() == NULL) {
+    delete tensor_description_;
+  }
+  tensor_description_ = tensor_description;
+  if (tensor_description) {
+    
+  } else {
+    
+  }
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.NodeOutput.tensor_description)
+}
+void NodeOutput::clear_tensor_description() {
+  if (GetArenaNoVirtual() == NULL && tensor_description_ != NULL) {
+    delete tensor_description_;
+  }
+  tensor_description_ = NULL;
+}
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int NodeOutput::kSlotFieldNumber;
+const int NodeOutput::kTensorDescriptionFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+NodeOutput::NodeOutput()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.NodeOutput)
+}
+NodeOutput::NodeOutput(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.NodeOutput)
+}
+NodeOutput::NodeOutput(const NodeOutput& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  if (from.has_tensor_description()) {
+    tensor_description_ = new ::tensorflow::TensorDescription(*from.tensor_description_);
+  } else {
+    tensor_description_ = NULL;
+  }
+  slot_ = from.slot_;
+  // @@protoc_insertion_point(copy_constructor:tensorflow.NodeOutput)
+}
+
+void NodeOutput::SharedCtor() {
+  ::google::protobuf::internal::InitSCC(
+      &scc_info_NodeOutput_tensorflow_2fcore_2fframework_2fstep_5fstats_2eproto.base);
+  ::memset(&tensor_description_, 0, static_cast<size_t>(
+      reinterpret_cast<char*>(&slot_) -
+      reinterpret_cast<char*>(&tensor_description_)) + sizeof(slot_));
+}
+
+NodeOutput::~NodeOutput() {
+  // @@protoc_insertion_point(destructor:tensorflow.NodeOutput)
+  SharedDtor();
+}
+
+void NodeOutput::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+  if (this != internal_default_instance()) delete tensor_description_;
+}
+
+void NodeOutput::ArenaDtor(void* object) {
+  NodeOutput* _this = reinterpret_cast< NodeOutput* >(object);
+  (void)_this;
+}
+void NodeOutput::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void NodeOutput::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const NodeOutput& NodeOutput::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_NodeOutput_tensorflow_2fcore_2fframework_2fstep_5fstats_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void NodeOutput::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.NodeOutput)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  if (GetArenaNoVirtual() == NULL && tensor_description_ != NULL) {
+    delete tensor_description_;
+  }
+  tensor_description_ = NULL;
+  slot_ = 0;
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* NodeOutput::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<NodeOutput*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // int32 slot = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 8) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::google::protobuf::int32 value = val;
+        msg->set_slot(value);
+        break;
+      }
+      // .tensorflow.TensorDescription tensor_description = 3;
+      case 3: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 26) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        parser_till_end = ::tensorflow::TensorDescription::_InternalParse;
+        object = msg->mutable_tensor_description();
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                       ptr, newend);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+        ptr = newend;
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool NodeOutput::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.NodeOutput)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // int32 slot = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (8 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
+                 input, &slot_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // .tensorflow.TensorDescription tensor_description = 3;
+      case 3: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (26 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+               input, mutable_tensor_description()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.NodeOutput)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.NodeOutput)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void NodeOutput::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.NodeOutput)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // int32 slot = 1;
+  if (this->slot() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt32(1, this->slot(), output);
+  }
+
+  // .tensorflow.TensorDescription tensor_description = 3;
+  if (this->has_tensor_description()) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      3, HasBitSetters::tensor_description(this), output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.NodeOutput)
+}
+
+::google::protobuf::uint8* NodeOutput::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.NodeOutput)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // int32 slot = 1;
+  if (this->slot() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt32ToArray(1, this->slot(), target);
+  }
+
+  // .tensorflow.TensorDescription tensor_description = 3;
+  if (this->has_tensor_description()) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        3, HasBitSetters::tensor_description(this), deterministic, target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.NodeOutput)
+  return target;
+}
+
+size_t NodeOutput::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.NodeOutput)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // .tensorflow.TensorDescription tensor_description = 3;
+  if (this->has_tensor_description()) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::MessageSize(
+        *tensor_description_);
+  }
+
+  // int32 slot = 1;
+  if (this->slot() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::Int32Size(
+        this->slot());
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void NodeOutput::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.NodeOutput)
+  GOOGLE_DCHECK_NE(&from, this);
+  const NodeOutput* source =
+      ::google::protobuf::DynamicCastToGenerated<NodeOutput>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.NodeOutput)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.NodeOutput)
+    MergeFrom(*source);
+  }
+}
+
+void NodeOutput::MergeFrom(const NodeOutput& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.NodeOutput)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  if (from.has_tensor_description()) {
+    mutable_tensor_description()->::tensorflow::TensorDescription::MergeFrom(from.tensor_description());
+  }
+  if (from.slot() != 0) {
+    set_slot(from.slot());
+  }
+}
+
+void NodeOutput::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.NodeOutput)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void NodeOutput::CopyFrom(const NodeOutput& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.NodeOutput)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool NodeOutput::IsInitialized() const {
+  return true;
+}
+
+void NodeOutput::Swap(NodeOutput* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    NodeOutput* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void NodeOutput::UnsafeArenaSwap(NodeOutput* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void NodeOutput::InternalSwap(NodeOutput* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  swap(tensor_description_, other->tensor_description_);
+  swap(slot_, other->slot_);
+}
+
+::google::protobuf::Metadata NodeOutput::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fframework_2fstep_5fstats_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fframework_2fstep_5fstats_2eproto[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+void MemoryStats::InitAsDefaultInstance() {
+}
+class MemoryStats::HasBitSetters {
+ public:
+};
+
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int MemoryStats::kTempMemorySizeFieldNumber;
+const int MemoryStats::kPersistentMemorySizeFieldNumber;
+const int MemoryStats::kPersistentTensorAllocIdsFieldNumber;
+const int MemoryStats::kDeviceTempMemorySizeFieldNumber;
+const int MemoryStats::kDevicePersistentMemorySizeFieldNumber;
+const int MemoryStats::kDevicePersistentTensorAllocIdsFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+MemoryStats::MemoryStats()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.MemoryStats)
+}
+MemoryStats::MemoryStats(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena),
+  persistent_tensor_alloc_ids_(arena),
+  device_persistent_tensor_alloc_ids_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.MemoryStats)
+}
+MemoryStats::MemoryStats(const MemoryStats& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL),
+      persistent_tensor_alloc_ids_(from.persistent_tensor_alloc_ids_),
+      device_persistent_tensor_alloc_ids_(from.device_persistent_tensor_alloc_ids_) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::memcpy(&temp_memory_size_, &from.temp_memory_size_,
+    static_cast<size_t>(reinterpret_cast<char*>(&device_persistent_memory_size_) -
+    reinterpret_cast<char*>(&temp_memory_size_)) + sizeof(device_persistent_memory_size_));
+  // @@protoc_insertion_point(copy_constructor:tensorflow.MemoryStats)
+}
+
+void MemoryStats::SharedCtor() {
+  ::memset(&temp_memory_size_, 0, static_cast<size_t>(
+      reinterpret_cast<char*>(&device_persistent_memory_size_) -
+      reinterpret_cast<char*>(&temp_memory_size_)) + sizeof(device_persistent_memory_size_));
+}
+
+MemoryStats::~MemoryStats() {
+  // @@protoc_insertion_point(destructor:tensorflow.MemoryStats)
+  SharedDtor();
+}
+
+void MemoryStats::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+}
+
+void MemoryStats::ArenaDtor(void* object) {
+  MemoryStats* _this = reinterpret_cast< MemoryStats* >(object);
+  (void)_this;
+}
+void MemoryStats::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void MemoryStats::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const MemoryStats& MemoryStats::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_MemoryStats_tensorflow_2fcore_2fframework_2fstep_5fstats_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void MemoryStats::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.MemoryStats)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  persistent_tensor_alloc_ids_.Clear();
+  device_persistent_tensor_alloc_ids_.Clear();
+  ::memset(&temp_memory_size_, 0, static_cast<size_t>(
+      reinterpret_cast<char*>(&device_persistent_memory_size_) -
+      reinterpret_cast<char*>(&temp_memory_size_)) + sizeof(device_persistent_memory_size_));
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* MemoryStats::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<MemoryStats*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // int64 temp_memory_size = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 8) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::google::protobuf::int64 value = val;
+        msg->set_temp_memory_size(value);
+        break;
+      }
+      // int64 device_temp_memory_size = 2 [deprecated = true];
+      case 2: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 16) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::google::protobuf::int64 value = val;
+        msg->set_device_temp_memory_size(value);
+        break;
+      }
+      // int64 persistent_memory_size = 3;
+      case 3: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 24) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::google::protobuf::int64 value = val;
+        msg->set_persistent_memory_size(value);
+        break;
+      }
+      // int64 device_persistent_memory_size = 4 [deprecated = true];
+      case 4: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 32) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::google::protobuf::int64 value = val;
+        msg->set_device_persistent_memory_size(value);
+        break;
+      }
+      // repeated int64 persistent_tensor_alloc_ids = 5;
+      case 5: {
+        if (static_cast<::google::protobuf::uint8>(tag) == 42) {
+          ptr = Varint::Parse32Inline(ptr, &size);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          parser_till_end = ::google::protobuf::internal::PackedInt64Parser;
+          object = msg->mutable_persistent_tensor_alloc_ids();
+          if (size > end - ptr) goto len_delim_till_end;
+          auto newend = ptr + size;
+          if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+          break;
+        } else if (static_cast<::google::protobuf::uint8>(tag) != 40) goto handle_unusual;
+        do {
+          ::google::protobuf::uint64 val;
+          ptr = Varint::Parse64(ptr, &val);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          ::google::protobuf::int64 value = val;
+          msg->add_persistent_tensor_alloc_ids(value);
+          if (ptr >= end) break;
+        } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 40 && (ptr += 1));
+        break;
+      }
+      // repeated int64 device_persistent_tensor_alloc_ids = 6 [deprecated = true];
+      case 6: {
+        if (static_cast<::google::protobuf::uint8>(tag) == 50) {
+          ptr = Varint::Parse32Inline(ptr, &size);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          parser_till_end = ::google::protobuf::internal::PackedInt64Parser;
+          object = msg->mutable_device_persistent_tensor_alloc_ids();
+          if (size > end - ptr) goto len_delim_till_end;
+          auto newend = ptr + size;
+          if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+          break;
+        } else if (static_cast<::google::protobuf::uint8>(tag) != 48) goto handle_unusual;
+        do {
+          ::google::protobuf::uint64 val;
+          ptr = Varint::Parse64(ptr, &val);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          ::google::protobuf::int64 value = val;
+          msg->add_device_persistent_tensor_alloc_ids(value);
+          if (ptr >= end) break;
+        } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 48 && (ptr += 1));
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool MemoryStats::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.MemoryStats)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // int64 temp_memory_size = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (8 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>(
+                 input, &temp_memory_size_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // int64 device_temp_memory_size = 2 [deprecated = true];
+      case 2: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (16 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>(
+                 input, &device_temp_memory_size_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // int64 persistent_memory_size = 3;
+      case 3: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (24 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>(
+                 input, &persistent_memory_size_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // int64 device_persistent_memory_size = 4 [deprecated = true];
+      case 4: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (32 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>(
+                 input, &device_persistent_memory_size_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // repeated int64 persistent_tensor_alloc_ids = 5;
+      case 5: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (42 & 0xFF)) {
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPackedPrimitive<
+                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>(
+                 input, this->mutable_persistent_tensor_alloc_ids())));
+        } else if (static_cast< ::google::protobuf::uint8>(tag) == (40 & 0xFF)) {
+          DO_((::google::protobuf::internal::WireFormatLite::ReadRepeatedPrimitiveNoInline<
+                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>(
+                 1, 42u, input, this->mutable_persistent_tensor_alloc_ids())));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // repeated int64 device_persistent_tensor_alloc_ids = 6 [deprecated = true];
+      case 6: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (50 & 0xFF)) {
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPackedPrimitive<
+                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>(
+                 input, this->mutable_device_persistent_tensor_alloc_ids())));
+        } else if (static_cast< ::google::protobuf::uint8>(tag) == (48 & 0xFF)) {
+          DO_((::google::protobuf::internal::WireFormatLite::ReadRepeatedPrimitiveNoInline<
+                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>(
+                 1, 50u, input, this->mutable_device_persistent_tensor_alloc_ids())));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.MemoryStats)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.MemoryStats)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void MemoryStats::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.MemoryStats)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // int64 temp_memory_size = 1;
+  if (this->temp_memory_size() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt64(1, this->temp_memory_size(), output);
+  }
+
+  // int64 device_temp_memory_size = 2 [deprecated = true];
+  if (this->device_temp_memory_size() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt64(2, this->device_temp_memory_size(), output);
+  }
+
+  // int64 persistent_memory_size = 3;
+  if (this->persistent_memory_size() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt64(3, this->persistent_memory_size(), output);
+  }
+
+  // int64 device_persistent_memory_size = 4 [deprecated = true];
+  if (this->device_persistent_memory_size() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt64(4, this->device_persistent_memory_size(), output);
+  }
+
+  // repeated int64 persistent_tensor_alloc_ids = 5;
+  if (this->persistent_tensor_alloc_ids_size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteTag(5, ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED, output);
+    output->WriteVarint32(_persistent_tensor_alloc_ids_cached_byte_size_.load(
+        std::memory_order_relaxed));
+  }
+  for (int i = 0, n = this->persistent_tensor_alloc_ids_size(); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt64NoTag(
+      this->persistent_tensor_alloc_ids(i), output);
+  }
+
+  // repeated int64 device_persistent_tensor_alloc_ids = 6 [deprecated = true];
+  if (this->device_persistent_tensor_alloc_ids_size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteTag(6, ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED, output);
+    output->WriteVarint32(_device_persistent_tensor_alloc_ids_cached_byte_size_.load(
+        std::memory_order_relaxed));
+  }
+  for (int i = 0, n = this->device_persistent_tensor_alloc_ids_size(); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt64NoTag(
+      this->device_persistent_tensor_alloc_ids(i), output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.MemoryStats)
+}
+
+::google::protobuf::uint8* MemoryStats::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.MemoryStats)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // int64 temp_memory_size = 1;
+  if (this->temp_memory_size() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt64ToArray(1, this->temp_memory_size(), target);
+  }
+
+  // int64 device_temp_memory_size = 2 [deprecated = true];
+  if (this->device_temp_memory_size() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt64ToArray(2, this->device_temp_memory_size(), target);
+  }
+
+  // int64 persistent_memory_size = 3;
+  if (this->persistent_memory_size() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt64ToArray(3, this->persistent_memory_size(), target);
+  }
+
+  // int64 device_persistent_memory_size = 4 [deprecated = true];
+  if (this->device_persistent_memory_size() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt64ToArray(4, this->device_persistent_memory_size(), target);
+  }
+
+  // repeated int64 persistent_tensor_alloc_ids = 5;
+  if (this->persistent_tensor_alloc_ids_size() > 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteTagToArray(
+      5,
+      ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED,
+      target);
+    target = ::google::protobuf::io::CodedOutputStream::WriteVarint32ToArray(
+        _persistent_tensor_alloc_ids_cached_byte_size_.load(std::memory_order_relaxed),
+         target);
+    target = ::google::protobuf::internal::WireFormatLite::
+      WriteInt64NoTagToArray(this->persistent_tensor_alloc_ids_, target);
+  }
+
+  // repeated int64 device_persistent_tensor_alloc_ids = 6 [deprecated = true];
+  if (this->device_persistent_tensor_alloc_ids_size() > 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteTagToArray(
+      6,
+      ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED,
+      target);
+    target = ::google::protobuf::io::CodedOutputStream::WriteVarint32ToArray(
+        _device_persistent_tensor_alloc_ids_cached_byte_size_.load(std::memory_order_relaxed),
+         target);
+    target = ::google::protobuf::internal::WireFormatLite::
+      WriteInt64NoTagToArray(this->device_persistent_tensor_alloc_ids_, target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.MemoryStats)
+  return target;
+}
+
+size_t MemoryStats::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.MemoryStats)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // repeated int64 persistent_tensor_alloc_ids = 5;
+  {
+    size_t data_size = ::google::protobuf::internal::WireFormatLite::
+      Int64Size(this->persistent_tensor_alloc_ids_);
+    if (data_size > 0) {
+      total_size += 1 +
+        ::google::protobuf::internal::WireFormatLite::Int32Size(
+            static_cast<::google::protobuf::int32>(data_size));
+    }
+    int cached_size = ::google::protobuf::internal::ToCachedSize(data_size);
+    _persistent_tensor_alloc_ids_cached_byte_size_.store(cached_size,
+                                    std::memory_order_relaxed);
+    total_size += data_size;
+  }
+
+  // repeated int64 device_persistent_tensor_alloc_ids = 6 [deprecated = true];
+  {
+    size_t data_size = ::google::protobuf::internal::WireFormatLite::
+      Int64Size(this->device_persistent_tensor_alloc_ids_);
+    if (data_size > 0) {
+      total_size += 1 +
+        ::google::protobuf::internal::WireFormatLite::Int32Size(
+            static_cast<::google::protobuf::int32>(data_size));
+    }
+    int cached_size = ::google::protobuf::internal::ToCachedSize(data_size);
+    _device_persistent_tensor_alloc_ids_cached_byte_size_.store(cached_size,
+                                    std::memory_order_relaxed);
+    total_size += data_size;
+  }
+
+  // int64 temp_memory_size = 1;
+  if (this->temp_memory_size() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::Int64Size(
+        this->temp_memory_size());
+  }
+
+  // int64 device_temp_memory_size = 2 [deprecated = true];
+  if (this->device_temp_memory_size() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::Int64Size(
+        this->device_temp_memory_size());
+  }
+
+  // int64 persistent_memory_size = 3;
+  if (this->persistent_memory_size() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::Int64Size(
+        this->persistent_memory_size());
+  }
+
+  // int64 device_persistent_memory_size = 4 [deprecated = true];
+  if (this->device_persistent_memory_size() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::Int64Size(
+        this->device_persistent_memory_size());
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void MemoryStats::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.MemoryStats)
+  GOOGLE_DCHECK_NE(&from, this);
+  const MemoryStats* source =
+      ::google::protobuf::DynamicCastToGenerated<MemoryStats>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.MemoryStats)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.MemoryStats)
+    MergeFrom(*source);
+  }
+}
+
+void MemoryStats::MergeFrom(const MemoryStats& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.MemoryStats)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  persistent_tensor_alloc_ids_.MergeFrom(from.persistent_tensor_alloc_ids_);
+  device_persistent_tensor_alloc_ids_.MergeFrom(from.device_persistent_tensor_alloc_ids_);
+  if (from.temp_memory_size() != 0) {
+    set_temp_memory_size(from.temp_memory_size());
+  }
+  if (from.device_temp_memory_size() != 0) {
+    set_device_temp_memory_size(from.device_temp_memory_size());
+  }
+  if (from.persistent_memory_size() != 0) {
+    set_persistent_memory_size(from.persistent_memory_size());
+  }
+  if (from.device_persistent_memory_size() != 0) {
+    set_device_persistent_memory_size(from.device_persistent_memory_size());
+  }
+}
+
+void MemoryStats::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.MemoryStats)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void MemoryStats::CopyFrom(const MemoryStats& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.MemoryStats)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool MemoryStats::IsInitialized() const {
+  return true;
+}
+
+void MemoryStats::Swap(MemoryStats* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    MemoryStats* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void MemoryStats::UnsafeArenaSwap(MemoryStats* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void MemoryStats::InternalSwap(MemoryStats* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  persistent_tensor_alloc_ids_.InternalSwap(&other->persistent_tensor_alloc_ids_);
+  device_persistent_tensor_alloc_ids_.InternalSwap(&other->device_persistent_tensor_alloc_ids_);
+  swap(temp_memory_size_, other->temp_memory_size_);
+  swap(device_temp_memory_size_, other->device_temp_memory_size_);
+  swap(persistent_memory_size_, other->persistent_memory_size_);
+  swap(device_persistent_memory_size_, other->device_persistent_memory_size_);
+}
+
+::google::protobuf::Metadata MemoryStats::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fframework_2fstep_5fstats_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fframework_2fstep_5fstats_2eproto[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+void NodeExecStats::InitAsDefaultInstance() {
+  ::tensorflow::_NodeExecStats_default_instance_._instance.get_mutable()->memory_stats_ = const_cast< ::tensorflow::MemoryStats*>(
+      ::tensorflow::MemoryStats::internal_default_instance());
+}
+class NodeExecStats::HasBitSetters {
+ public:
+  static const ::tensorflow::MemoryStats& memory_stats(const NodeExecStats* msg);
+};
+
+const ::tensorflow::MemoryStats&
+NodeExecStats::HasBitSetters::memory_stats(const NodeExecStats* msg) {
+  return *msg->memory_stats_;
+}
+void NodeExecStats::clear_referenced_tensor() {
+  referenced_tensor_.Clear();
+}
+void NodeExecStats::unsafe_arena_set_allocated_memory_stats(
+    ::tensorflow::MemoryStats* memory_stats) {
+  if (GetArenaNoVirtual() == NULL) {
+    delete memory_stats_;
+  }
+  memory_stats_ = memory_stats;
+  if (memory_stats) {
+    
+  } else {
+    
+  }
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.NodeExecStats.memory_stats)
+}
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int NodeExecStats::kNodeNameFieldNumber;
+const int NodeExecStats::kAllStartMicrosFieldNumber;
+const int NodeExecStats::kOpStartRelMicrosFieldNumber;
+const int NodeExecStats::kOpEndRelMicrosFieldNumber;
+const int NodeExecStats::kAllEndRelMicrosFieldNumber;
+const int NodeExecStats::kMemoryFieldNumber;
+const int NodeExecStats::kOutputFieldNumber;
+const int NodeExecStats::kTimelineLabelFieldNumber;
+const int NodeExecStats::kScheduledMicrosFieldNumber;
+const int NodeExecStats::kThreadIdFieldNumber;
+const int NodeExecStats::kReferencedTensorFieldNumber;
+const int NodeExecStats::kMemoryStatsFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+NodeExecStats::NodeExecStats()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.NodeExecStats)
+}
+NodeExecStats::NodeExecStats(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena),
+  memory_(arena),
+  output_(arena),
+  referenced_tensor_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.NodeExecStats)
+}
+NodeExecStats::NodeExecStats(const NodeExecStats& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL),
+      memory_(from.memory_),
+      output_(from.output_),
+      referenced_tensor_(from.referenced_tensor_) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  node_name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.node_name().size() > 0) {
+    node_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.node_name(),
+      GetArenaNoVirtual());
+  }
+  timeline_label_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.timeline_label().size() > 0) {
+    timeline_label_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.timeline_label(),
+      GetArenaNoVirtual());
+  }
+  if (from.has_memory_stats()) {
+    memory_stats_ = new ::tensorflow::MemoryStats(*from.memory_stats_);
+  } else {
+    memory_stats_ = NULL;
+  }
+  ::memcpy(&all_start_micros_, &from.all_start_micros_,
+    static_cast<size_t>(reinterpret_cast<char*>(&thread_id_) -
+    reinterpret_cast<char*>(&all_start_micros_)) + sizeof(thread_id_));
+  // @@protoc_insertion_point(copy_constructor:tensorflow.NodeExecStats)
+}
+
+void NodeExecStats::SharedCtor() {
+  ::google::protobuf::internal::InitSCC(
+      &scc_info_NodeExecStats_tensorflow_2fcore_2fframework_2fstep_5fstats_2eproto.base);
+  node_name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  timeline_label_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  ::memset(&memory_stats_, 0, static_cast<size_t>(
+      reinterpret_cast<char*>(&thread_id_) -
+      reinterpret_cast<char*>(&memory_stats_)) + sizeof(thread_id_));
+}
+
+NodeExecStats::~NodeExecStats() {
+  // @@protoc_insertion_point(destructor:tensorflow.NodeExecStats)
+  SharedDtor();
+}
+
+void NodeExecStats::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+  node_name_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  timeline_label_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (this != internal_default_instance()) delete memory_stats_;
+}
+
+void NodeExecStats::ArenaDtor(void* object) {
+  NodeExecStats* _this = reinterpret_cast< NodeExecStats* >(object);
+  (void)_this;
+}
+void NodeExecStats::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void NodeExecStats::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const NodeExecStats& NodeExecStats::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_NodeExecStats_tensorflow_2fcore_2fframework_2fstep_5fstats_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void NodeExecStats::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.NodeExecStats)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  memory_.Clear();
+  output_.Clear();
+  referenced_tensor_.Clear();
+  node_name_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+  timeline_label_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+  if (GetArenaNoVirtual() == NULL && memory_stats_ != NULL) {
+    delete memory_stats_;
+  }
+  memory_stats_ = NULL;
+  ::memset(&all_start_micros_, 0, static_cast<size_t>(
+      reinterpret_cast<char*>(&thread_id_) -
+      reinterpret_cast<char*>(&all_start_micros_)) + sizeof(thread_id_));
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* NodeExecStats::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<NodeExecStats*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // string node_name = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 10) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("tensorflow.NodeExecStats.node_name");
+        parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+        ::std::string* str = msg->mutable_node_name();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+        break;
+      }
+      // int64 all_start_micros = 2;
+      case 2: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 16) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::google::protobuf::int64 value = val;
+        msg->set_all_start_micros(value);
+        break;
+      }
+      // int64 op_start_rel_micros = 3;
+      case 3: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 24) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::google::protobuf::int64 value = val;
+        msg->set_op_start_rel_micros(value);
+        break;
+      }
+      // int64 op_end_rel_micros = 4;
+      case 4: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 32) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::google::protobuf::int64 value = val;
+        msg->set_op_end_rel_micros(value);
+        break;
+      }
+      // int64 all_end_rel_micros = 5;
+      case 5: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 40) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::google::protobuf::int64 value = val;
+        msg->set_all_end_rel_micros(value);
+        break;
+      }
+      // repeated .tensorflow.AllocatorMemoryUsed memory = 6;
+      case 6: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 50) goto handle_unusual;
+        do {
+          ptr = Varint::Parse32Inline(ptr, &size);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          parser_till_end = ::tensorflow::AllocatorMemoryUsed::_InternalParse;
+          object = msg->add_memory();
+          if (size > end - ptr) goto len_delim_till_end;
+          auto newend = ptr + size;
+          bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                         ptr, newend);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          ptr = newend;
+          if (ptr >= end) break;
+        } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 50 && (ptr += 1));
+        break;
+      }
+      // repeated .tensorflow.NodeOutput output = 7;
+      case 7: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 58) goto handle_unusual;
+        do {
+          ptr = Varint::Parse32Inline(ptr, &size);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          parser_till_end = ::tensorflow::NodeOutput::_InternalParse;
+          object = msg->add_output();
+          if (size > end - ptr) goto len_delim_till_end;
+          auto newend = ptr + size;
+          bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                         ptr, newend);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          ptr = newend;
+          if (ptr >= end) break;
+        } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 58 && (ptr += 1));
+        break;
+      }
+      // string timeline_label = 8;
+      case 8: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 66) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("tensorflow.NodeExecStats.timeline_label");
+        parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+        ::std::string* str = msg->mutable_timeline_label();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+        break;
+      }
+      // int64 scheduled_micros = 9;
+      case 9: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 72) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::google::protobuf::int64 value = val;
+        msg->set_scheduled_micros(value);
+        break;
+      }
+      // uint32 thread_id = 10;
+      case 10: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 80) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::google::protobuf::uint32 value = val;
+        msg->set_thread_id(value);
+        break;
+      }
+      // repeated .tensorflow.AllocationDescription referenced_tensor = 11;
+      case 11: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 90) goto handle_unusual;
+        do {
+          ptr = Varint::Parse32Inline(ptr, &size);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          parser_till_end = ::tensorflow::AllocationDescription::_InternalParse;
+          object = msg->add_referenced_tensor();
+          if (size > end - ptr) goto len_delim_till_end;
+          auto newend = ptr + size;
+          bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                         ptr, newend);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          ptr = newend;
+          if (ptr >= end) break;
+        } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 90 && (ptr += 1));
+        break;
+      }
+      // .tensorflow.MemoryStats memory_stats = 12;
+      case 12: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 98) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        parser_till_end = ::tensorflow::MemoryStats::_InternalParse;
+        object = msg->mutable_memory_stats();
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                       ptr, newend);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+        ptr = newend;
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool NodeExecStats::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.NodeExecStats)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // string node_name = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (10 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_node_name()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->node_name().data(), static_cast<int>(this->node_name().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.NodeExecStats.node_name"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // int64 all_start_micros = 2;
+      case 2: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (16 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>(
+                 input, &all_start_micros_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // int64 op_start_rel_micros = 3;
+      case 3: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (24 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>(
+                 input, &op_start_rel_micros_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // int64 op_end_rel_micros = 4;
+      case 4: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (32 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>(
+                 input, &op_end_rel_micros_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // int64 all_end_rel_micros = 5;
+      case 5: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (40 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>(
+                 input, &all_end_rel_micros_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // repeated .tensorflow.AllocatorMemoryUsed memory = 6;
+      case 6: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (50 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+                input, add_memory()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // repeated .tensorflow.NodeOutput output = 7;
+      case 7: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (58 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+                input, add_output()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // string timeline_label = 8;
+      case 8: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (66 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_timeline_label()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->timeline_label().data(), static_cast<int>(this->timeline_label().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.NodeExecStats.timeline_label"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // int64 scheduled_micros = 9;
+      case 9: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (72 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>(
+                 input, &scheduled_micros_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // uint32 thread_id = 10;
+      case 10: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (80 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
+                 input, &thread_id_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // repeated .tensorflow.AllocationDescription referenced_tensor = 11;
+      case 11: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (90 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+                input, add_referenced_tensor()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // .tensorflow.MemoryStats memory_stats = 12;
+      case 12: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (98 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+               input, mutable_memory_stats()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.NodeExecStats)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.NodeExecStats)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void NodeExecStats::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.NodeExecStats)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // string node_name = 1;
+  if (this->node_name().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->node_name().data(), static_cast<int>(this->node_name().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.NodeExecStats.node_name");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      1, this->node_name(), output);
+  }
+
+  // int64 all_start_micros = 2;
+  if (this->all_start_micros() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt64(2, this->all_start_micros(), output);
+  }
+
+  // int64 op_start_rel_micros = 3;
+  if (this->op_start_rel_micros() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt64(3, this->op_start_rel_micros(), output);
+  }
+
+  // int64 op_end_rel_micros = 4;
+  if (this->op_end_rel_micros() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt64(4, this->op_end_rel_micros(), output);
+  }
+
+  // int64 all_end_rel_micros = 5;
+  if (this->all_end_rel_micros() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt64(5, this->all_end_rel_micros(), output);
+  }
+
+  // repeated .tensorflow.AllocatorMemoryUsed memory = 6;
+  for (unsigned int i = 0,
+      n = static_cast<unsigned int>(this->memory_size()); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      6,
+      this->memory(static_cast<int>(i)),
+      output);
+  }
+
+  // repeated .tensorflow.NodeOutput output = 7;
+  for (unsigned int i = 0,
+      n = static_cast<unsigned int>(this->output_size()); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      7,
+      this->output(static_cast<int>(i)),
+      output);
+  }
+
+  // string timeline_label = 8;
+  if (this->timeline_label().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->timeline_label().data(), static_cast<int>(this->timeline_label().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.NodeExecStats.timeline_label");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      8, this->timeline_label(), output);
+  }
+
+  // int64 scheduled_micros = 9;
+  if (this->scheduled_micros() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt64(9, this->scheduled_micros(), output);
+  }
+
+  // uint32 thread_id = 10;
+  if (this->thread_id() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteUInt32(10, this->thread_id(), output);
+  }
+
+  // repeated .tensorflow.AllocationDescription referenced_tensor = 11;
+  for (unsigned int i = 0,
+      n = static_cast<unsigned int>(this->referenced_tensor_size()); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      11,
+      this->referenced_tensor(static_cast<int>(i)),
+      output);
+  }
+
+  // .tensorflow.MemoryStats memory_stats = 12;
+  if (this->has_memory_stats()) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      12, HasBitSetters::memory_stats(this), output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.NodeExecStats)
+}
+
+::google::protobuf::uint8* NodeExecStats::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.NodeExecStats)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // string node_name = 1;
+  if (this->node_name().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->node_name().data(), static_cast<int>(this->node_name().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.NodeExecStats.node_name");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        1, this->node_name(), target);
+  }
+
+  // int64 all_start_micros = 2;
+  if (this->all_start_micros() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt64ToArray(2, this->all_start_micros(), target);
+  }
+
+  // int64 op_start_rel_micros = 3;
+  if (this->op_start_rel_micros() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt64ToArray(3, this->op_start_rel_micros(), target);
+  }
+
+  // int64 op_end_rel_micros = 4;
+  if (this->op_end_rel_micros() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt64ToArray(4, this->op_end_rel_micros(), target);
+  }
+
+  // int64 all_end_rel_micros = 5;
+  if (this->all_end_rel_micros() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt64ToArray(5, this->all_end_rel_micros(), target);
+  }
+
+  // repeated .tensorflow.AllocatorMemoryUsed memory = 6;
+  for (unsigned int i = 0,
+      n = static_cast<unsigned int>(this->memory_size()); i < n; i++) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        6, this->memory(static_cast<int>(i)), deterministic, target);
+  }
+
+  // repeated .tensorflow.NodeOutput output = 7;
+  for (unsigned int i = 0,
+      n = static_cast<unsigned int>(this->output_size()); i < n; i++) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        7, this->output(static_cast<int>(i)), deterministic, target);
+  }
+
+  // string timeline_label = 8;
+  if (this->timeline_label().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->timeline_label().data(), static_cast<int>(this->timeline_label().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.NodeExecStats.timeline_label");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        8, this->timeline_label(), target);
+  }
+
+  // int64 scheduled_micros = 9;
+  if (this->scheduled_micros() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt64ToArray(9, this->scheduled_micros(), target);
+  }
+
+  // uint32 thread_id = 10;
+  if (this->thread_id() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteUInt32ToArray(10, this->thread_id(), target);
+  }
+
+  // repeated .tensorflow.AllocationDescription referenced_tensor = 11;
+  for (unsigned int i = 0,
+      n = static_cast<unsigned int>(this->referenced_tensor_size()); i < n; i++) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        11, this->referenced_tensor(static_cast<int>(i)), deterministic, target);
+  }
+
+  // .tensorflow.MemoryStats memory_stats = 12;
+  if (this->has_memory_stats()) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        12, HasBitSetters::memory_stats(this), deterministic, target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.NodeExecStats)
+  return target;
+}
+
+size_t NodeExecStats::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.NodeExecStats)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // repeated .tensorflow.AllocatorMemoryUsed memory = 6;
+  {
+    unsigned int count = static_cast<unsigned int>(this->memory_size());
+    total_size += 1UL * count;
+    for (unsigned int i = 0; i < count; i++) {
+      total_size +=
+        ::google::protobuf::internal::WireFormatLite::MessageSize(
+          this->memory(static_cast<int>(i)));
+    }
+  }
+
+  // repeated .tensorflow.NodeOutput output = 7;
+  {
+    unsigned int count = static_cast<unsigned int>(this->output_size());
+    total_size += 1UL * count;
+    for (unsigned int i = 0; i < count; i++) {
+      total_size +=
+        ::google::protobuf::internal::WireFormatLite::MessageSize(
+          this->output(static_cast<int>(i)));
+    }
+  }
+
+  // repeated .tensorflow.AllocationDescription referenced_tensor = 11;
+  {
+    unsigned int count = static_cast<unsigned int>(this->referenced_tensor_size());
+    total_size += 1UL * count;
+    for (unsigned int i = 0; i < count; i++) {
+      total_size +=
+        ::google::protobuf::internal::WireFormatLite::MessageSize(
+          this->referenced_tensor(static_cast<int>(i)));
+    }
+  }
+
+  // string node_name = 1;
+  if (this->node_name().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->node_name());
+  }
+
+  // string timeline_label = 8;
+  if (this->timeline_label().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->timeline_label());
+  }
+
+  // .tensorflow.MemoryStats memory_stats = 12;
+  if (this->has_memory_stats()) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::MessageSize(
+        *memory_stats_);
+  }
+
+  // int64 all_start_micros = 2;
+  if (this->all_start_micros() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::Int64Size(
+        this->all_start_micros());
+  }
+
+  // int64 op_start_rel_micros = 3;
+  if (this->op_start_rel_micros() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::Int64Size(
+        this->op_start_rel_micros());
+  }
+
+  // int64 op_end_rel_micros = 4;
+  if (this->op_end_rel_micros() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::Int64Size(
+        this->op_end_rel_micros());
+  }
+
+  // int64 all_end_rel_micros = 5;
+  if (this->all_end_rel_micros() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::Int64Size(
+        this->all_end_rel_micros());
+  }
+
+  // int64 scheduled_micros = 9;
+  if (this->scheduled_micros() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::Int64Size(
+        this->scheduled_micros());
+  }
+
+  // uint32 thread_id = 10;
+  if (this->thread_id() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::UInt32Size(
+        this->thread_id());
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void NodeExecStats::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.NodeExecStats)
+  GOOGLE_DCHECK_NE(&from, this);
+  const NodeExecStats* source =
+      ::google::protobuf::DynamicCastToGenerated<NodeExecStats>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.NodeExecStats)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.NodeExecStats)
+    MergeFrom(*source);
+  }
+}
+
+void NodeExecStats::MergeFrom(const NodeExecStats& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.NodeExecStats)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  memory_.MergeFrom(from.memory_);
+  output_.MergeFrom(from.output_);
+  referenced_tensor_.MergeFrom(from.referenced_tensor_);
+  if (from.node_name().size() > 0) {
+    set_node_name(from.node_name());
+  }
+  if (from.timeline_label().size() > 0) {
+    set_timeline_label(from.timeline_label());
+  }
+  if (from.has_memory_stats()) {
+    mutable_memory_stats()->::tensorflow::MemoryStats::MergeFrom(from.memory_stats());
+  }
+  if (from.all_start_micros() != 0) {
+    set_all_start_micros(from.all_start_micros());
+  }
+  if (from.op_start_rel_micros() != 0) {
+    set_op_start_rel_micros(from.op_start_rel_micros());
+  }
+  if (from.op_end_rel_micros() != 0) {
+    set_op_end_rel_micros(from.op_end_rel_micros());
+  }
+  if (from.all_end_rel_micros() != 0) {
+    set_all_end_rel_micros(from.all_end_rel_micros());
+  }
+  if (from.scheduled_micros() != 0) {
+    set_scheduled_micros(from.scheduled_micros());
+  }
+  if (from.thread_id() != 0) {
+    set_thread_id(from.thread_id());
+  }
+}
+
+void NodeExecStats::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.NodeExecStats)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void NodeExecStats::CopyFrom(const NodeExecStats& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.NodeExecStats)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool NodeExecStats::IsInitialized() const {
+  return true;
+}
+
+void NodeExecStats::Swap(NodeExecStats* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    NodeExecStats* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void NodeExecStats::UnsafeArenaSwap(NodeExecStats* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void NodeExecStats::InternalSwap(NodeExecStats* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  CastToBase(&memory_)->InternalSwap(CastToBase(&other->memory_));
+  CastToBase(&output_)->InternalSwap(CastToBase(&other->output_));
+  CastToBase(&referenced_tensor_)->InternalSwap(CastToBase(&other->referenced_tensor_));
+  node_name_.Swap(&other->node_name_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+  timeline_label_.Swap(&other->timeline_label_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+  swap(memory_stats_, other->memory_stats_);
+  swap(all_start_micros_, other->all_start_micros_);
+  swap(op_start_rel_micros_, other->op_start_rel_micros_);
+  swap(op_end_rel_micros_, other->op_end_rel_micros_);
+  swap(all_end_rel_micros_, other->all_end_rel_micros_);
+  swap(scheduled_micros_, other->scheduled_micros_);
+  swap(thread_id_, other->thread_id_);
+}
+
+::google::protobuf::Metadata NodeExecStats::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fframework_2fstep_5fstats_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fframework_2fstep_5fstats_2eproto[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+void DeviceStepStats::InitAsDefaultInstance() {
+}
+class DeviceStepStats::HasBitSetters {
+ public:
+};
+
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int DeviceStepStats::kDeviceFieldNumber;
+const int DeviceStepStats::kNodeStatsFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+DeviceStepStats::DeviceStepStats()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.DeviceStepStats)
+}
+DeviceStepStats::DeviceStepStats(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena),
+  node_stats_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.DeviceStepStats)
+}
+DeviceStepStats::DeviceStepStats(const DeviceStepStats& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL),
+      node_stats_(from.node_stats_) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  device_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.device().size() > 0) {
+    device_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.device(),
+      GetArenaNoVirtual());
+  }
+  // @@protoc_insertion_point(copy_constructor:tensorflow.DeviceStepStats)
+}
+
+void DeviceStepStats::SharedCtor() {
+  ::google::protobuf::internal::InitSCC(
+      &scc_info_DeviceStepStats_tensorflow_2fcore_2fframework_2fstep_5fstats_2eproto.base);
+  device_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+
+DeviceStepStats::~DeviceStepStats() {
+  // @@protoc_insertion_point(destructor:tensorflow.DeviceStepStats)
+  SharedDtor();
+}
+
+void DeviceStepStats::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+  device_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+
+void DeviceStepStats::ArenaDtor(void* object) {
+  DeviceStepStats* _this = reinterpret_cast< DeviceStepStats* >(object);
+  (void)_this;
+}
+void DeviceStepStats::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void DeviceStepStats::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const DeviceStepStats& DeviceStepStats::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_DeviceStepStats_tensorflow_2fcore_2fframework_2fstep_5fstats_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void DeviceStepStats::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.DeviceStepStats)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  node_stats_.Clear();
+  device_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* DeviceStepStats::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<DeviceStepStats*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // string device = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 10) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("tensorflow.DeviceStepStats.device");
+        parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+        ::std::string* str = msg->mutable_device();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+        break;
+      }
+      // repeated .tensorflow.NodeExecStats node_stats = 2;
+      case 2: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 18) goto handle_unusual;
+        do {
+          ptr = Varint::Parse32Inline(ptr, &size);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          parser_till_end = ::tensorflow::NodeExecStats::_InternalParse;
+          object = msg->add_node_stats();
+          if (size > end - ptr) goto len_delim_till_end;
+          auto newend = ptr + size;
+          bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                         ptr, newend);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          ptr = newend;
+          if (ptr >= end) break;
+        } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 18 && (ptr += 1));
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool DeviceStepStats::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.DeviceStepStats)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // string device = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (10 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_device()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->device().data(), static_cast<int>(this->device().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.DeviceStepStats.device"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // repeated .tensorflow.NodeExecStats node_stats = 2;
+      case 2: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (18 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+                input, add_node_stats()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.DeviceStepStats)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.DeviceStepStats)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void DeviceStepStats::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.DeviceStepStats)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // string device = 1;
+  if (this->device().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->device().data(), static_cast<int>(this->device().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.DeviceStepStats.device");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      1, this->device(), output);
+  }
+
+  // repeated .tensorflow.NodeExecStats node_stats = 2;
+  for (unsigned int i = 0,
+      n = static_cast<unsigned int>(this->node_stats_size()); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      2,
+      this->node_stats(static_cast<int>(i)),
+      output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.DeviceStepStats)
+}
+
+::google::protobuf::uint8* DeviceStepStats::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.DeviceStepStats)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // string device = 1;
+  if (this->device().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->device().data(), static_cast<int>(this->device().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.DeviceStepStats.device");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        1, this->device(), target);
+  }
+
+  // repeated .tensorflow.NodeExecStats node_stats = 2;
+  for (unsigned int i = 0,
+      n = static_cast<unsigned int>(this->node_stats_size()); i < n; i++) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        2, this->node_stats(static_cast<int>(i)), deterministic, target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.DeviceStepStats)
+  return target;
+}
+
+size_t DeviceStepStats::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.DeviceStepStats)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // repeated .tensorflow.NodeExecStats node_stats = 2;
+  {
+    unsigned int count = static_cast<unsigned int>(this->node_stats_size());
+    total_size += 1UL * count;
+    for (unsigned int i = 0; i < count; i++) {
+      total_size +=
+        ::google::protobuf::internal::WireFormatLite::MessageSize(
+          this->node_stats(static_cast<int>(i)));
+    }
+  }
+
+  // string device = 1;
+  if (this->device().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->device());
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void DeviceStepStats::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.DeviceStepStats)
+  GOOGLE_DCHECK_NE(&from, this);
+  const DeviceStepStats* source =
+      ::google::protobuf::DynamicCastToGenerated<DeviceStepStats>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.DeviceStepStats)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.DeviceStepStats)
+    MergeFrom(*source);
+  }
+}
+
+void DeviceStepStats::MergeFrom(const DeviceStepStats& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.DeviceStepStats)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  node_stats_.MergeFrom(from.node_stats_);
+  if (from.device().size() > 0) {
+    set_device(from.device());
+  }
+}
+
+void DeviceStepStats::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.DeviceStepStats)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void DeviceStepStats::CopyFrom(const DeviceStepStats& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.DeviceStepStats)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool DeviceStepStats::IsInitialized() const {
+  return true;
+}
+
+void DeviceStepStats::Swap(DeviceStepStats* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    DeviceStepStats* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void DeviceStepStats::UnsafeArenaSwap(DeviceStepStats* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void DeviceStepStats::InternalSwap(DeviceStepStats* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  CastToBase(&node_stats_)->InternalSwap(CastToBase(&other->node_stats_));
+  device_.Swap(&other->device_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+}
+
+::google::protobuf::Metadata DeviceStepStats::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fframework_2fstep_5fstats_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fframework_2fstep_5fstats_2eproto[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+void StepStats::InitAsDefaultInstance() {
+}
+class StepStats::HasBitSetters {
+ public:
+};
+
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int StepStats::kDevStatsFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+StepStats::StepStats()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.StepStats)
+}
+StepStats::StepStats(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena),
+  dev_stats_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.StepStats)
+}
+StepStats::StepStats(const StepStats& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL),
+      dev_stats_(from.dev_stats_) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  // @@protoc_insertion_point(copy_constructor:tensorflow.StepStats)
+}
+
+void StepStats::SharedCtor() {
+  ::google::protobuf::internal::InitSCC(
+      &scc_info_StepStats_tensorflow_2fcore_2fframework_2fstep_5fstats_2eproto.base);
+}
+
+StepStats::~StepStats() {
+  // @@protoc_insertion_point(destructor:tensorflow.StepStats)
+  SharedDtor();
+}
+
+void StepStats::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+}
+
+void StepStats::ArenaDtor(void* object) {
+  StepStats* _this = reinterpret_cast< StepStats* >(object);
+  (void)_this;
+}
+void StepStats::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void StepStats::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const StepStats& StepStats::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_StepStats_tensorflow_2fcore_2fframework_2fstep_5fstats_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void StepStats::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.StepStats)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  dev_stats_.Clear();
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* StepStats::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<StepStats*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // repeated .tensorflow.DeviceStepStats dev_stats = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 10) goto handle_unusual;
+        do {
+          ptr = Varint::Parse32Inline(ptr, &size);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          parser_till_end = ::tensorflow::DeviceStepStats::_InternalParse;
+          object = msg->add_dev_stats();
+          if (size > end - ptr) goto len_delim_till_end;
+          auto newend = ptr + size;
+          bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                         ptr, newend);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          ptr = newend;
+          if (ptr >= end) break;
+        } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 10 && (ptr += 1));
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool StepStats::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.StepStats)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // repeated .tensorflow.DeviceStepStats dev_stats = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (10 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+                input, add_dev_stats()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.StepStats)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.StepStats)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void StepStats::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.StepStats)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // repeated .tensorflow.DeviceStepStats dev_stats = 1;
+  for (unsigned int i = 0,
+      n = static_cast<unsigned int>(this->dev_stats_size()); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      1,
+      this->dev_stats(static_cast<int>(i)),
+      output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.StepStats)
+}
+
+::google::protobuf::uint8* StepStats::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.StepStats)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // repeated .tensorflow.DeviceStepStats dev_stats = 1;
+  for (unsigned int i = 0,
+      n = static_cast<unsigned int>(this->dev_stats_size()); i < n; i++) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        1, this->dev_stats(static_cast<int>(i)), deterministic, target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.StepStats)
+  return target;
+}
+
+size_t StepStats::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.StepStats)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // repeated .tensorflow.DeviceStepStats dev_stats = 1;
+  {
+    unsigned int count = static_cast<unsigned int>(this->dev_stats_size());
+    total_size += 1UL * count;
+    for (unsigned int i = 0; i < count; i++) {
+      total_size +=
+        ::google::protobuf::internal::WireFormatLite::MessageSize(
+          this->dev_stats(static_cast<int>(i)));
+    }
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void StepStats::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.StepStats)
+  GOOGLE_DCHECK_NE(&from, this);
+  const StepStats* source =
+      ::google::protobuf::DynamicCastToGenerated<StepStats>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.StepStats)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.StepStats)
+    MergeFrom(*source);
+  }
+}
+
+void StepStats::MergeFrom(const StepStats& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.StepStats)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  dev_stats_.MergeFrom(from.dev_stats_);
+}
+
+void StepStats::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.StepStats)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void StepStats::CopyFrom(const StepStats& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.StepStats)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool StepStats::IsInitialized() const {
+  return true;
+}
+
+void StepStats::Swap(StepStats* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    StepStats* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void StepStats::UnsafeArenaSwap(StepStats* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void StepStats::InternalSwap(StepStats* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  CastToBase(&dev_stats_)->InternalSwap(CastToBase(&other->dev_stats_));
+}
+
+::google::protobuf::Metadata StepStats::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fframework_2fstep_5fstats_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fframework_2fstep_5fstats_2eproto[kIndexInFileMessages];
+}
+
+
+// @@protoc_insertion_point(namespace_scope)
+}  // namespace tensorflow
+namespace google {
+namespace protobuf {
+template<> PROTOBUF_NOINLINE ::tensorflow::AllocationRecord* Arena::CreateMaybeMessage< ::tensorflow::AllocationRecord >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::AllocationRecord >(arena);
+}
+template<> PROTOBUF_NOINLINE ::tensorflow::AllocatorMemoryUsed* Arena::CreateMaybeMessage< ::tensorflow::AllocatorMemoryUsed >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::AllocatorMemoryUsed >(arena);
+}
+template<> PROTOBUF_NOINLINE ::tensorflow::NodeOutput* Arena::CreateMaybeMessage< ::tensorflow::NodeOutput >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::NodeOutput >(arena);
+}
+template<> PROTOBUF_NOINLINE ::tensorflow::MemoryStats* Arena::CreateMaybeMessage< ::tensorflow::MemoryStats >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::MemoryStats >(arena);
+}
+template<> PROTOBUF_NOINLINE ::tensorflow::NodeExecStats* Arena::CreateMaybeMessage< ::tensorflow::NodeExecStats >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::NodeExecStats >(arena);
+}
+template<> PROTOBUF_NOINLINE ::tensorflow::DeviceStepStats* Arena::CreateMaybeMessage< ::tensorflow::DeviceStepStats >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::DeviceStepStats >(arena);
+}
+template<> PROTOBUF_NOINLINE ::tensorflow::StepStats* Arena::CreateMaybeMessage< ::tensorflow::StepStats >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::StepStats >(arena);
+}
+}  // namespace protobuf
+}  // namespace google
+
+// @@protoc_insertion_point(global_scope)
+#include <google/protobuf/port_undef.inc>
diff --git a/tensorflow/core/framework/step_stats.pb.h b/tensorflow/core/framework/step_stats.pb.h
new file mode 100644 (file)
index 0000000..c91af36
--- /dev/null
@@ -0,0 +1,2220 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: tensorflow/core/framework/step_stats.proto
+
+#ifndef PROTOBUF_INCLUDED_tensorflow_2fcore_2fframework_2fstep_5fstats_2eproto
+#define PROTOBUF_INCLUDED_tensorflow_2fcore_2fframework_2fstep_5fstats_2eproto
+
+#include <limits>
+#include <string>
+
+#include <google/protobuf/port_def.inc>
+#if PROTOBUF_VERSION < 3006001
+#error This file was generated by a newer version of protoc which is
+#error incompatible with your Protocol Buffer headers. Please update
+#error your headers.
+#endif
+#if 3006001 < PROTOBUF_MIN_PROTOC_VERSION
+#error This file was generated by an older version of protoc which is
+#error incompatible with your Protocol Buffer headers. Please
+#error regenerate this file with a newer version of protoc.
+#endif
+
+#include <google/protobuf/port_undef.inc>
+#include <google/protobuf/io/coded_stream.h>
+#include <google/protobuf/arena.h>
+#include <google/protobuf/arenastring.h>
+#include <google/protobuf/generated_message_table_driven.h>
+#include <google/protobuf/generated_message_util.h>
+#include <google/protobuf/inlined_string_field.h>
+#include <google/protobuf/metadata.h>
+#include <google/protobuf/message.h>
+#include <google/protobuf/repeated_field.h>  // IWYU pragma: export
+#include <google/protobuf/extension_set.h>  // IWYU pragma: export
+#include <google/protobuf/unknown_field_set.h>
+#include "tensorflow/core/framework/allocation_description.pb.h"
+#include "tensorflow/core/framework/tensor_description.pb.h"
+// @@protoc_insertion_point(includes)
+#include <google/protobuf/port_def.inc>
+#define PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fframework_2fstep_5fstats_2eproto
+
+// Internal implementation detail -- do not use these members.
+struct TableStruct_tensorflow_2fcore_2fframework_2fstep_5fstats_2eproto {
+  static const ::google::protobuf::internal::ParseTableField entries[]
+    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
+  static const ::google::protobuf::internal::AuxillaryParseTableField aux[]
+    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
+  static const ::google::protobuf::internal::ParseTable schema[7]
+    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
+  static const ::google::protobuf::internal::FieldMetadata field_metadata[];
+  static const ::google::protobuf::internal::SerializationTable serialization_table[];
+  static const ::google::protobuf::uint32 offsets[];
+};
+void AddDescriptors_tensorflow_2fcore_2fframework_2fstep_5fstats_2eproto();
+namespace tensorflow {
+class AllocationRecord;
+class AllocationRecordDefaultTypeInternal;
+extern AllocationRecordDefaultTypeInternal _AllocationRecord_default_instance_;
+class AllocatorMemoryUsed;
+class AllocatorMemoryUsedDefaultTypeInternal;
+extern AllocatorMemoryUsedDefaultTypeInternal _AllocatorMemoryUsed_default_instance_;
+class DeviceStepStats;
+class DeviceStepStatsDefaultTypeInternal;
+extern DeviceStepStatsDefaultTypeInternal _DeviceStepStats_default_instance_;
+class MemoryStats;
+class MemoryStatsDefaultTypeInternal;
+extern MemoryStatsDefaultTypeInternal _MemoryStats_default_instance_;
+class NodeExecStats;
+class NodeExecStatsDefaultTypeInternal;
+extern NodeExecStatsDefaultTypeInternal _NodeExecStats_default_instance_;
+class NodeOutput;
+class NodeOutputDefaultTypeInternal;
+extern NodeOutputDefaultTypeInternal _NodeOutput_default_instance_;
+class StepStats;
+class StepStatsDefaultTypeInternal;
+extern StepStatsDefaultTypeInternal _StepStats_default_instance_;
+}  // namespace tensorflow
+namespace google {
+namespace protobuf {
+template<> ::tensorflow::AllocationRecord* Arena::CreateMaybeMessage<::tensorflow::AllocationRecord>(Arena*);
+template<> ::tensorflow::AllocatorMemoryUsed* Arena::CreateMaybeMessage<::tensorflow::AllocatorMemoryUsed>(Arena*);
+template<> ::tensorflow::DeviceStepStats* Arena::CreateMaybeMessage<::tensorflow::DeviceStepStats>(Arena*);
+template<> ::tensorflow::MemoryStats* Arena::CreateMaybeMessage<::tensorflow::MemoryStats>(Arena*);
+template<> ::tensorflow::NodeExecStats* Arena::CreateMaybeMessage<::tensorflow::NodeExecStats>(Arena*);
+template<> ::tensorflow::NodeOutput* Arena::CreateMaybeMessage<::tensorflow::NodeOutput>(Arena*);
+template<> ::tensorflow::StepStats* Arena::CreateMaybeMessage<::tensorflow::StepStats>(Arena*);
+}  // namespace protobuf
+}  // namespace google
+namespace tensorflow {
+
+// ===================================================================
+
+class AllocationRecord : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.AllocationRecord) */ {
+ public:
+  AllocationRecord();
+  virtual ~AllocationRecord();
+
+  AllocationRecord(const AllocationRecord& from);
+
+  inline AllocationRecord& operator=(const AllocationRecord& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  AllocationRecord(AllocationRecord&& from) noexcept
+    : AllocationRecord() {
+    *this = ::std::move(from);
+  }
+
+  inline AllocationRecord& operator=(AllocationRecord&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const AllocationRecord& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const AllocationRecord* internal_default_instance() {
+    return reinterpret_cast<const AllocationRecord*>(
+               &_AllocationRecord_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    0;
+
+  void UnsafeArenaSwap(AllocationRecord* other);
+  void Swap(AllocationRecord* other);
+  friend void swap(AllocationRecord& a, AllocationRecord& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline AllocationRecord* New() const final {
+    return CreateMaybeMessage<AllocationRecord>(NULL);
+  }
+
+  AllocationRecord* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<AllocationRecord>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const AllocationRecord& from);
+  void MergeFrom(const AllocationRecord& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(AllocationRecord* other);
+  protected:
+  explicit AllocationRecord(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // int64 alloc_micros = 1;
+  void clear_alloc_micros();
+  static const int kAllocMicrosFieldNumber = 1;
+  ::google::protobuf::int64 alloc_micros() const;
+  void set_alloc_micros(::google::protobuf::int64 value);
+
+  // int64 alloc_bytes = 2;
+  void clear_alloc_bytes();
+  static const int kAllocBytesFieldNumber = 2;
+  ::google::protobuf::int64 alloc_bytes() const;
+  void set_alloc_bytes(::google::protobuf::int64 value);
+
+  // @@protoc_insertion_point(class_scope:tensorflow.AllocationRecord)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  ::google::protobuf::int64 alloc_micros_;
+  ::google::protobuf::int64 alloc_bytes_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fframework_2fstep_5fstats_2eproto;
+};
+// -------------------------------------------------------------------
+
+class AllocatorMemoryUsed : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.AllocatorMemoryUsed) */ {
+ public:
+  AllocatorMemoryUsed();
+  virtual ~AllocatorMemoryUsed();
+
+  AllocatorMemoryUsed(const AllocatorMemoryUsed& from);
+
+  inline AllocatorMemoryUsed& operator=(const AllocatorMemoryUsed& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  AllocatorMemoryUsed(AllocatorMemoryUsed&& from) noexcept
+    : AllocatorMemoryUsed() {
+    *this = ::std::move(from);
+  }
+
+  inline AllocatorMemoryUsed& operator=(AllocatorMemoryUsed&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const AllocatorMemoryUsed& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const AllocatorMemoryUsed* internal_default_instance() {
+    return reinterpret_cast<const AllocatorMemoryUsed*>(
+               &_AllocatorMemoryUsed_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    1;
+
+  void UnsafeArenaSwap(AllocatorMemoryUsed* other);
+  void Swap(AllocatorMemoryUsed* other);
+  friend void swap(AllocatorMemoryUsed& a, AllocatorMemoryUsed& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline AllocatorMemoryUsed* New() const final {
+    return CreateMaybeMessage<AllocatorMemoryUsed>(NULL);
+  }
+
+  AllocatorMemoryUsed* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<AllocatorMemoryUsed>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const AllocatorMemoryUsed& from);
+  void MergeFrom(const AllocatorMemoryUsed& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(AllocatorMemoryUsed* other);
+  protected:
+  explicit AllocatorMemoryUsed(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // repeated .tensorflow.AllocationRecord allocation_records = 6;
+  int allocation_records_size() const;
+  void clear_allocation_records();
+  static const int kAllocationRecordsFieldNumber = 6;
+  ::tensorflow::AllocationRecord* mutable_allocation_records(int index);
+  ::google::protobuf::RepeatedPtrField< ::tensorflow::AllocationRecord >*
+      mutable_allocation_records();
+  const ::tensorflow::AllocationRecord& allocation_records(int index) const;
+  ::tensorflow::AllocationRecord* add_allocation_records();
+  const ::google::protobuf::RepeatedPtrField< ::tensorflow::AllocationRecord >&
+      allocation_records() const;
+
+  // string allocator_name = 1;
+  void clear_allocator_name();
+  static const int kAllocatorNameFieldNumber = 1;
+  const ::std::string& allocator_name() const;
+  void set_allocator_name(const ::std::string& value);
+  #if LANG_CXX11
+  void set_allocator_name(::std::string&& value);
+  #endif
+  void set_allocator_name(const char* value);
+  void set_allocator_name(const char* value, size_t size);
+  ::std::string* mutable_allocator_name();
+  ::std::string* release_allocator_name();
+  void set_allocated_allocator_name(::std::string* allocator_name);
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  ::std::string* unsafe_arena_release_allocator_name();
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  void unsafe_arena_set_allocated_allocator_name(
+      ::std::string* allocator_name);
+
+  // int64 total_bytes = 2;
+  void clear_total_bytes();
+  static const int kTotalBytesFieldNumber = 2;
+  ::google::protobuf::int64 total_bytes() const;
+  void set_total_bytes(::google::protobuf::int64 value);
+
+  // int64 peak_bytes = 3;
+  void clear_peak_bytes();
+  static const int kPeakBytesFieldNumber = 3;
+  ::google::protobuf::int64 peak_bytes() const;
+  void set_peak_bytes(::google::protobuf::int64 value);
+
+  // int64 live_bytes = 4;
+  void clear_live_bytes();
+  static const int kLiveBytesFieldNumber = 4;
+  ::google::protobuf::int64 live_bytes() const;
+  void set_live_bytes(::google::protobuf::int64 value);
+
+  // int64 allocator_bytes_in_use = 5;
+  void clear_allocator_bytes_in_use();
+  static const int kAllocatorBytesInUseFieldNumber = 5;
+  ::google::protobuf::int64 allocator_bytes_in_use() const;
+  void set_allocator_bytes_in_use(::google::protobuf::int64 value);
+
+  // @@protoc_insertion_point(class_scope:tensorflow.AllocatorMemoryUsed)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  ::google::protobuf::RepeatedPtrField< ::tensorflow::AllocationRecord > allocation_records_;
+  ::google::protobuf::internal::ArenaStringPtr allocator_name_;
+  ::google::protobuf::int64 total_bytes_;
+  ::google::protobuf::int64 peak_bytes_;
+  ::google::protobuf::int64 live_bytes_;
+  ::google::protobuf::int64 allocator_bytes_in_use_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fframework_2fstep_5fstats_2eproto;
+};
+// -------------------------------------------------------------------
+
+class NodeOutput : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.NodeOutput) */ {
+ public:
+  NodeOutput();
+  virtual ~NodeOutput();
+
+  NodeOutput(const NodeOutput& from);
+
+  inline NodeOutput& operator=(const NodeOutput& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  NodeOutput(NodeOutput&& from) noexcept
+    : NodeOutput() {
+    *this = ::std::move(from);
+  }
+
+  inline NodeOutput& operator=(NodeOutput&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const NodeOutput& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const NodeOutput* internal_default_instance() {
+    return reinterpret_cast<const NodeOutput*>(
+               &_NodeOutput_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    2;
+
+  void UnsafeArenaSwap(NodeOutput* other);
+  void Swap(NodeOutput* other);
+  friend void swap(NodeOutput& a, NodeOutput& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline NodeOutput* New() const final {
+    return CreateMaybeMessage<NodeOutput>(NULL);
+  }
+
+  NodeOutput* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<NodeOutput>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const NodeOutput& from);
+  void MergeFrom(const NodeOutput& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(NodeOutput* other);
+  protected:
+  explicit NodeOutput(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // .tensorflow.TensorDescription tensor_description = 3;
+  bool has_tensor_description() const;
+  void clear_tensor_description();
+  static const int kTensorDescriptionFieldNumber = 3;
+  const ::tensorflow::TensorDescription& tensor_description() const;
+  ::tensorflow::TensorDescription* release_tensor_description();
+  ::tensorflow::TensorDescription* mutable_tensor_description();
+  void set_allocated_tensor_description(::tensorflow::TensorDescription* tensor_description);
+  void unsafe_arena_set_allocated_tensor_description(
+      ::tensorflow::TensorDescription* tensor_description);
+  ::tensorflow::TensorDescription* unsafe_arena_release_tensor_description();
+
+  // int32 slot = 1;
+  void clear_slot();
+  static const int kSlotFieldNumber = 1;
+  ::google::protobuf::int32 slot() const;
+  void set_slot(::google::protobuf::int32 value);
+
+  // @@protoc_insertion_point(class_scope:tensorflow.NodeOutput)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  ::tensorflow::TensorDescription* tensor_description_;
+  ::google::protobuf::int32 slot_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fframework_2fstep_5fstats_2eproto;
+};
+// -------------------------------------------------------------------
+
+class MemoryStats : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.MemoryStats) */ {
+ public:
+  MemoryStats();
+  virtual ~MemoryStats();
+
+  MemoryStats(const MemoryStats& from);
+
+  inline MemoryStats& operator=(const MemoryStats& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  MemoryStats(MemoryStats&& from) noexcept
+    : MemoryStats() {
+    *this = ::std::move(from);
+  }
+
+  inline MemoryStats& operator=(MemoryStats&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const MemoryStats& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const MemoryStats* internal_default_instance() {
+    return reinterpret_cast<const MemoryStats*>(
+               &_MemoryStats_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    3;
+
+  void UnsafeArenaSwap(MemoryStats* other);
+  void Swap(MemoryStats* other);
+  friend void swap(MemoryStats& a, MemoryStats& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline MemoryStats* New() const final {
+    return CreateMaybeMessage<MemoryStats>(NULL);
+  }
+
+  MemoryStats* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<MemoryStats>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const MemoryStats& from);
+  void MergeFrom(const MemoryStats& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(MemoryStats* other);
+  protected:
+  explicit MemoryStats(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // repeated int64 persistent_tensor_alloc_ids = 5;
+  int persistent_tensor_alloc_ids_size() const;
+  void clear_persistent_tensor_alloc_ids();
+  static const int kPersistentTensorAllocIdsFieldNumber = 5;
+  ::google::protobuf::int64 persistent_tensor_alloc_ids(int index) const;
+  void set_persistent_tensor_alloc_ids(int index, ::google::protobuf::int64 value);
+  void add_persistent_tensor_alloc_ids(::google::protobuf::int64 value);
+  const ::google::protobuf::RepeatedField< ::google::protobuf::int64 >&
+      persistent_tensor_alloc_ids() const;
+  ::google::protobuf::RepeatedField< ::google::protobuf::int64 >*
+      mutable_persistent_tensor_alloc_ids();
+
+  // repeated int64 device_persistent_tensor_alloc_ids = 6 [deprecated = true];
+  PROTOBUF_DEPRECATED int device_persistent_tensor_alloc_ids_size() const;
+  PROTOBUF_DEPRECATED void clear_device_persistent_tensor_alloc_ids();
+  PROTOBUF_DEPRECATED static const int kDevicePersistentTensorAllocIdsFieldNumber = 6;
+  PROTOBUF_DEPRECATED ::google::protobuf::int64 device_persistent_tensor_alloc_ids(int index) const;
+  PROTOBUF_DEPRECATED void set_device_persistent_tensor_alloc_ids(int index, ::google::protobuf::int64 value);
+  PROTOBUF_DEPRECATED void add_device_persistent_tensor_alloc_ids(::google::protobuf::int64 value);
+  PROTOBUF_DEPRECATED const ::google::protobuf::RepeatedField< ::google::protobuf::int64 >&
+      device_persistent_tensor_alloc_ids() const;
+  PROTOBUF_DEPRECATED ::google::protobuf::RepeatedField< ::google::protobuf::int64 >*
+      mutable_device_persistent_tensor_alloc_ids();
+
+  // int64 temp_memory_size = 1;
+  void clear_temp_memory_size();
+  static const int kTempMemorySizeFieldNumber = 1;
+  ::google::protobuf::int64 temp_memory_size() const;
+  void set_temp_memory_size(::google::protobuf::int64 value);
+
+  // int64 device_temp_memory_size = 2 [deprecated = true];
+  PROTOBUF_DEPRECATED void clear_device_temp_memory_size();
+  PROTOBUF_DEPRECATED static const int kDeviceTempMemorySizeFieldNumber = 2;
+  PROTOBUF_DEPRECATED ::google::protobuf::int64 device_temp_memory_size() const;
+  PROTOBUF_DEPRECATED void set_device_temp_memory_size(::google::protobuf::int64 value);
+
+  // int64 persistent_memory_size = 3;
+  void clear_persistent_memory_size();
+  static const int kPersistentMemorySizeFieldNumber = 3;
+  ::google::protobuf::int64 persistent_memory_size() const;
+  void set_persistent_memory_size(::google::protobuf::int64 value);
+
+  // int64 device_persistent_memory_size = 4 [deprecated = true];
+  PROTOBUF_DEPRECATED void clear_device_persistent_memory_size();
+  PROTOBUF_DEPRECATED static const int kDevicePersistentMemorySizeFieldNumber = 4;
+  PROTOBUF_DEPRECATED ::google::protobuf::int64 device_persistent_memory_size() const;
+  PROTOBUF_DEPRECATED void set_device_persistent_memory_size(::google::protobuf::int64 value);
+
+  // @@protoc_insertion_point(class_scope:tensorflow.MemoryStats)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  ::google::protobuf::RepeatedField< ::google::protobuf::int64 > persistent_tensor_alloc_ids_;
+  mutable std::atomic<int> _persistent_tensor_alloc_ids_cached_byte_size_;
+  ::google::protobuf::RepeatedField< ::google::protobuf::int64 > device_persistent_tensor_alloc_ids_;
+  mutable std::atomic<int> _device_persistent_tensor_alloc_ids_cached_byte_size_;
+  ::google::protobuf::int64 temp_memory_size_;
+  ::google::protobuf::int64 device_temp_memory_size_;
+  ::google::protobuf::int64 persistent_memory_size_;
+  ::google::protobuf::int64 device_persistent_memory_size_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fframework_2fstep_5fstats_2eproto;
+};
+// -------------------------------------------------------------------
+
+class NodeExecStats : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.NodeExecStats) */ {
+ public:
+  NodeExecStats();
+  virtual ~NodeExecStats();
+
+  NodeExecStats(const NodeExecStats& from);
+
+  inline NodeExecStats& operator=(const NodeExecStats& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  NodeExecStats(NodeExecStats&& from) noexcept
+    : NodeExecStats() {
+    *this = ::std::move(from);
+  }
+
+  inline NodeExecStats& operator=(NodeExecStats&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const NodeExecStats& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const NodeExecStats* internal_default_instance() {
+    return reinterpret_cast<const NodeExecStats*>(
+               &_NodeExecStats_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    4;
+
+  void UnsafeArenaSwap(NodeExecStats* other);
+  void Swap(NodeExecStats* other);
+  friend void swap(NodeExecStats& a, NodeExecStats& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline NodeExecStats* New() const final {
+    return CreateMaybeMessage<NodeExecStats>(NULL);
+  }
+
+  NodeExecStats* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<NodeExecStats>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const NodeExecStats& from);
+  void MergeFrom(const NodeExecStats& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(NodeExecStats* other);
+  protected:
+  explicit NodeExecStats(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // repeated .tensorflow.AllocatorMemoryUsed memory = 6;
+  int memory_size() const;
+  void clear_memory();
+  static const int kMemoryFieldNumber = 6;
+  ::tensorflow::AllocatorMemoryUsed* mutable_memory(int index);
+  ::google::protobuf::RepeatedPtrField< ::tensorflow::AllocatorMemoryUsed >*
+      mutable_memory();
+  const ::tensorflow::AllocatorMemoryUsed& memory(int index) const;
+  ::tensorflow::AllocatorMemoryUsed* add_memory();
+  const ::google::protobuf::RepeatedPtrField< ::tensorflow::AllocatorMemoryUsed >&
+      memory() const;
+
+  // repeated .tensorflow.NodeOutput output = 7;
+  int output_size() const;
+  void clear_output();
+  static const int kOutputFieldNumber = 7;
+  ::tensorflow::NodeOutput* mutable_output(int index);
+  ::google::protobuf::RepeatedPtrField< ::tensorflow::NodeOutput >*
+      mutable_output();
+  const ::tensorflow::NodeOutput& output(int index) const;
+  ::tensorflow::NodeOutput* add_output();
+  const ::google::protobuf::RepeatedPtrField< ::tensorflow::NodeOutput >&
+      output() const;
+
+  // repeated .tensorflow.AllocationDescription referenced_tensor = 11;
+  int referenced_tensor_size() const;
+  void clear_referenced_tensor();
+  static const int kReferencedTensorFieldNumber = 11;
+  ::tensorflow::AllocationDescription* mutable_referenced_tensor(int index);
+  ::google::protobuf::RepeatedPtrField< ::tensorflow::AllocationDescription >*
+      mutable_referenced_tensor();
+  const ::tensorflow::AllocationDescription& referenced_tensor(int index) const;
+  ::tensorflow::AllocationDescription* add_referenced_tensor();
+  const ::google::protobuf::RepeatedPtrField< ::tensorflow::AllocationDescription >&
+      referenced_tensor() const;
+
+  // string node_name = 1;
+  void clear_node_name();
+  static const int kNodeNameFieldNumber = 1;
+  const ::std::string& node_name() const;
+  void set_node_name(const ::std::string& value);
+  #if LANG_CXX11
+  void set_node_name(::std::string&& value);
+  #endif
+  void set_node_name(const char* value);
+  void set_node_name(const char* value, size_t size);
+  ::std::string* mutable_node_name();
+  ::std::string* release_node_name();
+  void set_allocated_node_name(::std::string* node_name);
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  ::std::string* unsafe_arena_release_node_name();
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  void unsafe_arena_set_allocated_node_name(
+      ::std::string* node_name);
+
+  // string timeline_label = 8;
+  void clear_timeline_label();
+  static const int kTimelineLabelFieldNumber = 8;
+  const ::std::string& timeline_label() const;
+  void set_timeline_label(const ::std::string& value);
+  #if LANG_CXX11
+  void set_timeline_label(::std::string&& value);
+  #endif
+  void set_timeline_label(const char* value);
+  void set_timeline_label(const char* value, size_t size);
+  ::std::string* mutable_timeline_label();
+  ::std::string* release_timeline_label();
+  void set_allocated_timeline_label(::std::string* timeline_label);
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  ::std::string* unsafe_arena_release_timeline_label();
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  void unsafe_arena_set_allocated_timeline_label(
+      ::std::string* timeline_label);
+
+  // .tensorflow.MemoryStats memory_stats = 12;
+  bool has_memory_stats() const;
+  void clear_memory_stats();
+  static const int kMemoryStatsFieldNumber = 12;
+  const ::tensorflow::MemoryStats& memory_stats() const;
+  ::tensorflow::MemoryStats* release_memory_stats();
+  ::tensorflow::MemoryStats* mutable_memory_stats();
+  void set_allocated_memory_stats(::tensorflow::MemoryStats* memory_stats);
+  void unsafe_arena_set_allocated_memory_stats(
+      ::tensorflow::MemoryStats* memory_stats);
+  ::tensorflow::MemoryStats* unsafe_arena_release_memory_stats();
+
+  // int64 all_start_micros = 2;
+  void clear_all_start_micros();
+  static const int kAllStartMicrosFieldNumber = 2;
+  ::google::protobuf::int64 all_start_micros() const;
+  void set_all_start_micros(::google::protobuf::int64 value);
+
+  // int64 op_start_rel_micros = 3;
+  void clear_op_start_rel_micros();
+  static const int kOpStartRelMicrosFieldNumber = 3;
+  ::google::protobuf::int64 op_start_rel_micros() const;
+  void set_op_start_rel_micros(::google::protobuf::int64 value);
+
+  // int64 op_end_rel_micros = 4;
+  void clear_op_end_rel_micros();
+  static const int kOpEndRelMicrosFieldNumber = 4;
+  ::google::protobuf::int64 op_end_rel_micros() const;
+  void set_op_end_rel_micros(::google::protobuf::int64 value);
+
+  // int64 all_end_rel_micros = 5;
+  void clear_all_end_rel_micros();
+  static const int kAllEndRelMicrosFieldNumber = 5;
+  ::google::protobuf::int64 all_end_rel_micros() const;
+  void set_all_end_rel_micros(::google::protobuf::int64 value);
+
+  // int64 scheduled_micros = 9;
+  void clear_scheduled_micros();
+  static const int kScheduledMicrosFieldNumber = 9;
+  ::google::protobuf::int64 scheduled_micros() const;
+  void set_scheduled_micros(::google::protobuf::int64 value);
+
+  // uint32 thread_id = 10;
+  void clear_thread_id();
+  static const int kThreadIdFieldNumber = 10;
+  ::google::protobuf::uint32 thread_id() const;
+  void set_thread_id(::google::protobuf::uint32 value);
+
+  // @@protoc_insertion_point(class_scope:tensorflow.NodeExecStats)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  ::google::protobuf::RepeatedPtrField< ::tensorflow::AllocatorMemoryUsed > memory_;
+  ::google::protobuf::RepeatedPtrField< ::tensorflow::NodeOutput > output_;
+  ::google::protobuf::RepeatedPtrField< ::tensorflow::AllocationDescription > referenced_tensor_;
+  ::google::protobuf::internal::ArenaStringPtr node_name_;
+  ::google::protobuf::internal::ArenaStringPtr timeline_label_;
+  ::tensorflow::MemoryStats* memory_stats_;
+  ::google::protobuf::int64 all_start_micros_;
+  ::google::protobuf::int64 op_start_rel_micros_;
+  ::google::protobuf::int64 op_end_rel_micros_;
+  ::google::protobuf::int64 all_end_rel_micros_;
+  ::google::protobuf::int64 scheduled_micros_;
+  ::google::protobuf::uint32 thread_id_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fframework_2fstep_5fstats_2eproto;
+};
+// -------------------------------------------------------------------
+
+class DeviceStepStats : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.DeviceStepStats) */ {
+ public:
+  DeviceStepStats();
+  virtual ~DeviceStepStats();
+
+  DeviceStepStats(const DeviceStepStats& from);
+
+  inline DeviceStepStats& operator=(const DeviceStepStats& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  DeviceStepStats(DeviceStepStats&& from) noexcept
+    : DeviceStepStats() {
+    *this = ::std::move(from);
+  }
+
+  inline DeviceStepStats& operator=(DeviceStepStats&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const DeviceStepStats& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const DeviceStepStats* internal_default_instance() {
+    return reinterpret_cast<const DeviceStepStats*>(
+               &_DeviceStepStats_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    5;
+
+  void UnsafeArenaSwap(DeviceStepStats* other);
+  void Swap(DeviceStepStats* other);
+  friend void swap(DeviceStepStats& a, DeviceStepStats& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline DeviceStepStats* New() const final {
+    return CreateMaybeMessage<DeviceStepStats>(NULL);
+  }
+
+  DeviceStepStats* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<DeviceStepStats>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const DeviceStepStats& from);
+  void MergeFrom(const DeviceStepStats& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(DeviceStepStats* other);
+  protected:
+  explicit DeviceStepStats(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // repeated .tensorflow.NodeExecStats node_stats = 2;
+  int node_stats_size() const;
+  void clear_node_stats();
+  static const int kNodeStatsFieldNumber = 2;
+  ::tensorflow::NodeExecStats* mutable_node_stats(int index);
+  ::google::protobuf::RepeatedPtrField< ::tensorflow::NodeExecStats >*
+      mutable_node_stats();
+  const ::tensorflow::NodeExecStats& node_stats(int index) const;
+  ::tensorflow::NodeExecStats* add_node_stats();
+  const ::google::protobuf::RepeatedPtrField< ::tensorflow::NodeExecStats >&
+      node_stats() const;
+
+  // string device = 1;
+  void clear_device();
+  static const int kDeviceFieldNumber = 1;
+  const ::std::string& device() const;
+  void set_device(const ::std::string& value);
+  #if LANG_CXX11
+  void set_device(::std::string&& value);
+  #endif
+  void set_device(const char* value);
+  void set_device(const char* value, size_t size);
+  ::std::string* mutable_device();
+  ::std::string* release_device();
+  void set_allocated_device(::std::string* device);
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  ::std::string* unsafe_arena_release_device();
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  void unsafe_arena_set_allocated_device(
+      ::std::string* device);
+
+  // @@protoc_insertion_point(class_scope:tensorflow.DeviceStepStats)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  ::google::protobuf::RepeatedPtrField< ::tensorflow::NodeExecStats > node_stats_;
+  ::google::protobuf::internal::ArenaStringPtr device_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fframework_2fstep_5fstats_2eproto;
+};
+// -------------------------------------------------------------------
+
+class StepStats : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.StepStats) */ {
+ public:
+  StepStats();
+  virtual ~StepStats();
+
+  StepStats(const StepStats& from);
+
+  inline StepStats& operator=(const StepStats& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  StepStats(StepStats&& from) noexcept
+    : StepStats() {
+    *this = ::std::move(from);
+  }
+
+  inline StepStats& operator=(StepStats&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const StepStats& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const StepStats* internal_default_instance() {
+    return reinterpret_cast<const StepStats*>(
+               &_StepStats_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    6;
+
+  void UnsafeArenaSwap(StepStats* other);
+  void Swap(StepStats* other);
+  friend void swap(StepStats& a, StepStats& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline StepStats* New() const final {
+    return CreateMaybeMessage<StepStats>(NULL);
+  }
+
+  StepStats* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<StepStats>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const StepStats& from);
+  void MergeFrom(const StepStats& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(StepStats* other);
+  protected:
+  explicit StepStats(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // repeated .tensorflow.DeviceStepStats dev_stats = 1;
+  int dev_stats_size() const;
+  void clear_dev_stats();
+  static const int kDevStatsFieldNumber = 1;
+  ::tensorflow::DeviceStepStats* mutable_dev_stats(int index);
+  ::google::protobuf::RepeatedPtrField< ::tensorflow::DeviceStepStats >*
+      mutable_dev_stats();
+  const ::tensorflow::DeviceStepStats& dev_stats(int index) const;
+  ::tensorflow::DeviceStepStats* add_dev_stats();
+  const ::google::protobuf::RepeatedPtrField< ::tensorflow::DeviceStepStats >&
+      dev_stats() const;
+
+  // @@protoc_insertion_point(class_scope:tensorflow.StepStats)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  ::google::protobuf::RepeatedPtrField< ::tensorflow::DeviceStepStats > dev_stats_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fframework_2fstep_5fstats_2eproto;
+};
+// ===================================================================
+
+
+// ===================================================================
+
+#ifdef __GNUC__
+  #pragma GCC diagnostic push
+  #pragma GCC diagnostic ignored "-Wstrict-aliasing"
+#endif  // __GNUC__
+// AllocationRecord
+
+// int64 alloc_micros = 1;
+inline void AllocationRecord::clear_alloc_micros() {
+  alloc_micros_ = PROTOBUF_LONGLONG(0);
+}
+inline ::google::protobuf::int64 AllocationRecord::alloc_micros() const {
+  // @@protoc_insertion_point(field_get:tensorflow.AllocationRecord.alloc_micros)
+  return alloc_micros_;
+}
+inline void AllocationRecord::set_alloc_micros(::google::protobuf::int64 value) {
+  
+  alloc_micros_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.AllocationRecord.alloc_micros)
+}
+
+// int64 alloc_bytes = 2;
+inline void AllocationRecord::clear_alloc_bytes() {
+  alloc_bytes_ = PROTOBUF_LONGLONG(0);
+}
+inline ::google::protobuf::int64 AllocationRecord::alloc_bytes() const {
+  // @@protoc_insertion_point(field_get:tensorflow.AllocationRecord.alloc_bytes)
+  return alloc_bytes_;
+}
+inline void AllocationRecord::set_alloc_bytes(::google::protobuf::int64 value) {
+  
+  alloc_bytes_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.AllocationRecord.alloc_bytes)
+}
+
+// -------------------------------------------------------------------
+
+// AllocatorMemoryUsed
+
+// string allocator_name = 1;
+inline void AllocatorMemoryUsed::clear_allocator_name() {
+  allocator_name_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline const ::std::string& AllocatorMemoryUsed::allocator_name() const {
+  // @@protoc_insertion_point(field_get:tensorflow.AllocatorMemoryUsed.allocator_name)
+  return allocator_name_.Get();
+}
+inline void AllocatorMemoryUsed::set_allocator_name(const ::std::string& value) {
+  
+  allocator_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set:tensorflow.AllocatorMemoryUsed.allocator_name)
+}
+#if LANG_CXX11
+inline void AllocatorMemoryUsed::set_allocator_name(::std::string&& value) {
+  
+  allocator_name_.Set(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.AllocatorMemoryUsed.allocator_name)
+}
+#endif
+inline void AllocatorMemoryUsed::set_allocator_name(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  allocator_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
+              GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_char:tensorflow.AllocatorMemoryUsed.allocator_name)
+}
+inline void AllocatorMemoryUsed::set_allocator_name(const char* value,
+    size_t size) {
+  
+  allocator_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
+      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.AllocatorMemoryUsed.allocator_name)
+}
+inline ::std::string* AllocatorMemoryUsed::mutable_allocator_name() {
+  
+  // @@protoc_insertion_point(field_mutable:tensorflow.AllocatorMemoryUsed.allocator_name)
+  return allocator_name_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline ::std::string* AllocatorMemoryUsed::release_allocator_name() {
+  // @@protoc_insertion_point(field_release:tensorflow.AllocatorMemoryUsed.allocator_name)
+  
+  return allocator_name_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline void AllocatorMemoryUsed::set_allocated_allocator_name(::std::string* allocator_name) {
+  if (allocator_name != NULL) {
+    
+  } else {
+    
+  }
+  allocator_name_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), allocator_name,
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.AllocatorMemoryUsed.allocator_name)
+}
+inline ::std::string* AllocatorMemoryUsed::unsafe_arena_release_allocator_name() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.AllocatorMemoryUsed.allocator_name)
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  
+  return allocator_name_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      GetArenaNoVirtual());
+}
+inline void AllocatorMemoryUsed::unsafe_arena_set_allocated_allocator_name(
+    ::std::string* allocator_name) {
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (allocator_name != NULL) {
+    
+  } else {
+    
+  }
+  allocator_name_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      allocator_name, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.AllocatorMemoryUsed.allocator_name)
+}
+
+// int64 total_bytes = 2;
+inline void AllocatorMemoryUsed::clear_total_bytes() {
+  total_bytes_ = PROTOBUF_LONGLONG(0);
+}
+inline ::google::protobuf::int64 AllocatorMemoryUsed::total_bytes() const {
+  // @@protoc_insertion_point(field_get:tensorflow.AllocatorMemoryUsed.total_bytes)
+  return total_bytes_;
+}
+inline void AllocatorMemoryUsed::set_total_bytes(::google::protobuf::int64 value) {
+  
+  total_bytes_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.AllocatorMemoryUsed.total_bytes)
+}
+
+// int64 peak_bytes = 3;
+inline void AllocatorMemoryUsed::clear_peak_bytes() {
+  peak_bytes_ = PROTOBUF_LONGLONG(0);
+}
+inline ::google::protobuf::int64 AllocatorMemoryUsed::peak_bytes() const {
+  // @@protoc_insertion_point(field_get:tensorflow.AllocatorMemoryUsed.peak_bytes)
+  return peak_bytes_;
+}
+inline void AllocatorMemoryUsed::set_peak_bytes(::google::protobuf::int64 value) {
+  
+  peak_bytes_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.AllocatorMemoryUsed.peak_bytes)
+}
+
+// int64 live_bytes = 4;
+inline void AllocatorMemoryUsed::clear_live_bytes() {
+  live_bytes_ = PROTOBUF_LONGLONG(0);
+}
+inline ::google::protobuf::int64 AllocatorMemoryUsed::live_bytes() const {
+  // @@protoc_insertion_point(field_get:tensorflow.AllocatorMemoryUsed.live_bytes)
+  return live_bytes_;
+}
+inline void AllocatorMemoryUsed::set_live_bytes(::google::protobuf::int64 value) {
+  
+  live_bytes_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.AllocatorMemoryUsed.live_bytes)
+}
+
+// repeated .tensorflow.AllocationRecord allocation_records = 6;
+inline int AllocatorMemoryUsed::allocation_records_size() const {
+  return allocation_records_.size();
+}
+inline void AllocatorMemoryUsed::clear_allocation_records() {
+  allocation_records_.Clear();
+}
+inline ::tensorflow::AllocationRecord* AllocatorMemoryUsed::mutable_allocation_records(int index) {
+  // @@protoc_insertion_point(field_mutable:tensorflow.AllocatorMemoryUsed.allocation_records)
+  return allocation_records_.Mutable(index);
+}
+inline ::google::protobuf::RepeatedPtrField< ::tensorflow::AllocationRecord >*
+AllocatorMemoryUsed::mutable_allocation_records() {
+  // @@protoc_insertion_point(field_mutable_list:tensorflow.AllocatorMemoryUsed.allocation_records)
+  return &allocation_records_;
+}
+inline const ::tensorflow::AllocationRecord& AllocatorMemoryUsed::allocation_records(int index) const {
+  // @@protoc_insertion_point(field_get:tensorflow.AllocatorMemoryUsed.allocation_records)
+  return allocation_records_.Get(index);
+}
+inline ::tensorflow::AllocationRecord* AllocatorMemoryUsed::add_allocation_records() {
+  // @@protoc_insertion_point(field_add:tensorflow.AllocatorMemoryUsed.allocation_records)
+  return allocation_records_.Add();
+}
+inline const ::google::protobuf::RepeatedPtrField< ::tensorflow::AllocationRecord >&
+AllocatorMemoryUsed::allocation_records() const {
+  // @@protoc_insertion_point(field_list:tensorflow.AllocatorMemoryUsed.allocation_records)
+  return allocation_records_;
+}
+
+// int64 allocator_bytes_in_use = 5;
+inline void AllocatorMemoryUsed::clear_allocator_bytes_in_use() {
+  allocator_bytes_in_use_ = PROTOBUF_LONGLONG(0);
+}
+inline ::google::protobuf::int64 AllocatorMemoryUsed::allocator_bytes_in_use() const {
+  // @@protoc_insertion_point(field_get:tensorflow.AllocatorMemoryUsed.allocator_bytes_in_use)
+  return allocator_bytes_in_use_;
+}
+inline void AllocatorMemoryUsed::set_allocator_bytes_in_use(::google::protobuf::int64 value) {
+  
+  allocator_bytes_in_use_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.AllocatorMemoryUsed.allocator_bytes_in_use)
+}
+
+// -------------------------------------------------------------------
+
+// NodeOutput
+
+// int32 slot = 1;
+inline void NodeOutput::clear_slot() {
+  slot_ = 0;
+}
+inline ::google::protobuf::int32 NodeOutput::slot() const {
+  // @@protoc_insertion_point(field_get:tensorflow.NodeOutput.slot)
+  return slot_;
+}
+inline void NodeOutput::set_slot(::google::protobuf::int32 value) {
+  
+  slot_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.NodeOutput.slot)
+}
+
+// .tensorflow.TensorDescription tensor_description = 3;
+inline bool NodeOutput::has_tensor_description() const {
+  return this != internal_default_instance() && tensor_description_ != NULL;
+}
+inline const ::tensorflow::TensorDescription& NodeOutput::tensor_description() const {
+  const ::tensorflow::TensorDescription* p = tensor_description_;
+  // @@protoc_insertion_point(field_get:tensorflow.NodeOutput.tensor_description)
+  return p != NULL ? *p : *reinterpret_cast<const ::tensorflow::TensorDescription*>(
+      &::tensorflow::_TensorDescription_default_instance_);
+}
+inline ::tensorflow::TensorDescription* NodeOutput::release_tensor_description() {
+  // @@protoc_insertion_point(field_release:tensorflow.NodeOutput.tensor_description)
+  
+  ::tensorflow::TensorDescription* temp = tensor_description_;
+  if (GetArenaNoVirtual() != NULL) {
+    temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
+  }
+  tensor_description_ = NULL;
+  return temp;
+}
+inline ::tensorflow::TensorDescription* NodeOutput::unsafe_arena_release_tensor_description() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.NodeOutput.tensor_description)
+  
+  ::tensorflow::TensorDescription* temp = tensor_description_;
+  tensor_description_ = NULL;
+  return temp;
+}
+inline ::tensorflow::TensorDescription* NodeOutput::mutable_tensor_description() {
+  
+  if (tensor_description_ == NULL) {
+    auto* p = CreateMaybeMessage<::tensorflow::TensorDescription>(GetArenaNoVirtual());
+    tensor_description_ = p;
+  }
+  // @@protoc_insertion_point(field_mutable:tensorflow.NodeOutput.tensor_description)
+  return tensor_description_;
+}
+inline void NodeOutput::set_allocated_tensor_description(::tensorflow::TensorDescription* tensor_description) {
+  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
+  if (message_arena == NULL) {
+    delete reinterpret_cast< ::google::protobuf::MessageLite*>(tensor_description_);
+  }
+  if (tensor_description) {
+    ::google::protobuf::Arena* submessage_arena =
+      reinterpret_cast<::google::protobuf::MessageLite*>(tensor_description)->GetArena();
+    if (message_arena != submessage_arena) {
+      tensor_description = ::google::protobuf::internal::GetOwnedMessage(
+          message_arena, tensor_description, submessage_arena);
+    }
+    
+  } else {
+    
+  }
+  tensor_description_ = tensor_description;
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.NodeOutput.tensor_description)
+}
+
+// -------------------------------------------------------------------
+
+// MemoryStats
+
+// int64 temp_memory_size = 1;
+inline void MemoryStats::clear_temp_memory_size() {
+  temp_memory_size_ = PROTOBUF_LONGLONG(0);
+}
+inline ::google::protobuf::int64 MemoryStats::temp_memory_size() const {
+  // @@protoc_insertion_point(field_get:tensorflow.MemoryStats.temp_memory_size)
+  return temp_memory_size_;
+}
+inline void MemoryStats::set_temp_memory_size(::google::protobuf::int64 value) {
+  
+  temp_memory_size_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.MemoryStats.temp_memory_size)
+}
+
+// int64 persistent_memory_size = 3;
+inline void MemoryStats::clear_persistent_memory_size() {
+  persistent_memory_size_ = PROTOBUF_LONGLONG(0);
+}
+inline ::google::protobuf::int64 MemoryStats::persistent_memory_size() const {
+  // @@protoc_insertion_point(field_get:tensorflow.MemoryStats.persistent_memory_size)
+  return persistent_memory_size_;
+}
+inline void MemoryStats::set_persistent_memory_size(::google::protobuf::int64 value) {
+  
+  persistent_memory_size_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.MemoryStats.persistent_memory_size)
+}
+
+// repeated int64 persistent_tensor_alloc_ids = 5;
+inline int MemoryStats::persistent_tensor_alloc_ids_size() const {
+  return persistent_tensor_alloc_ids_.size();
+}
+inline void MemoryStats::clear_persistent_tensor_alloc_ids() {
+  persistent_tensor_alloc_ids_.Clear();
+}
+inline ::google::protobuf::int64 MemoryStats::persistent_tensor_alloc_ids(int index) const {
+  // @@protoc_insertion_point(field_get:tensorflow.MemoryStats.persistent_tensor_alloc_ids)
+  return persistent_tensor_alloc_ids_.Get(index);
+}
+inline void MemoryStats::set_persistent_tensor_alloc_ids(int index, ::google::protobuf::int64 value) {
+  persistent_tensor_alloc_ids_.Set(index, value);
+  // @@protoc_insertion_point(field_set:tensorflow.MemoryStats.persistent_tensor_alloc_ids)
+}
+inline void MemoryStats::add_persistent_tensor_alloc_ids(::google::protobuf::int64 value) {
+  persistent_tensor_alloc_ids_.Add(value);
+  // @@protoc_insertion_point(field_add:tensorflow.MemoryStats.persistent_tensor_alloc_ids)
+}
+inline const ::google::protobuf::RepeatedField< ::google::protobuf::int64 >&
+MemoryStats::persistent_tensor_alloc_ids() const {
+  // @@protoc_insertion_point(field_list:tensorflow.MemoryStats.persistent_tensor_alloc_ids)
+  return persistent_tensor_alloc_ids_;
+}
+inline ::google::protobuf::RepeatedField< ::google::protobuf::int64 >*
+MemoryStats::mutable_persistent_tensor_alloc_ids() {
+  // @@protoc_insertion_point(field_mutable_list:tensorflow.MemoryStats.persistent_tensor_alloc_ids)
+  return &persistent_tensor_alloc_ids_;
+}
+
+// int64 device_temp_memory_size = 2 [deprecated = true];
+inline void MemoryStats::clear_device_temp_memory_size() {
+  device_temp_memory_size_ = PROTOBUF_LONGLONG(0);
+}
+inline ::google::protobuf::int64 MemoryStats::device_temp_memory_size() const {
+  // @@protoc_insertion_point(field_get:tensorflow.MemoryStats.device_temp_memory_size)
+  return device_temp_memory_size_;
+}
+inline void MemoryStats::set_device_temp_memory_size(::google::protobuf::int64 value) {
+  
+  device_temp_memory_size_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.MemoryStats.device_temp_memory_size)
+}
+
+// int64 device_persistent_memory_size = 4 [deprecated = true];
+inline void MemoryStats::clear_device_persistent_memory_size() {
+  device_persistent_memory_size_ = PROTOBUF_LONGLONG(0);
+}
+inline ::google::protobuf::int64 MemoryStats::device_persistent_memory_size() const {
+  // @@protoc_insertion_point(field_get:tensorflow.MemoryStats.device_persistent_memory_size)
+  return device_persistent_memory_size_;
+}
+inline void MemoryStats::set_device_persistent_memory_size(::google::protobuf::int64 value) {
+  
+  device_persistent_memory_size_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.MemoryStats.device_persistent_memory_size)
+}
+
+// repeated int64 device_persistent_tensor_alloc_ids = 6 [deprecated = true];
+inline int MemoryStats::device_persistent_tensor_alloc_ids_size() const {
+  return device_persistent_tensor_alloc_ids_.size();
+}
+inline void MemoryStats::clear_device_persistent_tensor_alloc_ids() {
+  device_persistent_tensor_alloc_ids_.Clear();
+}
+inline ::google::protobuf::int64 MemoryStats::device_persistent_tensor_alloc_ids(int index) const {
+  // @@protoc_insertion_point(field_get:tensorflow.MemoryStats.device_persistent_tensor_alloc_ids)
+  return device_persistent_tensor_alloc_ids_.Get(index);
+}
+inline void MemoryStats::set_device_persistent_tensor_alloc_ids(int index, ::google::protobuf::int64 value) {
+  device_persistent_tensor_alloc_ids_.Set(index, value);
+  // @@protoc_insertion_point(field_set:tensorflow.MemoryStats.device_persistent_tensor_alloc_ids)
+}
+inline void MemoryStats::add_device_persistent_tensor_alloc_ids(::google::protobuf::int64 value) {
+  device_persistent_tensor_alloc_ids_.Add(value);
+  // @@protoc_insertion_point(field_add:tensorflow.MemoryStats.device_persistent_tensor_alloc_ids)
+}
+inline const ::google::protobuf::RepeatedField< ::google::protobuf::int64 >&
+MemoryStats::device_persistent_tensor_alloc_ids() const {
+  // @@protoc_insertion_point(field_list:tensorflow.MemoryStats.device_persistent_tensor_alloc_ids)
+  return device_persistent_tensor_alloc_ids_;
+}
+inline ::google::protobuf::RepeatedField< ::google::protobuf::int64 >*
+MemoryStats::mutable_device_persistent_tensor_alloc_ids() {
+  // @@protoc_insertion_point(field_mutable_list:tensorflow.MemoryStats.device_persistent_tensor_alloc_ids)
+  return &device_persistent_tensor_alloc_ids_;
+}
+
+// -------------------------------------------------------------------
+
+// NodeExecStats
+
+// string node_name = 1;
+inline void NodeExecStats::clear_node_name() {
+  node_name_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline const ::std::string& NodeExecStats::node_name() const {
+  // @@protoc_insertion_point(field_get:tensorflow.NodeExecStats.node_name)
+  return node_name_.Get();
+}
+inline void NodeExecStats::set_node_name(const ::std::string& value) {
+  
+  node_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set:tensorflow.NodeExecStats.node_name)
+}
+#if LANG_CXX11
+inline void NodeExecStats::set_node_name(::std::string&& value) {
+  
+  node_name_.Set(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.NodeExecStats.node_name)
+}
+#endif
+inline void NodeExecStats::set_node_name(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  node_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
+              GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_char:tensorflow.NodeExecStats.node_name)
+}
+inline void NodeExecStats::set_node_name(const char* value,
+    size_t size) {
+  
+  node_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
+      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.NodeExecStats.node_name)
+}
+inline ::std::string* NodeExecStats::mutable_node_name() {
+  
+  // @@protoc_insertion_point(field_mutable:tensorflow.NodeExecStats.node_name)
+  return node_name_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline ::std::string* NodeExecStats::release_node_name() {
+  // @@protoc_insertion_point(field_release:tensorflow.NodeExecStats.node_name)
+  
+  return node_name_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline void NodeExecStats::set_allocated_node_name(::std::string* node_name) {
+  if (node_name != NULL) {
+    
+  } else {
+    
+  }
+  node_name_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), node_name,
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.NodeExecStats.node_name)
+}
+inline ::std::string* NodeExecStats::unsafe_arena_release_node_name() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.NodeExecStats.node_name)
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  
+  return node_name_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      GetArenaNoVirtual());
+}
+inline void NodeExecStats::unsafe_arena_set_allocated_node_name(
+    ::std::string* node_name) {
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (node_name != NULL) {
+    
+  } else {
+    
+  }
+  node_name_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      node_name, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.NodeExecStats.node_name)
+}
+
+// int64 all_start_micros = 2;
+inline void NodeExecStats::clear_all_start_micros() {
+  all_start_micros_ = PROTOBUF_LONGLONG(0);
+}
+inline ::google::protobuf::int64 NodeExecStats::all_start_micros() const {
+  // @@protoc_insertion_point(field_get:tensorflow.NodeExecStats.all_start_micros)
+  return all_start_micros_;
+}
+inline void NodeExecStats::set_all_start_micros(::google::protobuf::int64 value) {
+  
+  all_start_micros_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.NodeExecStats.all_start_micros)
+}
+
+// int64 op_start_rel_micros = 3;
+inline void NodeExecStats::clear_op_start_rel_micros() {
+  op_start_rel_micros_ = PROTOBUF_LONGLONG(0);
+}
+inline ::google::protobuf::int64 NodeExecStats::op_start_rel_micros() const {
+  // @@protoc_insertion_point(field_get:tensorflow.NodeExecStats.op_start_rel_micros)
+  return op_start_rel_micros_;
+}
+inline void NodeExecStats::set_op_start_rel_micros(::google::protobuf::int64 value) {
+  
+  op_start_rel_micros_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.NodeExecStats.op_start_rel_micros)
+}
+
+// int64 op_end_rel_micros = 4;
+inline void NodeExecStats::clear_op_end_rel_micros() {
+  op_end_rel_micros_ = PROTOBUF_LONGLONG(0);
+}
+inline ::google::protobuf::int64 NodeExecStats::op_end_rel_micros() const {
+  // @@protoc_insertion_point(field_get:tensorflow.NodeExecStats.op_end_rel_micros)
+  return op_end_rel_micros_;
+}
+inline void NodeExecStats::set_op_end_rel_micros(::google::protobuf::int64 value) {
+  
+  op_end_rel_micros_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.NodeExecStats.op_end_rel_micros)
+}
+
+// int64 all_end_rel_micros = 5;
+inline void NodeExecStats::clear_all_end_rel_micros() {
+  all_end_rel_micros_ = PROTOBUF_LONGLONG(0);
+}
+inline ::google::protobuf::int64 NodeExecStats::all_end_rel_micros() const {
+  // @@protoc_insertion_point(field_get:tensorflow.NodeExecStats.all_end_rel_micros)
+  return all_end_rel_micros_;
+}
+inline void NodeExecStats::set_all_end_rel_micros(::google::protobuf::int64 value) {
+  
+  all_end_rel_micros_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.NodeExecStats.all_end_rel_micros)
+}
+
+// repeated .tensorflow.AllocatorMemoryUsed memory = 6;
+inline int NodeExecStats::memory_size() const {
+  return memory_.size();
+}
+inline void NodeExecStats::clear_memory() {
+  memory_.Clear();
+}
+inline ::tensorflow::AllocatorMemoryUsed* NodeExecStats::mutable_memory(int index) {
+  // @@protoc_insertion_point(field_mutable:tensorflow.NodeExecStats.memory)
+  return memory_.Mutable(index);
+}
+inline ::google::protobuf::RepeatedPtrField< ::tensorflow::AllocatorMemoryUsed >*
+NodeExecStats::mutable_memory() {
+  // @@protoc_insertion_point(field_mutable_list:tensorflow.NodeExecStats.memory)
+  return &memory_;
+}
+inline const ::tensorflow::AllocatorMemoryUsed& NodeExecStats::memory(int index) const {
+  // @@protoc_insertion_point(field_get:tensorflow.NodeExecStats.memory)
+  return memory_.Get(index);
+}
+inline ::tensorflow::AllocatorMemoryUsed* NodeExecStats::add_memory() {
+  // @@protoc_insertion_point(field_add:tensorflow.NodeExecStats.memory)
+  return memory_.Add();
+}
+inline const ::google::protobuf::RepeatedPtrField< ::tensorflow::AllocatorMemoryUsed >&
+NodeExecStats::memory() const {
+  // @@protoc_insertion_point(field_list:tensorflow.NodeExecStats.memory)
+  return memory_;
+}
+
+// repeated .tensorflow.NodeOutput output = 7;
+inline int NodeExecStats::output_size() const {
+  return output_.size();
+}
+inline void NodeExecStats::clear_output() {
+  output_.Clear();
+}
+inline ::tensorflow::NodeOutput* NodeExecStats::mutable_output(int index) {
+  // @@protoc_insertion_point(field_mutable:tensorflow.NodeExecStats.output)
+  return output_.Mutable(index);
+}
+inline ::google::protobuf::RepeatedPtrField< ::tensorflow::NodeOutput >*
+NodeExecStats::mutable_output() {
+  // @@protoc_insertion_point(field_mutable_list:tensorflow.NodeExecStats.output)
+  return &output_;
+}
+inline const ::tensorflow::NodeOutput& NodeExecStats::output(int index) const {
+  // @@protoc_insertion_point(field_get:tensorflow.NodeExecStats.output)
+  return output_.Get(index);
+}
+inline ::tensorflow::NodeOutput* NodeExecStats::add_output() {
+  // @@protoc_insertion_point(field_add:tensorflow.NodeExecStats.output)
+  return output_.Add();
+}
+inline const ::google::protobuf::RepeatedPtrField< ::tensorflow::NodeOutput >&
+NodeExecStats::output() const {
+  // @@protoc_insertion_point(field_list:tensorflow.NodeExecStats.output)
+  return output_;
+}
+
+// string timeline_label = 8;
+inline void NodeExecStats::clear_timeline_label() {
+  timeline_label_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline const ::std::string& NodeExecStats::timeline_label() const {
+  // @@protoc_insertion_point(field_get:tensorflow.NodeExecStats.timeline_label)
+  return timeline_label_.Get();
+}
+inline void NodeExecStats::set_timeline_label(const ::std::string& value) {
+  
+  timeline_label_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set:tensorflow.NodeExecStats.timeline_label)
+}
+#if LANG_CXX11
+inline void NodeExecStats::set_timeline_label(::std::string&& value) {
+  
+  timeline_label_.Set(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.NodeExecStats.timeline_label)
+}
+#endif
+inline void NodeExecStats::set_timeline_label(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  timeline_label_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
+              GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_char:tensorflow.NodeExecStats.timeline_label)
+}
+inline void NodeExecStats::set_timeline_label(const char* value,
+    size_t size) {
+  
+  timeline_label_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
+      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.NodeExecStats.timeline_label)
+}
+inline ::std::string* NodeExecStats::mutable_timeline_label() {
+  
+  // @@protoc_insertion_point(field_mutable:tensorflow.NodeExecStats.timeline_label)
+  return timeline_label_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline ::std::string* NodeExecStats::release_timeline_label() {
+  // @@protoc_insertion_point(field_release:tensorflow.NodeExecStats.timeline_label)
+  
+  return timeline_label_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline void NodeExecStats::set_allocated_timeline_label(::std::string* timeline_label) {
+  if (timeline_label != NULL) {
+    
+  } else {
+    
+  }
+  timeline_label_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), timeline_label,
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.NodeExecStats.timeline_label)
+}
+inline ::std::string* NodeExecStats::unsafe_arena_release_timeline_label() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.NodeExecStats.timeline_label)
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  
+  return timeline_label_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      GetArenaNoVirtual());
+}
+inline void NodeExecStats::unsafe_arena_set_allocated_timeline_label(
+    ::std::string* timeline_label) {
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (timeline_label != NULL) {
+    
+  } else {
+    
+  }
+  timeline_label_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      timeline_label, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.NodeExecStats.timeline_label)
+}
+
+// int64 scheduled_micros = 9;
+inline void NodeExecStats::clear_scheduled_micros() {
+  scheduled_micros_ = PROTOBUF_LONGLONG(0);
+}
+inline ::google::protobuf::int64 NodeExecStats::scheduled_micros() const {
+  // @@protoc_insertion_point(field_get:tensorflow.NodeExecStats.scheduled_micros)
+  return scheduled_micros_;
+}
+inline void NodeExecStats::set_scheduled_micros(::google::protobuf::int64 value) {
+  
+  scheduled_micros_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.NodeExecStats.scheduled_micros)
+}
+
+// uint32 thread_id = 10;
+inline void NodeExecStats::clear_thread_id() {
+  thread_id_ = 0u;
+}
+inline ::google::protobuf::uint32 NodeExecStats::thread_id() const {
+  // @@protoc_insertion_point(field_get:tensorflow.NodeExecStats.thread_id)
+  return thread_id_;
+}
+inline void NodeExecStats::set_thread_id(::google::protobuf::uint32 value) {
+  
+  thread_id_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.NodeExecStats.thread_id)
+}
+
+// repeated .tensorflow.AllocationDescription referenced_tensor = 11;
+inline int NodeExecStats::referenced_tensor_size() const {
+  return referenced_tensor_.size();
+}
+inline ::tensorflow::AllocationDescription* NodeExecStats::mutable_referenced_tensor(int index) {
+  // @@protoc_insertion_point(field_mutable:tensorflow.NodeExecStats.referenced_tensor)
+  return referenced_tensor_.Mutable(index);
+}
+inline ::google::protobuf::RepeatedPtrField< ::tensorflow::AllocationDescription >*
+NodeExecStats::mutable_referenced_tensor() {
+  // @@protoc_insertion_point(field_mutable_list:tensorflow.NodeExecStats.referenced_tensor)
+  return &referenced_tensor_;
+}
+inline const ::tensorflow::AllocationDescription& NodeExecStats::referenced_tensor(int index) const {
+  // @@protoc_insertion_point(field_get:tensorflow.NodeExecStats.referenced_tensor)
+  return referenced_tensor_.Get(index);
+}
+inline ::tensorflow::AllocationDescription* NodeExecStats::add_referenced_tensor() {
+  // @@protoc_insertion_point(field_add:tensorflow.NodeExecStats.referenced_tensor)
+  return referenced_tensor_.Add();
+}
+inline const ::google::protobuf::RepeatedPtrField< ::tensorflow::AllocationDescription >&
+NodeExecStats::referenced_tensor() const {
+  // @@protoc_insertion_point(field_list:tensorflow.NodeExecStats.referenced_tensor)
+  return referenced_tensor_;
+}
+
+// .tensorflow.MemoryStats memory_stats = 12;
+inline bool NodeExecStats::has_memory_stats() const {
+  return this != internal_default_instance() && memory_stats_ != NULL;
+}
+inline void NodeExecStats::clear_memory_stats() {
+  if (GetArenaNoVirtual() == NULL && memory_stats_ != NULL) {
+    delete memory_stats_;
+  }
+  memory_stats_ = NULL;
+}
+inline const ::tensorflow::MemoryStats& NodeExecStats::memory_stats() const {
+  const ::tensorflow::MemoryStats* p = memory_stats_;
+  // @@protoc_insertion_point(field_get:tensorflow.NodeExecStats.memory_stats)
+  return p != NULL ? *p : *reinterpret_cast<const ::tensorflow::MemoryStats*>(
+      &::tensorflow::_MemoryStats_default_instance_);
+}
+inline ::tensorflow::MemoryStats* NodeExecStats::release_memory_stats() {
+  // @@protoc_insertion_point(field_release:tensorflow.NodeExecStats.memory_stats)
+  
+  ::tensorflow::MemoryStats* temp = memory_stats_;
+  if (GetArenaNoVirtual() != NULL) {
+    temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
+  }
+  memory_stats_ = NULL;
+  return temp;
+}
+inline ::tensorflow::MemoryStats* NodeExecStats::unsafe_arena_release_memory_stats() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.NodeExecStats.memory_stats)
+  
+  ::tensorflow::MemoryStats* temp = memory_stats_;
+  memory_stats_ = NULL;
+  return temp;
+}
+inline ::tensorflow::MemoryStats* NodeExecStats::mutable_memory_stats() {
+  
+  if (memory_stats_ == NULL) {
+    auto* p = CreateMaybeMessage<::tensorflow::MemoryStats>(GetArenaNoVirtual());
+    memory_stats_ = p;
+  }
+  // @@protoc_insertion_point(field_mutable:tensorflow.NodeExecStats.memory_stats)
+  return memory_stats_;
+}
+inline void NodeExecStats::set_allocated_memory_stats(::tensorflow::MemoryStats* memory_stats) {
+  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
+  if (message_arena == NULL) {
+    delete memory_stats_;
+  }
+  if (memory_stats) {
+    ::google::protobuf::Arena* submessage_arena =
+      ::google::protobuf::Arena::GetArena(memory_stats);
+    if (message_arena != submessage_arena) {
+      memory_stats = ::google::protobuf::internal::GetOwnedMessage(
+          message_arena, memory_stats, submessage_arena);
+    }
+    
+  } else {
+    
+  }
+  memory_stats_ = memory_stats;
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.NodeExecStats.memory_stats)
+}
+
+// -------------------------------------------------------------------
+
+// DeviceStepStats
+
+// string device = 1;
+inline void DeviceStepStats::clear_device() {
+  device_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline const ::std::string& DeviceStepStats::device() const {
+  // @@protoc_insertion_point(field_get:tensorflow.DeviceStepStats.device)
+  return device_.Get();
+}
+inline void DeviceStepStats::set_device(const ::std::string& value) {
+  
+  device_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set:tensorflow.DeviceStepStats.device)
+}
+#if LANG_CXX11
+inline void DeviceStepStats::set_device(::std::string&& value) {
+  
+  device_.Set(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.DeviceStepStats.device)
+}
+#endif
+inline void DeviceStepStats::set_device(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  device_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
+              GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_char:tensorflow.DeviceStepStats.device)
+}
+inline void DeviceStepStats::set_device(const char* value,
+    size_t size) {
+  
+  device_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
+      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.DeviceStepStats.device)
+}
+inline ::std::string* DeviceStepStats::mutable_device() {
+  
+  // @@protoc_insertion_point(field_mutable:tensorflow.DeviceStepStats.device)
+  return device_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline ::std::string* DeviceStepStats::release_device() {
+  // @@protoc_insertion_point(field_release:tensorflow.DeviceStepStats.device)
+  
+  return device_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline void DeviceStepStats::set_allocated_device(::std::string* device) {
+  if (device != NULL) {
+    
+  } else {
+    
+  }
+  device_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), device,
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.DeviceStepStats.device)
+}
+inline ::std::string* DeviceStepStats::unsafe_arena_release_device() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.DeviceStepStats.device)
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  
+  return device_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      GetArenaNoVirtual());
+}
+inline void DeviceStepStats::unsafe_arena_set_allocated_device(
+    ::std::string* device) {
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (device != NULL) {
+    
+  } else {
+    
+  }
+  device_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      device, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.DeviceStepStats.device)
+}
+
+// repeated .tensorflow.NodeExecStats node_stats = 2;
+inline int DeviceStepStats::node_stats_size() const {
+  return node_stats_.size();
+}
+inline void DeviceStepStats::clear_node_stats() {
+  node_stats_.Clear();
+}
+inline ::tensorflow::NodeExecStats* DeviceStepStats::mutable_node_stats(int index) {
+  // @@protoc_insertion_point(field_mutable:tensorflow.DeviceStepStats.node_stats)
+  return node_stats_.Mutable(index);
+}
+inline ::google::protobuf::RepeatedPtrField< ::tensorflow::NodeExecStats >*
+DeviceStepStats::mutable_node_stats() {
+  // @@protoc_insertion_point(field_mutable_list:tensorflow.DeviceStepStats.node_stats)
+  return &node_stats_;
+}
+inline const ::tensorflow::NodeExecStats& DeviceStepStats::node_stats(int index) const {
+  // @@protoc_insertion_point(field_get:tensorflow.DeviceStepStats.node_stats)
+  return node_stats_.Get(index);
+}
+inline ::tensorflow::NodeExecStats* DeviceStepStats::add_node_stats() {
+  // @@protoc_insertion_point(field_add:tensorflow.DeviceStepStats.node_stats)
+  return node_stats_.Add();
+}
+inline const ::google::protobuf::RepeatedPtrField< ::tensorflow::NodeExecStats >&
+DeviceStepStats::node_stats() const {
+  // @@protoc_insertion_point(field_list:tensorflow.DeviceStepStats.node_stats)
+  return node_stats_;
+}
+
+// -------------------------------------------------------------------
+
+// StepStats
+
+// repeated .tensorflow.DeviceStepStats dev_stats = 1;
+inline int StepStats::dev_stats_size() const {
+  return dev_stats_.size();
+}
+inline void StepStats::clear_dev_stats() {
+  dev_stats_.Clear();
+}
+inline ::tensorflow::DeviceStepStats* StepStats::mutable_dev_stats(int index) {
+  // @@protoc_insertion_point(field_mutable:tensorflow.StepStats.dev_stats)
+  return dev_stats_.Mutable(index);
+}
+inline ::google::protobuf::RepeatedPtrField< ::tensorflow::DeviceStepStats >*
+StepStats::mutable_dev_stats() {
+  // @@protoc_insertion_point(field_mutable_list:tensorflow.StepStats.dev_stats)
+  return &dev_stats_;
+}
+inline const ::tensorflow::DeviceStepStats& StepStats::dev_stats(int index) const {
+  // @@protoc_insertion_point(field_get:tensorflow.StepStats.dev_stats)
+  return dev_stats_.Get(index);
+}
+inline ::tensorflow::DeviceStepStats* StepStats::add_dev_stats() {
+  // @@protoc_insertion_point(field_add:tensorflow.StepStats.dev_stats)
+  return dev_stats_.Add();
+}
+inline const ::google::protobuf::RepeatedPtrField< ::tensorflow::DeviceStepStats >&
+StepStats::dev_stats() const {
+  // @@protoc_insertion_point(field_list:tensorflow.StepStats.dev_stats)
+  return dev_stats_;
+}
+
+#ifdef __GNUC__
+  #pragma GCC diagnostic pop
+#endif  // __GNUC__
+// -------------------------------------------------------------------
+
+// -------------------------------------------------------------------
+
+// -------------------------------------------------------------------
+
+// -------------------------------------------------------------------
+
+// -------------------------------------------------------------------
+
+// -------------------------------------------------------------------
+
+
+// @@protoc_insertion_point(namespace_scope)
+
+}  // namespace tensorflow
+
+// @@protoc_insertion_point(global_scope)
+
+#include <google/protobuf/port_undef.inc>
+#endif  // PROTOBUF_INCLUDED_tensorflow_2fcore_2fframework_2fstep_5fstats_2eproto
diff --git a/tensorflow/core/framework/step_stats.proto b/tensorflow/core/framework/step_stats.proto
new file mode 100644 (file)
index 0000000..d98999c
--- /dev/null
@@ -0,0 +1,79 @@
+syntax = "proto3";
+
+package tensorflow;
+option cc_enable_arenas = true;
+option java_outer_classname = "StepStatsProtos";
+option java_multiple_files = true;
+option java_package = "org.tensorflow.framework";
+option go_package = "github.com/tensorflow/tensorflow/tensorflow/go/core/framework";
+import "tensorflow/core/framework/allocation_description.proto";
+import "tensorflow/core/framework/tensor_description.proto";
+
+// An allocation/de-allocation operation performed by the allocator.
+message AllocationRecord {
+  // The timestamp of the operation.
+  int64 alloc_micros = 1;
+  // Number of bytes allocated, or de-allocated if negative.
+  int64 alloc_bytes = 2;
+}
+
+message AllocatorMemoryUsed {
+  string allocator_name = 1;
+  // These are per-node allocator memory stats.
+  int64 total_bytes = 2;
+  int64 peak_bytes = 3;
+  // The bytes that are not deallocated.
+  int64 live_bytes = 4;
+  // The allocation and deallocation timeline.
+  repeated AllocationRecord allocation_records = 6;
+
+  // These are snapshots of the overall allocator memory stats.
+  // The number of live bytes currently allocated by the allocator.
+  int64 allocator_bytes_in_use = 5;
+}
+
+// Output sizes recorded for a single execution of a graph node.
+message NodeOutput {
+  int32 slot = 1;
+  TensorDescription tensor_description = 3;
+};
+
+// For memory tracking.
+message MemoryStats {
+  int64 temp_memory_size = 1;
+  int64 persistent_memory_size = 3;
+  repeated int64 persistent_tensor_alloc_ids = 5;
+
+  int64 device_temp_memory_size = 2 [deprecated = true];
+  int64 device_persistent_memory_size = 4 [deprecated = true];
+  repeated int64 device_persistent_tensor_alloc_ids = 6 [deprecated = true];
+}
+
+// Time/size stats recorded for a single execution of a graph node.
+message NodeExecStats {
+  // TODO(tucker): Use some more compact form of node identity than
+  // the full string name.  Either all processes should agree on a
+  // global id (cost_id?) for each node, or we should use a hash of
+  // the name.
+  string node_name = 1;
+  int64 all_start_micros = 2;
+  int64 op_start_rel_micros = 3;
+  int64 op_end_rel_micros = 4;
+  int64 all_end_rel_micros = 5;
+  repeated AllocatorMemoryUsed memory = 6;
+  repeated NodeOutput output = 7;
+  string timeline_label = 8;
+  int64 scheduled_micros = 9;
+  uint32 thread_id = 10;
+  repeated AllocationDescription referenced_tensor = 11;
+  MemoryStats memory_stats = 12;
+};
+
+message DeviceStepStats {
+  string device = 1;
+  repeated NodeExecStats node_stats = 2;
+}
+
+message StepStats {
+  repeated DeviceStepStats dev_stats = 1;
+};
diff --git a/tensorflow/core/framework/summary.pb.cc b/tensorflow/core/framework/summary.pb.cc
new file mode 100644 (file)
index 0000000..70e49ec
--- /dev/null
@@ -0,0 +1,4481 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: tensorflow/core/framework/summary.proto
+
+#include "tensorflow/core/framework/summary.pb.h"
+
+#include <algorithm>
+
+#include <google/protobuf/stubs/common.h>
+#include <google/protobuf/io/coded_stream.h>
+#include <google/protobuf/extension_set.h>
+#include <google/protobuf/wire_format_lite_inl.h>
+#include <google/protobuf/descriptor.h>
+#include <google/protobuf/generated_message_reflection.h>
+#include <google/protobuf/reflection_ops.h>
+#include <google/protobuf/wire_format.h>
+// @@protoc_insertion_point(includes)
+#include <google/protobuf/port_def.inc>
+
+extern PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fframework_2fsummary_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_HistogramProto_tensorflow_2fcore_2fframework_2fsummary_2eproto;
+extern PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fframework_2fsummary_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_SummaryMetadata_PluginData_tensorflow_2fcore_2fframework_2fsummary_2eproto;
+extern PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fframework_2fsummary_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_Summary_Audio_tensorflow_2fcore_2fframework_2fsummary_2eproto;
+extern PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fframework_2fsummary_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_Summary_Image_tensorflow_2fcore_2fframework_2fsummary_2eproto;
+extern PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fframework_2fsummary_2eproto ::google::protobuf::internal::SCCInfo<1> scc_info_SummaryMetadata_tensorflow_2fcore_2fframework_2fsummary_2eproto;
+extern PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fframework_2fsummary_2eproto ::google::protobuf::internal::SCCInfo<5> scc_info_Summary_Value_tensorflow_2fcore_2fframework_2fsummary_2eproto;
+extern PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fframework_2ftensor_2eproto ::google::protobuf::internal::SCCInfo<2> scc_info_TensorProto_tensorflow_2fcore_2fframework_2ftensor_2eproto;
+namespace tensorflow {
+class SummaryDescriptionDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<SummaryDescription> _instance;
+} _SummaryDescription_default_instance_;
+class HistogramProtoDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<HistogramProto> _instance;
+} _HistogramProto_default_instance_;
+class SummaryMetadata_PluginDataDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<SummaryMetadata_PluginData> _instance;
+} _SummaryMetadata_PluginData_default_instance_;
+class SummaryMetadataDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<SummaryMetadata> _instance;
+} _SummaryMetadata_default_instance_;
+class Summary_ImageDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<Summary_Image> _instance;
+} _Summary_Image_default_instance_;
+class Summary_AudioDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<Summary_Audio> _instance;
+} _Summary_Audio_default_instance_;
+class Summary_ValueDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<Summary_Value> _instance;
+  float simple_value_;
+  ::google::protobuf::internal::ArenaStringPtr obsolete_old_style_histogram_;
+  const ::tensorflow::Summary_Image* image_;
+  const ::tensorflow::HistogramProto* histo_;
+  const ::tensorflow::Summary_Audio* audio_;
+  const ::tensorflow::TensorProto* tensor_;
+} _Summary_Value_default_instance_;
+class SummaryDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<Summary> _instance;
+} _Summary_default_instance_;
+}  // namespace tensorflow
+static void InitDefaultsSummaryDescription_tensorflow_2fcore_2fframework_2fsummary_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_SummaryDescription_default_instance_;
+    new (ptr) ::tensorflow::SummaryDescription();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::SummaryDescription::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<0> scc_info_SummaryDescription_tensorflow_2fcore_2fframework_2fsummary_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsSummaryDescription_tensorflow_2fcore_2fframework_2fsummary_2eproto}, {}};
+
+static void InitDefaultsHistogramProto_tensorflow_2fcore_2fframework_2fsummary_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_HistogramProto_default_instance_;
+    new (ptr) ::tensorflow::HistogramProto();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::HistogramProto::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<0> scc_info_HistogramProto_tensorflow_2fcore_2fframework_2fsummary_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsHistogramProto_tensorflow_2fcore_2fframework_2fsummary_2eproto}, {}};
+
+static void InitDefaultsSummaryMetadata_PluginData_tensorflow_2fcore_2fframework_2fsummary_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_SummaryMetadata_PluginData_default_instance_;
+    new (ptr) ::tensorflow::SummaryMetadata_PluginData();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::SummaryMetadata_PluginData::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<0> scc_info_SummaryMetadata_PluginData_tensorflow_2fcore_2fframework_2fsummary_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsSummaryMetadata_PluginData_tensorflow_2fcore_2fframework_2fsummary_2eproto}, {}};
+
+static void InitDefaultsSummaryMetadata_tensorflow_2fcore_2fframework_2fsummary_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_SummaryMetadata_default_instance_;
+    new (ptr) ::tensorflow::SummaryMetadata();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::SummaryMetadata::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<1> scc_info_SummaryMetadata_tensorflow_2fcore_2fframework_2fsummary_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsSummaryMetadata_tensorflow_2fcore_2fframework_2fsummary_2eproto}, {
+      &scc_info_SummaryMetadata_PluginData_tensorflow_2fcore_2fframework_2fsummary_2eproto.base,}};
+
+static void InitDefaultsSummary_Image_tensorflow_2fcore_2fframework_2fsummary_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_Summary_Image_default_instance_;
+    new (ptr) ::tensorflow::Summary_Image();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::Summary_Image::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<0> scc_info_Summary_Image_tensorflow_2fcore_2fframework_2fsummary_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsSummary_Image_tensorflow_2fcore_2fframework_2fsummary_2eproto}, {}};
+
+static void InitDefaultsSummary_Audio_tensorflow_2fcore_2fframework_2fsummary_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_Summary_Audio_default_instance_;
+    new (ptr) ::tensorflow::Summary_Audio();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::Summary_Audio::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<0> scc_info_Summary_Audio_tensorflow_2fcore_2fframework_2fsummary_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsSummary_Audio_tensorflow_2fcore_2fframework_2fsummary_2eproto}, {}};
+
+static void InitDefaultsSummary_Value_tensorflow_2fcore_2fframework_2fsummary_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_Summary_Value_default_instance_;
+    new (ptr) ::tensorflow::Summary_Value();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::Summary_Value::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<5> scc_info_Summary_Value_tensorflow_2fcore_2fframework_2fsummary_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 5, InitDefaultsSummary_Value_tensorflow_2fcore_2fframework_2fsummary_2eproto}, {
+      &scc_info_SummaryMetadata_tensorflow_2fcore_2fframework_2fsummary_2eproto.base,
+      &scc_info_Summary_Image_tensorflow_2fcore_2fframework_2fsummary_2eproto.base,
+      &scc_info_HistogramProto_tensorflow_2fcore_2fframework_2fsummary_2eproto.base,
+      &scc_info_Summary_Audio_tensorflow_2fcore_2fframework_2fsummary_2eproto.base,
+      &scc_info_TensorProto_tensorflow_2fcore_2fframework_2ftensor_2eproto.base,}};
+
+static void InitDefaultsSummary_tensorflow_2fcore_2fframework_2fsummary_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_Summary_default_instance_;
+    new (ptr) ::tensorflow::Summary();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::Summary::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<1> scc_info_Summary_tensorflow_2fcore_2fframework_2fsummary_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsSummary_tensorflow_2fcore_2fframework_2fsummary_2eproto}, {
+      &scc_info_Summary_Value_tensorflow_2fcore_2fframework_2fsummary_2eproto.base,}};
+
+void InitDefaults_tensorflow_2fcore_2fframework_2fsummary_2eproto() {
+  ::google::protobuf::internal::InitSCC(&scc_info_SummaryDescription_tensorflow_2fcore_2fframework_2fsummary_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_HistogramProto_tensorflow_2fcore_2fframework_2fsummary_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_SummaryMetadata_PluginData_tensorflow_2fcore_2fframework_2fsummary_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_SummaryMetadata_tensorflow_2fcore_2fframework_2fsummary_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_Summary_Image_tensorflow_2fcore_2fframework_2fsummary_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_Summary_Audio_tensorflow_2fcore_2fframework_2fsummary_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_Summary_Value_tensorflow_2fcore_2fframework_2fsummary_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_Summary_tensorflow_2fcore_2fframework_2fsummary_2eproto.base);
+}
+
+::google::protobuf::Metadata file_level_metadata_tensorflow_2fcore_2fframework_2fsummary_2eproto[8];
+constexpr ::google::protobuf::EnumDescriptor const** file_level_enum_descriptors_tensorflow_2fcore_2fframework_2fsummary_2eproto = nullptr;
+constexpr ::google::protobuf::ServiceDescriptor const** file_level_service_descriptors_tensorflow_2fcore_2fframework_2fsummary_2eproto = nullptr;
+
+const ::google::protobuf::uint32 TableStruct_tensorflow_2fcore_2fframework_2fsummary_2eproto::offsets[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = {
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::SummaryDescription, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::SummaryDescription, type_hint_),
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::HistogramProto, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::HistogramProto, min_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::HistogramProto, max_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::HistogramProto, num_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::HistogramProto, sum_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::HistogramProto, sum_squares_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::HistogramProto, bucket_limit_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::HistogramProto, bucket_),
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::SummaryMetadata_PluginData, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::SummaryMetadata_PluginData, plugin_name_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::SummaryMetadata_PluginData, content_),
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::SummaryMetadata, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::SummaryMetadata, plugin_data_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::SummaryMetadata, display_name_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::SummaryMetadata, summary_description_),
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::Summary_Image, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::Summary_Image, height_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::Summary_Image, width_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::Summary_Image, colorspace_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::Summary_Image, encoded_image_string_),
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::Summary_Audio, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::Summary_Audio, sample_rate_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::Summary_Audio, num_channels_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::Summary_Audio, length_frames_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::Summary_Audio, encoded_audio_string_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::Summary_Audio, content_type_),
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::Summary_Value, _internal_metadata_),
+  ~0u,  // no _extensions_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::Summary_Value, _oneof_case_[0]),
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::Summary_Value, node_name_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::Summary_Value, tag_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::Summary_Value, metadata_),
+  offsetof(::tensorflow::Summary_ValueDefaultTypeInternal, simple_value_),
+  offsetof(::tensorflow::Summary_ValueDefaultTypeInternal, obsolete_old_style_histogram_),
+  offsetof(::tensorflow::Summary_ValueDefaultTypeInternal, image_),
+  offsetof(::tensorflow::Summary_ValueDefaultTypeInternal, histo_),
+  offsetof(::tensorflow::Summary_ValueDefaultTypeInternal, audio_),
+  offsetof(::tensorflow::Summary_ValueDefaultTypeInternal, tensor_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::Summary_Value, value_),
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::Summary, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::Summary, value_),
+};
+static const ::google::protobuf::internal::MigrationSchema schemas[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = {
+  { 0, -1, sizeof(::tensorflow::SummaryDescription)},
+  { 6, -1, sizeof(::tensorflow::HistogramProto)},
+  { 18, -1, sizeof(::tensorflow::SummaryMetadata_PluginData)},
+  { 25, -1, sizeof(::tensorflow::SummaryMetadata)},
+  { 33, -1, sizeof(::tensorflow::Summary_Image)},
+  { 42, -1, sizeof(::tensorflow::Summary_Audio)},
+  { 52, -1, sizeof(::tensorflow::Summary_Value)},
+  { 67, -1, sizeof(::tensorflow::Summary)},
+};
+
+static ::google::protobuf::Message const * const file_default_instances[] = {
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_SummaryDescription_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_HistogramProto_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_SummaryMetadata_PluginData_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_SummaryMetadata_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_Summary_Image_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_Summary_Audio_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_Summary_Value_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_Summary_default_instance_),
+};
+
+::google::protobuf::internal::AssignDescriptorsTable assign_descriptors_table_tensorflow_2fcore_2fframework_2fsummary_2eproto = {
+  {}, AddDescriptors_tensorflow_2fcore_2fframework_2fsummary_2eproto, "tensorflow/core/framework/summary.proto", schemas,
+  file_default_instances, TableStruct_tensorflow_2fcore_2fframework_2fsummary_2eproto::offsets,
+  file_level_metadata_tensorflow_2fcore_2fframework_2fsummary_2eproto, 8, file_level_enum_descriptors_tensorflow_2fcore_2fframework_2fsummary_2eproto, file_level_service_descriptors_tensorflow_2fcore_2fframework_2fsummary_2eproto,
+};
+
+::google::protobuf::internal::DescriptorTable descriptor_table_tensorflow_2fcore_2fframework_2fsummary_2eproto = {
+  false, InitDefaults_tensorflow_2fcore_2fframework_2fsummary_2eproto, 
+  "\n\'tensorflow/core/framework/summary.prot"
+  "o\022\ntensorflow\032&tensorflow/core/framework"
+  "/tensor.proto\"\'\n\022SummaryDescription\022\021\n\tt"
+  "ype_hint\030\001 \001(\t\"\207\001\n\016HistogramProto\022\013\n\003min"
+  "\030\001 \001(\001\022\013\n\003max\030\002 \001(\001\022\013\n\003num\030\003 \001(\001\022\013\n\003sum\030"
+  "\004 \001(\001\022\023\n\013sum_squares\030\005 \001(\001\022\030\n\014bucket_lim"
+  "it\030\006 \003(\001B\002\020\001\022\022\n\006bucket\030\007 \003(\001B\002\020\001\"\265\001\n\017Sum"
+  "maryMetadata\022;\n\013plugin_data\030\001 \001(\0132&.tens"
+  "orflow.SummaryMetadata.PluginData\022\024\n\014dis"
+  "play_name\030\002 \001(\t\022\033\n\023summary_description\030\003"
+  " \001(\t\0322\n\nPluginData\022\023\n\013plugin_name\030\001 \001(\t\022"
+  "\017\n\007content\030\002 \001(\014\"\336\004\n\007Summary\022(\n\005value\030\001 "
+  "\003(\0132\031.tensorflow.Summary.Value\032X\n\005Image\022"
+  "\016\n\006height\030\001 \001(\005\022\r\n\005width\030\002 \001(\005\022\022\n\ncolors"
+  "pace\030\003 \001(\005\022\034\n\024encoded_image_string\030\004 \001(\014"
+  "\032}\n\005Audio\022\023\n\013sample_rate\030\001 \001(\002\022\024\n\014num_ch"
+  "annels\030\002 \001(\003\022\025\n\rlength_frames\030\003 \001(\003\022\034\n\024e"
+  "ncoded_audio_string\030\004 \001(\014\022\024\n\014content_typ"
+  "e\030\005 \001(\t\032\317\002\n\005Value\022\021\n\tnode_name\030\007 \001(\t\022\013\n\003"
+  "tag\030\001 \001(\t\022-\n\010metadata\030\t \001(\0132\033.tensorflow"
+  ".SummaryMetadata\022\026\n\014simple_value\030\002 \001(\002H\000"
+  "\022&\n\034obsolete_old_style_histogram\030\003 \001(\014H\000"
+  "\022*\n\005image\030\004 \001(\0132\031.tensorflow.Summary.Ima"
+  "geH\000\022+\n\005histo\030\005 \001(\0132\032.tensorflow.Histogr"
+  "amProtoH\000\022*\n\005audio\030\006 \001(\0132\031.tensorflow.Su"
+  "mmary.AudioH\000\022)\n\006tensor\030\010 \001(\0132\027.tensorfl"
+  "ow.TensorProtoH\000B\007\n\005valueBm\n\030org.tensorf"
+  "low.frameworkB\rSummaryProtosP\001Z=github.c"
+  "om/tensorflow/tensorflow/tensorflow/go/c"
+  "ore/framework\370\001\001b\006proto3"
+,
+  "tensorflow/core/framework/summary.proto", &assign_descriptors_table_tensorflow_2fcore_2fframework_2fsummary_2eproto, 1184,
+};
+
+void AddDescriptors_tensorflow_2fcore_2fframework_2fsummary_2eproto() {
+  static constexpr ::google::protobuf::internal::InitFunc deps[1] =
+  {
+    ::AddDescriptors_tensorflow_2fcore_2fframework_2ftensor_2eproto,
+  };
+ ::google::protobuf::internal::AddDescriptors(&descriptor_table_tensorflow_2fcore_2fframework_2fsummary_2eproto, deps, 1);
+}
+
+// Force running AddDescriptors() at dynamic initialization time.
+static bool dynamic_init_dummy_tensorflow_2fcore_2fframework_2fsummary_2eproto = []() { AddDescriptors_tensorflow_2fcore_2fframework_2fsummary_2eproto(); return true; }();
+namespace tensorflow {
+
+// ===================================================================
+
+void SummaryDescription::InitAsDefaultInstance() {
+}
+class SummaryDescription::HasBitSetters {
+ public:
+};
+
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int SummaryDescription::kTypeHintFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+SummaryDescription::SummaryDescription()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.SummaryDescription)
+}
+SummaryDescription::SummaryDescription(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.SummaryDescription)
+}
+SummaryDescription::SummaryDescription(const SummaryDescription& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  type_hint_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.type_hint().size() > 0) {
+    type_hint_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.type_hint(),
+      GetArenaNoVirtual());
+  }
+  // @@protoc_insertion_point(copy_constructor:tensorflow.SummaryDescription)
+}
+
+void SummaryDescription::SharedCtor() {
+  ::google::protobuf::internal::InitSCC(
+      &scc_info_SummaryDescription_tensorflow_2fcore_2fframework_2fsummary_2eproto.base);
+  type_hint_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+
+SummaryDescription::~SummaryDescription() {
+  // @@protoc_insertion_point(destructor:tensorflow.SummaryDescription)
+  SharedDtor();
+}
+
+void SummaryDescription::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+  type_hint_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+
+void SummaryDescription::ArenaDtor(void* object) {
+  SummaryDescription* _this = reinterpret_cast< SummaryDescription* >(object);
+  (void)_this;
+}
+void SummaryDescription::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void SummaryDescription::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const SummaryDescription& SummaryDescription::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_SummaryDescription_tensorflow_2fcore_2fframework_2fsummary_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void SummaryDescription::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.SummaryDescription)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  type_hint_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* SummaryDescription::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<SummaryDescription*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // string type_hint = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 10) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("tensorflow.SummaryDescription.type_hint");
+        parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+        ::std::string* str = msg->mutable_type_hint();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool SummaryDescription::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.SummaryDescription)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // string type_hint = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (10 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_type_hint()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->type_hint().data(), static_cast<int>(this->type_hint().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.SummaryDescription.type_hint"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.SummaryDescription)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.SummaryDescription)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void SummaryDescription::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.SummaryDescription)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // string type_hint = 1;
+  if (this->type_hint().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->type_hint().data(), static_cast<int>(this->type_hint().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.SummaryDescription.type_hint");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      1, this->type_hint(), output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.SummaryDescription)
+}
+
+::google::protobuf::uint8* SummaryDescription::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.SummaryDescription)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // string type_hint = 1;
+  if (this->type_hint().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->type_hint().data(), static_cast<int>(this->type_hint().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.SummaryDescription.type_hint");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        1, this->type_hint(), target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.SummaryDescription)
+  return target;
+}
+
+size_t SummaryDescription::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.SummaryDescription)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // string type_hint = 1;
+  if (this->type_hint().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->type_hint());
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void SummaryDescription::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.SummaryDescription)
+  GOOGLE_DCHECK_NE(&from, this);
+  const SummaryDescription* source =
+      ::google::protobuf::DynamicCastToGenerated<SummaryDescription>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.SummaryDescription)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.SummaryDescription)
+    MergeFrom(*source);
+  }
+}
+
+void SummaryDescription::MergeFrom(const SummaryDescription& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.SummaryDescription)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  if (from.type_hint().size() > 0) {
+    set_type_hint(from.type_hint());
+  }
+}
+
+void SummaryDescription::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.SummaryDescription)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void SummaryDescription::CopyFrom(const SummaryDescription& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.SummaryDescription)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool SummaryDescription::IsInitialized() const {
+  return true;
+}
+
+void SummaryDescription::Swap(SummaryDescription* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    SummaryDescription* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void SummaryDescription::UnsafeArenaSwap(SummaryDescription* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void SummaryDescription::InternalSwap(SummaryDescription* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  type_hint_.Swap(&other->type_hint_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+}
+
+::google::protobuf::Metadata SummaryDescription::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fframework_2fsummary_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fframework_2fsummary_2eproto[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+void HistogramProto::InitAsDefaultInstance() {
+}
+class HistogramProto::HasBitSetters {
+ public:
+};
+
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int HistogramProto::kMinFieldNumber;
+const int HistogramProto::kMaxFieldNumber;
+const int HistogramProto::kNumFieldNumber;
+const int HistogramProto::kSumFieldNumber;
+const int HistogramProto::kSumSquaresFieldNumber;
+const int HistogramProto::kBucketLimitFieldNumber;
+const int HistogramProto::kBucketFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+HistogramProto::HistogramProto()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.HistogramProto)
+}
+HistogramProto::HistogramProto(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena),
+  bucket_limit_(arena),
+  bucket_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.HistogramProto)
+}
+HistogramProto::HistogramProto(const HistogramProto& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL),
+      bucket_limit_(from.bucket_limit_),
+      bucket_(from.bucket_) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::memcpy(&min_, &from.min_,
+    static_cast<size_t>(reinterpret_cast<char*>(&sum_squares_) -
+    reinterpret_cast<char*>(&min_)) + sizeof(sum_squares_));
+  // @@protoc_insertion_point(copy_constructor:tensorflow.HistogramProto)
+}
+
+void HistogramProto::SharedCtor() {
+  ::memset(&min_, 0, static_cast<size_t>(
+      reinterpret_cast<char*>(&sum_squares_) -
+      reinterpret_cast<char*>(&min_)) + sizeof(sum_squares_));
+}
+
+HistogramProto::~HistogramProto() {
+  // @@protoc_insertion_point(destructor:tensorflow.HistogramProto)
+  SharedDtor();
+}
+
+void HistogramProto::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+}
+
+void HistogramProto::ArenaDtor(void* object) {
+  HistogramProto* _this = reinterpret_cast< HistogramProto* >(object);
+  (void)_this;
+}
+void HistogramProto::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void HistogramProto::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const HistogramProto& HistogramProto::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_HistogramProto_tensorflow_2fcore_2fframework_2fsummary_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void HistogramProto::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.HistogramProto)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  bucket_limit_.Clear();
+  bucket_.Clear();
+  ::memset(&min_, 0, static_cast<size_t>(
+      reinterpret_cast<char*>(&sum_squares_) -
+      reinterpret_cast<char*>(&min_)) + sizeof(sum_squares_));
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* HistogramProto::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<HistogramProto*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // double min = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 9) goto handle_unusual;
+        double val;
+        ::std::memcpy(&val, ptr, 8);
+        ptr += 8;
+        msg->set_min(val);
+        break;
+      }
+      // double max = 2;
+      case 2: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 17) goto handle_unusual;
+        double val;
+        ::std::memcpy(&val, ptr, 8);
+        ptr += 8;
+        msg->set_max(val);
+        break;
+      }
+      // double num = 3;
+      case 3: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 25) goto handle_unusual;
+        double val;
+        ::std::memcpy(&val, ptr, 8);
+        ptr += 8;
+        msg->set_num(val);
+        break;
+      }
+      // double sum = 4;
+      case 4: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 33) goto handle_unusual;
+        double val;
+        ::std::memcpy(&val, ptr, 8);
+        ptr += 8;
+        msg->set_sum(val);
+        break;
+      }
+      // double sum_squares = 5;
+      case 5: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 41) goto handle_unusual;
+        double val;
+        ::std::memcpy(&val, ptr, 8);
+        ptr += 8;
+        msg->set_sum_squares(val);
+        break;
+      }
+      // repeated double bucket_limit = 6 [packed = true];
+      case 6: {
+        if (static_cast<::google::protobuf::uint8>(tag) == 50) {
+          ptr = Varint::Parse32Inline(ptr, &size);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          parser_till_end = ::google::protobuf::internal::PackedDoubleParser;
+          object = msg->mutable_bucket_limit();
+          if (size > end - ptr) goto len_delim_till_end;
+          auto newend = ptr + size;
+          if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+          break;
+        } else if (static_cast<::google::protobuf::uint8>(tag) != 49) goto handle_unusual;
+        do {
+          double val;
+          ::std::memcpy(&val, ptr, 8);
+          ptr += 8;
+          msg->add_bucket_limit(val);
+          if (ptr >= end) break;
+        } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 49 && (ptr += 1));
+        break;
+      }
+      // repeated double bucket = 7 [packed = true];
+      case 7: {
+        if (static_cast<::google::protobuf::uint8>(tag) == 58) {
+          ptr = Varint::Parse32Inline(ptr, &size);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          parser_till_end = ::google::protobuf::internal::PackedDoubleParser;
+          object = msg->mutable_bucket();
+          if (size > end - ptr) goto len_delim_till_end;
+          auto newend = ptr + size;
+          if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+          break;
+        } else if (static_cast<::google::protobuf::uint8>(tag) != 57) goto handle_unusual;
+        do {
+          double val;
+          ::std::memcpy(&val, ptr, 8);
+          ptr += 8;
+          msg->add_bucket(val);
+          if (ptr >= end) break;
+        } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 57 && (ptr += 1));
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool HistogramProto::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.HistogramProto)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // double min = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (9 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   double, ::google::protobuf::internal::WireFormatLite::TYPE_DOUBLE>(
+                 input, &min_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // double max = 2;
+      case 2: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (17 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   double, ::google::protobuf::internal::WireFormatLite::TYPE_DOUBLE>(
+                 input, &max_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // double num = 3;
+      case 3: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (25 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   double, ::google::protobuf::internal::WireFormatLite::TYPE_DOUBLE>(
+                 input, &num_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // double sum = 4;
+      case 4: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (33 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   double, ::google::protobuf::internal::WireFormatLite::TYPE_DOUBLE>(
+                 input, &sum_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // double sum_squares = 5;
+      case 5: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (41 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   double, ::google::protobuf::internal::WireFormatLite::TYPE_DOUBLE>(
+                 input, &sum_squares_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // repeated double bucket_limit = 6 [packed = true];
+      case 6: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (50 & 0xFF)) {
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPackedPrimitive<
+                   double, ::google::protobuf::internal::WireFormatLite::TYPE_DOUBLE>(
+                 input, this->mutable_bucket_limit())));
+        } else if (static_cast< ::google::protobuf::uint8>(tag) == (49 & 0xFF)) {
+          DO_((::google::protobuf::internal::WireFormatLite::ReadRepeatedPrimitiveNoInline<
+                   double, ::google::protobuf::internal::WireFormatLite::TYPE_DOUBLE>(
+                 1, 50u, input, this->mutable_bucket_limit())));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // repeated double bucket = 7 [packed = true];
+      case 7: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (58 & 0xFF)) {
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPackedPrimitive<
+                   double, ::google::protobuf::internal::WireFormatLite::TYPE_DOUBLE>(
+                 input, this->mutable_bucket())));
+        } else if (static_cast< ::google::protobuf::uint8>(tag) == (57 & 0xFF)) {
+          DO_((::google::protobuf::internal::WireFormatLite::ReadRepeatedPrimitiveNoInline<
+                   double, ::google::protobuf::internal::WireFormatLite::TYPE_DOUBLE>(
+                 1, 58u, input, this->mutable_bucket())));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.HistogramProto)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.HistogramProto)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void HistogramProto::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.HistogramProto)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // double min = 1;
+  if (this->min() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteDouble(1, this->min(), output);
+  }
+
+  // double max = 2;
+  if (this->max() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteDouble(2, this->max(), output);
+  }
+
+  // double num = 3;
+  if (this->num() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteDouble(3, this->num(), output);
+  }
+
+  // double sum = 4;
+  if (this->sum() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteDouble(4, this->sum(), output);
+  }
+
+  // double sum_squares = 5;
+  if (this->sum_squares() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteDouble(5, this->sum_squares(), output);
+  }
+
+  // repeated double bucket_limit = 6 [packed = true];
+  if (this->bucket_limit_size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteTag(6, ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED, output);
+    output->WriteVarint32(_bucket_limit_cached_byte_size_.load(
+        std::memory_order_relaxed));
+    ::google::protobuf::internal::WireFormatLite::WriteDoubleArray(
+      this->bucket_limit().data(), this->bucket_limit_size(), output);
+  }
+
+  // repeated double bucket = 7 [packed = true];
+  if (this->bucket_size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteTag(7, ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED, output);
+    output->WriteVarint32(_bucket_cached_byte_size_.load(
+        std::memory_order_relaxed));
+    ::google::protobuf::internal::WireFormatLite::WriteDoubleArray(
+      this->bucket().data(), this->bucket_size(), output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.HistogramProto)
+}
+
+::google::protobuf::uint8* HistogramProto::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.HistogramProto)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // double min = 1;
+  if (this->min() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteDoubleToArray(1, this->min(), target);
+  }
+
+  // double max = 2;
+  if (this->max() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteDoubleToArray(2, this->max(), target);
+  }
+
+  // double num = 3;
+  if (this->num() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteDoubleToArray(3, this->num(), target);
+  }
+
+  // double sum = 4;
+  if (this->sum() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteDoubleToArray(4, this->sum(), target);
+  }
+
+  // double sum_squares = 5;
+  if (this->sum_squares() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteDoubleToArray(5, this->sum_squares(), target);
+  }
+
+  // repeated double bucket_limit = 6 [packed = true];
+  if (this->bucket_limit_size() > 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteTagToArray(
+      6,
+      ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED,
+      target);
+    target = ::google::protobuf::io::CodedOutputStream::WriteVarint32ToArray(
+        _bucket_limit_cached_byte_size_.load(std::memory_order_relaxed),
+         target);
+    target = ::google::protobuf::internal::WireFormatLite::
+      WriteDoubleNoTagToArray(this->bucket_limit_, target);
+  }
+
+  // repeated double bucket = 7 [packed = true];
+  if (this->bucket_size() > 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteTagToArray(
+      7,
+      ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED,
+      target);
+    target = ::google::protobuf::io::CodedOutputStream::WriteVarint32ToArray(
+        _bucket_cached_byte_size_.load(std::memory_order_relaxed),
+         target);
+    target = ::google::protobuf::internal::WireFormatLite::
+      WriteDoubleNoTagToArray(this->bucket_, target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.HistogramProto)
+  return target;
+}
+
+size_t HistogramProto::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.HistogramProto)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // repeated double bucket_limit = 6 [packed = true];
+  {
+    unsigned int count = static_cast<unsigned int>(this->bucket_limit_size());
+    size_t data_size = 8UL * count;
+    if (data_size > 0) {
+      total_size += 1 +
+        ::google::protobuf::internal::WireFormatLite::Int32Size(
+            static_cast<::google::protobuf::int32>(data_size));
+    }
+    int cached_size = ::google::protobuf::internal::ToCachedSize(data_size);
+    _bucket_limit_cached_byte_size_.store(cached_size,
+                                    std::memory_order_relaxed);
+    total_size += data_size;
+  }
+
+  // repeated double bucket = 7 [packed = true];
+  {
+    unsigned int count = static_cast<unsigned int>(this->bucket_size());
+    size_t data_size = 8UL * count;
+    if (data_size > 0) {
+      total_size += 1 +
+        ::google::protobuf::internal::WireFormatLite::Int32Size(
+            static_cast<::google::protobuf::int32>(data_size));
+    }
+    int cached_size = ::google::protobuf::internal::ToCachedSize(data_size);
+    _bucket_cached_byte_size_.store(cached_size,
+                                    std::memory_order_relaxed);
+    total_size += data_size;
+  }
+
+  // double min = 1;
+  if (this->min() != 0) {
+    total_size += 1 + 8;
+  }
+
+  // double max = 2;
+  if (this->max() != 0) {
+    total_size += 1 + 8;
+  }
+
+  // double num = 3;
+  if (this->num() != 0) {
+    total_size += 1 + 8;
+  }
+
+  // double sum = 4;
+  if (this->sum() != 0) {
+    total_size += 1 + 8;
+  }
+
+  // double sum_squares = 5;
+  if (this->sum_squares() != 0) {
+    total_size += 1 + 8;
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void HistogramProto::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.HistogramProto)
+  GOOGLE_DCHECK_NE(&from, this);
+  const HistogramProto* source =
+      ::google::protobuf::DynamicCastToGenerated<HistogramProto>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.HistogramProto)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.HistogramProto)
+    MergeFrom(*source);
+  }
+}
+
+void HistogramProto::MergeFrom(const HistogramProto& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.HistogramProto)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  bucket_limit_.MergeFrom(from.bucket_limit_);
+  bucket_.MergeFrom(from.bucket_);
+  if (from.min() != 0) {
+    set_min(from.min());
+  }
+  if (from.max() != 0) {
+    set_max(from.max());
+  }
+  if (from.num() != 0) {
+    set_num(from.num());
+  }
+  if (from.sum() != 0) {
+    set_sum(from.sum());
+  }
+  if (from.sum_squares() != 0) {
+    set_sum_squares(from.sum_squares());
+  }
+}
+
+void HistogramProto::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.HistogramProto)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void HistogramProto::CopyFrom(const HistogramProto& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.HistogramProto)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool HistogramProto::IsInitialized() const {
+  return true;
+}
+
+void HistogramProto::Swap(HistogramProto* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    HistogramProto* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void HistogramProto::UnsafeArenaSwap(HistogramProto* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void HistogramProto::InternalSwap(HistogramProto* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  bucket_limit_.InternalSwap(&other->bucket_limit_);
+  bucket_.InternalSwap(&other->bucket_);
+  swap(min_, other->min_);
+  swap(max_, other->max_);
+  swap(num_, other->num_);
+  swap(sum_, other->sum_);
+  swap(sum_squares_, other->sum_squares_);
+}
+
+::google::protobuf::Metadata HistogramProto::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fframework_2fsummary_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fframework_2fsummary_2eproto[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+void SummaryMetadata_PluginData::InitAsDefaultInstance() {
+}
+class SummaryMetadata_PluginData::HasBitSetters {
+ public:
+};
+
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int SummaryMetadata_PluginData::kPluginNameFieldNumber;
+const int SummaryMetadata_PluginData::kContentFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+SummaryMetadata_PluginData::SummaryMetadata_PluginData()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.SummaryMetadata.PluginData)
+}
+SummaryMetadata_PluginData::SummaryMetadata_PluginData(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.SummaryMetadata.PluginData)
+}
+SummaryMetadata_PluginData::SummaryMetadata_PluginData(const SummaryMetadata_PluginData& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  plugin_name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.plugin_name().size() > 0) {
+    plugin_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.plugin_name(),
+      GetArenaNoVirtual());
+  }
+  content_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.content().size() > 0) {
+    content_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.content(),
+      GetArenaNoVirtual());
+  }
+  // @@protoc_insertion_point(copy_constructor:tensorflow.SummaryMetadata.PluginData)
+}
+
+void SummaryMetadata_PluginData::SharedCtor() {
+  ::google::protobuf::internal::InitSCC(
+      &scc_info_SummaryMetadata_PluginData_tensorflow_2fcore_2fframework_2fsummary_2eproto.base);
+  plugin_name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  content_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+
+SummaryMetadata_PluginData::~SummaryMetadata_PluginData() {
+  // @@protoc_insertion_point(destructor:tensorflow.SummaryMetadata.PluginData)
+  SharedDtor();
+}
+
+void SummaryMetadata_PluginData::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+  plugin_name_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  content_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+
+void SummaryMetadata_PluginData::ArenaDtor(void* object) {
+  SummaryMetadata_PluginData* _this = reinterpret_cast< SummaryMetadata_PluginData* >(object);
+  (void)_this;
+}
+void SummaryMetadata_PluginData::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void SummaryMetadata_PluginData::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const SummaryMetadata_PluginData& SummaryMetadata_PluginData::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_SummaryMetadata_PluginData_tensorflow_2fcore_2fframework_2fsummary_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void SummaryMetadata_PluginData::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.SummaryMetadata.PluginData)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  plugin_name_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+  content_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* SummaryMetadata_PluginData::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<SummaryMetadata_PluginData*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // string plugin_name = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 10) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("tensorflow.SummaryMetadata.PluginData.plugin_name");
+        parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+        ::std::string* str = msg->mutable_plugin_name();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+        break;
+      }
+      // bytes content = 2;
+      case 2: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 18) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        parser_till_end = ::google::protobuf::internal::StringParser;
+        ::std::string* str = msg->mutable_content();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        str->append(ptr, size);
+        ptr += size;
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool SummaryMetadata_PluginData::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.SummaryMetadata.PluginData)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // string plugin_name = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (10 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_plugin_name()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->plugin_name().data(), static_cast<int>(this->plugin_name().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.SummaryMetadata.PluginData.plugin_name"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // bytes content = 2;
+      case 2: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (18 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadBytes(
+                input, this->mutable_content()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.SummaryMetadata.PluginData)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.SummaryMetadata.PluginData)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void SummaryMetadata_PluginData::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.SummaryMetadata.PluginData)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // string plugin_name = 1;
+  if (this->plugin_name().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->plugin_name().data(), static_cast<int>(this->plugin_name().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.SummaryMetadata.PluginData.plugin_name");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      1, this->plugin_name(), output);
+  }
+
+  // bytes content = 2;
+  if (this->content().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteBytesMaybeAliased(
+      2, this->content(), output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.SummaryMetadata.PluginData)
+}
+
+::google::protobuf::uint8* SummaryMetadata_PluginData::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.SummaryMetadata.PluginData)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // string plugin_name = 1;
+  if (this->plugin_name().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->plugin_name().data(), static_cast<int>(this->plugin_name().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.SummaryMetadata.PluginData.plugin_name");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        1, this->plugin_name(), target);
+  }
+
+  // bytes content = 2;
+  if (this->content().size() > 0) {
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteBytesToArray(
+        2, this->content(), target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.SummaryMetadata.PluginData)
+  return target;
+}
+
+size_t SummaryMetadata_PluginData::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.SummaryMetadata.PluginData)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // string plugin_name = 1;
+  if (this->plugin_name().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->plugin_name());
+  }
+
+  // bytes content = 2;
+  if (this->content().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::BytesSize(
+        this->content());
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void SummaryMetadata_PluginData::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.SummaryMetadata.PluginData)
+  GOOGLE_DCHECK_NE(&from, this);
+  const SummaryMetadata_PluginData* source =
+      ::google::protobuf::DynamicCastToGenerated<SummaryMetadata_PluginData>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.SummaryMetadata.PluginData)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.SummaryMetadata.PluginData)
+    MergeFrom(*source);
+  }
+}
+
+void SummaryMetadata_PluginData::MergeFrom(const SummaryMetadata_PluginData& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.SummaryMetadata.PluginData)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  if (from.plugin_name().size() > 0) {
+    set_plugin_name(from.plugin_name());
+  }
+  if (from.content().size() > 0) {
+    set_content(from.content());
+  }
+}
+
+void SummaryMetadata_PluginData::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.SummaryMetadata.PluginData)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void SummaryMetadata_PluginData::CopyFrom(const SummaryMetadata_PluginData& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.SummaryMetadata.PluginData)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool SummaryMetadata_PluginData::IsInitialized() const {
+  return true;
+}
+
+void SummaryMetadata_PluginData::Swap(SummaryMetadata_PluginData* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    SummaryMetadata_PluginData* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void SummaryMetadata_PluginData::UnsafeArenaSwap(SummaryMetadata_PluginData* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void SummaryMetadata_PluginData::InternalSwap(SummaryMetadata_PluginData* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  plugin_name_.Swap(&other->plugin_name_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+  content_.Swap(&other->content_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+}
+
+::google::protobuf::Metadata SummaryMetadata_PluginData::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fframework_2fsummary_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fframework_2fsummary_2eproto[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+void SummaryMetadata::InitAsDefaultInstance() {
+  ::tensorflow::_SummaryMetadata_default_instance_._instance.get_mutable()->plugin_data_ = const_cast< ::tensorflow::SummaryMetadata_PluginData*>(
+      ::tensorflow::SummaryMetadata_PluginData::internal_default_instance());
+}
+class SummaryMetadata::HasBitSetters {
+ public:
+  static const ::tensorflow::SummaryMetadata_PluginData& plugin_data(const SummaryMetadata* msg);
+};
+
+const ::tensorflow::SummaryMetadata_PluginData&
+SummaryMetadata::HasBitSetters::plugin_data(const SummaryMetadata* msg) {
+  return *msg->plugin_data_;
+}
+void SummaryMetadata::unsafe_arena_set_allocated_plugin_data(
+    ::tensorflow::SummaryMetadata_PluginData* plugin_data) {
+  if (GetArenaNoVirtual() == NULL) {
+    delete plugin_data_;
+  }
+  plugin_data_ = plugin_data;
+  if (plugin_data) {
+    
+  } else {
+    
+  }
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.SummaryMetadata.plugin_data)
+}
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int SummaryMetadata::kPluginDataFieldNumber;
+const int SummaryMetadata::kDisplayNameFieldNumber;
+const int SummaryMetadata::kSummaryDescriptionFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+SummaryMetadata::SummaryMetadata()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.SummaryMetadata)
+}
+SummaryMetadata::SummaryMetadata(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.SummaryMetadata)
+}
+SummaryMetadata::SummaryMetadata(const SummaryMetadata& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  display_name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.display_name().size() > 0) {
+    display_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.display_name(),
+      GetArenaNoVirtual());
+  }
+  summary_description_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.summary_description().size() > 0) {
+    summary_description_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.summary_description(),
+      GetArenaNoVirtual());
+  }
+  if (from.has_plugin_data()) {
+    plugin_data_ = new ::tensorflow::SummaryMetadata_PluginData(*from.plugin_data_);
+  } else {
+    plugin_data_ = NULL;
+  }
+  // @@protoc_insertion_point(copy_constructor:tensorflow.SummaryMetadata)
+}
+
+void SummaryMetadata::SharedCtor() {
+  ::google::protobuf::internal::InitSCC(
+      &scc_info_SummaryMetadata_tensorflow_2fcore_2fframework_2fsummary_2eproto.base);
+  display_name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  summary_description_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  plugin_data_ = NULL;
+}
+
+SummaryMetadata::~SummaryMetadata() {
+  // @@protoc_insertion_point(destructor:tensorflow.SummaryMetadata)
+  SharedDtor();
+}
+
+void SummaryMetadata::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+  display_name_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  summary_description_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (this != internal_default_instance()) delete plugin_data_;
+}
+
+void SummaryMetadata::ArenaDtor(void* object) {
+  SummaryMetadata* _this = reinterpret_cast< SummaryMetadata* >(object);
+  (void)_this;
+}
+void SummaryMetadata::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void SummaryMetadata::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const SummaryMetadata& SummaryMetadata::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_SummaryMetadata_tensorflow_2fcore_2fframework_2fsummary_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void SummaryMetadata::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.SummaryMetadata)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  display_name_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+  summary_description_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+  if (GetArenaNoVirtual() == NULL && plugin_data_ != NULL) {
+    delete plugin_data_;
+  }
+  plugin_data_ = NULL;
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* SummaryMetadata::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<SummaryMetadata*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // .tensorflow.SummaryMetadata.PluginData plugin_data = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 10) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        parser_till_end = ::tensorflow::SummaryMetadata_PluginData::_InternalParse;
+        object = msg->mutable_plugin_data();
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                       ptr, newend);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+        ptr = newend;
+        break;
+      }
+      // string display_name = 2;
+      case 2: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 18) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("tensorflow.SummaryMetadata.display_name");
+        parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+        ::std::string* str = msg->mutable_display_name();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+        break;
+      }
+      // string summary_description = 3;
+      case 3: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 26) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("tensorflow.SummaryMetadata.summary_description");
+        parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+        ::std::string* str = msg->mutable_summary_description();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool SummaryMetadata::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.SummaryMetadata)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // .tensorflow.SummaryMetadata.PluginData plugin_data = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (10 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+               input, mutable_plugin_data()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // string display_name = 2;
+      case 2: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (18 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_display_name()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->display_name().data(), static_cast<int>(this->display_name().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.SummaryMetadata.display_name"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // string summary_description = 3;
+      case 3: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (26 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_summary_description()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->summary_description().data(), static_cast<int>(this->summary_description().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.SummaryMetadata.summary_description"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.SummaryMetadata)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.SummaryMetadata)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void SummaryMetadata::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.SummaryMetadata)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // .tensorflow.SummaryMetadata.PluginData plugin_data = 1;
+  if (this->has_plugin_data()) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      1, HasBitSetters::plugin_data(this), output);
+  }
+
+  // string display_name = 2;
+  if (this->display_name().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->display_name().data(), static_cast<int>(this->display_name().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.SummaryMetadata.display_name");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      2, this->display_name(), output);
+  }
+
+  // string summary_description = 3;
+  if (this->summary_description().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->summary_description().data(), static_cast<int>(this->summary_description().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.SummaryMetadata.summary_description");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      3, this->summary_description(), output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.SummaryMetadata)
+}
+
+::google::protobuf::uint8* SummaryMetadata::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.SummaryMetadata)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // .tensorflow.SummaryMetadata.PluginData plugin_data = 1;
+  if (this->has_plugin_data()) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        1, HasBitSetters::plugin_data(this), deterministic, target);
+  }
+
+  // string display_name = 2;
+  if (this->display_name().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->display_name().data(), static_cast<int>(this->display_name().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.SummaryMetadata.display_name");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        2, this->display_name(), target);
+  }
+
+  // string summary_description = 3;
+  if (this->summary_description().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->summary_description().data(), static_cast<int>(this->summary_description().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.SummaryMetadata.summary_description");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        3, this->summary_description(), target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.SummaryMetadata)
+  return target;
+}
+
+size_t SummaryMetadata::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.SummaryMetadata)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // string display_name = 2;
+  if (this->display_name().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->display_name());
+  }
+
+  // string summary_description = 3;
+  if (this->summary_description().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->summary_description());
+  }
+
+  // .tensorflow.SummaryMetadata.PluginData plugin_data = 1;
+  if (this->has_plugin_data()) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::MessageSize(
+        *plugin_data_);
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void SummaryMetadata::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.SummaryMetadata)
+  GOOGLE_DCHECK_NE(&from, this);
+  const SummaryMetadata* source =
+      ::google::protobuf::DynamicCastToGenerated<SummaryMetadata>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.SummaryMetadata)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.SummaryMetadata)
+    MergeFrom(*source);
+  }
+}
+
+void SummaryMetadata::MergeFrom(const SummaryMetadata& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.SummaryMetadata)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  if (from.display_name().size() > 0) {
+    set_display_name(from.display_name());
+  }
+  if (from.summary_description().size() > 0) {
+    set_summary_description(from.summary_description());
+  }
+  if (from.has_plugin_data()) {
+    mutable_plugin_data()->::tensorflow::SummaryMetadata_PluginData::MergeFrom(from.plugin_data());
+  }
+}
+
+void SummaryMetadata::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.SummaryMetadata)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void SummaryMetadata::CopyFrom(const SummaryMetadata& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.SummaryMetadata)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool SummaryMetadata::IsInitialized() const {
+  return true;
+}
+
+void SummaryMetadata::Swap(SummaryMetadata* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    SummaryMetadata* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void SummaryMetadata::UnsafeArenaSwap(SummaryMetadata* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void SummaryMetadata::InternalSwap(SummaryMetadata* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  display_name_.Swap(&other->display_name_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+  summary_description_.Swap(&other->summary_description_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+  swap(plugin_data_, other->plugin_data_);
+}
+
+::google::protobuf::Metadata SummaryMetadata::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fframework_2fsummary_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fframework_2fsummary_2eproto[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+void Summary_Image::InitAsDefaultInstance() {
+}
+class Summary_Image::HasBitSetters {
+ public:
+};
+
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int Summary_Image::kHeightFieldNumber;
+const int Summary_Image::kWidthFieldNumber;
+const int Summary_Image::kColorspaceFieldNumber;
+const int Summary_Image::kEncodedImageStringFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+Summary_Image::Summary_Image()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.Summary.Image)
+}
+Summary_Image::Summary_Image(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.Summary.Image)
+}
+Summary_Image::Summary_Image(const Summary_Image& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  encoded_image_string_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.encoded_image_string().size() > 0) {
+    encoded_image_string_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.encoded_image_string(),
+      GetArenaNoVirtual());
+  }
+  ::memcpy(&height_, &from.height_,
+    static_cast<size_t>(reinterpret_cast<char*>(&colorspace_) -
+    reinterpret_cast<char*>(&height_)) + sizeof(colorspace_));
+  // @@protoc_insertion_point(copy_constructor:tensorflow.Summary.Image)
+}
+
+void Summary_Image::SharedCtor() {
+  ::google::protobuf::internal::InitSCC(
+      &scc_info_Summary_Image_tensorflow_2fcore_2fframework_2fsummary_2eproto.base);
+  encoded_image_string_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  ::memset(&height_, 0, static_cast<size_t>(
+      reinterpret_cast<char*>(&colorspace_) -
+      reinterpret_cast<char*>(&height_)) + sizeof(colorspace_));
+}
+
+Summary_Image::~Summary_Image() {
+  // @@protoc_insertion_point(destructor:tensorflow.Summary.Image)
+  SharedDtor();
+}
+
+void Summary_Image::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+  encoded_image_string_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+
+void Summary_Image::ArenaDtor(void* object) {
+  Summary_Image* _this = reinterpret_cast< Summary_Image* >(object);
+  (void)_this;
+}
+void Summary_Image::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void Summary_Image::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const Summary_Image& Summary_Image::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_Summary_Image_tensorflow_2fcore_2fframework_2fsummary_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void Summary_Image::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.Summary.Image)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  encoded_image_string_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+  ::memset(&height_, 0, static_cast<size_t>(
+      reinterpret_cast<char*>(&colorspace_) -
+      reinterpret_cast<char*>(&height_)) + sizeof(colorspace_));
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* Summary_Image::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<Summary_Image*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // int32 height = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 8) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::google::protobuf::int32 value = val;
+        msg->set_height(value);
+        break;
+      }
+      // int32 width = 2;
+      case 2: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 16) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::google::protobuf::int32 value = val;
+        msg->set_width(value);
+        break;
+      }
+      // int32 colorspace = 3;
+      case 3: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 24) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::google::protobuf::int32 value = val;
+        msg->set_colorspace(value);
+        break;
+      }
+      // bytes encoded_image_string = 4;
+      case 4: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 34) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        parser_till_end = ::google::protobuf::internal::StringParser;
+        ::std::string* str = msg->mutable_encoded_image_string();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        str->append(ptr, size);
+        ptr += size;
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool Summary_Image::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.Summary.Image)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // int32 height = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (8 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
+                 input, &height_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // int32 width = 2;
+      case 2: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (16 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
+                 input, &width_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // int32 colorspace = 3;
+      case 3: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (24 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
+                 input, &colorspace_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // bytes encoded_image_string = 4;
+      case 4: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (34 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadBytes(
+                input, this->mutable_encoded_image_string()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.Summary.Image)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.Summary.Image)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void Summary_Image::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.Summary.Image)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // int32 height = 1;
+  if (this->height() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt32(1, this->height(), output);
+  }
+
+  // int32 width = 2;
+  if (this->width() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt32(2, this->width(), output);
+  }
+
+  // int32 colorspace = 3;
+  if (this->colorspace() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt32(3, this->colorspace(), output);
+  }
+
+  // bytes encoded_image_string = 4;
+  if (this->encoded_image_string().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteBytesMaybeAliased(
+      4, this->encoded_image_string(), output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.Summary.Image)
+}
+
+::google::protobuf::uint8* Summary_Image::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.Summary.Image)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // int32 height = 1;
+  if (this->height() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt32ToArray(1, this->height(), target);
+  }
+
+  // int32 width = 2;
+  if (this->width() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt32ToArray(2, this->width(), target);
+  }
+
+  // int32 colorspace = 3;
+  if (this->colorspace() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt32ToArray(3, this->colorspace(), target);
+  }
+
+  // bytes encoded_image_string = 4;
+  if (this->encoded_image_string().size() > 0) {
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteBytesToArray(
+        4, this->encoded_image_string(), target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.Summary.Image)
+  return target;
+}
+
+size_t Summary_Image::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.Summary.Image)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // bytes encoded_image_string = 4;
+  if (this->encoded_image_string().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::BytesSize(
+        this->encoded_image_string());
+  }
+
+  // int32 height = 1;
+  if (this->height() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::Int32Size(
+        this->height());
+  }
+
+  // int32 width = 2;
+  if (this->width() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::Int32Size(
+        this->width());
+  }
+
+  // int32 colorspace = 3;
+  if (this->colorspace() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::Int32Size(
+        this->colorspace());
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void Summary_Image::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.Summary.Image)
+  GOOGLE_DCHECK_NE(&from, this);
+  const Summary_Image* source =
+      ::google::protobuf::DynamicCastToGenerated<Summary_Image>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.Summary.Image)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.Summary.Image)
+    MergeFrom(*source);
+  }
+}
+
+void Summary_Image::MergeFrom(const Summary_Image& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.Summary.Image)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  if (from.encoded_image_string().size() > 0) {
+    set_encoded_image_string(from.encoded_image_string());
+  }
+  if (from.height() != 0) {
+    set_height(from.height());
+  }
+  if (from.width() != 0) {
+    set_width(from.width());
+  }
+  if (from.colorspace() != 0) {
+    set_colorspace(from.colorspace());
+  }
+}
+
+void Summary_Image::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.Summary.Image)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void Summary_Image::CopyFrom(const Summary_Image& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.Summary.Image)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool Summary_Image::IsInitialized() const {
+  return true;
+}
+
+void Summary_Image::Swap(Summary_Image* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    Summary_Image* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void Summary_Image::UnsafeArenaSwap(Summary_Image* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void Summary_Image::InternalSwap(Summary_Image* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  encoded_image_string_.Swap(&other->encoded_image_string_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+  swap(height_, other->height_);
+  swap(width_, other->width_);
+  swap(colorspace_, other->colorspace_);
+}
+
+::google::protobuf::Metadata Summary_Image::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fframework_2fsummary_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fframework_2fsummary_2eproto[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+void Summary_Audio::InitAsDefaultInstance() {
+}
+class Summary_Audio::HasBitSetters {
+ public:
+};
+
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int Summary_Audio::kSampleRateFieldNumber;
+const int Summary_Audio::kNumChannelsFieldNumber;
+const int Summary_Audio::kLengthFramesFieldNumber;
+const int Summary_Audio::kEncodedAudioStringFieldNumber;
+const int Summary_Audio::kContentTypeFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+Summary_Audio::Summary_Audio()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.Summary.Audio)
+}
+Summary_Audio::Summary_Audio(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.Summary.Audio)
+}
+Summary_Audio::Summary_Audio(const Summary_Audio& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  encoded_audio_string_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.encoded_audio_string().size() > 0) {
+    encoded_audio_string_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.encoded_audio_string(),
+      GetArenaNoVirtual());
+  }
+  content_type_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.content_type().size() > 0) {
+    content_type_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.content_type(),
+      GetArenaNoVirtual());
+  }
+  ::memcpy(&num_channels_, &from.num_channels_,
+    static_cast<size_t>(reinterpret_cast<char*>(&sample_rate_) -
+    reinterpret_cast<char*>(&num_channels_)) + sizeof(sample_rate_));
+  // @@protoc_insertion_point(copy_constructor:tensorflow.Summary.Audio)
+}
+
+void Summary_Audio::SharedCtor() {
+  ::google::protobuf::internal::InitSCC(
+      &scc_info_Summary_Audio_tensorflow_2fcore_2fframework_2fsummary_2eproto.base);
+  encoded_audio_string_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  content_type_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  ::memset(&num_channels_, 0, static_cast<size_t>(
+      reinterpret_cast<char*>(&sample_rate_) -
+      reinterpret_cast<char*>(&num_channels_)) + sizeof(sample_rate_));
+}
+
+Summary_Audio::~Summary_Audio() {
+  // @@protoc_insertion_point(destructor:tensorflow.Summary.Audio)
+  SharedDtor();
+}
+
+void Summary_Audio::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+  encoded_audio_string_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  content_type_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+
+void Summary_Audio::ArenaDtor(void* object) {
+  Summary_Audio* _this = reinterpret_cast< Summary_Audio* >(object);
+  (void)_this;
+}
+void Summary_Audio::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void Summary_Audio::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const Summary_Audio& Summary_Audio::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_Summary_Audio_tensorflow_2fcore_2fframework_2fsummary_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void Summary_Audio::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.Summary.Audio)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  encoded_audio_string_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+  content_type_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+  ::memset(&num_channels_, 0, static_cast<size_t>(
+      reinterpret_cast<char*>(&sample_rate_) -
+      reinterpret_cast<char*>(&num_channels_)) + sizeof(sample_rate_));
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* Summary_Audio::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<Summary_Audio*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // float sample_rate = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 13) goto handle_unusual;
+        float val;
+        std::memcpy(&val, ptr, 4);
+        ptr += 4;
+        msg->set_sample_rate(val);
+        break;
+      }
+      // int64 num_channels = 2;
+      case 2: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 16) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::google::protobuf::int64 value = val;
+        msg->set_num_channels(value);
+        break;
+      }
+      // int64 length_frames = 3;
+      case 3: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 24) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::google::protobuf::int64 value = val;
+        msg->set_length_frames(value);
+        break;
+      }
+      // bytes encoded_audio_string = 4;
+      case 4: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 34) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        parser_till_end = ::google::protobuf::internal::StringParser;
+        ::std::string* str = msg->mutable_encoded_audio_string();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        str->append(ptr, size);
+        ptr += size;
+        break;
+      }
+      // string content_type = 5;
+      case 5: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 42) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("tensorflow.Summary.Audio.content_type");
+        parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+        ::std::string* str = msg->mutable_content_type();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool Summary_Audio::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.Summary.Audio)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // float sample_rate = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (13 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>(
+                 input, &sample_rate_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // int64 num_channels = 2;
+      case 2: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (16 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>(
+                 input, &num_channels_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // int64 length_frames = 3;
+      case 3: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (24 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>(
+                 input, &length_frames_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // bytes encoded_audio_string = 4;
+      case 4: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (34 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadBytes(
+                input, this->mutable_encoded_audio_string()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // string content_type = 5;
+      case 5: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (42 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_content_type()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->content_type().data(), static_cast<int>(this->content_type().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.Summary.Audio.content_type"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.Summary.Audio)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.Summary.Audio)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void Summary_Audio::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.Summary.Audio)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // float sample_rate = 1;
+  if (this->sample_rate() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteFloat(1, this->sample_rate(), output);
+  }
+
+  // int64 num_channels = 2;
+  if (this->num_channels() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt64(2, this->num_channels(), output);
+  }
+
+  // int64 length_frames = 3;
+  if (this->length_frames() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt64(3, this->length_frames(), output);
+  }
+
+  // bytes encoded_audio_string = 4;
+  if (this->encoded_audio_string().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteBytesMaybeAliased(
+      4, this->encoded_audio_string(), output);
+  }
+
+  // string content_type = 5;
+  if (this->content_type().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->content_type().data(), static_cast<int>(this->content_type().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.Summary.Audio.content_type");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      5, this->content_type(), output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.Summary.Audio)
+}
+
+::google::protobuf::uint8* Summary_Audio::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.Summary.Audio)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // float sample_rate = 1;
+  if (this->sample_rate() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteFloatToArray(1, this->sample_rate(), target);
+  }
+
+  // int64 num_channels = 2;
+  if (this->num_channels() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt64ToArray(2, this->num_channels(), target);
+  }
+
+  // int64 length_frames = 3;
+  if (this->length_frames() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt64ToArray(3, this->length_frames(), target);
+  }
+
+  // bytes encoded_audio_string = 4;
+  if (this->encoded_audio_string().size() > 0) {
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteBytesToArray(
+        4, this->encoded_audio_string(), target);
+  }
+
+  // string content_type = 5;
+  if (this->content_type().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->content_type().data(), static_cast<int>(this->content_type().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.Summary.Audio.content_type");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        5, this->content_type(), target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.Summary.Audio)
+  return target;
+}
+
+size_t Summary_Audio::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.Summary.Audio)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // bytes encoded_audio_string = 4;
+  if (this->encoded_audio_string().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::BytesSize(
+        this->encoded_audio_string());
+  }
+
+  // string content_type = 5;
+  if (this->content_type().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->content_type());
+  }
+
+  // int64 num_channels = 2;
+  if (this->num_channels() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::Int64Size(
+        this->num_channels());
+  }
+
+  // int64 length_frames = 3;
+  if (this->length_frames() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::Int64Size(
+        this->length_frames());
+  }
+
+  // float sample_rate = 1;
+  if (this->sample_rate() != 0) {
+    total_size += 1 + 4;
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void Summary_Audio::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.Summary.Audio)
+  GOOGLE_DCHECK_NE(&from, this);
+  const Summary_Audio* source =
+      ::google::protobuf::DynamicCastToGenerated<Summary_Audio>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.Summary.Audio)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.Summary.Audio)
+    MergeFrom(*source);
+  }
+}
+
+void Summary_Audio::MergeFrom(const Summary_Audio& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.Summary.Audio)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  if (from.encoded_audio_string().size() > 0) {
+    set_encoded_audio_string(from.encoded_audio_string());
+  }
+  if (from.content_type().size() > 0) {
+    set_content_type(from.content_type());
+  }
+  if (from.num_channels() != 0) {
+    set_num_channels(from.num_channels());
+  }
+  if (from.length_frames() != 0) {
+    set_length_frames(from.length_frames());
+  }
+  if (from.sample_rate() != 0) {
+    set_sample_rate(from.sample_rate());
+  }
+}
+
+void Summary_Audio::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.Summary.Audio)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void Summary_Audio::CopyFrom(const Summary_Audio& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.Summary.Audio)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool Summary_Audio::IsInitialized() const {
+  return true;
+}
+
+void Summary_Audio::Swap(Summary_Audio* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    Summary_Audio* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void Summary_Audio::UnsafeArenaSwap(Summary_Audio* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void Summary_Audio::InternalSwap(Summary_Audio* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  encoded_audio_string_.Swap(&other->encoded_audio_string_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+  content_type_.Swap(&other->content_type_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+  swap(num_channels_, other->num_channels_);
+  swap(length_frames_, other->length_frames_);
+  swap(sample_rate_, other->sample_rate_);
+}
+
+::google::protobuf::Metadata Summary_Audio::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fframework_2fsummary_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fframework_2fsummary_2eproto[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+void Summary_Value::InitAsDefaultInstance() {
+  ::tensorflow::_Summary_Value_default_instance_._instance.get_mutable()->metadata_ = const_cast< ::tensorflow::SummaryMetadata*>(
+      ::tensorflow::SummaryMetadata::internal_default_instance());
+  ::tensorflow::_Summary_Value_default_instance_.simple_value_ = 0;
+  ::tensorflow::_Summary_Value_default_instance_.obsolete_old_style_histogram_.UnsafeSetDefault(
+      &::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  ::tensorflow::_Summary_Value_default_instance_.image_ = const_cast< ::tensorflow::Summary_Image*>(
+      ::tensorflow::Summary_Image::internal_default_instance());
+  ::tensorflow::_Summary_Value_default_instance_.histo_ = const_cast< ::tensorflow::HistogramProto*>(
+      ::tensorflow::HistogramProto::internal_default_instance());
+  ::tensorflow::_Summary_Value_default_instance_.audio_ = const_cast< ::tensorflow::Summary_Audio*>(
+      ::tensorflow::Summary_Audio::internal_default_instance());
+  ::tensorflow::_Summary_Value_default_instance_.tensor_ = const_cast< ::tensorflow::TensorProto*>(
+      ::tensorflow::TensorProto::internal_default_instance());
+}
+class Summary_Value::HasBitSetters {
+ public:
+  static const ::tensorflow::SummaryMetadata& metadata(const Summary_Value* msg);
+  static const ::tensorflow::Summary_Image& image(const Summary_Value* msg);
+  static const ::tensorflow::HistogramProto& histo(const Summary_Value* msg);
+  static const ::tensorflow::Summary_Audio& audio(const Summary_Value* msg);
+  static const ::tensorflow::TensorProto& tensor(const Summary_Value* msg);
+};
+
+const ::tensorflow::SummaryMetadata&
+Summary_Value::HasBitSetters::metadata(const Summary_Value* msg) {
+  return *msg->metadata_;
+}
+const ::tensorflow::Summary_Image&
+Summary_Value::HasBitSetters::image(const Summary_Value* msg) {
+  return *msg->value_.image_;
+}
+const ::tensorflow::HistogramProto&
+Summary_Value::HasBitSetters::histo(const Summary_Value* msg) {
+  return *msg->value_.histo_;
+}
+const ::tensorflow::Summary_Audio&
+Summary_Value::HasBitSetters::audio(const Summary_Value* msg) {
+  return *msg->value_.audio_;
+}
+const ::tensorflow::TensorProto&
+Summary_Value::HasBitSetters::tensor(const Summary_Value* msg) {
+  return *msg->value_.tensor_;
+}
+void Summary_Value::unsafe_arena_set_allocated_metadata(
+    ::tensorflow::SummaryMetadata* metadata) {
+  if (GetArenaNoVirtual() == NULL) {
+    delete metadata_;
+  }
+  metadata_ = metadata;
+  if (metadata) {
+    
+  } else {
+    
+  }
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.Summary.Value.metadata)
+}
+void Summary_Value::set_allocated_image(::tensorflow::Summary_Image* image) {
+  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
+  clear_value();
+  if (image) {
+    ::google::protobuf::Arena* submessage_arena =
+      ::google::protobuf::Arena::GetArena(image);
+    if (message_arena != submessage_arena) {
+      image = ::google::protobuf::internal::GetOwnedMessage(
+          message_arena, image, submessage_arena);
+    }
+    set_has_image();
+    value_.image_ = image;
+  }
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.Summary.Value.image)
+}
+void Summary_Value::set_allocated_histo(::tensorflow::HistogramProto* histo) {
+  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
+  clear_value();
+  if (histo) {
+    ::google::protobuf::Arena* submessage_arena =
+      ::google::protobuf::Arena::GetArena(histo);
+    if (message_arena != submessage_arena) {
+      histo = ::google::protobuf::internal::GetOwnedMessage(
+          message_arena, histo, submessage_arena);
+    }
+    set_has_histo();
+    value_.histo_ = histo;
+  }
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.Summary.Value.histo)
+}
+void Summary_Value::set_allocated_audio(::tensorflow::Summary_Audio* audio) {
+  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
+  clear_value();
+  if (audio) {
+    ::google::protobuf::Arena* submessage_arena =
+      ::google::protobuf::Arena::GetArena(audio);
+    if (message_arena != submessage_arena) {
+      audio = ::google::protobuf::internal::GetOwnedMessage(
+          message_arena, audio, submessage_arena);
+    }
+    set_has_audio();
+    value_.audio_ = audio;
+  }
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.Summary.Value.audio)
+}
+void Summary_Value::set_allocated_tensor(::tensorflow::TensorProto* tensor) {
+  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
+  clear_value();
+  if (tensor) {
+    ::google::protobuf::Arena* submessage_arena =
+      reinterpret_cast<::google::protobuf::MessageLite*>(tensor)->GetArena();
+    if (message_arena != submessage_arena) {
+      tensor = ::google::protobuf::internal::GetOwnedMessage(
+          message_arena, tensor, submessage_arena);
+    }
+    set_has_tensor();
+    value_.tensor_ = tensor;
+  }
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.Summary.Value.tensor)
+}
+void Summary_Value::clear_tensor() {
+  if (has_tensor()) {
+    if (GetArenaNoVirtual() == NULL) {
+      delete value_.tensor_;
+    }
+    clear_has_value();
+  }
+}
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int Summary_Value::kNodeNameFieldNumber;
+const int Summary_Value::kTagFieldNumber;
+const int Summary_Value::kMetadataFieldNumber;
+const int Summary_Value::kSimpleValueFieldNumber;
+const int Summary_Value::kObsoleteOldStyleHistogramFieldNumber;
+const int Summary_Value::kImageFieldNumber;
+const int Summary_Value::kHistoFieldNumber;
+const int Summary_Value::kAudioFieldNumber;
+const int Summary_Value::kTensorFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+Summary_Value::Summary_Value()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.Summary.Value)
+}
+Summary_Value::Summary_Value(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.Summary.Value)
+}
+Summary_Value::Summary_Value(const Summary_Value& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  tag_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.tag().size() > 0) {
+    tag_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.tag(),
+      GetArenaNoVirtual());
+  }
+  node_name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.node_name().size() > 0) {
+    node_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.node_name(),
+      GetArenaNoVirtual());
+  }
+  if (from.has_metadata()) {
+    metadata_ = new ::tensorflow::SummaryMetadata(*from.metadata_);
+  } else {
+    metadata_ = NULL;
+  }
+  clear_has_value();
+  switch (from.value_case()) {
+    case kSimpleValue: {
+      set_simple_value(from.simple_value());
+      break;
+    }
+    case kObsoleteOldStyleHistogram: {
+      set_obsolete_old_style_histogram(from.obsolete_old_style_histogram());
+      break;
+    }
+    case kImage: {
+      mutable_image()->::tensorflow::Summary_Image::MergeFrom(from.image());
+      break;
+    }
+    case kHisto: {
+      mutable_histo()->::tensorflow::HistogramProto::MergeFrom(from.histo());
+      break;
+    }
+    case kAudio: {
+      mutable_audio()->::tensorflow::Summary_Audio::MergeFrom(from.audio());
+      break;
+    }
+    case kTensor: {
+      mutable_tensor()->::tensorflow::TensorProto::MergeFrom(from.tensor());
+      break;
+    }
+    case VALUE_NOT_SET: {
+      break;
+    }
+  }
+  // @@protoc_insertion_point(copy_constructor:tensorflow.Summary.Value)
+}
+
+void Summary_Value::SharedCtor() {
+  ::google::protobuf::internal::InitSCC(
+      &scc_info_Summary_Value_tensorflow_2fcore_2fframework_2fsummary_2eproto.base);
+  tag_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  node_name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  metadata_ = NULL;
+  clear_has_value();
+}
+
+Summary_Value::~Summary_Value() {
+  // @@protoc_insertion_point(destructor:tensorflow.Summary.Value)
+  SharedDtor();
+}
+
+void Summary_Value::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+  tag_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  node_name_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (this != internal_default_instance()) delete metadata_;
+  if (has_value()) {
+    clear_value();
+  }
+}
+
+void Summary_Value::ArenaDtor(void* object) {
+  Summary_Value* _this = reinterpret_cast< Summary_Value* >(object);
+  (void)_this;
+}
+void Summary_Value::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void Summary_Value::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const Summary_Value& Summary_Value::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_Summary_Value_tensorflow_2fcore_2fframework_2fsummary_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void Summary_Value::clear_value() {
+// @@protoc_insertion_point(one_of_clear_start:tensorflow.Summary.Value)
+  switch (value_case()) {
+    case kSimpleValue: {
+      // No need to clear
+      break;
+    }
+    case kObsoleteOldStyleHistogram: {
+      value_.obsolete_old_style_histogram_.Destroy(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+          GetArenaNoVirtual());
+      break;
+    }
+    case kImage: {
+      if (GetArenaNoVirtual() == NULL) {
+        delete value_.image_;
+      }
+      break;
+    }
+    case kHisto: {
+      if (GetArenaNoVirtual() == NULL) {
+        delete value_.histo_;
+      }
+      break;
+    }
+    case kAudio: {
+      if (GetArenaNoVirtual() == NULL) {
+        delete value_.audio_;
+      }
+      break;
+    }
+    case kTensor: {
+      if (GetArenaNoVirtual() == NULL) {
+        delete value_.tensor_;
+      }
+      break;
+    }
+    case VALUE_NOT_SET: {
+      break;
+    }
+  }
+  _oneof_case_[0] = VALUE_NOT_SET;
+}
+
+
+void Summary_Value::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.Summary.Value)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  tag_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+  node_name_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+  if (GetArenaNoVirtual() == NULL && metadata_ != NULL) {
+    delete metadata_;
+  }
+  metadata_ = NULL;
+  clear_value();
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* Summary_Value::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<Summary_Value*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // string tag = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 10) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("tensorflow.Summary.Value.tag");
+        parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+        ::std::string* str = msg->mutable_tag();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+        break;
+      }
+      // float simple_value = 2;
+      case 2: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 21) goto handle_unusual;
+        float val;
+        std::memcpy(&val, ptr, 4);
+        ptr += 4;
+        msg->set_simple_value(val);
+        break;
+      }
+      // bytes obsolete_old_style_histogram = 3;
+      case 3: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 26) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        parser_till_end = ::google::protobuf::internal::StringParser;
+        ::std::string* str = msg->mutable_obsolete_old_style_histogram();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        str->append(ptr, size);
+        ptr += size;
+        break;
+      }
+      // .tensorflow.Summary.Image image = 4;
+      case 4: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 34) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        parser_till_end = ::tensorflow::Summary_Image::_InternalParse;
+        object = msg->mutable_image();
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                       ptr, newend);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+        ptr = newend;
+        break;
+      }
+      // .tensorflow.HistogramProto histo = 5;
+      case 5: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 42) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        parser_till_end = ::tensorflow::HistogramProto::_InternalParse;
+        object = msg->mutable_histo();
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                       ptr, newend);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+        ptr = newend;
+        break;
+      }
+      // .tensorflow.Summary.Audio audio = 6;
+      case 6: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 50) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        parser_till_end = ::tensorflow::Summary_Audio::_InternalParse;
+        object = msg->mutable_audio();
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                       ptr, newend);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+        ptr = newend;
+        break;
+      }
+      // string node_name = 7;
+      case 7: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 58) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("tensorflow.Summary.Value.node_name");
+        parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+        ::std::string* str = msg->mutable_node_name();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+        break;
+      }
+      // .tensorflow.TensorProto tensor = 8;
+      case 8: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 66) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        parser_till_end = ::tensorflow::TensorProto::_InternalParse;
+        object = msg->mutable_tensor();
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                       ptr, newend);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+        ptr = newend;
+        break;
+      }
+      // .tensorflow.SummaryMetadata metadata = 9;
+      case 9: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 74) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        parser_till_end = ::tensorflow::SummaryMetadata::_InternalParse;
+        object = msg->mutable_metadata();
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                       ptr, newend);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+        ptr = newend;
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool Summary_Value::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.Summary.Value)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // string tag = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (10 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_tag()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->tag().data(), static_cast<int>(this->tag().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.Summary.Value.tag"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // float simple_value = 2;
+      case 2: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (21 & 0xFF)) {
+          clear_value();
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>(
+                 input, &value_.simple_value_)));
+          set_has_simple_value();
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // bytes obsolete_old_style_histogram = 3;
+      case 3: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (26 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadBytes(
+                input, this->mutable_obsolete_old_style_histogram()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // .tensorflow.Summary.Image image = 4;
+      case 4: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (34 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+               input, mutable_image()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // .tensorflow.HistogramProto histo = 5;
+      case 5: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (42 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+               input, mutable_histo()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // .tensorflow.Summary.Audio audio = 6;
+      case 6: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (50 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+               input, mutable_audio()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // string node_name = 7;
+      case 7: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (58 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_node_name()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->node_name().data(), static_cast<int>(this->node_name().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.Summary.Value.node_name"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // .tensorflow.TensorProto tensor = 8;
+      case 8: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (66 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+               input, mutable_tensor()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // .tensorflow.SummaryMetadata metadata = 9;
+      case 9: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (74 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+               input, mutable_metadata()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.Summary.Value)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.Summary.Value)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void Summary_Value::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.Summary.Value)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // string tag = 1;
+  if (this->tag().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->tag().data(), static_cast<int>(this->tag().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.Summary.Value.tag");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      1, this->tag(), output);
+  }
+
+  // float simple_value = 2;
+  if (has_simple_value()) {
+    ::google::protobuf::internal::WireFormatLite::WriteFloat(2, this->simple_value(), output);
+  }
+
+  // bytes obsolete_old_style_histogram = 3;
+  if (has_obsolete_old_style_histogram()) {
+    ::google::protobuf::internal::WireFormatLite::WriteBytesMaybeAliased(
+      3, this->obsolete_old_style_histogram(), output);
+  }
+
+  // .tensorflow.Summary.Image image = 4;
+  if (has_image()) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      4, HasBitSetters::image(this), output);
+  }
+
+  // .tensorflow.HistogramProto histo = 5;
+  if (has_histo()) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      5, HasBitSetters::histo(this), output);
+  }
+
+  // .tensorflow.Summary.Audio audio = 6;
+  if (has_audio()) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      6, HasBitSetters::audio(this), output);
+  }
+
+  // string node_name = 7;
+  if (this->node_name().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->node_name().data(), static_cast<int>(this->node_name().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.Summary.Value.node_name");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      7, this->node_name(), output);
+  }
+
+  // .tensorflow.TensorProto tensor = 8;
+  if (has_tensor()) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      8, HasBitSetters::tensor(this), output);
+  }
+
+  // .tensorflow.SummaryMetadata metadata = 9;
+  if (this->has_metadata()) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      9, HasBitSetters::metadata(this), output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.Summary.Value)
+}
+
+::google::protobuf::uint8* Summary_Value::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.Summary.Value)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // string tag = 1;
+  if (this->tag().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->tag().data(), static_cast<int>(this->tag().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.Summary.Value.tag");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        1, this->tag(), target);
+  }
+
+  // float simple_value = 2;
+  if (has_simple_value()) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteFloatToArray(2, this->simple_value(), target);
+  }
+
+  // bytes obsolete_old_style_histogram = 3;
+  if (has_obsolete_old_style_histogram()) {
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteBytesToArray(
+        3, this->obsolete_old_style_histogram(), target);
+  }
+
+  // .tensorflow.Summary.Image image = 4;
+  if (has_image()) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        4, HasBitSetters::image(this), deterministic, target);
+  }
+
+  // .tensorflow.HistogramProto histo = 5;
+  if (has_histo()) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        5, HasBitSetters::histo(this), deterministic, target);
+  }
+
+  // .tensorflow.Summary.Audio audio = 6;
+  if (has_audio()) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        6, HasBitSetters::audio(this), deterministic, target);
+  }
+
+  // string node_name = 7;
+  if (this->node_name().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->node_name().data(), static_cast<int>(this->node_name().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.Summary.Value.node_name");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        7, this->node_name(), target);
+  }
+
+  // .tensorflow.TensorProto tensor = 8;
+  if (has_tensor()) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        8, HasBitSetters::tensor(this), deterministic, target);
+  }
+
+  // .tensorflow.SummaryMetadata metadata = 9;
+  if (this->has_metadata()) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        9, HasBitSetters::metadata(this), deterministic, target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.Summary.Value)
+  return target;
+}
+
+size_t Summary_Value::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.Summary.Value)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // string tag = 1;
+  if (this->tag().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->tag());
+  }
+
+  // string node_name = 7;
+  if (this->node_name().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->node_name());
+  }
+
+  // .tensorflow.SummaryMetadata metadata = 9;
+  if (this->has_metadata()) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::MessageSize(
+        *metadata_);
+  }
+
+  switch (value_case()) {
+    // float simple_value = 2;
+    case kSimpleValue: {
+      total_size += 1 + 4;
+      break;
+    }
+    // bytes obsolete_old_style_histogram = 3;
+    case kObsoleteOldStyleHistogram: {
+      total_size += 1 +
+        ::google::protobuf::internal::WireFormatLite::BytesSize(
+          this->obsolete_old_style_histogram());
+      break;
+    }
+    // .tensorflow.Summary.Image image = 4;
+    case kImage: {
+      total_size += 1 +
+        ::google::protobuf::internal::WireFormatLite::MessageSize(
+          *value_.image_);
+      break;
+    }
+    // .tensorflow.HistogramProto histo = 5;
+    case kHisto: {
+      total_size += 1 +
+        ::google::protobuf::internal::WireFormatLite::MessageSize(
+          *value_.histo_);
+      break;
+    }
+    // .tensorflow.Summary.Audio audio = 6;
+    case kAudio: {
+      total_size += 1 +
+        ::google::protobuf::internal::WireFormatLite::MessageSize(
+          *value_.audio_);
+      break;
+    }
+    // .tensorflow.TensorProto tensor = 8;
+    case kTensor: {
+      total_size += 1 +
+        ::google::protobuf::internal::WireFormatLite::MessageSize(
+          *value_.tensor_);
+      break;
+    }
+    case VALUE_NOT_SET: {
+      break;
+    }
+  }
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void Summary_Value::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.Summary.Value)
+  GOOGLE_DCHECK_NE(&from, this);
+  const Summary_Value* source =
+      ::google::protobuf::DynamicCastToGenerated<Summary_Value>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.Summary.Value)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.Summary.Value)
+    MergeFrom(*source);
+  }
+}
+
+void Summary_Value::MergeFrom(const Summary_Value& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.Summary.Value)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  if (from.tag().size() > 0) {
+    set_tag(from.tag());
+  }
+  if (from.node_name().size() > 0) {
+    set_node_name(from.node_name());
+  }
+  if (from.has_metadata()) {
+    mutable_metadata()->::tensorflow::SummaryMetadata::MergeFrom(from.metadata());
+  }
+  switch (from.value_case()) {
+    case kSimpleValue: {
+      set_simple_value(from.simple_value());
+      break;
+    }
+    case kObsoleteOldStyleHistogram: {
+      set_obsolete_old_style_histogram(from.obsolete_old_style_histogram());
+      break;
+    }
+    case kImage: {
+      mutable_image()->::tensorflow::Summary_Image::MergeFrom(from.image());
+      break;
+    }
+    case kHisto: {
+      mutable_histo()->::tensorflow::HistogramProto::MergeFrom(from.histo());
+      break;
+    }
+    case kAudio: {
+      mutable_audio()->::tensorflow::Summary_Audio::MergeFrom(from.audio());
+      break;
+    }
+    case kTensor: {
+      mutable_tensor()->::tensorflow::TensorProto::MergeFrom(from.tensor());
+      break;
+    }
+    case VALUE_NOT_SET: {
+      break;
+    }
+  }
+}
+
+void Summary_Value::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.Summary.Value)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void Summary_Value::CopyFrom(const Summary_Value& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.Summary.Value)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool Summary_Value::IsInitialized() const {
+  return true;
+}
+
+void Summary_Value::Swap(Summary_Value* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    Summary_Value* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void Summary_Value::UnsafeArenaSwap(Summary_Value* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void Summary_Value::InternalSwap(Summary_Value* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  tag_.Swap(&other->tag_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+  node_name_.Swap(&other->node_name_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+  swap(metadata_, other->metadata_);
+  swap(value_, other->value_);
+  swap(_oneof_case_[0], other->_oneof_case_[0]);
+}
+
+::google::protobuf::Metadata Summary_Value::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fframework_2fsummary_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fframework_2fsummary_2eproto[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+void Summary::InitAsDefaultInstance() {
+}
+class Summary::HasBitSetters {
+ public:
+};
+
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int Summary::kValueFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+Summary::Summary()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.Summary)
+}
+Summary::Summary(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena),
+  value_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.Summary)
+}
+Summary::Summary(const Summary& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL),
+      value_(from.value_) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  // @@protoc_insertion_point(copy_constructor:tensorflow.Summary)
+}
+
+void Summary::SharedCtor() {
+  ::google::protobuf::internal::InitSCC(
+      &scc_info_Summary_tensorflow_2fcore_2fframework_2fsummary_2eproto.base);
+}
+
+Summary::~Summary() {
+  // @@protoc_insertion_point(destructor:tensorflow.Summary)
+  SharedDtor();
+}
+
+void Summary::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+}
+
+void Summary::ArenaDtor(void* object) {
+  Summary* _this = reinterpret_cast< Summary* >(object);
+  (void)_this;
+}
+void Summary::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void Summary::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const Summary& Summary::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_Summary_tensorflow_2fcore_2fframework_2fsummary_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void Summary::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.Summary)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  value_.Clear();
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* Summary::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<Summary*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // repeated .tensorflow.Summary.Value value = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 10) goto handle_unusual;
+        do {
+          ptr = Varint::Parse32Inline(ptr, &size);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          parser_till_end = ::tensorflow::Summary_Value::_InternalParse;
+          object = msg->add_value();
+          if (size > end - ptr) goto len_delim_till_end;
+          auto newend = ptr + size;
+          bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                         ptr, newend);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          ptr = newend;
+          if (ptr >= end) break;
+        } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 10 && (ptr += 1));
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool Summary::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.Summary)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // repeated .tensorflow.Summary.Value value = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (10 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+                input, add_value()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.Summary)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.Summary)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void Summary::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.Summary)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // repeated .tensorflow.Summary.Value value = 1;
+  for (unsigned int i = 0,
+      n = static_cast<unsigned int>(this->value_size()); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      1,
+      this->value(static_cast<int>(i)),
+      output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.Summary)
+}
+
+::google::protobuf::uint8* Summary::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.Summary)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // repeated .tensorflow.Summary.Value value = 1;
+  for (unsigned int i = 0,
+      n = static_cast<unsigned int>(this->value_size()); i < n; i++) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        1, this->value(static_cast<int>(i)), deterministic, target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.Summary)
+  return target;
+}
+
+size_t Summary::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.Summary)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // repeated .tensorflow.Summary.Value value = 1;
+  {
+    unsigned int count = static_cast<unsigned int>(this->value_size());
+    total_size += 1UL * count;
+    for (unsigned int i = 0; i < count; i++) {
+      total_size +=
+        ::google::protobuf::internal::WireFormatLite::MessageSize(
+          this->value(static_cast<int>(i)));
+    }
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void Summary::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.Summary)
+  GOOGLE_DCHECK_NE(&from, this);
+  const Summary* source =
+      ::google::protobuf::DynamicCastToGenerated<Summary>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.Summary)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.Summary)
+    MergeFrom(*source);
+  }
+}
+
+void Summary::MergeFrom(const Summary& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.Summary)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  value_.MergeFrom(from.value_);
+}
+
+void Summary::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.Summary)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void Summary::CopyFrom(const Summary& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.Summary)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool Summary::IsInitialized() const {
+  return true;
+}
+
+void Summary::Swap(Summary* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    Summary* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void Summary::UnsafeArenaSwap(Summary* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void Summary::InternalSwap(Summary* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  CastToBase(&value_)->InternalSwap(CastToBase(&other->value_));
+}
+
+::google::protobuf::Metadata Summary::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fframework_2fsummary_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fframework_2fsummary_2eproto[kIndexInFileMessages];
+}
+
+
+// @@protoc_insertion_point(namespace_scope)
+}  // namespace tensorflow
+namespace google {
+namespace protobuf {
+template<> PROTOBUF_NOINLINE ::tensorflow::SummaryDescription* Arena::CreateMaybeMessage< ::tensorflow::SummaryDescription >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::SummaryDescription >(arena);
+}
+template<> PROTOBUF_NOINLINE ::tensorflow::HistogramProto* Arena::CreateMaybeMessage< ::tensorflow::HistogramProto >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::HistogramProto >(arena);
+}
+template<> PROTOBUF_NOINLINE ::tensorflow::SummaryMetadata_PluginData* Arena::CreateMaybeMessage< ::tensorflow::SummaryMetadata_PluginData >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::SummaryMetadata_PluginData >(arena);
+}
+template<> PROTOBUF_NOINLINE ::tensorflow::SummaryMetadata* Arena::CreateMaybeMessage< ::tensorflow::SummaryMetadata >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::SummaryMetadata >(arena);
+}
+template<> PROTOBUF_NOINLINE ::tensorflow::Summary_Image* Arena::CreateMaybeMessage< ::tensorflow::Summary_Image >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::Summary_Image >(arena);
+}
+template<> PROTOBUF_NOINLINE ::tensorflow::Summary_Audio* Arena::CreateMaybeMessage< ::tensorflow::Summary_Audio >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::Summary_Audio >(arena);
+}
+template<> PROTOBUF_NOINLINE ::tensorflow::Summary_Value* Arena::CreateMaybeMessage< ::tensorflow::Summary_Value >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::Summary_Value >(arena);
+}
+template<> PROTOBUF_NOINLINE ::tensorflow::Summary* Arena::CreateMaybeMessage< ::tensorflow::Summary >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::Summary >(arena);
+}
+}  // namespace protobuf
+}  // namespace google
+
+// @@protoc_insertion_point(global_scope)
+#include <google/protobuf/port_undef.inc>
diff --git a/tensorflow/core/framework/summary.pb.h b/tensorflow/core/framework/summary.pb.h
new file mode 100644 (file)
index 0000000..7a49923
--- /dev/null
@@ -0,0 +1,3143 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: tensorflow/core/framework/summary.proto
+
+#ifndef PROTOBUF_INCLUDED_tensorflow_2fcore_2fframework_2fsummary_2eproto
+#define PROTOBUF_INCLUDED_tensorflow_2fcore_2fframework_2fsummary_2eproto
+
+#include <limits>
+#include <string>
+
+#include <google/protobuf/port_def.inc>
+#if PROTOBUF_VERSION < 3006001
+#error This file was generated by a newer version of protoc which is
+#error incompatible with your Protocol Buffer headers. Please update
+#error your headers.
+#endif
+#if 3006001 < PROTOBUF_MIN_PROTOC_VERSION
+#error This file was generated by an older version of protoc which is
+#error incompatible with your Protocol Buffer headers. Please
+#error regenerate this file with a newer version of protoc.
+#endif
+
+#include <google/protobuf/port_undef.inc>
+#include <google/protobuf/io/coded_stream.h>
+#include <google/protobuf/arena.h>
+#include <google/protobuf/arenastring.h>
+#include <google/protobuf/generated_message_table_driven.h>
+#include <google/protobuf/generated_message_util.h>
+#include <google/protobuf/inlined_string_field.h>
+#include <google/protobuf/metadata.h>
+#include <google/protobuf/message.h>
+#include <google/protobuf/repeated_field.h>  // IWYU pragma: export
+#include <google/protobuf/extension_set.h>  // IWYU pragma: export
+#include <google/protobuf/unknown_field_set.h>
+#include "tensorflow/core/framework/tensor.pb.h"
+// @@protoc_insertion_point(includes)
+#include <google/protobuf/port_def.inc>
+#define PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fframework_2fsummary_2eproto
+
+// Internal implementation detail -- do not use these members.
+struct TableStruct_tensorflow_2fcore_2fframework_2fsummary_2eproto {
+  static const ::google::protobuf::internal::ParseTableField entries[]
+    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
+  static const ::google::protobuf::internal::AuxillaryParseTableField aux[]
+    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
+  static const ::google::protobuf::internal::ParseTable schema[8]
+    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
+  static const ::google::protobuf::internal::FieldMetadata field_metadata[];
+  static const ::google::protobuf::internal::SerializationTable serialization_table[];
+  static const ::google::protobuf::uint32 offsets[];
+};
+void AddDescriptors_tensorflow_2fcore_2fframework_2fsummary_2eproto();
+namespace tensorflow {
+class HistogramProto;
+class HistogramProtoDefaultTypeInternal;
+extern HistogramProtoDefaultTypeInternal _HistogramProto_default_instance_;
+class Summary;
+class SummaryDefaultTypeInternal;
+extern SummaryDefaultTypeInternal _Summary_default_instance_;
+class SummaryDescription;
+class SummaryDescriptionDefaultTypeInternal;
+extern SummaryDescriptionDefaultTypeInternal _SummaryDescription_default_instance_;
+class SummaryMetadata;
+class SummaryMetadataDefaultTypeInternal;
+extern SummaryMetadataDefaultTypeInternal _SummaryMetadata_default_instance_;
+class SummaryMetadata_PluginData;
+class SummaryMetadata_PluginDataDefaultTypeInternal;
+extern SummaryMetadata_PluginDataDefaultTypeInternal _SummaryMetadata_PluginData_default_instance_;
+class Summary_Audio;
+class Summary_AudioDefaultTypeInternal;
+extern Summary_AudioDefaultTypeInternal _Summary_Audio_default_instance_;
+class Summary_Image;
+class Summary_ImageDefaultTypeInternal;
+extern Summary_ImageDefaultTypeInternal _Summary_Image_default_instance_;
+class Summary_Value;
+class Summary_ValueDefaultTypeInternal;
+extern Summary_ValueDefaultTypeInternal _Summary_Value_default_instance_;
+}  // namespace tensorflow
+namespace google {
+namespace protobuf {
+template<> ::tensorflow::HistogramProto* Arena::CreateMaybeMessage<::tensorflow::HistogramProto>(Arena*);
+template<> ::tensorflow::Summary* Arena::CreateMaybeMessage<::tensorflow::Summary>(Arena*);
+template<> ::tensorflow::SummaryDescription* Arena::CreateMaybeMessage<::tensorflow::SummaryDescription>(Arena*);
+template<> ::tensorflow::SummaryMetadata* Arena::CreateMaybeMessage<::tensorflow::SummaryMetadata>(Arena*);
+template<> ::tensorflow::SummaryMetadata_PluginData* Arena::CreateMaybeMessage<::tensorflow::SummaryMetadata_PluginData>(Arena*);
+template<> ::tensorflow::Summary_Audio* Arena::CreateMaybeMessage<::tensorflow::Summary_Audio>(Arena*);
+template<> ::tensorflow::Summary_Image* Arena::CreateMaybeMessage<::tensorflow::Summary_Image>(Arena*);
+template<> ::tensorflow::Summary_Value* Arena::CreateMaybeMessage<::tensorflow::Summary_Value>(Arena*);
+}  // namespace protobuf
+}  // namespace google
+namespace tensorflow {
+
+// ===================================================================
+
+class SummaryDescription : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.SummaryDescription) */ {
+ public:
+  SummaryDescription();
+  virtual ~SummaryDescription();
+
+  SummaryDescription(const SummaryDescription& from);
+
+  inline SummaryDescription& operator=(const SummaryDescription& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  SummaryDescription(SummaryDescription&& from) noexcept
+    : SummaryDescription() {
+    *this = ::std::move(from);
+  }
+
+  inline SummaryDescription& operator=(SummaryDescription&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const SummaryDescription& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const SummaryDescription* internal_default_instance() {
+    return reinterpret_cast<const SummaryDescription*>(
+               &_SummaryDescription_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    0;
+
+  void UnsafeArenaSwap(SummaryDescription* other);
+  void Swap(SummaryDescription* other);
+  friend void swap(SummaryDescription& a, SummaryDescription& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline SummaryDescription* New() const final {
+    return CreateMaybeMessage<SummaryDescription>(NULL);
+  }
+
+  SummaryDescription* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<SummaryDescription>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const SummaryDescription& from);
+  void MergeFrom(const SummaryDescription& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(SummaryDescription* other);
+  protected:
+  explicit SummaryDescription(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // string type_hint = 1;
+  void clear_type_hint();
+  static const int kTypeHintFieldNumber = 1;
+  const ::std::string& type_hint() const;
+  void set_type_hint(const ::std::string& value);
+  #if LANG_CXX11
+  void set_type_hint(::std::string&& value);
+  #endif
+  void set_type_hint(const char* value);
+  void set_type_hint(const char* value, size_t size);
+  ::std::string* mutable_type_hint();
+  ::std::string* release_type_hint();
+  void set_allocated_type_hint(::std::string* type_hint);
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  ::std::string* unsafe_arena_release_type_hint();
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  void unsafe_arena_set_allocated_type_hint(
+      ::std::string* type_hint);
+
+  // @@protoc_insertion_point(class_scope:tensorflow.SummaryDescription)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  ::google::protobuf::internal::ArenaStringPtr type_hint_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fframework_2fsummary_2eproto;
+};
+// -------------------------------------------------------------------
+
+class HistogramProto : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.HistogramProto) */ {
+ public:
+  HistogramProto();
+  virtual ~HistogramProto();
+
+  HistogramProto(const HistogramProto& from);
+
+  inline HistogramProto& operator=(const HistogramProto& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  HistogramProto(HistogramProto&& from) noexcept
+    : HistogramProto() {
+    *this = ::std::move(from);
+  }
+
+  inline HistogramProto& operator=(HistogramProto&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const HistogramProto& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const HistogramProto* internal_default_instance() {
+    return reinterpret_cast<const HistogramProto*>(
+               &_HistogramProto_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    1;
+
+  void UnsafeArenaSwap(HistogramProto* other);
+  void Swap(HistogramProto* other);
+  friend void swap(HistogramProto& a, HistogramProto& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline HistogramProto* New() const final {
+    return CreateMaybeMessage<HistogramProto>(NULL);
+  }
+
+  HistogramProto* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<HistogramProto>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const HistogramProto& from);
+  void MergeFrom(const HistogramProto& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(HistogramProto* other);
+  protected:
+  explicit HistogramProto(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // repeated double bucket_limit = 6 [packed = true];
+  int bucket_limit_size() const;
+  void clear_bucket_limit();
+  static const int kBucketLimitFieldNumber = 6;
+  double bucket_limit(int index) const;
+  void set_bucket_limit(int index, double value);
+  void add_bucket_limit(double value);
+  const ::google::protobuf::RepeatedField< double >&
+      bucket_limit() const;
+  ::google::protobuf::RepeatedField< double >*
+      mutable_bucket_limit();
+
+  // repeated double bucket = 7 [packed = true];
+  int bucket_size() const;
+  void clear_bucket();
+  static const int kBucketFieldNumber = 7;
+  double bucket(int index) const;
+  void set_bucket(int index, double value);
+  void add_bucket(double value);
+  const ::google::protobuf::RepeatedField< double >&
+      bucket() const;
+  ::google::protobuf::RepeatedField< double >*
+      mutable_bucket();
+
+  // double min = 1;
+  void clear_min();
+  static const int kMinFieldNumber = 1;
+  double min() const;
+  void set_min(double value);
+
+  // double max = 2;
+  void clear_max();
+  static const int kMaxFieldNumber = 2;
+  double max() const;
+  void set_max(double value);
+
+  // double num = 3;
+  void clear_num();
+  static const int kNumFieldNumber = 3;
+  double num() const;
+  void set_num(double value);
+
+  // double sum = 4;
+  void clear_sum();
+  static const int kSumFieldNumber = 4;
+  double sum() const;
+  void set_sum(double value);
+
+  // double sum_squares = 5;
+  void clear_sum_squares();
+  static const int kSumSquaresFieldNumber = 5;
+  double sum_squares() const;
+  void set_sum_squares(double value);
+
+  // @@protoc_insertion_point(class_scope:tensorflow.HistogramProto)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  ::google::protobuf::RepeatedField< double > bucket_limit_;
+  mutable std::atomic<int> _bucket_limit_cached_byte_size_;
+  ::google::protobuf::RepeatedField< double > bucket_;
+  mutable std::atomic<int> _bucket_cached_byte_size_;
+  double min_;
+  double max_;
+  double num_;
+  double sum_;
+  double sum_squares_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fframework_2fsummary_2eproto;
+};
+// -------------------------------------------------------------------
+
+class SummaryMetadata_PluginData : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.SummaryMetadata.PluginData) */ {
+ public:
+  SummaryMetadata_PluginData();
+  virtual ~SummaryMetadata_PluginData();
+
+  SummaryMetadata_PluginData(const SummaryMetadata_PluginData& from);
+
+  inline SummaryMetadata_PluginData& operator=(const SummaryMetadata_PluginData& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  SummaryMetadata_PluginData(SummaryMetadata_PluginData&& from) noexcept
+    : SummaryMetadata_PluginData() {
+    *this = ::std::move(from);
+  }
+
+  inline SummaryMetadata_PluginData& operator=(SummaryMetadata_PluginData&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const SummaryMetadata_PluginData& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const SummaryMetadata_PluginData* internal_default_instance() {
+    return reinterpret_cast<const SummaryMetadata_PluginData*>(
+               &_SummaryMetadata_PluginData_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    2;
+
+  void UnsafeArenaSwap(SummaryMetadata_PluginData* other);
+  void Swap(SummaryMetadata_PluginData* other);
+  friend void swap(SummaryMetadata_PluginData& a, SummaryMetadata_PluginData& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline SummaryMetadata_PluginData* New() const final {
+    return CreateMaybeMessage<SummaryMetadata_PluginData>(NULL);
+  }
+
+  SummaryMetadata_PluginData* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<SummaryMetadata_PluginData>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const SummaryMetadata_PluginData& from);
+  void MergeFrom(const SummaryMetadata_PluginData& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(SummaryMetadata_PluginData* other);
+  protected:
+  explicit SummaryMetadata_PluginData(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // string plugin_name = 1;
+  void clear_plugin_name();
+  static const int kPluginNameFieldNumber = 1;
+  const ::std::string& plugin_name() const;
+  void set_plugin_name(const ::std::string& value);
+  #if LANG_CXX11
+  void set_plugin_name(::std::string&& value);
+  #endif
+  void set_plugin_name(const char* value);
+  void set_plugin_name(const char* value, size_t size);
+  ::std::string* mutable_plugin_name();
+  ::std::string* release_plugin_name();
+  void set_allocated_plugin_name(::std::string* plugin_name);
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  ::std::string* unsafe_arena_release_plugin_name();
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  void unsafe_arena_set_allocated_plugin_name(
+      ::std::string* plugin_name);
+
+  // bytes content = 2;
+  void clear_content();
+  static const int kContentFieldNumber = 2;
+  const ::std::string& content() const;
+  void set_content(const ::std::string& value);
+  #if LANG_CXX11
+  void set_content(::std::string&& value);
+  #endif
+  void set_content(const char* value);
+  void set_content(const void* value, size_t size);
+  ::std::string* mutable_content();
+  ::std::string* release_content();
+  void set_allocated_content(::std::string* content);
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  ::std::string* unsafe_arena_release_content();
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  void unsafe_arena_set_allocated_content(
+      ::std::string* content);
+
+  // @@protoc_insertion_point(class_scope:tensorflow.SummaryMetadata.PluginData)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  ::google::protobuf::internal::ArenaStringPtr plugin_name_;
+  ::google::protobuf::internal::ArenaStringPtr content_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fframework_2fsummary_2eproto;
+};
+// -------------------------------------------------------------------
+
+class SummaryMetadata : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.SummaryMetadata) */ {
+ public:
+  SummaryMetadata();
+  virtual ~SummaryMetadata();
+
+  SummaryMetadata(const SummaryMetadata& from);
+
+  inline SummaryMetadata& operator=(const SummaryMetadata& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  SummaryMetadata(SummaryMetadata&& from) noexcept
+    : SummaryMetadata() {
+    *this = ::std::move(from);
+  }
+
+  inline SummaryMetadata& operator=(SummaryMetadata&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const SummaryMetadata& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const SummaryMetadata* internal_default_instance() {
+    return reinterpret_cast<const SummaryMetadata*>(
+               &_SummaryMetadata_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    3;
+
+  void UnsafeArenaSwap(SummaryMetadata* other);
+  void Swap(SummaryMetadata* other);
+  friend void swap(SummaryMetadata& a, SummaryMetadata& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline SummaryMetadata* New() const final {
+    return CreateMaybeMessage<SummaryMetadata>(NULL);
+  }
+
+  SummaryMetadata* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<SummaryMetadata>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const SummaryMetadata& from);
+  void MergeFrom(const SummaryMetadata& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(SummaryMetadata* other);
+  protected:
+  explicit SummaryMetadata(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  typedef SummaryMetadata_PluginData PluginData;
+
+  // accessors -------------------------------------------------------
+
+  // string display_name = 2;
+  void clear_display_name();
+  static const int kDisplayNameFieldNumber = 2;
+  const ::std::string& display_name() const;
+  void set_display_name(const ::std::string& value);
+  #if LANG_CXX11
+  void set_display_name(::std::string&& value);
+  #endif
+  void set_display_name(const char* value);
+  void set_display_name(const char* value, size_t size);
+  ::std::string* mutable_display_name();
+  ::std::string* release_display_name();
+  void set_allocated_display_name(::std::string* display_name);
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  ::std::string* unsafe_arena_release_display_name();
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  void unsafe_arena_set_allocated_display_name(
+      ::std::string* display_name);
+
+  // string summary_description = 3;
+  void clear_summary_description();
+  static const int kSummaryDescriptionFieldNumber = 3;
+  const ::std::string& summary_description() const;
+  void set_summary_description(const ::std::string& value);
+  #if LANG_CXX11
+  void set_summary_description(::std::string&& value);
+  #endif
+  void set_summary_description(const char* value);
+  void set_summary_description(const char* value, size_t size);
+  ::std::string* mutable_summary_description();
+  ::std::string* release_summary_description();
+  void set_allocated_summary_description(::std::string* summary_description);
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  ::std::string* unsafe_arena_release_summary_description();
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  void unsafe_arena_set_allocated_summary_description(
+      ::std::string* summary_description);
+
+  // .tensorflow.SummaryMetadata.PluginData plugin_data = 1;
+  bool has_plugin_data() const;
+  void clear_plugin_data();
+  static const int kPluginDataFieldNumber = 1;
+  const ::tensorflow::SummaryMetadata_PluginData& plugin_data() const;
+  ::tensorflow::SummaryMetadata_PluginData* release_plugin_data();
+  ::tensorflow::SummaryMetadata_PluginData* mutable_plugin_data();
+  void set_allocated_plugin_data(::tensorflow::SummaryMetadata_PluginData* plugin_data);
+  void unsafe_arena_set_allocated_plugin_data(
+      ::tensorflow::SummaryMetadata_PluginData* plugin_data);
+  ::tensorflow::SummaryMetadata_PluginData* unsafe_arena_release_plugin_data();
+
+  // @@protoc_insertion_point(class_scope:tensorflow.SummaryMetadata)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  ::google::protobuf::internal::ArenaStringPtr display_name_;
+  ::google::protobuf::internal::ArenaStringPtr summary_description_;
+  ::tensorflow::SummaryMetadata_PluginData* plugin_data_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fframework_2fsummary_2eproto;
+};
+// -------------------------------------------------------------------
+
+class Summary_Image : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.Summary.Image) */ {
+ public:
+  Summary_Image();
+  virtual ~Summary_Image();
+
+  Summary_Image(const Summary_Image& from);
+
+  inline Summary_Image& operator=(const Summary_Image& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  Summary_Image(Summary_Image&& from) noexcept
+    : Summary_Image() {
+    *this = ::std::move(from);
+  }
+
+  inline Summary_Image& operator=(Summary_Image&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const Summary_Image& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const Summary_Image* internal_default_instance() {
+    return reinterpret_cast<const Summary_Image*>(
+               &_Summary_Image_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    4;
+
+  void UnsafeArenaSwap(Summary_Image* other);
+  void Swap(Summary_Image* other);
+  friend void swap(Summary_Image& a, Summary_Image& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline Summary_Image* New() const final {
+    return CreateMaybeMessage<Summary_Image>(NULL);
+  }
+
+  Summary_Image* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<Summary_Image>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const Summary_Image& from);
+  void MergeFrom(const Summary_Image& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(Summary_Image* other);
+  protected:
+  explicit Summary_Image(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // bytes encoded_image_string = 4;
+  void clear_encoded_image_string();
+  static const int kEncodedImageStringFieldNumber = 4;
+  const ::std::string& encoded_image_string() const;
+  void set_encoded_image_string(const ::std::string& value);
+  #if LANG_CXX11
+  void set_encoded_image_string(::std::string&& value);
+  #endif
+  void set_encoded_image_string(const char* value);
+  void set_encoded_image_string(const void* value, size_t size);
+  ::std::string* mutable_encoded_image_string();
+  ::std::string* release_encoded_image_string();
+  void set_allocated_encoded_image_string(::std::string* encoded_image_string);
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  ::std::string* unsafe_arena_release_encoded_image_string();
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  void unsafe_arena_set_allocated_encoded_image_string(
+      ::std::string* encoded_image_string);
+
+  // int32 height = 1;
+  void clear_height();
+  static const int kHeightFieldNumber = 1;
+  ::google::protobuf::int32 height() const;
+  void set_height(::google::protobuf::int32 value);
+
+  // int32 width = 2;
+  void clear_width();
+  static const int kWidthFieldNumber = 2;
+  ::google::protobuf::int32 width() const;
+  void set_width(::google::protobuf::int32 value);
+
+  // int32 colorspace = 3;
+  void clear_colorspace();
+  static const int kColorspaceFieldNumber = 3;
+  ::google::protobuf::int32 colorspace() const;
+  void set_colorspace(::google::protobuf::int32 value);
+
+  // @@protoc_insertion_point(class_scope:tensorflow.Summary.Image)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  ::google::protobuf::internal::ArenaStringPtr encoded_image_string_;
+  ::google::protobuf::int32 height_;
+  ::google::protobuf::int32 width_;
+  ::google::protobuf::int32 colorspace_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fframework_2fsummary_2eproto;
+};
+// -------------------------------------------------------------------
+
+class Summary_Audio : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.Summary.Audio) */ {
+ public:
+  Summary_Audio();
+  virtual ~Summary_Audio();
+
+  Summary_Audio(const Summary_Audio& from);
+
+  inline Summary_Audio& operator=(const Summary_Audio& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  Summary_Audio(Summary_Audio&& from) noexcept
+    : Summary_Audio() {
+    *this = ::std::move(from);
+  }
+
+  inline Summary_Audio& operator=(Summary_Audio&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const Summary_Audio& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const Summary_Audio* internal_default_instance() {
+    return reinterpret_cast<const Summary_Audio*>(
+               &_Summary_Audio_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    5;
+
+  void UnsafeArenaSwap(Summary_Audio* other);
+  void Swap(Summary_Audio* other);
+  friend void swap(Summary_Audio& a, Summary_Audio& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline Summary_Audio* New() const final {
+    return CreateMaybeMessage<Summary_Audio>(NULL);
+  }
+
+  Summary_Audio* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<Summary_Audio>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const Summary_Audio& from);
+  void MergeFrom(const Summary_Audio& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(Summary_Audio* other);
+  protected:
+  explicit Summary_Audio(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // bytes encoded_audio_string = 4;
+  void clear_encoded_audio_string();
+  static const int kEncodedAudioStringFieldNumber = 4;
+  const ::std::string& encoded_audio_string() const;
+  void set_encoded_audio_string(const ::std::string& value);
+  #if LANG_CXX11
+  void set_encoded_audio_string(::std::string&& value);
+  #endif
+  void set_encoded_audio_string(const char* value);
+  void set_encoded_audio_string(const void* value, size_t size);
+  ::std::string* mutable_encoded_audio_string();
+  ::std::string* release_encoded_audio_string();
+  void set_allocated_encoded_audio_string(::std::string* encoded_audio_string);
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  ::std::string* unsafe_arena_release_encoded_audio_string();
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  void unsafe_arena_set_allocated_encoded_audio_string(
+      ::std::string* encoded_audio_string);
+
+  // string content_type = 5;
+  void clear_content_type();
+  static const int kContentTypeFieldNumber = 5;
+  const ::std::string& content_type() const;
+  void set_content_type(const ::std::string& value);
+  #if LANG_CXX11
+  void set_content_type(::std::string&& value);
+  #endif
+  void set_content_type(const char* value);
+  void set_content_type(const char* value, size_t size);
+  ::std::string* mutable_content_type();
+  ::std::string* release_content_type();
+  void set_allocated_content_type(::std::string* content_type);
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  ::std::string* unsafe_arena_release_content_type();
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  void unsafe_arena_set_allocated_content_type(
+      ::std::string* content_type);
+
+  // int64 num_channels = 2;
+  void clear_num_channels();
+  static const int kNumChannelsFieldNumber = 2;
+  ::google::protobuf::int64 num_channels() const;
+  void set_num_channels(::google::protobuf::int64 value);
+
+  // int64 length_frames = 3;
+  void clear_length_frames();
+  static const int kLengthFramesFieldNumber = 3;
+  ::google::protobuf::int64 length_frames() const;
+  void set_length_frames(::google::protobuf::int64 value);
+
+  // float sample_rate = 1;
+  void clear_sample_rate();
+  static const int kSampleRateFieldNumber = 1;
+  float sample_rate() const;
+  void set_sample_rate(float value);
+
+  // @@protoc_insertion_point(class_scope:tensorflow.Summary.Audio)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  ::google::protobuf::internal::ArenaStringPtr encoded_audio_string_;
+  ::google::protobuf::internal::ArenaStringPtr content_type_;
+  ::google::protobuf::int64 num_channels_;
+  ::google::protobuf::int64 length_frames_;
+  float sample_rate_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fframework_2fsummary_2eproto;
+};
+// -------------------------------------------------------------------
+
+class Summary_Value : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.Summary.Value) */ {
+ public:
+  Summary_Value();
+  virtual ~Summary_Value();
+
+  Summary_Value(const Summary_Value& from);
+
+  inline Summary_Value& operator=(const Summary_Value& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  Summary_Value(Summary_Value&& from) noexcept
+    : Summary_Value() {
+    *this = ::std::move(from);
+  }
+
+  inline Summary_Value& operator=(Summary_Value&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const Summary_Value& default_instance();
+
+  enum ValueCase {
+    kSimpleValue = 2,
+    kObsoleteOldStyleHistogram = 3,
+    kImage = 4,
+    kHisto = 5,
+    kAudio = 6,
+    kTensor = 8,
+    VALUE_NOT_SET = 0,
+  };
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const Summary_Value* internal_default_instance() {
+    return reinterpret_cast<const Summary_Value*>(
+               &_Summary_Value_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    6;
+
+  void UnsafeArenaSwap(Summary_Value* other);
+  void Swap(Summary_Value* other);
+  friend void swap(Summary_Value& a, Summary_Value& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline Summary_Value* New() const final {
+    return CreateMaybeMessage<Summary_Value>(NULL);
+  }
+
+  Summary_Value* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<Summary_Value>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const Summary_Value& from);
+  void MergeFrom(const Summary_Value& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(Summary_Value* other);
+  protected:
+  explicit Summary_Value(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // string tag = 1;
+  void clear_tag();
+  static const int kTagFieldNumber = 1;
+  const ::std::string& tag() const;
+  void set_tag(const ::std::string& value);
+  #if LANG_CXX11
+  void set_tag(::std::string&& value);
+  #endif
+  void set_tag(const char* value);
+  void set_tag(const char* value, size_t size);
+  ::std::string* mutable_tag();
+  ::std::string* release_tag();
+  void set_allocated_tag(::std::string* tag);
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  ::std::string* unsafe_arena_release_tag();
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  void unsafe_arena_set_allocated_tag(
+      ::std::string* tag);
+
+  // string node_name = 7;
+  void clear_node_name();
+  static const int kNodeNameFieldNumber = 7;
+  const ::std::string& node_name() const;
+  void set_node_name(const ::std::string& value);
+  #if LANG_CXX11
+  void set_node_name(::std::string&& value);
+  #endif
+  void set_node_name(const char* value);
+  void set_node_name(const char* value, size_t size);
+  ::std::string* mutable_node_name();
+  ::std::string* release_node_name();
+  void set_allocated_node_name(::std::string* node_name);
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  ::std::string* unsafe_arena_release_node_name();
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  void unsafe_arena_set_allocated_node_name(
+      ::std::string* node_name);
+
+  // .tensorflow.SummaryMetadata metadata = 9;
+  bool has_metadata() const;
+  void clear_metadata();
+  static const int kMetadataFieldNumber = 9;
+  const ::tensorflow::SummaryMetadata& metadata() const;
+  ::tensorflow::SummaryMetadata* release_metadata();
+  ::tensorflow::SummaryMetadata* mutable_metadata();
+  void set_allocated_metadata(::tensorflow::SummaryMetadata* metadata);
+  void unsafe_arena_set_allocated_metadata(
+      ::tensorflow::SummaryMetadata* metadata);
+  ::tensorflow::SummaryMetadata* unsafe_arena_release_metadata();
+
+  // float simple_value = 2;
+  private:
+  bool has_simple_value() const;
+  public:
+  void clear_simple_value();
+  static const int kSimpleValueFieldNumber = 2;
+  float simple_value() const;
+  void set_simple_value(float value);
+
+  // bytes obsolete_old_style_histogram = 3;
+  private:
+  bool has_obsolete_old_style_histogram() const;
+  public:
+  void clear_obsolete_old_style_histogram();
+  static const int kObsoleteOldStyleHistogramFieldNumber = 3;
+  const ::std::string& obsolete_old_style_histogram() const;
+  void set_obsolete_old_style_histogram(const ::std::string& value);
+  #if LANG_CXX11
+  void set_obsolete_old_style_histogram(::std::string&& value);
+  #endif
+  void set_obsolete_old_style_histogram(const char* value);
+  void set_obsolete_old_style_histogram(const void* value, size_t size);
+  ::std::string* mutable_obsolete_old_style_histogram();
+  ::std::string* release_obsolete_old_style_histogram();
+  void set_allocated_obsolete_old_style_histogram(::std::string* obsolete_old_style_histogram);
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  ::std::string* unsafe_arena_release_obsolete_old_style_histogram();
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  void unsafe_arena_set_allocated_obsolete_old_style_histogram(
+      ::std::string* obsolete_old_style_histogram);
+
+  // .tensorflow.Summary.Image image = 4;
+  bool has_image() const;
+  void clear_image();
+  static const int kImageFieldNumber = 4;
+  const ::tensorflow::Summary_Image& image() const;
+  ::tensorflow::Summary_Image* release_image();
+  ::tensorflow::Summary_Image* mutable_image();
+  void set_allocated_image(::tensorflow::Summary_Image* image);
+  void unsafe_arena_set_allocated_image(
+      ::tensorflow::Summary_Image* image);
+  ::tensorflow::Summary_Image* unsafe_arena_release_image();
+
+  // .tensorflow.HistogramProto histo = 5;
+  bool has_histo() const;
+  void clear_histo();
+  static const int kHistoFieldNumber = 5;
+  const ::tensorflow::HistogramProto& histo() const;
+  ::tensorflow::HistogramProto* release_histo();
+  ::tensorflow::HistogramProto* mutable_histo();
+  void set_allocated_histo(::tensorflow::HistogramProto* histo);
+  void unsafe_arena_set_allocated_histo(
+      ::tensorflow::HistogramProto* histo);
+  ::tensorflow::HistogramProto* unsafe_arena_release_histo();
+
+  // .tensorflow.Summary.Audio audio = 6;
+  bool has_audio() const;
+  void clear_audio();
+  static const int kAudioFieldNumber = 6;
+  const ::tensorflow::Summary_Audio& audio() const;
+  ::tensorflow::Summary_Audio* release_audio();
+  ::tensorflow::Summary_Audio* mutable_audio();
+  void set_allocated_audio(::tensorflow::Summary_Audio* audio);
+  void unsafe_arena_set_allocated_audio(
+      ::tensorflow::Summary_Audio* audio);
+  ::tensorflow::Summary_Audio* unsafe_arena_release_audio();
+
+  // .tensorflow.TensorProto tensor = 8;
+  bool has_tensor() const;
+  void clear_tensor();
+  static const int kTensorFieldNumber = 8;
+  const ::tensorflow::TensorProto& tensor() const;
+  ::tensorflow::TensorProto* release_tensor();
+  ::tensorflow::TensorProto* mutable_tensor();
+  void set_allocated_tensor(::tensorflow::TensorProto* tensor);
+  void unsafe_arena_set_allocated_tensor(
+      ::tensorflow::TensorProto* tensor);
+  ::tensorflow::TensorProto* unsafe_arena_release_tensor();
+
+  void clear_value();
+  ValueCase value_case() const;
+  // @@protoc_insertion_point(class_scope:tensorflow.Summary.Value)
+ private:
+  class HasBitSetters;
+  void set_has_simple_value();
+  void set_has_obsolete_old_style_histogram();
+  void set_has_image();
+  void set_has_histo();
+  void set_has_audio();
+  void set_has_tensor();
+
+  inline bool has_value() const;
+  inline void clear_has_value();
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  ::google::protobuf::internal::ArenaStringPtr tag_;
+  ::google::protobuf::internal::ArenaStringPtr node_name_;
+  ::tensorflow::SummaryMetadata* metadata_;
+  union ValueUnion {
+    ValueUnion() {}
+    float simple_value_;
+    ::google::protobuf::internal::ArenaStringPtr obsolete_old_style_histogram_;
+    ::tensorflow::Summary_Image* image_;
+    ::tensorflow::HistogramProto* histo_;
+    ::tensorflow::Summary_Audio* audio_;
+    ::tensorflow::TensorProto* tensor_;
+  } value_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  ::google::protobuf::uint32 _oneof_case_[1];
+
+  friend struct ::TableStruct_tensorflow_2fcore_2fframework_2fsummary_2eproto;
+};
+// -------------------------------------------------------------------
+
+class Summary : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.Summary) */ {
+ public:
+  Summary();
+  virtual ~Summary();
+
+  Summary(const Summary& from);
+
+  inline Summary& operator=(const Summary& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  Summary(Summary&& from) noexcept
+    : Summary() {
+    *this = ::std::move(from);
+  }
+
+  inline Summary& operator=(Summary&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const Summary& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const Summary* internal_default_instance() {
+    return reinterpret_cast<const Summary*>(
+               &_Summary_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    7;
+
+  void UnsafeArenaSwap(Summary* other);
+  void Swap(Summary* other);
+  friend void swap(Summary& a, Summary& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline Summary* New() const final {
+    return CreateMaybeMessage<Summary>(NULL);
+  }
+
+  Summary* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<Summary>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const Summary& from);
+  void MergeFrom(const Summary& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(Summary* other);
+  protected:
+  explicit Summary(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  typedef Summary_Image Image;
+  typedef Summary_Audio Audio;
+  typedef Summary_Value Value;
+
+  // accessors -------------------------------------------------------
+
+  // repeated .tensorflow.Summary.Value value = 1;
+  int value_size() const;
+  void clear_value();
+  static const int kValueFieldNumber = 1;
+  ::tensorflow::Summary_Value* mutable_value(int index);
+  ::google::protobuf::RepeatedPtrField< ::tensorflow::Summary_Value >*
+      mutable_value();
+  const ::tensorflow::Summary_Value& value(int index) const;
+  ::tensorflow::Summary_Value* add_value();
+  const ::google::protobuf::RepeatedPtrField< ::tensorflow::Summary_Value >&
+      value() const;
+
+  // @@protoc_insertion_point(class_scope:tensorflow.Summary)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  ::google::protobuf::RepeatedPtrField< ::tensorflow::Summary_Value > value_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fframework_2fsummary_2eproto;
+};
+// ===================================================================
+
+
+// ===================================================================
+
+#ifdef __GNUC__
+  #pragma GCC diagnostic push
+  #pragma GCC diagnostic ignored "-Wstrict-aliasing"
+#endif  // __GNUC__
+// SummaryDescription
+
+// string type_hint = 1;
+inline void SummaryDescription::clear_type_hint() {
+  type_hint_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline const ::std::string& SummaryDescription::type_hint() const {
+  // @@protoc_insertion_point(field_get:tensorflow.SummaryDescription.type_hint)
+  return type_hint_.Get();
+}
+inline void SummaryDescription::set_type_hint(const ::std::string& value) {
+  
+  type_hint_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set:tensorflow.SummaryDescription.type_hint)
+}
+#if LANG_CXX11
+inline void SummaryDescription::set_type_hint(::std::string&& value) {
+  
+  type_hint_.Set(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.SummaryDescription.type_hint)
+}
+#endif
+inline void SummaryDescription::set_type_hint(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  type_hint_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
+              GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_char:tensorflow.SummaryDescription.type_hint)
+}
+inline void SummaryDescription::set_type_hint(const char* value,
+    size_t size) {
+  
+  type_hint_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
+      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.SummaryDescription.type_hint)
+}
+inline ::std::string* SummaryDescription::mutable_type_hint() {
+  
+  // @@protoc_insertion_point(field_mutable:tensorflow.SummaryDescription.type_hint)
+  return type_hint_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline ::std::string* SummaryDescription::release_type_hint() {
+  // @@protoc_insertion_point(field_release:tensorflow.SummaryDescription.type_hint)
+  
+  return type_hint_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline void SummaryDescription::set_allocated_type_hint(::std::string* type_hint) {
+  if (type_hint != NULL) {
+    
+  } else {
+    
+  }
+  type_hint_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), type_hint,
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.SummaryDescription.type_hint)
+}
+inline ::std::string* SummaryDescription::unsafe_arena_release_type_hint() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.SummaryDescription.type_hint)
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  
+  return type_hint_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      GetArenaNoVirtual());
+}
+inline void SummaryDescription::unsafe_arena_set_allocated_type_hint(
+    ::std::string* type_hint) {
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (type_hint != NULL) {
+    
+  } else {
+    
+  }
+  type_hint_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      type_hint, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.SummaryDescription.type_hint)
+}
+
+// -------------------------------------------------------------------
+
+// HistogramProto
+
+// double min = 1;
+inline void HistogramProto::clear_min() {
+  min_ = 0;
+}
+inline double HistogramProto::min() const {
+  // @@protoc_insertion_point(field_get:tensorflow.HistogramProto.min)
+  return min_;
+}
+inline void HistogramProto::set_min(double value) {
+  
+  min_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.HistogramProto.min)
+}
+
+// double max = 2;
+inline void HistogramProto::clear_max() {
+  max_ = 0;
+}
+inline double HistogramProto::max() const {
+  // @@protoc_insertion_point(field_get:tensorflow.HistogramProto.max)
+  return max_;
+}
+inline void HistogramProto::set_max(double value) {
+  
+  max_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.HistogramProto.max)
+}
+
+// double num = 3;
+inline void HistogramProto::clear_num() {
+  num_ = 0;
+}
+inline double HistogramProto::num() const {
+  // @@protoc_insertion_point(field_get:tensorflow.HistogramProto.num)
+  return num_;
+}
+inline void HistogramProto::set_num(double value) {
+  
+  num_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.HistogramProto.num)
+}
+
+// double sum = 4;
+inline void HistogramProto::clear_sum() {
+  sum_ = 0;
+}
+inline double HistogramProto::sum() const {
+  // @@protoc_insertion_point(field_get:tensorflow.HistogramProto.sum)
+  return sum_;
+}
+inline void HistogramProto::set_sum(double value) {
+  
+  sum_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.HistogramProto.sum)
+}
+
+// double sum_squares = 5;
+inline void HistogramProto::clear_sum_squares() {
+  sum_squares_ = 0;
+}
+inline double HistogramProto::sum_squares() const {
+  // @@protoc_insertion_point(field_get:tensorflow.HistogramProto.sum_squares)
+  return sum_squares_;
+}
+inline void HistogramProto::set_sum_squares(double value) {
+  
+  sum_squares_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.HistogramProto.sum_squares)
+}
+
+// repeated double bucket_limit = 6 [packed = true];
+inline int HistogramProto::bucket_limit_size() const {
+  return bucket_limit_.size();
+}
+inline void HistogramProto::clear_bucket_limit() {
+  bucket_limit_.Clear();
+}
+inline double HistogramProto::bucket_limit(int index) const {
+  // @@protoc_insertion_point(field_get:tensorflow.HistogramProto.bucket_limit)
+  return bucket_limit_.Get(index);
+}
+inline void HistogramProto::set_bucket_limit(int index, double value) {
+  bucket_limit_.Set(index, value);
+  // @@protoc_insertion_point(field_set:tensorflow.HistogramProto.bucket_limit)
+}
+inline void HistogramProto::add_bucket_limit(double value) {
+  bucket_limit_.Add(value);
+  // @@protoc_insertion_point(field_add:tensorflow.HistogramProto.bucket_limit)
+}
+inline const ::google::protobuf::RepeatedField< double >&
+HistogramProto::bucket_limit() const {
+  // @@protoc_insertion_point(field_list:tensorflow.HistogramProto.bucket_limit)
+  return bucket_limit_;
+}
+inline ::google::protobuf::RepeatedField< double >*
+HistogramProto::mutable_bucket_limit() {
+  // @@protoc_insertion_point(field_mutable_list:tensorflow.HistogramProto.bucket_limit)
+  return &bucket_limit_;
+}
+
+// repeated double bucket = 7 [packed = true];
+inline int HistogramProto::bucket_size() const {
+  return bucket_.size();
+}
+inline void HistogramProto::clear_bucket() {
+  bucket_.Clear();
+}
+inline double HistogramProto::bucket(int index) const {
+  // @@protoc_insertion_point(field_get:tensorflow.HistogramProto.bucket)
+  return bucket_.Get(index);
+}
+inline void HistogramProto::set_bucket(int index, double value) {
+  bucket_.Set(index, value);
+  // @@protoc_insertion_point(field_set:tensorflow.HistogramProto.bucket)
+}
+inline void HistogramProto::add_bucket(double value) {
+  bucket_.Add(value);
+  // @@protoc_insertion_point(field_add:tensorflow.HistogramProto.bucket)
+}
+inline const ::google::protobuf::RepeatedField< double >&
+HistogramProto::bucket() const {
+  // @@protoc_insertion_point(field_list:tensorflow.HistogramProto.bucket)
+  return bucket_;
+}
+inline ::google::protobuf::RepeatedField< double >*
+HistogramProto::mutable_bucket() {
+  // @@protoc_insertion_point(field_mutable_list:tensorflow.HistogramProto.bucket)
+  return &bucket_;
+}
+
+// -------------------------------------------------------------------
+
+// SummaryMetadata_PluginData
+
+// string plugin_name = 1;
+inline void SummaryMetadata_PluginData::clear_plugin_name() {
+  plugin_name_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline const ::std::string& SummaryMetadata_PluginData::plugin_name() const {
+  // @@protoc_insertion_point(field_get:tensorflow.SummaryMetadata.PluginData.plugin_name)
+  return plugin_name_.Get();
+}
+inline void SummaryMetadata_PluginData::set_plugin_name(const ::std::string& value) {
+  
+  plugin_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set:tensorflow.SummaryMetadata.PluginData.plugin_name)
+}
+#if LANG_CXX11
+inline void SummaryMetadata_PluginData::set_plugin_name(::std::string&& value) {
+  
+  plugin_name_.Set(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.SummaryMetadata.PluginData.plugin_name)
+}
+#endif
+inline void SummaryMetadata_PluginData::set_plugin_name(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  plugin_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
+              GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_char:tensorflow.SummaryMetadata.PluginData.plugin_name)
+}
+inline void SummaryMetadata_PluginData::set_plugin_name(const char* value,
+    size_t size) {
+  
+  plugin_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
+      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.SummaryMetadata.PluginData.plugin_name)
+}
+inline ::std::string* SummaryMetadata_PluginData::mutable_plugin_name() {
+  
+  // @@protoc_insertion_point(field_mutable:tensorflow.SummaryMetadata.PluginData.plugin_name)
+  return plugin_name_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline ::std::string* SummaryMetadata_PluginData::release_plugin_name() {
+  // @@protoc_insertion_point(field_release:tensorflow.SummaryMetadata.PluginData.plugin_name)
+  
+  return plugin_name_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline void SummaryMetadata_PluginData::set_allocated_plugin_name(::std::string* plugin_name) {
+  if (plugin_name != NULL) {
+    
+  } else {
+    
+  }
+  plugin_name_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), plugin_name,
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.SummaryMetadata.PluginData.plugin_name)
+}
+inline ::std::string* SummaryMetadata_PluginData::unsafe_arena_release_plugin_name() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.SummaryMetadata.PluginData.plugin_name)
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  
+  return plugin_name_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      GetArenaNoVirtual());
+}
+inline void SummaryMetadata_PluginData::unsafe_arena_set_allocated_plugin_name(
+    ::std::string* plugin_name) {
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (plugin_name != NULL) {
+    
+  } else {
+    
+  }
+  plugin_name_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      plugin_name, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.SummaryMetadata.PluginData.plugin_name)
+}
+
+// bytes content = 2;
+inline void SummaryMetadata_PluginData::clear_content() {
+  content_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline const ::std::string& SummaryMetadata_PluginData::content() const {
+  // @@protoc_insertion_point(field_get:tensorflow.SummaryMetadata.PluginData.content)
+  return content_.Get();
+}
+inline void SummaryMetadata_PluginData::set_content(const ::std::string& value) {
+  
+  content_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set:tensorflow.SummaryMetadata.PluginData.content)
+}
+#if LANG_CXX11
+inline void SummaryMetadata_PluginData::set_content(::std::string&& value) {
+  
+  content_.Set(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.SummaryMetadata.PluginData.content)
+}
+#endif
+inline void SummaryMetadata_PluginData::set_content(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  content_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
+              GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_char:tensorflow.SummaryMetadata.PluginData.content)
+}
+inline void SummaryMetadata_PluginData::set_content(const void* value,
+    size_t size) {
+  
+  content_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
+      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.SummaryMetadata.PluginData.content)
+}
+inline ::std::string* SummaryMetadata_PluginData::mutable_content() {
+  
+  // @@protoc_insertion_point(field_mutable:tensorflow.SummaryMetadata.PluginData.content)
+  return content_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline ::std::string* SummaryMetadata_PluginData::release_content() {
+  // @@protoc_insertion_point(field_release:tensorflow.SummaryMetadata.PluginData.content)
+  
+  return content_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline void SummaryMetadata_PluginData::set_allocated_content(::std::string* content) {
+  if (content != NULL) {
+    
+  } else {
+    
+  }
+  content_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), content,
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.SummaryMetadata.PluginData.content)
+}
+inline ::std::string* SummaryMetadata_PluginData::unsafe_arena_release_content() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.SummaryMetadata.PluginData.content)
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  
+  return content_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      GetArenaNoVirtual());
+}
+inline void SummaryMetadata_PluginData::unsafe_arena_set_allocated_content(
+    ::std::string* content) {
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (content != NULL) {
+    
+  } else {
+    
+  }
+  content_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      content, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.SummaryMetadata.PluginData.content)
+}
+
+// -------------------------------------------------------------------
+
+// SummaryMetadata
+
+// .tensorflow.SummaryMetadata.PluginData plugin_data = 1;
+inline bool SummaryMetadata::has_plugin_data() const {
+  return this != internal_default_instance() && plugin_data_ != NULL;
+}
+inline void SummaryMetadata::clear_plugin_data() {
+  if (GetArenaNoVirtual() == NULL && plugin_data_ != NULL) {
+    delete plugin_data_;
+  }
+  plugin_data_ = NULL;
+}
+inline const ::tensorflow::SummaryMetadata_PluginData& SummaryMetadata::plugin_data() const {
+  const ::tensorflow::SummaryMetadata_PluginData* p = plugin_data_;
+  // @@protoc_insertion_point(field_get:tensorflow.SummaryMetadata.plugin_data)
+  return p != NULL ? *p : *reinterpret_cast<const ::tensorflow::SummaryMetadata_PluginData*>(
+      &::tensorflow::_SummaryMetadata_PluginData_default_instance_);
+}
+inline ::tensorflow::SummaryMetadata_PluginData* SummaryMetadata::release_plugin_data() {
+  // @@protoc_insertion_point(field_release:tensorflow.SummaryMetadata.plugin_data)
+  
+  ::tensorflow::SummaryMetadata_PluginData* temp = plugin_data_;
+  if (GetArenaNoVirtual() != NULL) {
+    temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
+  }
+  plugin_data_ = NULL;
+  return temp;
+}
+inline ::tensorflow::SummaryMetadata_PluginData* SummaryMetadata::unsafe_arena_release_plugin_data() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.SummaryMetadata.plugin_data)
+  
+  ::tensorflow::SummaryMetadata_PluginData* temp = plugin_data_;
+  plugin_data_ = NULL;
+  return temp;
+}
+inline ::tensorflow::SummaryMetadata_PluginData* SummaryMetadata::mutable_plugin_data() {
+  
+  if (plugin_data_ == NULL) {
+    auto* p = CreateMaybeMessage<::tensorflow::SummaryMetadata_PluginData>(GetArenaNoVirtual());
+    plugin_data_ = p;
+  }
+  // @@protoc_insertion_point(field_mutable:tensorflow.SummaryMetadata.plugin_data)
+  return plugin_data_;
+}
+inline void SummaryMetadata::set_allocated_plugin_data(::tensorflow::SummaryMetadata_PluginData* plugin_data) {
+  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
+  if (message_arena == NULL) {
+    delete plugin_data_;
+  }
+  if (plugin_data) {
+    ::google::protobuf::Arena* submessage_arena =
+      ::google::protobuf::Arena::GetArena(plugin_data);
+    if (message_arena != submessage_arena) {
+      plugin_data = ::google::protobuf::internal::GetOwnedMessage(
+          message_arena, plugin_data, submessage_arena);
+    }
+    
+  } else {
+    
+  }
+  plugin_data_ = plugin_data;
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.SummaryMetadata.plugin_data)
+}
+
+// string display_name = 2;
+inline void SummaryMetadata::clear_display_name() {
+  display_name_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline const ::std::string& SummaryMetadata::display_name() const {
+  // @@protoc_insertion_point(field_get:tensorflow.SummaryMetadata.display_name)
+  return display_name_.Get();
+}
+inline void SummaryMetadata::set_display_name(const ::std::string& value) {
+  
+  display_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set:tensorflow.SummaryMetadata.display_name)
+}
+#if LANG_CXX11
+inline void SummaryMetadata::set_display_name(::std::string&& value) {
+  
+  display_name_.Set(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.SummaryMetadata.display_name)
+}
+#endif
+inline void SummaryMetadata::set_display_name(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  display_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
+              GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_char:tensorflow.SummaryMetadata.display_name)
+}
+inline void SummaryMetadata::set_display_name(const char* value,
+    size_t size) {
+  
+  display_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
+      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.SummaryMetadata.display_name)
+}
+inline ::std::string* SummaryMetadata::mutable_display_name() {
+  
+  // @@protoc_insertion_point(field_mutable:tensorflow.SummaryMetadata.display_name)
+  return display_name_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline ::std::string* SummaryMetadata::release_display_name() {
+  // @@protoc_insertion_point(field_release:tensorflow.SummaryMetadata.display_name)
+  
+  return display_name_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline void SummaryMetadata::set_allocated_display_name(::std::string* display_name) {
+  if (display_name != NULL) {
+    
+  } else {
+    
+  }
+  display_name_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), display_name,
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.SummaryMetadata.display_name)
+}
+inline ::std::string* SummaryMetadata::unsafe_arena_release_display_name() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.SummaryMetadata.display_name)
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  
+  return display_name_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      GetArenaNoVirtual());
+}
+inline void SummaryMetadata::unsafe_arena_set_allocated_display_name(
+    ::std::string* display_name) {
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (display_name != NULL) {
+    
+  } else {
+    
+  }
+  display_name_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      display_name, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.SummaryMetadata.display_name)
+}
+
+// string summary_description = 3;
+inline void SummaryMetadata::clear_summary_description() {
+  summary_description_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline const ::std::string& SummaryMetadata::summary_description() const {
+  // @@protoc_insertion_point(field_get:tensorflow.SummaryMetadata.summary_description)
+  return summary_description_.Get();
+}
+inline void SummaryMetadata::set_summary_description(const ::std::string& value) {
+  
+  summary_description_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set:tensorflow.SummaryMetadata.summary_description)
+}
+#if LANG_CXX11
+inline void SummaryMetadata::set_summary_description(::std::string&& value) {
+  
+  summary_description_.Set(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.SummaryMetadata.summary_description)
+}
+#endif
+inline void SummaryMetadata::set_summary_description(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  summary_description_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
+              GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_char:tensorflow.SummaryMetadata.summary_description)
+}
+inline void SummaryMetadata::set_summary_description(const char* value,
+    size_t size) {
+  
+  summary_description_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
+      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.SummaryMetadata.summary_description)
+}
+inline ::std::string* SummaryMetadata::mutable_summary_description() {
+  
+  // @@protoc_insertion_point(field_mutable:tensorflow.SummaryMetadata.summary_description)
+  return summary_description_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline ::std::string* SummaryMetadata::release_summary_description() {
+  // @@protoc_insertion_point(field_release:tensorflow.SummaryMetadata.summary_description)
+  
+  return summary_description_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline void SummaryMetadata::set_allocated_summary_description(::std::string* summary_description) {
+  if (summary_description != NULL) {
+    
+  } else {
+    
+  }
+  summary_description_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), summary_description,
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.SummaryMetadata.summary_description)
+}
+inline ::std::string* SummaryMetadata::unsafe_arena_release_summary_description() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.SummaryMetadata.summary_description)
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  
+  return summary_description_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      GetArenaNoVirtual());
+}
+inline void SummaryMetadata::unsafe_arena_set_allocated_summary_description(
+    ::std::string* summary_description) {
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (summary_description != NULL) {
+    
+  } else {
+    
+  }
+  summary_description_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      summary_description, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.SummaryMetadata.summary_description)
+}
+
+// -------------------------------------------------------------------
+
+// Summary_Image
+
+// int32 height = 1;
+inline void Summary_Image::clear_height() {
+  height_ = 0;
+}
+inline ::google::protobuf::int32 Summary_Image::height() const {
+  // @@protoc_insertion_point(field_get:tensorflow.Summary.Image.height)
+  return height_;
+}
+inline void Summary_Image::set_height(::google::protobuf::int32 value) {
+  
+  height_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.Summary.Image.height)
+}
+
+// int32 width = 2;
+inline void Summary_Image::clear_width() {
+  width_ = 0;
+}
+inline ::google::protobuf::int32 Summary_Image::width() const {
+  // @@protoc_insertion_point(field_get:tensorflow.Summary.Image.width)
+  return width_;
+}
+inline void Summary_Image::set_width(::google::protobuf::int32 value) {
+  
+  width_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.Summary.Image.width)
+}
+
+// int32 colorspace = 3;
+inline void Summary_Image::clear_colorspace() {
+  colorspace_ = 0;
+}
+inline ::google::protobuf::int32 Summary_Image::colorspace() const {
+  // @@protoc_insertion_point(field_get:tensorflow.Summary.Image.colorspace)
+  return colorspace_;
+}
+inline void Summary_Image::set_colorspace(::google::protobuf::int32 value) {
+  
+  colorspace_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.Summary.Image.colorspace)
+}
+
+// bytes encoded_image_string = 4;
+inline void Summary_Image::clear_encoded_image_string() {
+  encoded_image_string_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline const ::std::string& Summary_Image::encoded_image_string() const {
+  // @@protoc_insertion_point(field_get:tensorflow.Summary.Image.encoded_image_string)
+  return encoded_image_string_.Get();
+}
+inline void Summary_Image::set_encoded_image_string(const ::std::string& value) {
+  
+  encoded_image_string_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set:tensorflow.Summary.Image.encoded_image_string)
+}
+#if LANG_CXX11
+inline void Summary_Image::set_encoded_image_string(::std::string&& value) {
+  
+  encoded_image_string_.Set(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.Summary.Image.encoded_image_string)
+}
+#endif
+inline void Summary_Image::set_encoded_image_string(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  encoded_image_string_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
+              GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_char:tensorflow.Summary.Image.encoded_image_string)
+}
+inline void Summary_Image::set_encoded_image_string(const void* value,
+    size_t size) {
+  
+  encoded_image_string_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
+      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.Summary.Image.encoded_image_string)
+}
+inline ::std::string* Summary_Image::mutable_encoded_image_string() {
+  
+  // @@protoc_insertion_point(field_mutable:tensorflow.Summary.Image.encoded_image_string)
+  return encoded_image_string_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline ::std::string* Summary_Image::release_encoded_image_string() {
+  // @@protoc_insertion_point(field_release:tensorflow.Summary.Image.encoded_image_string)
+  
+  return encoded_image_string_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline void Summary_Image::set_allocated_encoded_image_string(::std::string* encoded_image_string) {
+  if (encoded_image_string != NULL) {
+    
+  } else {
+    
+  }
+  encoded_image_string_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), encoded_image_string,
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.Summary.Image.encoded_image_string)
+}
+inline ::std::string* Summary_Image::unsafe_arena_release_encoded_image_string() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.Summary.Image.encoded_image_string)
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  
+  return encoded_image_string_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      GetArenaNoVirtual());
+}
+inline void Summary_Image::unsafe_arena_set_allocated_encoded_image_string(
+    ::std::string* encoded_image_string) {
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (encoded_image_string != NULL) {
+    
+  } else {
+    
+  }
+  encoded_image_string_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      encoded_image_string, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.Summary.Image.encoded_image_string)
+}
+
+// -------------------------------------------------------------------
+
+// Summary_Audio
+
+// float sample_rate = 1;
+inline void Summary_Audio::clear_sample_rate() {
+  sample_rate_ = 0;
+}
+inline float Summary_Audio::sample_rate() const {
+  // @@protoc_insertion_point(field_get:tensorflow.Summary.Audio.sample_rate)
+  return sample_rate_;
+}
+inline void Summary_Audio::set_sample_rate(float value) {
+  
+  sample_rate_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.Summary.Audio.sample_rate)
+}
+
+// int64 num_channels = 2;
+inline void Summary_Audio::clear_num_channels() {
+  num_channels_ = PROTOBUF_LONGLONG(0);
+}
+inline ::google::protobuf::int64 Summary_Audio::num_channels() const {
+  // @@protoc_insertion_point(field_get:tensorflow.Summary.Audio.num_channels)
+  return num_channels_;
+}
+inline void Summary_Audio::set_num_channels(::google::protobuf::int64 value) {
+  
+  num_channels_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.Summary.Audio.num_channels)
+}
+
+// int64 length_frames = 3;
+inline void Summary_Audio::clear_length_frames() {
+  length_frames_ = PROTOBUF_LONGLONG(0);
+}
+inline ::google::protobuf::int64 Summary_Audio::length_frames() const {
+  // @@protoc_insertion_point(field_get:tensorflow.Summary.Audio.length_frames)
+  return length_frames_;
+}
+inline void Summary_Audio::set_length_frames(::google::protobuf::int64 value) {
+  
+  length_frames_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.Summary.Audio.length_frames)
+}
+
+// bytes encoded_audio_string = 4;
+inline void Summary_Audio::clear_encoded_audio_string() {
+  encoded_audio_string_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline const ::std::string& Summary_Audio::encoded_audio_string() const {
+  // @@protoc_insertion_point(field_get:tensorflow.Summary.Audio.encoded_audio_string)
+  return encoded_audio_string_.Get();
+}
+inline void Summary_Audio::set_encoded_audio_string(const ::std::string& value) {
+  
+  encoded_audio_string_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set:tensorflow.Summary.Audio.encoded_audio_string)
+}
+#if LANG_CXX11
+inline void Summary_Audio::set_encoded_audio_string(::std::string&& value) {
+  
+  encoded_audio_string_.Set(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.Summary.Audio.encoded_audio_string)
+}
+#endif
+inline void Summary_Audio::set_encoded_audio_string(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  encoded_audio_string_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
+              GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_char:tensorflow.Summary.Audio.encoded_audio_string)
+}
+inline void Summary_Audio::set_encoded_audio_string(const void* value,
+    size_t size) {
+  
+  encoded_audio_string_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
+      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.Summary.Audio.encoded_audio_string)
+}
+inline ::std::string* Summary_Audio::mutable_encoded_audio_string() {
+  
+  // @@protoc_insertion_point(field_mutable:tensorflow.Summary.Audio.encoded_audio_string)
+  return encoded_audio_string_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline ::std::string* Summary_Audio::release_encoded_audio_string() {
+  // @@protoc_insertion_point(field_release:tensorflow.Summary.Audio.encoded_audio_string)
+  
+  return encoded_audio_string_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline void Summary_Audio::set_allocated_encoded_audio_string(::std::string* encoded_audio_string) {
+  if (encoded_audio_string != NULL) {
+    
+  } else {
+    
+  }
+  encoded_audio_string_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), encoded_audio_string,
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.Summary.Audio.encoded_audio_string)
+}
+inline ::std::string* Summary_Audio::unsafe_arena_release_encoded_audio_string() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.Summary.Audio.encoded_audio_string)
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  
+  return encoded_audio_string_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      GetArenaNoVirtual());
+}
+inline void Summary_Audio::unsafe_arena_set_allocated_encoded_audio_string(
+    ::std::string* encoded_audio_string) {
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (encoded_audio_string != NULL) {
+    
+  } else {
+    
+  }
+  encoded_audio_string_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      encoded_audio_string, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.Summary.Audio.encoded_audio_string)
+}
+
+// string content_type = 5;
+inline void Summary_Audio::clear_content_type() {
+  content_type_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline const ::std::string& Summary_Audio::content_type() const {
+  // @@protoc_insertion_point(field_get:tensorflow.Summary.Audio.content_type)
+  return content_type_.Get();
+}
+inline void Summary_Audio::set_content_type(const ::std::string& value) {
+  
+  content_type_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set:tensorflow.Summary.Audio.content_type)
+}
+#if LANG_CXX11
+inline void Summary_Audio::set_content_type(::std::string&& value) {
+  
+  content_type_.Set(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.Summary.Audio.content_type)
+}
+#endif
+inline void Summary_Audio::set_content_type(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  content_type_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
+              GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_char:tensorflow.Summary.Audio.content_type)
+}
+inline void Summary_Audio::set_content_type(const char* value,
+    size_t size) {
+  
+  content_type_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
+      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.Summary.Audio.content_type)
+}
+inline ::std::string* Summary_Audio::mutable_content_type() {
+  
+  // @@protoc_insertion_point(field_mutable:tensorflow.Summary.Audio.content_type)
+  return content_type_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline ::std::string* Summary_Audio::release_content_type() {
+  // @@protoc_insertion_point(field_release:tensorflow.Summary.Audio.content_type)
+  
+  return content_type_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline void Summary_Audio::set_allocated_content_type(::std::string* content_type) {
+  if (content_type != NULL) {
+    
+  } else {
+    
+  }
+  content_type_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), content_type,
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.Summary.Audio.content_type)
+}
+inline ::std::string* Summary_Audio::unsafe_arena_release_content_type() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.Summary.Audio.content_type)
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  
+  return content_type_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      GetArenaNoVirtual());
+}
+inline void Summary_Audio::unsafe_arena_set_allocated_content_type(
+    ::std::string* content_type) {
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (content_type != NULL) {
+    
+  } else {
+    
+  }
+  content_type_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      content_type, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.Summary.Audio.content_type)
+}
+
+// -------------------------------------------------------------------
+
+// Summary_Value
+
+// string node_name = 7;
+inline void Summary_Value::clear_node_name() {
+  node_name_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline const ::std::string& Summary_Value::node_name() const {
+  // @@protoc_insertion_point(field_get:tensorflow.Summary.Value.node_name)
+  return node_name_.Get();
+}
+inline void Summary_Value::set_node_name(const ::std::string& value) {
+  
+  node_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set:tensorflow.Summary.Value.node_name)
+}
+#if LANG_CXX11
+inline void Summary_Value::set_node_name(::std::string&& value) {
+  
+  node_name_.Set(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.Summary.Value.node_name)
+}
+#endif
+inline void Summary_Value::set_node_name(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  node_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
+              GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_char:tensorflow.Summary.Value.node_name)
+}
+inline void Summary_Value::set_node_name(const char* value,
+    size_t size) {
+  
+  node_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
+      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.Summary.Value.node_name)
+}
+inline ::std::string* Summary_Value::mutable_node_name() {
+  
+  // @@protoc_insertion_point(field_mutable:tensorflow.Summary.Value.node_name)
+  return node_name_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline ::std::string* Summary_Value::release_node_name() {
+  // @@protoc_insertion_point(field_release:tensorflow.Summary.Value.node_name)
+  
+  return node_name_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline void Summary_Value::set_allocated_node_name(::std::string* node_name) {
+  if (node_name != NULL) {
+    
+  } else {
+    
+  }
+  node_name_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), node_name,
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.Summary.Value.node_name)
+}
+inline ::std::string* Summary_Value::unsafe_arena_release_node_name() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.Summary.Value.node_name)
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  
+  return node_name_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      GetArenaNoVirtual());
+}
+inline void Summary_Value::unsafe_arena_set_allocated_node_name(
+    ::std::string* node_name) {
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (node_name != NULL) {
+    
+  } else {
+    
+  }
+  node_name_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      node_name, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.Summary.Value.node_name)
+}
+
+// string tag = 1;
+inline void Summary_Value::clear_tag() {
+  tag_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline const ::std::string& Summary_Value::tag() const {
+  // @@protoc_insertion_point(field_get:tensorflow.Summary.Value.tag)
+  return tag_.Get();
+}
+inline void Summary_Value::set_tag(const ::std::string& value) {
+  
+  tag_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set:tensorflow.Summary.Value.tag)
+}
+#if LANG_CXX11
+inline void Summary_Value::set_tag(::std::string&& value) {
+  
+  tag_.Set(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.Summary.Value.tag)
+}
+#endif
+inline void Summary_Value::set_tag(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  tag_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
+              GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_char:tensorflow.Summary.Value.tag)
+}
+inline void Summary_Value::set_tag(const char* value,
+    size_t size) {
+  
+  tag_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
+      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.Summary.Value.tag)
+}
+inline ::std::string* Summary_Value::mutable_tag() {
+  
+  // @@protoc_insertion_point(field_mutable:tensorflow.Summary.Value.tag)
+  return tag_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline ::std::string* Summary_Value::release_tag() {
+  // @@protoc_insertion_point(field_release:tensorflow.Summary.Value.tag)
+  
+  return tag_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline void Summary_Value::set_allocated_tag(::std::string* tag) {
+  if (tag != NULL) {
+    
+  } else {
+    
+  }
+  tag_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), tag,
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.Summary.Value.tag)
+}
+inline ::std::string* Summary_Value::unsafe_arena_release_tag() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.Summary.Value.tag)
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  
+  return tag_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      GetArenaNoVirtual());
+}
+inline void Summary_Value::unsafe_arena_set_allocated_tag(
+    ::std::string* tag) {
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (tag != NULL) {
+    
+  } else {
+    
+  }
+  tag_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      tag, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.Summary.Value.tag)
+}
+
+// .tensorflow.SummaryMetadata metadata = 9;
+inline bool Summary_Value::has_metadata() const {
+  return this != internal_default_instance() && metadata_ != NULL;
+}
+inline void Summary_Value::clear_metadata() {
+  if (GetArenaNoVirtual() == NULL && metadata_ != NULL) {
+    delete metadata_;
+  }
+  metadata_ = NULL;
+}
+inline const ::tensorflow::SummaryMetadata& Summary_Value::metadata() const {
+  const ::tensorflow::SummaryMetadata* p = metadata_;
+  // @@protoc_insertion_point(field_get:tensorflow.Summary.Value.metadata)
+  return p != NULL ? *p : *reinterpret_cast<const ::tensorflow::SummaryMetadata*>(
+      &::tensorflow::_SummaryMetadata_default_instance_);
+}
+inline ::tensorflow::SummaryMetadata* Summary_Value::release_metadata() {
+  // @@protoc_insertion_point(field_release:tensorflow.Summary.Value.metadata)
+  
+  ::tensorflow::SummaryMetadata* temp = metadata_;
+  if (GetArenaNoVirtual() != NULL) {
+    temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
+  }
+  metadata_ = NULL;
+  return temp;
+}
+inline ::tensorflow::SummaryMetadata* Summary_Value::unsafe_arena_release_metadata() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.Summary.Value.metadata)
+  
+  ::tensorflow::SummaryMetadata* temp = metadata_;
+  metadata_ = NULL;
+  return temp;
+}
+inline ::tensorflow::SummaryMetadata* Summary_Value::mutable_metadata() {
+  
+  if (metadata_ == NULL) {
+    auto* p = CreateMaybeMessage<::tensorflow::SummaryMetadata>(GetArenaNoVirtual());
+    metadata_ = p;
+  }
+  // @@protoc_insertion_point(field_mutable:tensorflow.Summary.Value.metadata)
+  return metadata_;
+}
+inline void Summary_Value::set_allocated_metadata(::tensorflow::SummaryMetadata* metadata) {
+  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
+  if (message_arena == NULL) {
+    delete metadata_;
+  }
+  if (metadata) {
+    ::google::protobuf::Arena* submessage_arena =
+      ::google::protobuf::Arena::GetArena(metadata);
+    if (message_arena != submessage_arena) {
+      metadata = ::google::protobuf::internal::GetOwnedMessage(
+          message_arena, metadata, submessage_arena);
+    }
+    
+  } else {
+    
+  }
+  metadata_ = metadata;
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.Summary.Value.metadata)
+}
+
+// float simple_value = 2;
+inline bool Summary_Value::has_simple_value() const {
+  return value_case() == kSimpleValue;
+}
+inline void Summary_Value::set_has_simple_value() {
+  _oneof_case_[0] = kSimpleValue;
+}
+inline void Summary_Value::clear_simple_value() {
+  if (has_simple_value()) {
+    value_.simple_value_ = 0;
+    clear_has_value();
+  }
+}
+inline float Summary_Value::simple_value() const {
+  // @@protoc_insertion_point(field_get:tensorflow.Summary.Value.simple_value)
+  if (has_simple_value()) {
+    return value_.simple_value_;
+  }
+  return 0;
+}
+inline void Summary_Value::set_simple_value(float value) {
+  if (!has_simple_value()) {
+    clear_value();
+    set_has_simple_value();
+  }
+  value_.simple_value_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.Summary.Value.simple_value)
+}
+
+// bytes obsolete_old_style_histogram = 3;
+inline bool Summary_Value::has_obsolete_old_style_histogram() const {
+  return value_case() == kObsoleteOldStyleHistogram;
+}
+inline void Summary_Value::set_has_obsolete_old_style_histogram() {
+  _oneof_case_[0] = kObsoleteOldStyleHistogram;
+}
+inline void Summary_Value::clear_obsolete_old_style_histogram() {
+  if (has_obsolete_old_style_histogram()) {
+    value_.obsolete_old_style_histogram_.Destroy(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+        GetArenaNoVirtual());
+    clear_has_value();
+  }
+}
+inline const ::std::string& Summary_Value::obsolete_old_style_histogram() const {
+  // @@protoc_insertion_point(field_get:tensorflow.Summary.Value.obsolete_old_style_histogram)
+  if (has_obsolete_old_style_histogram()) {
+    return value_.obsolete_old_style_histogram_.Get();
+  }
+  return *&::google::protobuf::internal::GetEmptyStringAlreadyInited();
+}
+inline void Summary_Value::set_obsolete_old_style_histogram(const ::std::string& value) {
+  if (!has_obsolete_old_style_histogram()) {
+    clear_value();
+    set_has_obsolete_old_style_histogram();
+    value_.obsolete_old_style_histogram_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  }
+  value_.obsolete_old_style_histogram_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value,
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set:tensorflow.Summary.Value.obsolete_old_style_histogram)
+}
+#if LANG_CXX11
+inline void Summary_Value::set_obsolete_old_style_histogram(::std::string&& value) {
+  // @@protoc_insertion_point(field_set:tensorflow.Summary.Value.obsolete_old_style_histogram)
+  if (!has_obsolete_old_style_histogram()) {
+    clear_value();
+    set_has_obsolete_old_style_histogram();
+    value_.obsolete_old_style_histogram_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  }
+  value_.obsolete_old_style_histogram_.Set(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.Summary.Value.obsolete_old_style_histogram)
+}
+#endif
+inline void Summary_Value::set_obsolete_old_style_histogram(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  if (!has_obsolete_old_style_histogram()) {
+    clear_value();
+    set_has_obsolete_old_style_histogram();
+    value_.obsolete_old_style_histogram_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  }
+  value_.obsolete_old_style_histogram_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      ::std::string(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_char:tensorflow.Summary.Value.obsolete_old_style_histogram)
+}
+inline void Summary_Value::set_obsolete_old_style_histogram(const void* value,
+                             size_t size) {
+  if (!has_obsolete_old_style_histogram()) {
+    clear_value();
+    set_has_obsolete_old_style_histogram();
+    value_.obsolete_old_style_histogram_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  }
+  value_.obsolete_old_style_histogram_.Set(
+      &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
+      reinterpret_cast<const char*>(value), size),
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.Summary.Value.obsolete_old_style_histogram)
+}
+inline ::std::string* Summary_Value::mutable_obsolete_old_style_histogram() {
+  if (!has_obsolete_old_style_histogram()) {
+    clear_value();
+    set_has_obsolete_old_style_histogram();
+    value_.obsolete_old_style_histogram_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  }
+  return value_.obsolete_old_style_histogram_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_mutable:tensorflow.Summary.Value.obsolete_old_style_histogram)
+}
+inline ::std::string* Summary_Value::release_obsolete_old_style_histogram() {
+  // @@protoc_insertion_point(field_release:tensorflow.Summary.Value.obsolete_old_style_histogram)
+  if (has_obsolete_old_style_histogram()) {
+    clear_has_value();
+    return value_.obsolete_old_style_histogram_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+        GetArenaNoVirtual());
+  } else {
+    return NULL;
+  }
+}
+inline void Summary_Value::set_allocated_obsolete_old_style_histogram(::std::string* obsolete_old_style_histogram) {
+  if (has_value()) {
+    clear_value();
+  }
+  if (obsolete_old_style_histogram != NULL) {
+    set_has_obsolete_old_style_histogram();
+    value_.obsolete_old_style_histogram_.UnsafeSetDefault(obsolete_old_style_histogram);
+  }
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.Summary.Value.obsolete_old_style_histogram)
+}
+inline ::std::string* Summary_Value::unsafe_arena_release_obsolete_old_style_histogram() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.Summary.Value.obsolete_old_style_histogram)
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (has_obsolete_old_style_histogram()) {
+    clear_has_value();
+    return value_.obsolete_old_style_histogram_.UnsafeArenaRelease(
+        &::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+  } else {
+    return NULL;
+  }
+}
+inline void Summary_Value::unsafe_arena_set_allocated_obsolete_old_style_histogram(::std::string* obsolete_old_style_histogram) {
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (!has_obsolete_old_style_histogram()) {
+    value_.obsolete_old_style_histogram_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  }
+  clear_value();
+  if (obsolete_old_style_histogram) {
+    set_has_obsolete_old_style_histogram();
+    value_.obsolete_old_style_histogram_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), obsolete_old_style_histogram, GetArenaNoVirtual());
+  }
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.Summary.Value.obsolete_old_style_histogram)
+}
+
+// .tensorflow.Summary.Image image = 4;
+inline bool Summary_Value::has_image() const {
+  return value_case() == kImage;
+}
+inline void Summary_Value::set_has_image() {
+  _oneof_case_[0] = kImage;
+}
+inline void Summary_Value::clear_image() {
+  if (has_image()) {
+    if (GetArenaNoVirtual() == NULL) {
+      delete value_.image_;
+    }
+    clear_has_value();
+  }
+}
+inline ::tensorflow::Summary_Image* Summary_Value::release_image() {
+  // @@protoc_insertion_point(field_release:tensorflow.Summary.Value.image)
+  if (has_image()) {
+    clear_has_value();
+      ::tensorflow::Summary_Image* temp = value_.image_;
+    if (GetArenaNoVirtual() != NULL) {
+      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
+    }
+    value_.image_ = NULL;
+    return temp;
+  } else {
+    return NULL;
+  }
+}
+inline const ::tensorflow::Summary_Image& Summary_Value::image() const {
+  // @@protoc_insertion_point(field_get:tensorflow.Summary.Value.image)
+  return has_image()
+      ? *value_.image_
+      : *reinterpret_cast< ::tensorflow::Summary_Image*>(&::tensorflow::_Summary_Image_default_instance_);
+}
+inline ::tensorflow::Summary_Image* Summary_Value::unsafe_arena_release_image() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.Summary.Value.image)
+  if (has_image()) {
+    clear_has_value();
+    ::tensorflow::Summary_Image* temp = value_.image_;
+    value_.image_ = NULL;
+    return temp;
+  } else {
+    return NULL;
+  }
+}
+inline void Summary_Value::unsafe_arena_set_allocated_image(::tensorflow::Summary_Image* image) {
+  clear_value();
+  if (image) {
+    set_has_image();
+    value_.image_ = image;
+  }
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.Summary.Value.image)
+}
+inline ::tensorflow::Summary_Image* Summary_Value::mutable_image() {
+  if (!has_image()) {
+    clear_value();
+    set_has_image();
+    value_.image_ = CreateMaybeMessage< ::tensorflow::Summary_Image >(
+        GetArenaNoVirtual());
+  }
+  // @@protoc_insertion_point(field_mutable:tensorflow.Summary.Value.image)
+  return value_.image_;
+}
+
+// .tensorflow.HistogramProto histo = 5;
+inline bool Summary_Value::has_histo() const {
+  return value_case() == kHisto;
+}
+inline void Summary_Value::set_has_histo() {
+  _oneof_case_[0] = kHisto;
+}
+inline void Summary_Value::clear_histo() {
+  if (has_histo()) {
+    if (GetArenaNoVirtual() == NULL) {
+      delete value_.histo_;
+    }
+    clear_has_value();
+  }
+}
+inline ::tensorflow::HistogramProto* Summary_Value::release_histo() {
+  // @@protoc_insertion_point(field_release:tensorflow.Summary.Value.histo)
+  if (has_histo()) {
+    clear_has_value();
+      ::tensorflow::HistogramProto* temp = value_.histo_;
+    if (GetArenaNoVirtual() != NULL) {
+      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
+    }
+    value_.histo_ = NULL;
+    return temp;
+  } else {
+    return NULL;
+  }
+}
+inline const ::tensorflow::HistogramProto& Summary_Value::histo() const {
+  // @@protoc_insertion_point(field_get:tensorflow.Summary.Value.histo)
+  return has_histo()
+      ? *value_.histo_
+      : *reinterpret_cast< ::tensorflow::HistogramProto*>(&::tensorflow::_HistogramProto_default_instance_);
+}
+inline ::tensorflow::HistogramProto* Summary_Value::unsafe_arena_release_histo() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.Summary.Value.histo)
+  if (has_histo()) {
+    clear_has_value();
+    ::tensorflow::HistogramProto* temp = value_.histo_;
+    value_.histo_ = NULL;
+    return temp;
+  } else {
+    return NULL;
+  }
+}
+inline void Summary_Value::unsafe_arena_set_allocated_histo(::tensorflow::HistogramProto* histo) {
+  clear_value();
+  if (histo) {
+    set_has_histo();
+    value_.histo_ = histo;
+  }
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.Summary.Value.histo)
+}
+inline ::tensorflow::HistogramProto* Summary_Value::mutable_histo() {
+  if (!has_histo()) {
+    clear_value();
+    set_has_histo();
+    value_.histo_ = CreateMaybeMessage< ::tensorflow::HistogramProto >(
+        GetArenaNoVirtual());
+  }
+  // @@protoc_insertion_point(field_mutable:tensorflow.Summary.Value.histo)
+  return value_.histo_;
+}
+
+// .tensorflow.Summary.Audio audio = 6;
+inline bool Summary_Value::has_audio() const {
+  return value_case() == kAudio;
+}
+inline void Summary_Value::set_has_audio() {
+  _oneof_case_[0] = kAudio;
+}
+inline void Summary_Value::clear_audio() {
+  if (has_audio()) {
+    if (GetArenaNoVirtual() == NULL) {
+      delete value_.audio_;
+    }
+    clear_has_value();
+  }
+}
+inline ::tensorflow::Summary_Audio* Summary_Value::release_audio() {
+  // @@protoc_insertion_point(field_release:tensorflow.Summary.Value.audio)
+  if (has_audio()) {
+    clear_has_value();
+      ::tensorflow::Summary_Audio* temp = value_.audio_;
+    if (GetArenaNoVirtual() != NULL) {
+      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
+    }
+    value_.audio_ = NULL;
+    return temp;
+  } else {
+    return NULL;
+  }
+}
+inline const ::tensorflow::Summary_Audio& Summary_Value::audio() const {
+  // @@protoc_insertion_point(field_get:tensorflow.Summary.Value.audio)
+  return has_audio()
+      ? *value_.audio_
+      : *reinterpret_cast< ::tensorflow::Summary_Audio*>(&::tensorflow::_Summary_Audio_default_instance_);
+}
+inline ::tensorflow::Summary_Audio* Summary_Value::unsafe_arena_release_audio() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.Summary.Value.audio)
+  if (has_audio()) {
+    clear_has_value();
+    ::tensorflow::Summary_Audio* temp = value_.audio_;
+    value_.audio_ = NULL;
+    return temp;
+  } else {
+    return NULL;
+  }
+}
+inline void Summary_Value::unsafe_arena_set_allocated_audio(::tensorflow::Summary_Audio* audio) {
+  clear_value();
+  if (audio) {
+    set_has_audio();
+    value_.audio_ = audio;
+  }
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.Summary.Value.audio)
+}
+inline ::tensorflow::Summary_Audio* Summary_Value::mutable_audio() {
+  if (!has_audio()) {
+    clear_value();
+    set_has_audio();
+    value_.audio_ = CreateMaybeMessage< ::tensorflow::Summary_Audio >(
+        GetArenaNoVirtual());
+  }
+  // @@protoc_insertion_point(field_mutable:tensorflow.Summary.Value.audio)
+  return value_.audio_;
+}
+
+// .tensorflow.TensorProto tensor = 8;
+inline bool Summary_Value::has_tensor() const {
+  return value_case() == kTensor;
+}
+inline void Summary_Value::set_has_tensor() {
+  _oneof_case_[0] = kTensor;
+}
+inline ::tensorflow::TensorProto* Summary_Value::release_tensor() {
+  // @@protoc_insertion_point(field_release:tensorflow.Summary.Value.tensor)
+  if (has_tensor()) {
+    clear_has_value();
+      ::tensorflow::TensorProto* temp = value_.tensor_;
+    if (GetArenaNoVirtual() != NULL) {
+      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
+    }
+    value_.tensor_ = NULL;
+    return temp;
+  } else {
+    return NULL;
+  }
+}
+inline const ::tensorflow::TensorProto& Summary_Value::tensor() const {
+  // @@protoc_insertion_point(field_get:tensorflow.Summary.Value.tensor)
+  return has_tensor()
+      ? *value_.tensor_
+      : *reinterpret_cast< ::tensorflow::TensorProto*>(&::tensorflow::_TensorProto_default_instance_);
+}
+inline ::tensorflow::TensorProto* Summary_Value::unsafe_arena_release_tensor() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.Summary.Value.tensor)
+  if (has_tensor()) {
+    clear_has_value();
+    ::tensorflow::TensorProto* temp = value_.tensor_;
+    value_.tensor_ = NULL;
+    return temp;
+  } else {
+    return NULL;
+  }
+}
+inline void Summary_Value::unsafe_arena_set_allocated_tensor(::tensorflow::TensorProto* tensor) {
+  clear_value();
+  if (tensor) {
+    set_has_tensor();
+    value_.tensor_ = tensor;
+  }
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.Summary.Value.tensor)
+}
+inline ::tensorflow::TensorProto* Summary_Value::mutable_tensor() {
+  if (!has_tensor()) {
+    clear_value();
+    set_has_tensor();
+    value_.tensor_ = CreateMaybeMessage< ::tensorflow::TensorProto >(
+        GetArenaNoVirtual());
+  }
+  // @@protoc_insertion_point(field_mutable:tensorflow.Summary.Value.tensor)
+  return value_.tensor_;
+}
+
+inline bool Summary_Value::has_value() const {
+  return value_case() != VALUE_NOT_SET;
+}
+inline void Summary_Value::clear_has_value() {
+  _oneof_case_[0] = VALUE_NOT_SET;
+}
+inline Summary_Value::ValueCase Summary_Value::value_case() const {
+  return Summary_Value::ValueCase(_oneof_case_[0]);
+}
+// -------------------------------------------------------------------
+
+// Summary
+
+// repeated .tensorflow.Summary.Value value = 1;
+inline int Summary::value_size() const {
+  return value_.size();
+}
+inline void Summary::clear_value() {
+  value_.Clear();
+}
+inline ::tensorflow::Summary_Value* Summary::mutable_value(int index) {
+  // @@protoc_insertion_point(field_mutable:tensorflow.Summary.value)
+  return value_.Mutable(index);
+}
+inline ::google::protobuf::RepeatedPtrField< ::tensorflow::Summary_Value >*
+Summary::mutable_value() {
+  // @@protoc_insertion_point(field_mutable_list:tensorflow.Summary.value)
+  return &value_;
+}
+inline const ::tensorflow::Summary_Value& Summary::value(int index) const {
+  // @@protoc_insertion_point(field_get:tensorflow.Summary.value)
+  return value_.Get(index);
+}
+inline ::tensorflow::Summary_Value* Summary::add_value() {
+  // @@protoc_insertion_point(field_add:tensorflow.Summary.value)
+  return value_.Add();
+}
+inline const ::google::protobuf::RepeatedPtrField< ::tensorflow::Summary_Value >&
+Summary::value() const {
+  // @@protoc_insertion_point(field_list:tensorflow.Summary.value)
+  return value_;
+}
+
+#ifdef __GNUC__
+  #pragma GCC diagnostic pop
+#endif  // __GNUC__
+// -------------------------------------------------------------------
+
+// -------------------------------------------------------------------
+
+// -------------------------------------------------------------------
+
+// -------------------------------------------------------------------
+
+// -------------------------------------------------------------------
+
+// -------------------------------------------------------------------
+
+// -------------------------------------------------------------------
+
+
+// @@protoc_insertion_point(namespace_scope)
+
+}  // namespace tensorflow
+
+// @@protoc_insertion_point(global_scope)
+
+#include <google/protobuf/port_undef.inc>
+#endif  // PROTOBUF_INCLUDED_tensorflow_2fcore_2fframework_2fsummary_2eproto
diff --git a/tensorflow/core/framework/summary.proto b/tensorflow/core/framework/summary.proto
new file mode 100644 (file)
index 0000000..532e4fc
--- /dev/null
@@ -0,0 +1,124 @@
+syntax = "proto3";
+
+package tensorflow;
+option cc_enable_arenas = true;
+option java_outer_classname = "SummaryProtos";
+option java_multiple_files = true;
+option java_package = "org.tensorflow.framework";
+option go_package = "github.com/tensorflow/tensorflow/tensorflow/go/core/framework";
+import "tensorflow/core/framework/tensor.proto";
+
+// Metadata associated with a series of Summary data
+message SummaryDescription {
+  // Hint on how plugins should process the data in this series.
+  // Supported values include "scalar", "histogram", "image", "audio"
+  string type_hint = 1;
+}
+
+// Serialization format for histogram module in
+// core/lib/histogram/histogram.h
+message HistogramProto {
+  double min = 1;
+  double max = 2;
+  double num = 3;
+  double sum = 4;
+  double sum_squares = 5;
+
+  // Parallel arrays encoding the bucket boundaries and the bucket values.
+  // bucket(i) is the count for the bucket i.  The range for
+  // a bucket is:
+  //   i == 0:  -DBL_MAX .. bucket_limit(0)
+  //   i != 0:  bucket_limit(i-1) .. bucket_limit(i)
+  repeated double bucket_limit = 6 [packed = true];
+  repeated double bucket = 7 [packed = true];
+};
+
+// A SummaryMetadata encapsulates information on which plugins are able to make
+// use of a certain summary value.
+message SummaryMetadata {
+  message PluginData {
+    // The name of the plugin this data pertains to.
+    string plugin_name = 1;
+
+    // The content to store for the plugin. The best practice is for this to be
+    // a binary serialized protocol buffer.
+    bytes content = 2;
+  }
+
+  // Data that associates a summary with a certain plugin.
+  PluginData plugin_data = 1;
+
+  // Display name for viewing in TensorBoard.
+  string display_name = 2;
+
+  // Longform readable description of the summary sequence. Markdown supported.
+  string summary_description = 3;
+};
+
+// 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.
+message Summary {
+  message Image {
+    // Dimensions of the image.
+    int32 height = 1;
+    int32 width = 2;
+    // Valid colorspace values are
+    //   1 - grayscale
+    //   2 - grayscale + alpha
+    //   3 - RGB
+    //   4 - RGBA
+    //   5 - DIGITAL_YUV
+    //   6 - BGRA
+    int32 colorspace = 3;
+    // Image data in encoded format.  All image formats supported by
+    // image_codec::CoderUtil can be stored here.
+    bytes encoded_image_string = 4;
+  }
+
+  message Audio {
+    // Sample rate of the audio in Hz.
+    float sample_rate = 1;
+    // Number of channels of audio.
+    int64 num_channels = 2;
+    // Length of the audio in frames (samples per channel).
+    int64 length_frames = 3;
+    // Encoded audio data and its associated RFC 2045 content type (e.g.
+    // "audio/wav").
+    bytes encoded_audio_string = 4;
+    string content_type = 5;
+  }
+
+  message Value {
+    // This field is deprecated and will not be set.
+    string node_name = 7;
+
+    // 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
+    string tag = 1;
+
+    // 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.
+    SummaryMetadata metadata = 9;
+
+    // Value associated with the tag.
+    oneof value {
+      float simple_value = 2;
+      bytes obsolete_old_style_histogram = 3;
+      Image image = 4;
+      HistogramProto histo = 5;
+      Audio audio = 6;
+      TensorProto tensor = 8;
+    }
+  }
+
+  // Set of values for the summary.
+  repeated Value value = 1;
+}
diff --git a/tensorflow/core/framework/tensor.pb.cc b/tensorflow/core/framework/tensor.pb.cc
new file mode 100644 (file)
index 0000000..59873dc
--- /dev/null
@@ -0,0 +1,2127 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: tensorflow/core/framework/tensor.proto
+
+#include "tensorflow/core/framework/tensor.pb.h"
+
+#include <algorithm>
+
+#include <google/protobuf/stubs/common.h>
+#include <google/protobuf/io/coded_stream.h>
+#include <google/protobuf/extension_set.h>
+#include <google/protobuf/wire_format_lite_inl.h>
+#include <google/protobuf/descriptor.h>
+#include <google/protobuf/generated_message_reflection.h>
+#include <google/protobuf/reflection_ops.h>
+#include <google/protobuf/wire_format.h>
+// @@protoc_insertion_point(includes)
+#include <google/protobuf/port_def.inc>
+
+extern PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fframework_2fresource_5fhandle_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_ResourceHandleProto_tensorflow_2fcore_2fframework_2fresource_5fhandle_2eproto;
+extern PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fframework_2ftensor_2eproto ::google::protobuf::internal::SCCInfo<2> scc_info_TensorProto_tensorflow_2fcore_2fframework_2ftensor_2eproto;
+extern PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fframework_2ftensor_5fshape_2eproto ::google::protobuf::internal::SCCInfo<1> scc_info_TensorShapeProto_tensorflow_2fcore_2fframework_2ftensor_5fshape_2eproto;
+namespace tensorflow {
+class TensorProtoDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<TensorProto> _instance;
+} _TensorProto_default_instance_;
+class VariantTensorDataProtoDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<VariantTensorDataProto> _instance;
+} _VariantTensorDataProto_default_instance_;
+}  // namespace tensorflow
+static void InitDefaultsTensorProto_tensorflow_2fcore_2fframework_2ftensor_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_TensorProto_default_instance_;
+    new (ptr) ::tensorflow::TensorProto();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  {
+    void* ptr = &::tensorflow::_VariantTensorDataProto_default_instance_;
+    new (ptr) ::tensorflow::VariantTensorDataProto();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::TensorProto::InitAsDefaultInstance();
+  ::tensorflow::VariantTensorDataProto::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<2> scc_info_TensorProto_tensorflow_2fcore_2fframework_2ftensor_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 2, InitDefaultsTensorProto_tensorflow_2fcore_2fframework_2ftensor_2eproto}, {
+      &scc_info_TensorShapeProto_tensorflow_2fcore_2fframework_2ftensor_5fshape_2eproto.base,
+      &scc_info_ResourceHandleProto_tensorflow_2fcore_2fframework_2fresource_5fhandle_2eproto.base,}};
+
+void InitDefaults_tensorflow_2fcore_2fframework_2ftensor_2eproto() {
+  ::google::protobuf::internal::InitSCC(&scc_info_TensorProto_tensorflow_2fcore_2fframework_2ftensor_2eproto.base);
+}
+
+::google::protobuf::Metadata file_level_metadata_tensorflow_2fcore_2fframework_2ftensor_2eproto[2];
+constexpr ::google::protobuf::EnumDescriptor const** file_level_enum_descriptors_tensorflow_2fcore_2fframework_2ftensor_2eproto = nullptr;
+constexpr ::google::protobuf::ServiceDescriptor const** file_level_service_descriptors_tensorflow_2fcore_2fframework_2ftensor_2eproto = nullptr;
+
+const ::google::protobuf::uint32 TableStruct_tensorflow_2fcore_2fframework_2ftensor_2eproto::offsets[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = {
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::TensorProto, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::TensorProto, dtype_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::TensorProto, tensor_shape_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::TensorProto, version_number_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::TensorProto, tensor_content_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::TensorProto, half_val_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::TensorProto, float_val_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::TensorProto, double_val_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::TensorProto, int_val_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::TensorProto, string_val_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::TensorProto, scomplex_val_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::TensorProto, int64_val_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::TensorProto, bool_val_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::TensorProto, dcomplex_val_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::TensorProto, resource_handle_val_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::TensorProto, variant_val_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::TensorProto, uint32_val_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::TensorProto, uint64_val_),
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::VariantTensorDataProto, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::VariantTensorDataProto, type_name_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::VariantTensorDataProto, metadata_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::VariantTensorDataProto, tensors_),
+};
+static const ::google::protobuf::internal::MigrationSchema schemas[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = {
+  { 0, -1, sizeof(::tensorflow::TensorProto)},
+  { 22, -1, sizeof(::tensorflow::VariantTensorDataProto)},
+};
+
+static ::google::protobuf::Message const * const file_default_instances[] = {
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_TensorProto_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_VariantTensorDataProto_default_instance_),
+};
+
+::google::protobuf::internal::AssignDescriptorsTable assign_descriptors_table_tensorflow_2fcore_2fframework_2ftensor_2eproto = {
+  {}, AddDescriptors_tensorflow_2fcore_2fframework_2ftensor_2eproto, "tensorflow/core/framework/tensor.proto", schemas,
+  file_default_instances, TableStruct_tensorflow_2fcore_2fframework_2ftensor_2eproto::offsets,
+  file_level_metadata_tensorflow_2fcore_2fframework_2ftensor_2eproto, 2, file_level_enum_descriptors_tensorflow_2fcore_2fframework_2ftensor_2eproto, file_level_service_descriptors_tensorflow_2fcore_2fframework_2ftensor_2eproto,
+};
+
+::google::protobuf::internal::DescriptorTable descriptor_table_tensorflow_2fcore_2fframework_2ftensor_2eproto = {
+  false, InitDefaults_tensorflow_2fcore_2fframework_2ftensor_2eproto, 
+  "\n&tensorflow/core/framework/tensor.proto"
+  "\022\ntensorflow\032/tensorflow/core/framework/"
+  "resource_handle.proto\032,tensorflow/core/f"
+  "ramework/tensor_shape.proto\032%tensorflow/"
+  "core/framework/types.proto\"\214\004\n\013TensorPro"
+  "to\022#\n\005dtype\030\001 \001(\0162\024.tensorflow.DataType\022"
+  "2\n\014tensor_shape\030\002 \001(\0132\034.tensorflow.Tenso"
+  "rShapeProto\022\026\n\016version_number\030\003 \001(\005\022\026\n\016t"
+  "ensor_content\030\004 \001(\014\022\024\n\010half_val\030\r \003(\005B\002\020"
+  "\001\022\025\n\tfloat_val\030\005 \003(\002B\002\020\001\022\026\n\ndouble_val\030\006"
+  " \003(\001B\002\020\001\022\023\n\007int_val\030\007 \003(\005B\002\020\001\022\022\n\nstring_"
+  "val\030\010 \003(\014\022\030\n\014scomplex_val\030\t \003(\002B\002\020\001\022\025\n\ti"
+  "nt64_val\030\n \003(\003B\002\020\001\022\024\n\010bool_val\030\013 \003(\010B\002\020\001"
+  "\022\030\n\014dcomplex_val\030\014 \003(\001B\002\020\001\022<\n\023resource_h"
+  "andle_val\030\016 \003(\0132\037.tensorflow.ResourceHan"
+  "dleProto\0227\n\013variant_val\030\017 \003(\0132\".tensorfl"
+  "ow.VariantTensorDataProto\022\026\n\nuint32_val\030"
+  "\020 \003(\rB\002\020\001\022\026\n\nuint64_val\030\021 \003(\004B\002\020\001\"g\n\026Var"
+  "iantTensorDataProto\022\021\n\ttype_name\030\001 \001(\t\022\020"
+  "\n\010metadata\030\002 \001(\014\022(\n\007tensors\030\003 \003(\0132\027.tens"
+  "orflow.TensorProtoBl\n\030org.tensorflow.fra"
+  "meworkB\014TensorProtosP\001Z=github.com/tenso"
+  "rflow/tensorflow/tensorflow/go/core/fram"
+  "ework\370\001\001b\006proto3"
+,
+  "tensorflow/core/framework/tensor.proto", &assign_descriptors_table_tensorflow_2fcore_2fframework_2ftensor_2eproto, 936,
+};
+
+void AddDescriptors_tensorflow_2fcore_2fframework_2ftensor_2eproto() {
+  static constexpr ::google::protobuf::internal::InitFunc deps[3] =
+  {
+    ::AddDescriptors_tensorflow_2fcore_2fframework_2fresource_5fhandle_2eproto,
+    ::AddDescriptors_tensorflow_2fcore_2fframework_2ftensor_5fshape_2eproto,
+    ::AddDescriptors_tensorflow_2fcore_2fframework_2ftypes_2eproto,
+  };
+ ::google::protobuf::internal::AddDescriptors(&descriptor_table_tensorflow_2fcore_2fframework_2ftensor_2eproto, deps, 3);
+}
+
+// Force running AddDescriptors() at dynamic initialization time.
+static bool dynamic_init_dummy_tensorflow_2fcore_2fframework_2ftensor_2eproto = []() { AddDescriptors_tensorflow_2fcore_2fframework_2ftensor_2eproto(); return true; }();
+namespace tensorflow {
+
+// ===================================================================
+
+void TensorProto::InitAsDefaultInstance() {
+  ::tensorflow::_TensorProto_default_instance_._instance.get_mutable()->tensor_shape_ = const_cast< ::tensorflow::TensorShapeProto*>(
+      ::tensorflow::TensorShapeProto::internal_default_instance());
+}
+class TensorProto::HasBitSetters {
+ public:
+  static const ::tensorflow::TensorShapeProto& tensor_shape(const TensorProto* msg);
+};
+
+const ::tensorflow::TensorShapeProto&
+TensorProto::HasBitSetters::tensor_shape(const TensorProto* msg) {
+  return *msg->tensor_shape_;
+}
+void TensorProto::unsafe_arena_set_allocated_tensor_shape(
+    ::tensorflow::TensorShapeProto* tensor_shape) {
+  if (GetArenaNoVirtual() == NULL) {
+    delete tensor_shape_;
+  }
+  tensor_shape_ = tensor_shape;
+  if (tensor_shape) {
+    
+  } else {
+    
+  }
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.TensorProto.tensor_shape)
+}
+void TensorProto::clear_tensor_shape() {
+  if (GetArenaNoVirtual() == NULL && tensor_shape_ != NULL) {
+    delete tensor_shape_;
+  }
+  tensor_shape_ = NULL;
+}
+void TensorProto::clear_resource_handle_val() {
+  resource_handle_val_.Clear();
+}
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int TensorProto::kDtypeFieldNumber;
+const int TensorProto::kTensorShapeFieldNumber;
+const int TensorProto::kVersionNumberFieldNumber;
+const int TensorProto::kTensorContentFieldNumber;
+const int TensorProto::kHalfValFieldNumber;
+const int TensorProto::kFloatValFieldNumber;
+const int TensorProto::kDoubleValFieldNumber;
+const int TensorProto::kIntValFieldNumber;
+const int TensorProto::kStringValFieldNumber;
+const int TensorProto::kScomplexValFieldNumber;
+const int TensorProto::kInt64ValFieldNumber;
+const int TensorProto::kBoolValFieldNumber;
+const int TensorProto::kDcomplexValFieldNumber;
+const int TensorProto::kResourceHandleValFieldNumber;
+const int TensorProto::kVariantValFieldNumber;
+const int TensorProto::kUint32ValFieldNumber;
+const int TensorProto::kUint64ValFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+TensorProto::TensorProto()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.TensorProto)
+}
+TensorProto::TensorProto(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena),
+  float_val_(arena),
+  double_val_(arena),
+  int_val_(arena),
+  string_val_(arena),
+  scomplex_val_(arena),
+  int64_val_(arena),
+  bool_val_(arena),
+  dcomplex_val_(arena),
+  half_val_(arena),
+  resource_handle_val_(arena),
+  variant_val_(arena),
+  uint32_val_(arena),
+  uint64_val_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.TensorProto)
+}
+TensorProto::TensorProto(const TensorProto& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL),
+      float_val_(from.float_val_),
+      double_val_(from.double_val_),
+      int_val_(from.int_val_),
+      string_val_(from.string_val_),
+      scomplex_val_(from.scomplex_val_),
+      int64_val_(from.int64_val_),
+      bool_val_(from.bool_val_),
+      dcomplex_val_(from.dcomplex_val_),
+      half_val_(from.half_val_),
+      resource_handle_val_(from.resource_handle_val_),
+      variant_val_(from.variant_val_),
+      uint32_val_(from.uint32_val_),
+      uint64_val_(from.uint64_val_) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  tensor_content_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.tensor_content().size() > 0) {
+    tensor_content_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.tensor_content(),
+      GetArenaNoVirtual());
+  }
+  if (from.has_tensor_shape()) {
+    tensor_shape_ = new ::tensorflow::TensorShapeProto(*from.tensor_shape_);
+  } else {
+    tensor_shape_ = NULL;
+  }
+  ::memcpy(&dtype_, &from.dtype_,
+    static_cast<size_t>(reinterpret_cast<char*>(&version_number_) -
+    reinterpret_cast<char*>(&dtype_)) + sizeof(version_number_));
+  // @@protoc_insertion_point(copy_constructor:tensorflow.TensorProto)
+}
+
+void TensorProto::SharedCtor() {
+  ::google::protobuf::internal::InitSCC(
+      &scc_info_TensorProto_tensorflow_2fcore_2fframework_2ftensor_2eproto.base);
+  tensor_content_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  ::memset(&tensor_shape_, 0, static_cast<size_t>(
+      reinterpret_cast<char*>(&version_number_) -
+      reinterpret_cast<char*>(&tensor_shape_)) + sizeof(version_number_));
+}
+
+TensorProto::~TensorProto() {
+  // @@protoc_insertion_point(destructor:tensorflow.TensorProto)
+  SharedDtor();
+}
+
+void TensorProto::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+  tensor_content_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (this != internal_default_instance()) delete tensor_shape_;
+}
+
+void TensorProto::ArenaDtor(void* object) {
+  TensorProto* _this = reinterpret_cast< TensorProto* >(object);
+  (void)_this;
+}
+void TensorProto::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void TensorProto::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const TensorProto& TensorProto::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_TensorProto_tensorflow_2fcore_2fframework_2ftensor_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void TensorProto::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.TensorProto)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  float_val_.Clear();
+  double_val_.Clear();
+  int_val_.Clear();
+  string_val_.Clear();
+  scomplex_val_.Clear();
+  int64_val_.Clear();
+  bool_val_.Clear();
+  dcomplex_val_.Clear();
+  half_val_.Clear();
+  resource_handle_val_.Clear();
+  variant_val_.Clear();
+  uint32_val_.Clear();
+  uint64_val_.Clear();
+  tensor_content_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+  if (GetArenaNoVirtual() == NULL && tensor_shape_ != NULL) {
+    delete tensor_shape_;
+  }
+  tensor_shape_ = NULL;
+  ::memset(&dtype_, 0, static_cast<size_t>(
+      reinterpret_cast<char*>(&version_number_) -
+      reinterpret_cast<char*>(&dtype_)) + sizeof(version_number_));
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* TensorProto::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<TensorProto*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // .tensorflow.DataType dtype = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 8) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::tensorflow::DataType value = static_cast<::tensorflow::DataType>(val);
+        msg->set_dtype(value);
+        break;
+      }
+      // .tensorflow.TensorShapeProto tensor_shape = 2;
+      case 2: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 18) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        parser_till_end = ::tensorflow::TensorShapeProto::_InternalParse;
+        object = msg->mutable_tensor_shape();
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                       ptr, newend);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+        ptr = newend;
+        break;
+      }
+      // int32 version_number = 3;
+      case 3: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 24) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::google::protobuf::int32 value = val;
+        msg->set_version_number(value);
+        break;
+      }
+      // bytes tensor_content = 4;
+      case 4: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 34) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        parser_till_end = ::google::protobuf::internal::StringParser;
+        ::std::string* str = msg->mutable_tensor_content();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        str->append(ptr, size);
+        ptr += size;
+        break;
+      }
+      // repeated float float_val = 5 [packed = true];
+      case 5: {
+        if (static_cast<::google::protobuf::uint8>(tag) == 42) {
+          ptr = Varint::Parse32Inline(ptr, &size);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          parser_till_end = ::google::protobuf::internal::PackedFloatParser;
+          object = msg->mutable_float_val();
+          if (size > end - ptr) goto len_delim_till_end;
+          auto newend = ptr + size;
+          if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+          break;
+        } else if (static_cast<::google::protobuf::uint8>(tag) != 45) goto handle_unusual;
+        do {
+          float val;
+          std::memcpy(&val, ptr, 4);
+          ptr += 4;
+          msg->add_float_val(val);
+          if (ptr >= end) break;
+        } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 45 && (ptr += 1));
+        break;
+      }
+      // repeated double double_val = 6 [packed = true];
+      case 6: {
+        if (static_cast<::google::protobuf::uint8>(tag) == 50) {
+          ptr = Varint::Parse32Inline(ptr, &size);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          parser_till_end = ::google::protobuf::internal::PackedDoubleParser;
+          object = msg->mutable_double_val();
+          if (size > end - ptr) goto len_delim_till_end;
+          auto newend = ptr + size;
+          if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+          break;
+        } else if (static_cast<::google::protobuf::uint8>(tag) != 49) goto handle_unusual;
+        do {
+          double val;
+          ::std::memcpy(&val, ptr, 8);
+          ptr += 8;
+          msg->add_double_val(val);
+          if (ptr >= end) break;
+        } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 49 && (ptr += 1));
+        break;
+      }
+      // repeated int32 int_val = 7 [packed = true];
+      case 7: {
+        if (static_cast<::google::protobuf::uint8>(tag) == 58) {
+          ptr = Varint::Parse32Inline(ptr, &size);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          parser_till_end = ::google::protobuf::internal::PackedInt32Parser;
+          object = msg->mutable_int_val();
+          if (size > end - ptr) goto len_delim_till_end;
+          auto newend = ptr + size;
+          if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+          break;
+        } else if (static_cast<::google::protobuf::uint8>(tag) != 56) goto handle_unusual;
+        do {
+          ::google::protobuf::uint64 val;
+          ptr = Varint::Parse64(ptr, &val);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          ::google::protobuf::int32 value = val;
+          msg->add_int_val(value);
+          if (ptr >= end) break;
+        } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 56 && (ptr += 1));
+        break;
+      }
+      // repeated bytes string_val = 8;
+      case 8: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 66) goto handle_unusual;
+        do {
+          ptr = Varint::Parse32Inline(ptr, &size);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          parser_till_end = ::google::protobuf::internal::StringParser;
+          ::std::string* str = msg->add_string_val();
+          str->clear();
+          object = str;
+          if (size > end - ptr) goto len_delim_till_end;
+          str->append(ptr, size);
+          ptr += size;
+          if (ptr >= end) break;
+        } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 66 && (ptr += 1));
+        break;
+      }
+      // repeated float scomplex_val = 9 [packed = true];
+      case 9: {
+        if (static_cast<::google::protobuf::uint8>(tag) == 74) {
+          ptr = Varint::Parse32Inline(ptr, &size);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          parser_till_end = ::google::protobuf::internal::PackedFloatParser;
+          object = msg->mutable_scomplex_val();
+          if (size > end - ptr) goto len_delim_till_end;
+          auto newend = ptr + size;
+          if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+          break;
+        } else if (static_cast<::google::protobuf::uint8>(tag) != 77) goto handle_unusual;
+        do {
+          float val;
+          std::memcpy(&val, ptr, 4);
+          ptr += 4;
+          msg->add_scomplex_val(val);
+          if (ptr >= end) break;
+        } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 77 && (ptr += 1));
+        break;
+      }
+      // repeated int64 int64_val = 10 [packed = true];
+      case 10: {
+        if (static_cast<::google::protobuf::uint8>(tag) == 82) {
+          ptr = Varint::Parse32Inline(ptr, &size);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          parser_till_end = ::google::protobuf::internal::PackedInt64Parser;
+          object = msg->mutable_int64_val();
+          if (size > end - ptr) goto len_delim_till_end;
+          auto newend = ptr + size;
+          if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+          break;
+        } else if (static_cast<::google::protobuf::uint8>(tag) != 80) goto handle_unusual;
+        do {
+          ::google::protobuf::uint64 val;
+          ptr = Varint::Parse64(ptr, &val);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          ::google::protobuf::int64 value = val;
+          msg->add_int64_val(value);
+          if (ptr >= end) break;
+        } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 80 && (ptr += 1));
+        break;
+      }
+      // repeated bool bool_val = 11 [packed = true];
+      case 11: {
+        if (static_cast<::google::protobuf::uint8>(tag) == 90) {
+          ptr = Varint::Parse32Inline(ptr, &size);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          parser_till_end = ::google::protobuf::internal::PackedBoolParser;
+          object = msg->mutable_bool_val();
+          if (size > end - ptr) goto len_delim_till_end;
+          auto newend = ptr + size;
+          if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+          break;
+        } else if (static_cast<::google::protobuf::uint8>(tag) != 88) goto handle_unusual;
+        do {
+          ::google::protobuf::uint64 val;
+          ptr = Varint::Parse64(ptr, &val);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          bool value = val;
+          msg->add_bool_val(value);
+          if (ptr >= end) break;
+        } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 88 && (ptr += 1));
+        break;
+      }
+      // repeated double dcomplex_val = 12 [packed = true];
+      case 12: {
+        if (static_cast<::google::protobuf::uint8>(tag) == 98) {
+          ptr = Varint::Parse32Inline(ptr, &size);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          parser_till_end = ::google::protobuf::internal::PackedDoubleParser;
+          object = msg->mutable_dcomplex_val();
+          if (size > end - ptr) goto len_delim_till_end;
+          auto newend = ptr + size;
+          if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+          break;
+        } else if (static_cast<::google::protobuf::uint8>(tag) != 97) goto handle_unusual;
+        do {
+          double val;
+          ::std::memcpy(&val, ptr, 8);
+          ptr += 8;
+          msg->add_dcomplex_val(val);
+          if (ptr >= end) break;
+        } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 97 && (ptr += 1));
+        break;
+      }
+      // repeated int32 half_val = 13 [packed = true];
+      case 13: {
+        if (static_cast<::google::protobuf::uint8>(tag) == 106) {
+          ptr = Varint::Parse32Inline(ptr, &size);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          parser_till_end = ::google::protobuf::internal::PackedInt32Parser;
+          object = msg->mutable_half_val();
+          if (size > end - ptr) goto len_delim_till_end;
+          auto newend = ptr + size;
+          if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+          break;
+        } else if (static_cast<::google::protobuf::uint8>(tag) != 104) goto handle_unusual;
+        do {
+          ::google::protobuf::uint64 val;
+          ptr = Varint::Parse64(ptr, &val);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          ::google::protobuf::int32 value = val;
+          msg->add_half_val(value);
+          if (ptr >= end) break;
+        } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 104 && (ptr += 1));
+        break;
+      }
+      // repeated .tensorflow.ResourceHandleProto resource_handle_val = 14;
+      case 14: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 114) goto handle_unusual;
+        do {
+          ptr = Varint::Parse32Inline(ptr, &size);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          parser_till_end = ::tensorflow::ResourceHandleProto::_InternalParse;
+          object = msg->add_resource_handle_val();
+          if (size > end - ptr) goto len_delim_till_end;
+          auto newend = ptr + size;
+          bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                         ptr, newend);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          ptr = newend;
+          if (ptr >= end) break;
+        } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 114 && (ptr += 1));
+        break;
+      }
+      // repeated .tensorflow.VariantTensorDataProto variant_val = 15;
+      case 15: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 122) goto handle_unusual;
+        do {
+          ptr = Varint::Parse32Inline(ptr, &size);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          parser_till_end = ::tensorflow::VariantTensorDataProto::_InternalParse;
+          object = msg->add_variant_val();
+          if (size > end - ptr) goto len_delim_till_end;
+          auto newend = ptr + size;
+          bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                         ptr, newend);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          ptr = newend;
+          if (ptr >= end) break;
+        } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 122 && (ptr += 1));
+        break;
+      }
+      // repeated uint32 uint32_val = 16 [packed = true];
+      case 16: {
+        if (static_cast<::google::protobuf::uint8>(tag) == 130) {
+          ptr = Varint::Parse32Inline(ptr, &size);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          parser_till_end = ::google::protobuf::internal::PackedUInt32Parser;
+          object = msg->mutable_uint32_val();
+          if (size > end - ptr) goto len_delim_till_end;
+          auto newend = ptr + size;
+          if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+          break;
+        } else if (static_cast<::google::protobuf::uint8>(tag) != 128) goto handle_unusual;
+        do {
+          ::google::protobuf::uint64 val;
+          ptr = Varint::Parse64(ptr, &val);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          ::google::protobuf::uint32 value = val;
+          msg->add_uint32_val(value);
+          if (ptr >= end) break;
+        } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 65535) == 384 && (ptr += 2));
+        break;
+      }
+      // repeated uint64 uint64_val = 17 [packed = true];
+      case 17: {
+        if (static_cast<::google::protobuf::uint8>(tag) == 138) {
+          ptr = Varint::Parse32Inline(ptr, &size);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          parser_till_end = ::google::protobuf::internal::PackedUInt64Parser;
+          object = msg->mutable_uint64_val();
+          if (size > end - ptr) goto len_delim_till_end;
+          auto newend = ptr + size;
+          if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+          break;
+        } else if (static_cast<::google::protobuf::uint8>(tag) != 136) goto handle_unusual;
+        do {
+          ::google::protobuf::uint64 val;
+          ptr = Varint::Parse64(ptr, &val);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          ::google::protobuf::uint64 value = val;
+          msg->add_uint64_val(value);
+          if (ptr >= end) break;
+        } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 65535) == 392 && (ptr += 2));
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool TensorProto::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.TensorProto)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(16383u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // .tensorflow.DataType dtype = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (8 & 0xFF)) {
+          int value = 0;
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>(
+                 input, &value)));
+          set_dtype(static_cast< ::tensorflow::DataType >(value));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // .tensorflow.TensorShapeProto tensor_shape = 2;
+      case 2: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (18 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+               input, mutable_tensor_shape()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // int32 version_number = 3;
+      case 3: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (24 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
+                 input, &version_number_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // bytes tensor_content = 4;
+      case 4: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (34 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadBytes(
+                input, this->mutable_tensor_content()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // repeated float float_val = 5 [packed = true];
+      case 5: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (42 & 0xFF)) {
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPackedPrimitive<
+                   float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>(
+                 input, this->mutable_float_val())));
+        } else if (static_cast< ::google::protobuf::uint8>(tag) == (45 & 0xFF)) {
+          DO_((::google::protobuf::internal::WireFormatLite::ReadRepeatedPrimitiveNoInline<
+                   float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>(
+                 1, 42u, input, this->mutable_float_val())));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // repeated double double_val = 6 [packed = true];
+      case 6: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (50 & 0xFF)) {
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPackedPrimitive<
+                   double, ::google::protobuf::internal::WireFormatLite::TYPE_DOUBLE>(
+                 input, this->mutable_double_val())));
+        } else if (static_cast< ::google::protobuf::uint8>(tag) == (49 & 0xFF)) {
+          DO_((::google::protobuf::internal::WireFormatLite::ReadRepeatedPrimitiveNoInline<
+                   double, ::google::protobuf::internal::WireFormatLite::TYPE_DOUBLE>(
+                 1, 50u, input, this->mutable_double_val())));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // repeated int32 int_val = 7 [packed = true];
+      case 7: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (58 & 0xFF)) {
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPackedPrimitive<
+                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
+                 input, this->mutable_int_val())));
+        } else if (static_cast< ::google::protobuf::uint8>(tag) == (56 & 0xFF)) {
+          DO_((::google::protobuf::internal::WireFormatLite::ReadRepeatedPrimitiveNoInline<
+                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
+                 1, 58u, input, this->mutable_int_val())));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // repeated bytes string_val = 8;
+      case 8: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (66 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadBytes(
+                input, this->add_string_val()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // repeated float scomplex_val = 9 [packed = true];
+      case 9: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (74 & 0xFF)) {
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPackedPrimitive<
+                   float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>(
+                 input, this->mutable_scomplex_val())));
+        } else if (static_cast< ::google::protobuf::uint8>(tag) == (77 & 0xFF)) {
+          DO_((::google::protobuf::internal::WireFormatLite::ReadRepeatedPrimitiveNoInline<
+                   float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>(
+                 1, 74u, input, this->mutable_scomplex_val())));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // repeated int64 int64_val = 10 [packed = true];
+      case 10: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (82 & 0xFF)) {
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPackedPrimitive<
+                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>(
+                 input, this->mutable_int64_val())));
+        } else if (static_cast< ::google::protobuf::uint8>(tag) == (80 & 0xFF)) {
+          DO_((::google::protobuf::internal::WireFormatLite::ReadRepeatedPrimitiveNoInline<
+                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>(
+                 1, 82u, input, this->mutable_int64_val())));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // repeated bool bool_val = 11 [packed = true];
+      case 11: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (90 & 0xFF)) {
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPackedPrimitive<
+                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
+                 input, this->mutable_bool_val())));
+        } else if (static_cast< ::google::protobuf::uint8>(tag) == (88 & 0xFF)) {
+          DO_((::google::protobuf::internal::WireFormatLite::ReadRepeatedPrimitiveNoInline<
+                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
+                 1, 90u, input, this->mutable_bool_val())));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // repeated double dcomplex_val = 12 [packed = true];
+      case 12: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (98 & 0xFF)) {
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPackedPrimitive<
+                   double, ::google::protobuf::internal::WireFormatLite::TYPE_DOUBLE>(
+                 input, this->mutable_dcomplex_val())));
+        } else if (static_cast< ::google::protobuf::uint8>(tag) == (97 & 0xFF)) {
+          DO_((::google::protobuf::internal::WireFormatLite::ReadRepeatedPrimitiveNoInline<
+                   double, ::google::protobuf::internal::WireFormatLite::TYPE_DOUBLE>(
+                 1, 98u, input, this->mutable_dcomplex_val())));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // repeated int32 half_val = 13 [packed = true];
+      case 13: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (106 & 0xFF)) {
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPackedPrimitive<
+                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
+                 input, this->mutable_half_val())));
+        } else if (static_cast< ::google::protobuf::uint8>(tag) == (104 & 0xFF)) {
+          DO_((::google::protobuf::internal::WireFormatLite::ReadRepeatedPrimitiveNoInline<
+                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
+                 1, 106u, input, this->mutable_half_val())));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // repeated .tensorflow.ResourceHandleProto resource_handle_val = 14;
+      case 14: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (114 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+                input, add_resource_handle_val()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // repeated .tensorflow.VariantTensorDataProto variant_val = 15;
+      case 15: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (122 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+                input, add_variant_val()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // repeated uint32 uint32_val = 16 [packed = true];
+      case 16: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (130 & 0xFF)) {
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPackedPrimitive<
+                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
+                 input, this->mutable_uint32_val())));
+        } else if (static_cast< ::google::protobuf::uint8>(tag) == (128 & 0xFF)) {
+          DO_((::google::protobuf::internal::WireFormatLite::ReadRepeatedPrimitiveNoInline<
+                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
+                 2, 130u, input, this->mutable_uint32_val())));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // repeated uint64 uint64_val = 17 [packed = true];
+      case 17: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (138 & 0xFF)) {
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPackedPrimitive<
+                   ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_UINT64>(
+                 input, this->mutable_uint64_val())));
+        } else if (static_cast< ::google::protobuf::uint8>(tag) == (136 & 0xFF)) {
+          DO_((::google::protobuf::internal::WireFormatLite::ReadRepeatedPrimitiveNoInline<
+                   ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_UINT64>(
+                 2, 138u, input, this->mutable_uint64_val())));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.TensorProto)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.TensorProto)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void TensorProto::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.TensorProto)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // .tensorflow.DataType dtype = 1;
+  if (this->dtype() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteEnum(
+      1, this->dtype(), output);
+  }
+
+  // .tensorflow.TensorShapeProto tensor_shape = 2;
+  if (this->has_tensor_shape()) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      2, HasBitSetters::tensor_shape(this), output);
+  }
+
+  // int32 version_number = 3;
+  if (this->version_number() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt32(3, this->version_number(), output);
+  }
+
+  // bytes tensor_content = 4;
+  if (this->tensor_content().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteBytesMaybeAliased(
+      4, this->tensor_content(), output);
+  }
+
+  // repeated float float_val = 5 [packed = true];
+  if (this->float_val_size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteTag(5, ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED, output);
+    output->WriteVarint32(_float_val_cached_byte_size_.load(
+        std::memory_order_relaxed));
+    ::google::protobuf::internal::WireFormatLite::WriteFloatArray(
+      this->float_val().data(), this->float_val_size(), output);
+  }
+
+  // repeated double double_val = 6 [packed = true];
+  if (this->double_val_size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteTag(6, ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED, output);
+    output->WriteVarint32(_double_val_cached_byte_size_.load(
+        std::memory_order_relaxed));
+    ::google::protobuf::internal::WireFormatLite::WriteDoubleArray(
+      this->double_val().data(), this->double_val_size(), output);
+  }
+
+  // repeated int32 int_val = 7 [packed = true];
+  if (this->int_val_size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteTag(7, ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED, output);
+    output->WriteVarint32(_int_val_cached_byte_size_.load(
+        std::memory_order_relaxed));
+  }
+  for (int i = 0, n = this->int_val_size(); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt32NoTag(
+      this->int_val(i), output);
+  }
+
+  // repeated bytes string_val = 8;
+  for (int i = 0, n = this->string_val_size(); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::WriteBytes(
+      8, this->string_val(i), output);
+  }
+
+  // repeated float scomplex_val = 9 [packed = true];
+  if (this->scomplex_val_size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteTag(9, ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED, output);
+    output->WriteVarint32(_scomplex_val_cached_byte_size_.load(
+        std::memory_order_relaxed));
+    ::google::protobuf::internal::WireFormatLite::WriteFloatArray(
+      this->scomplex_val().data(), this->scomplex_val_size(), output);
+  }
+
+  // repeated int64 int64_val = 10 [packed = true];
+  if (this->int64_val_size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteTag(10, ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED, output);
+    output->WriteVarint32(_int64_val_cached_byte_size_.load(
+        std::memory_order_relaxed));
+  }
+  for (int i = 0, n = this->int64_val_size(); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt64NoTag(
+      this->int64_val(i), output);
+  }
+
+  // repeated bool bool_val = 11 [packed = true];
+  if (this->bool_val_size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteTag(11, ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED, output);
+    output->WriteVarint32(_bool_val_cached_byte_size_.load(
+        std::memory_order_relaxed));
+    ::google::protobuf::internal::WireFormatLite::WriteBoolArray(
+      this->bool_val().data(), this->bool_val_size(), output);
+  }
+
+  // repeated double dcomplex_val = 12 [packed = true];
+  if (this->dcomplex_val_size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteTag(12, ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED, output);
+    output->WriteVarint32(_dcomplex_val_cached_byte_size_.load(
+        std::memory_order_relaxed));
+    ::google::protobuf::internal::WireFormatLite::WriteDoubleArray(
+      this->dcomplex_val().data(), this->dcomplex_val_size(), output);
+  }
+
+  // repeated int32 half_val = 13 [packed = true];
+  if (this->half_val_size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteTag(13, ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED, output);
+    output->WriteVarint32(_half_val_cached_byte_size_.load(
+        std::memory_order_relaxed));
+  }
+  for (int i = 0, n = this->half_val_size(); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt32NoTag(
+      this->half_val(i), output);
+  }
+
+  // repeated .tensorflow.ResourceHandleProto resource_handle_val = 14;
+  for (unsigned int i = 0,
+      n = static_cast<unsigned int>(this->resource_handle_val_size()); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      14,
+      this->resource_handle_val(static_cast<int>(i)),
+      output);
+  }
+
+  // repeated .tensorflow.VariantTensorDataProto variant_val = 15;
+  for (unsigned int i = 0,
+      n = static_cast<unsigned int>(this->variant_val_size()); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      15,
+      this->variant_val(static_cast<int>(i)),
+      output);
+  }
+
+  // repeated uint32 uint32_val = 16 [packed = true];
+  if (this->uint32_val_size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteTag(16, ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED, output);
+    output->WriteVarint32(_uint32_val_cached_byte_size_.load(
+        std::memory_order_relaxed));
+  }
+  for (int i = 0, n = this->uint32_val_size(); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::WriteUInt32NoTag(
+      this->uint32_val(i), output);
+  }
+
+  // repeated uint64 uint64_val = 17 [packed = true];
+  if (this->uint64_val_size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteTag(17, ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED, output);
+    output->WriteVarint32(_uint64_val_cached_byte_size_.load(
+        std::memory_order_relaxed));
+  }
+  for (int i = 0, n = this->uint64_val_size(); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::WriteUInt64NoTag(
+      this->uint64_val(i), output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.TensorProto)
+}
+
+::google::protobuf::uint8* TensorProto::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.TensorProto)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // .tensorflow.DataType dtype = 1;
+  if (this->dtype() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteEnumToArray(
+      1, this->dtype(), target);
+  }
+
+  // .tensorflow.TensorShapeProto tensor_shape = 2;
+  if (this->has_tensor_shape()) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        2, HasBitSetters::tensor_shape(this), deterministic, target);
+  }
+
+  // int32 version_number = 3;
+  if (this->version_number() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt32ToArray(3, this->version_number(), target);
+  }
+
+  // bytes tensor_content = 4;
+  if (this->tensor_content().size() > 0) {
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteBytesToArray(
+        4, this->tensor_content(), target);
+  }
+
+  // repeated float float_val = 5 [packed = true];
+  if (this->float_val_size() > 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteTagToArray(
+      5,
+      ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED,
+      target);
+    target = ::google::protobuf::io::CodedOutputStream::WriteVarint32ToArray(
+        _float_val_cached_byte_size_.load(std::memory_order_relaxed),
+         target);
+    target = ::google::protobuf::internal::WireFormatLite::
+      WriteFloatNoTagToArray(this->float_val_, target);
+  }
+
+  // repeated double double_val = 6 [packed = true];
+  if (this->double_val_size() > 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteTagToArray(
+      6,
+      ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED,
+      target);
+    target = ::google::protobuf::io::CodedOutputStream::WriteVarint32ToArray(
+        _double_val_cached_byte_size_.load(std::memory_order_relaxed),
+         target);
+    target = ::google::protobuf::internal::WireFormatLite::
+      WriteDoubleNoTagToArray(this->double_val_, target);
+  }
+
+  // repeated int32 int_val = 7 [packed = true];
+  if (this->int_val_size() > 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteTagToArray(
+      7,
+      ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED,
+      target);
+    target = ::google::protobuf::io::CodedOutputStream::WriteVarint32ToArray(
+        _int_val_cached_byte_size_.load(std::memory_order_relaxed),
+         target);
+    target = ::google::protobuf::internal::WireFormatLite::
+      WriteInt32NoTagToArray(this->int_val_, target);
+  }
+
+  // repeated bytes string_val = 8;
+  for (int i = 0, n = this->string_val_size(); i < n; i++) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      WriteBytesToArray(8, this->string_val(i), target);
+  }
+
+  // repeated float scomplex_val = 9 [packed = true];
+  if (this->scomplex_val_size() > 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteTagToArray(
+      9,
+      ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED,
+      target);
+    target = ::google::protobuf::io::CodedOutputStream::WriteVarint32ToArray(
+        _scomplex_val_cached_byte_size_.load(std::memory_order_relaxed),
+         target);
+    target = ::google::protobuf::internal::WireFormatLite::
+      WriteFloatNoTagToArray(this->scomplex_val_, target);
+  }
+
+  // repeated int64 int64_val = 10 [packed = true];
+  if (this->int64_val_size() > 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteTagToArray(
+      10,
+      ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED,
+      target);
+    target = ::google::protobuf::io::CodedOutputStream::WriteVarint32ToArray(
+        _int64_val_cached_byte_size_.load(std::memory_order_relaxed),
+         target);
+    target = ::google::protobuf::internal::WireFormatLite::
+      WriteInt64NoTagToArray(this->int64_val_, target);
+  }
+
+  // repeated bool bool_val = 11 [packed = true];
+  if (this->bool_val_size() > 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteTagToArray(
+      11,
+      ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED,
+      target);
+    target = ::google::protobuf::io::CodedOutputStream::WriteVarint32ToArray(
+        _bool_val_cached_byte_size_.load(std::memory_order_relaxed),
+         target);
+    target = ::google::protobuf::internal::WireFormatLite::
+      WriteBoolNoTagToArray(this->bool_val_, target);
+  }
+
+  // repeated double dcomplex_val = 12 [packed = true];
+  if (this->dcomplex_val_size() > 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteTagToArray(
+      12,
+      ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED,
+      target);
+    target = ::google::protobuf::io::CodedOutputStream::WriteVarint32ToArray(
+        _dcomplex_val_cached_byte_size_.load(std::memory_order_relaxed),
+         target);
+    target = ::google::protobuf::internal::WireFormatLite::
+      WriteDoubleNoTagToArray(this->dcomplex_val_, target);
+  }
+
+  // repeated int32 half_val = 13 [packed = true];
+  if (this->half_val_size() > 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteTagToArray(
+      13,
+      ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED,
+      target);
+    target = ::google::protobuf::io::CodedOutputStream::WriteVarint32ToArray(
+        _half_val_cached_byte_size_.load(std::memory_order_relaxed),
+         target);
+    target = ::google::protobuf::internal::WireFormatLite::
+      WriteInt32NoTagToArray(this->half_val_, target);
+  }
+
+  // repeated .tensorflow.ResourceHandleProto resource_handle_val = 14;
+  for (unsigned int i = 0,
+      n = static_cast<unsigned int>(this->resource_handle_val_size()); i < n; i++) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        14, this->resource_handle_val(static_cast<int>(i)), deterministic, target);
+  }
+
+  // repeated .tensorflow.VariantTensorDataProto variant_val = 15;
+  for (unsigned int i = 0,
+      n = static_cast<unsigned int>(this->variant_val_size()); i < n; i++) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        15, this->variant_val(static_cast<int>(i)), deterministic, target);
+  }
+
+  // repeated uint32 uint32_val = 16 [packed = true];
+  if (this->uint32_val_size() > 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteTagToArray(
+      16,
+      ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED,
+      target);
+    target = ::google::protobuf::io::CodedOutputStream::WriteVarint32ToArray(
+        _uint32_val_cached_byte_size_.load(std::memory_order_relaxed),
+         target);
+    target = ::google::protobuf::internal::WireFormatLite::
+      WriteUInt32NoTagToArray(this->uint32_val_, target);
+  }
+
+  // repeated uint64 uint64_val = 17 [packed = true];
+  if (this->uint64_val_size() > 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteTagToArray(
+      17,
+      ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED,
+      target);
+    target = ::google::protobuf::io::CodedOutputStream::WriteVarint32ToArray(
+        _uint64_val_cached_byte_size_.load(std::memory_order_relaxed),
+         target);
+    target = ::google::protobuf::internal::WireFormatLite::
+      WriteUInt64NoTagToArray(this->uint64_val_, target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.TensorProto)
+  return target;
+}
+
+size_t TensorProto::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.TensorProto)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // repeated float float_val = 5 [packed = true];
+  {
+    unsigned int count = static_cast<unsigned int>(this->float_val_size());
+    size_t data_size = 4UL * count;
+    if (data_size > 0) {
+      total_size += 1 +
+        ::google::protobuf::internal::WireFormatLite::Int32Size(
+            static_cast<::google::protobuf::int32>(data_size));
+    }
+    int cached_size = ::google::protobuf::internal::ToCachedSize(data_size);
+    _float_val_cached_byte_size_.store(cached_size,
+                                    std::memory_order_relaxed);
+    total_size += data_size;
+  }
+
+  // repeated double double_val = 6 [packed = true];
+  {
+    unsigned int count = static_cast<unsigned int>(this->double_val_size());
+    size_t data_size = 8UL * count;
+    if (data_size > 0) {
+      total_size += 1 +
+        ::google::protobuf::internal::WireFormatLite::Int32Size(
+            static_cast<::google::protobuf::int32>(data_size));
+    }
+    int cached_size = ::google::protobuf::internal::ToCachedSize(data_size);
+    _double_val_cached_byte_size_.store(cached_size,
+                                    std::memory_order_relaxed);
+    total_size += data_size;
+  }
+
+  // repeated int32 int_val = 7 [packed = true];
+  {
+    size_t data_size = ::google::protobuf::internal::WireFormatLite::
+      Int32Size(this->int_val_);
+    if (data_size > 0) {
+      total_size += 1 +
+        ::google::protobuf::internal::WireFormatLite::Int32Size(
+            static_cast<::google::protobuf::int32>(data_size));
+    }
+    int cached_size = ::google::protobuf::internal::ToCachedSize(data_size);
+    _int_val_cached_byte_size_.store(cached_size,
+                                    std::memory_order_relaxed);
+    total_size += data_size;
+  }
+
+  // repeated bytes string_val = 8;
+  total_size += 1 *
+      ::google::protobuf::internal::FromIntSize(this->string_val_size());
+  for (int i = 0, n = this->string_val_size(); i < n; i++) {
+    total_size += ::google::protobuf::internal::WireFormatLite::BytesSize(
+      this->string_val(i));
+  }
+
+  // repeated float scomplex_val = 9 [packed = true];
+  {
+    unsigned int count = static_cast<unsigned int>(this->scomplex_val_size());
+    size_t data_size = 4UL * count;
+    if (data_size > 0) {
+      total_size += 1 +
+        ::google::protobuf::internal::WireFormatLite::Int32Size(
+            static_cast<::google::protobuf::int32>(data_size));
+    }
+    int cached_size = ::google::protobuf::internal::ToCachedSize(data_size);
+    _scomplex_val_cached_byte_size_.store(cached_size,
+                                    std::memory_order_relaxed);
+    total_size += data_size;
+  }
+
+  // repeated int64 int64_val = 10 [packed = true];
+  {
+    size_t data_size = ::google::protobuf::internal::WireFormatLite::
+      Int64Size(this->int64_val_);
+    if (data_size > 0) {
+      total_size += 1 +
+        ::google::protobuf::internal::WireFormatLite::Int32Size(
+            static_cast<::google::protobuf::int32>(data_size));
+    }
+    int cached_size = ::google::protobuf::internal::ToCachedSize(data_size);
+    _int64_val_cached_byte_size_.store(cached_size,
+                                    std::memory_order_relaxed);
+    total_size += data_size;
+  }
+
+  // repeated bool bool_val = 11 [packed = true];
+  {
+    unsigned int count = static_cast<unsigned int>(this->bool_val_size());
+    size_t data_size = 1UL * count;
+    if (data_size > 0) {
+      total_size += 1 +
+        ::google::protobuf::internal::WireFormatLite::Int32Size(
+            static_cast<::google::protobuf::int32>(data_size));
+    }
+    int cached_size = ::google::protobuf::internal::ToCachedSize(data_size);
+    _bool_val_cached_byte_size_.store(cached_size,
+                                    std::memory_order_relaxed);
+    total_size += data_size;
+  }
+
+  // repeated double dcomplex_val = 12 [packed = true];
+  {
+    unsigned int count = static_cast<unsigned int>(this->dcomplex_val_size());
+    size_t data_size = 8UL * count;
+    if (data_size > 0) {
+      total_size += 1 +
+        ::google::protobuf::internal::WireFormatLite::Int32Size(
+            static_cast<::google::protobuf::int32>(data_size));
+    }
+    int cached_size = ::google::protobuf::internal::ToCachedSize(data_size);
+    _dcomplex_val_cached_byte_size_.store(cached_size,
+                                    std::memory_order_relaxed);
+    total_size += data_size;
+  }
+
+  // repeated int32 half_val = 13 [packed = true];
+  {
+    size_t data_size = ::google::protobuf::internal::WireFormatLite::
+      Int32Size(this->half_val_);
+    if (data_size > 0) {
+      total_size += 1 +
+        ::google::protobuf::internal::WireFormatLite::Int32Size(
+            static_cast<::google::protobuf::int32>(data_size));
+    }
+    int cached_size = ::google::protobuf::internal::ToCachedSize(data_size);
+    _half_val_cached_byte_size_.store(cached_size,
+                                    std::memory_order_relaxed);
+    total_size += data_size;
+  }
+
+  // repeated .tensorflow.ResourceHandleProto resource_handle_val = 14;
+  {
+    unsigned int count = static_cast<unsigned int>(this->resource_handle_val_size());
+    total_size += 1UL * count;
+    for (unsigned int i = 0; i < count; i++) {
+      total_size +=
+        ::google::protobuf::internal::WireFormatLite::MessageSize(
+          this->resource_handle_val(static_cast<int>(i)));
+    }
+  }
+
+  // repeated .tensorflow.VariantTensorDataProto variant_val = 15;
+  {
+    unsigned int count = static_cast<unsigned int>(this->variant_val_size());
+    total_size += 1UL * count;
+    for (unsigned int i = 0; i < count; i++) {
+      total_size +=
+        ::google::protobuf::internal::WireFormatLite::MessageSize(
+          this->variant_val(static_cast<int>(i)));
+    }
+  }
+
+  // repeated uint32 uint32_val = 16 [packed = true];
+  {
+    size_t data_size = ::google::protobuf::internal::WireFormatLite::
+      UInt32Size(this->uint32_val_);
+    if (data_size > 0) {
+      total_size += 2 +
+        ::google::protobuf::internal::WireFormatLite::Int32Size(
+            static_cast<::google::protobuf::int32>(data_size));
+    }
+    int cached_size = ::google::protobuf::internal::ToCachedSize(data_size);
+    _uint32_val_cached_byte_size_.store(cached_size,
+                                    std::memory_order_relaxed);
+    total_size += data_size;
+  }
+
+  // repeated uint64 uint64_val = 17 [packed = true];
+  {
+    size_t data_size = ::google::protobuf::internal::WireFormatLite::
+      UInt64Size(this->uint64_val_);
+    if (data_size > 0) {
+      total_size += 2 +
+        ::google::protobuf::internal::WireFormatLite::Int32Size(
+            static_cast<::google::protobuf::int32>(data_size));
+    }
+    int cached_size = ::google::protobuf::internal::ToCachedSize(data_size);
+    _uint64_val_cached_byte_size_.store(cached_size,
+                                    std::memory_order_relaxed);
+    total_size += data_size;
+  }
+
+  // bytes tensor_content = 4;
+  if (this->tensor_content().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::BytesSize(
+        this->tensor_content());
+  }
+
+  // .tensorflow.TensorShapeProto tensor_shape = 2;
+  if (this->has_tensor_shape()) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::MessageSize(
+        *tensor_shape_);
+  }
+
+  // .tensorflow.DataType dtype = 1;
+  if (this->dtype() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::EnumSize(this->dtype());
+  }
+
+  // int32 version_number = 3;
+  if (this->version_number() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::Int32Size(
+        this->version_number());
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void TensorProto::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.TensorProto)
+  GOOGLE_DCHECK_NE(&from, this);
+  const TensorProto* source =
+      ::google::protobuf::DynamicCastToGenerated<TensorProto>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.TensorProto)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.TensorProto)
+    MergeFrom(*source);
+  }
+}
+
+void TensorProto::MergeFrom(const TensorProto& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.TensorProto)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  float_val_.MergeFrom(from.float_val_);
+  double_val_.MergeFrom(from.double_val_);
+  int_val_.MergeFrom(from.int_val_);
+  string_val_.MergeFrom(from.string_val_);
+  scomplex_val_.MergeFrom(from.scomplex_val_);
+  int64_val_.MergeFrom(from.int64_val_);
+  bool_val_.MergeFrom(from.bool_val_);
+  dcomplex_val_.MergeFrom(from.dcomplex_val_);
+  half_val_.MergeFrom(from.half_val_);
+  resource_handle_val_.MergeFrom(from.resource_handle_val_);
+  variant_val_.MergeFrom(from.variant_val_);
+  uint32_val_.MergeFrom(from.uint32_val_);
+  uint64_val_.MergeFrom(from.uint64_val_);
+  if (from.tensor_content().size() > 0) {
+    set_tensor_content(from.tensor_content());
+  }
+  if (from.has_tensor_shape()) {
+    mutable_tensor_shape()->::tensorflow::TensorShapeProto::MergeFrom(from.tensor_shape());
+  }
+  if (from.dtype() != 0) {
+    set_dtype(from.dtype());
+  }
+  if (from.version_number() != 0) {
+    set_version_number(from.version_number());
+  }
+}
+
+void TensorProto::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.TensorProto)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void TensorProto::CopyFrom(const TensorProto& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.TensorProto)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool TensorProto::IsInitialized() const {
+  return true;
+}
+
+void TensorProto::Swap(TensorProto* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    TensorProto* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void TensorProto::UnsafeArenaSwap(TensorProto* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void TensorProto::InternalSwap(TensorProto* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  float_val_.InternalSwap(&other->float_val_);
+  double_val_.InternalSwap(&other->double_val_);
+  int_val_.InternalSwap(&other->int_val_);
+  string_val_.InternalSwap(CastToBase(&other->string_val_));
+  scomplex_val_.InternalSwap(&other->scomplex_val_);
+  int64_val_.InternalSwap(&other->int64_val_);
+  bool_val_.InternalSwap(&other->bool_val_);
+  dcomplex_val_.InternalSwap(&other->dcomplex_val_);
+  half_val_.InternalSwap(&other->half_val_);
+  CastToBase(&resource_handle_val_)->InternalSwap(CastToBase(&other->resource_handle_val_));
+  CastToBase(&variant_val_)->InternalSwap(CastToBase(&other->variant_val_));
+  uint32_val_.InternalSwap(&other->uint32_val_);
+  uint64_val_.InternalSwap(&other->uint64_val_);
+  tensor_content_.Swap(&other->tensor_content_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+  swap(tensor_shape_, other->tensor_shape_);
+  swap(dtype_, other->dtype_);
+  swap(version_number_, other->version_number_);
+}
+
+::google::protobuf::Metadata TensorProto::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fframework_2ftensor_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fframework_2ftensor_2eproto[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+void VariantTensorDataProto::InitAsDefaultInstance() {
+}
+class VariantTensorDataProto::HasBitSetters {
+ public:
+};
+
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int VariantTensorDataProto::kTypeNameFieldNumber;
+const int VariantTensorDataProto::kMetadataFieldNumber;
+const int VariantTensorDataProto::kTensorsFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+VariantTensorDataProto::VariantTensorDataProto()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.VariantTensorDataProto)
+}
+VariantTensorDataProto::VariantTensorDataProto(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena),
+  tensors_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.VariantTensorDataProto)
+}
+VariantTensorDataProto::VariantTensorDataProto(const VariantTensorDataProto& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL),
+      tensors_(from.tensors_) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  type_name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.type_name().size() > 0) {
+    type_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.type_name(),
+      GetArenaNoVirtual());
+  }
+  metadata_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.metadata().size() > 0) {
+    metadata_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.metadata(),
+      GetArenaNoVirtual());
+  }
+  // @@protoc_insertion_point(copy_constructor:tensorflow.VariantTensorDataProto)
+}
+
+void VariantTensorDataProto::SharedCtor() {
+  ::google::protobuf::internal::InitSCC(
+      &scc_info_TensorProto_tensorflow_2fcore_2fframework_2ftensor_2eproto.base);
+  type_name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  metadata_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+
+VariantTensorDataProto::~VariantTensorDataProto() {
+  // @@protoc_insertion_point(destructor:tensorflow.VariantTensorDataProto)
+  SharedDtor();
+}
+
+void VariantTensorDataProto::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+  type_name_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  metadata_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+
+void VariantTensorDataProto::ArenaDtor(void* object) {
+  VariantTensorDataProto* _this = reinterpret_cast< VariantTensorDataProto* >(object);
+  (void)_this;
+}
+void VariantTensorDataProto::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void VariantTensorDataProto::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const VariantTensorDataProto& VariantTensorDataProto::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_TensorProto_tensorflow_2fcore_2fframework_2ftensor_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void VariantTensorDataProto::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.VariantTensorDataProto)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  tensors_.Clear();
+  type_name_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+  metadata_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* VariantTensorDataProto::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<VariantTensorDataProto*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // string type_name = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 10) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("tensorflow.VariantTensorDataProto.type_name");
+        parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+        ::std::string* str = msg->mutable_type_name();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+        break;
+      }
+      // bytes metadata = 2;
+      case 2: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 18) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        parser_till_end = ::google::protobuf::internal::StringParser;
+        ::std::string* str = msg->mutable_metadata();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        str->append(ptr, size);
+        ptr += size;
+        break;
+      }
+      // repeated .tensorflow.TensorProto tensors = 3;
+      case 3: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 26) goto handle_unusual;
+        do {
+          ptr = Varint::Parse32Inline(ptr, &size);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          parser_till_end = ::tensorflow::TensorProto::_InternalParse;
+          object = msg->add_tensors();
+          if (size > end - ptr) goto len_delim_till_end;
+          auto newend = ptr + size;
+          bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                         ptr, newend);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          ptr = newend;
+          if (ptr >= end) break;
+        } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 26 && (ptr += 1));
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool VariantTensorDataProto::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.VariantTensorDataProto)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // string type_name = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (10 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_type_name()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->type_name().data(), static_cast<int>(this->type_name().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.VariantTensorDataProto.type_name"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // bytes metadata = 2;
+      case 2: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (18 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadBytes(
+                input, this->mutable_metadata()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // repeated .tensorflow.TensorProto tensors = 3;
+      case 3: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (26 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+                input, add_tensors()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.VariantTensorDataProto)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.VariantTensorDataProto)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void VariantTensorDataProto::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.VariantTensorDataProto)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // string type_name = 1;
+  if (this->type_name().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->type_name().data(), static_cast<int>(this->type_name().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.VariantTensorDataProto.type_name");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      1, this->type_name(), output);
+  }
+
+  // bytes metadata = 2;
+  if (this->metadata().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteBytesMaybeAliased(
+      2, this->metadata(), output);
+  }
+
+  // repeated .tensorflow.TensorProto tensors = 3;
+  for (unsigned int i = 0,
+      n = static_cast<unsigned int>(this->tensors_size()); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      3,
+      this->tensors(static_cast<int>(i)),
+      output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.VariantTensorDataProto)
+}
+
+::google::protobuf::uint8* VariantTensorDataProto::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.VariantTensorDataProto)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // string type_name = 1;
+  if (this->type_name().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->type_name().data(), static_cast<int>(this->type_name().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.VariantTensorDataProto.type_name");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        1, this->type_name(), target);
+  }
+
+  // bytes metadata = 2;
+  if (this->metadata().size() > 0) {
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteBytesToArray(
+        2, this->metadata(), target);
+  }
+
+  // repeated .tensorflow.TensorProto tensors = 3;
+  for (unsigned int i = 0,
+      n = static_cast<unsigned int>(this->tensors_size()); i < n; i++) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        3, this->tensors(static_cast<int>(i)), deterministic, target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.VariantTensorDataProto)
+  return target;
+}
+
+size_t VariantTensorDataProto::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.VariantTensorDataProto)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // repeated .tensorflow.TensorProto tensors = 3;
+  {
+    unsigned int count = static_cast<unsigned int>(this->tensors_size());
+    total_size += 1UL * count;
+    for (unsigned int i = 0; i < count; i++) {
+      total_size +=
+        ::google::protobuf::internal::WireFormatLite::MessageSize(
+          this->tensors(static_cast<int>(i)));
+    }
+  }
+
+  // string type_name = 1;
+  if (this->type_name().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->type_name());
+  }
+
+  // bytes metadata = 2;
+  if (this->metadata().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::BytesSize(
+        this->metadata());
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void VariantTensorDataProto::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.VariantTensorDataProto)
+  GOOGLE_DCHECK_NE(&from, this);
+  const VariantTensorDataProto* source =
+      ::google::protobuf::DynamicCastToGenerated<VariantTensorDataProto>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.VariantTensorDataProto)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.VariantTensorDataProto)
+    MergeFrom(*source);
+  }
+}
+
+void VariantTensorDataProto::MergeFrom(const VariantTensorDataProto& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.VariantTensorDataProto)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  tensors_.MergeFrom(from.tensors_);
+  if (from.type_name().size() > 0) {
+    set_type_name(from.type_name());
+  }
+  if (from.metadata().size() > 0) {
+    set_metadata(from.metadata());
+  }
+}
+
+void VariantTensorDataProto::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.VariantTensorDataProto)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void VariantTensorDataProto::CopyFrom(const VariantTensorDataProto& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.VariantTensorDataProto)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool VariantTensorDataProto::IsInitialized() const {
+  return true;
+}
+
+void VariantTensorDataProto::Swap(VariantTensorDataProto* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    VariantTensorDataProto* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void VariantTensorDataProto::UnsafeArenaSwap(VariantTensorDataProto* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void VariantTensorDataProto::InternalSwap(VariantTensorDataProto* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  CastToBase(&tensors_)->InternalSwap(CastToBase(&other->tensors_));
+  type_name_.Swap(&other->type_name_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+  metadata_.Swap(&other->metadata_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+}
+
+::google::protobuf::Metadata VariantTensorDataProto::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fframework_2ftensor_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fframework_2ftensor_2eproto[kIndexInFileMessages];
+}
+
+
+// @@protoc_insertion_point(namespace_scope)
+}  // namespace tensorflow
+namespace google {
+namespace protobuf {
+template<> PROTOBUF_NOINLINE ::tensorflow::TensorProto* Arena::CreateMaybeMessage< ::tensorflow::TensorProto >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::TensorProto >(arena);
+}
+template<> PROTOBUF_NOINLINE ::tensorflow::VariantTensorDataProto* Arena::CreateMaybeMessage< ::tensorflow::VariantTensorDataProto >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::VariantTensorDataProto >(arena);
+}
+}  // namespace protobuf
+}  // namespace google
+
+// @@protoc_insertion_point(global_scope)
+#include <google/protobuf/port_undef.inc>
diff --git a/tensorflow/core/framework/tensor.pb.h b/tensorflow/core/framework/tensor.pb.h
new file mode 100644 (file)
index 0000000..19248e4
--- /dev/null
@@ -0,0 +1,1402 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: tensorflow/core/framework/tensor.proto
+
+#ifndef PROTOBUF_INCLUDED_tensorflow_2fcore_2fframework_2ftensor_2eproto
+#define PROTOBUF_INCLUDED_tensorflow_2fcore_2fframework_2ftensor_2eproto
+
+#include <limits>
+#include <string>
+
+#include <google/protobuf/port_def.inc>
+#if PROTOBUF_VERSION < 3006001
+#error This file was generated by a newer version of protoc which is
+#error incompatible with your Protocol Buffer headers. Please update
+#error your headers.
+#endif
+#if 3006001 < PROTOBUF_MIN_PROTOC_VERSION
+#error This file was generated by an older version of protoc which is
+#error incompatible with your Protocol Buffer headers. Please
+#error regenerate this file with a newer version of protoc.
+#endif
+
+#include <google/protobuf/port_undef.inc>
+#include <google/protobuf/io/coded_stream.h>
+#include <google/protobuf/arena.h>
+#include <google/protobuf/arenastring.h>
+#include <google/protobuf/generated_message_table_driven.h>
+#include <google/protobuf/generated_message_util.h>
+#include <google/protobuf/inlined_string_field.h>
+#include <google/protobuf/metadata.h>
+#include <google/protobuf/message.h>
+#include <google/protobuf/repeated_field.h>  // IWYU pragma: export
+#include <google/protobuf/extension_set.h>  // IWYU pragma: export
+#include <google/protobuf/unknown_field_set.h>
+#include "tensorflow/core/framework/resource_handle.pb.h"
+#include "tensorflow/core/framework/tensor_shape.pb.h"
+#include "tensorflow/core/framework/types.pb.h"
+// @@protoc_insertion_point(includes)
+#include <google/protobuf/port_def.inc>
+#define PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fframework_2ftensor_2eproto
+
+// Internal implementation detail -- do not use these members.
+struct TableStruct_tensorflow_2fcore_2fframework_2ftensor_2eproto {
+  static const ::google::protobuf::internal::ParseTableField entries[]
+    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
+  static const ::google::protobuf::internal::AuxillaryParseTableField aux[]
+    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
+  static const ::google::protobuf::internal::ParseTable schema[2]
+    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
+  static const ::google::protobuf::internal::FieldMetadata field_metadata[];
+  static const ::google::protobuf::internal::SerializationTable serialization_table[];
+  static const ::google::protobuf::uint32 offsets[];
+};
+void AddDescriptors_tensorflow_2fcore_2fframework_2ftensor_2eproto();
+namespace tensorflow {
+class TensorProto;
+class TensorProtoDefaultTypeInternal;
+extern TensorProtoDefaultTypeInternal _TensorProto_default_instance_;
+class VariantTensorDataProto;
+class VariantTensorDataProtoDefaultTypeInternal;
+extern VariantTensorDataProtoDefaultTypeInternal _VariantTensorDataProto_default_instance_;
+}  // namespace tensorflow
+namespace google {
+namespace protobuf {
+template<> ::tensorflow::TensorProto* Arena::CreateMaybeMessage<::tensorflow::TensorProto>(Arena*);
+template<> ::tensorflow::VariantTensorDataProto* Arena::CreateMaybeMessage<::tensorflow::VariantTensorDataProto>(Arena*);
+}  // namespace protobuf
+}  // namespace google
+namespace tensorflow {
+
+// ===================================================================
+
+class TensorProto : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.TensorProto) */ {
+ public:
+  TensorProto();
+  virtual ~TensorProto();
+
+  TensorProto(const TensorProto& from);
+
+  inline TensorProto& operator=(const TensorProto& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  TensorProto(TensorProto&& from) noexcept
+    : TensorProto() {
+    *this = ::std::move(from);
+  }
+
+  inline TensorProto& operator=(TensorProto&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const TensorProto& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const TensorProto* internal_default_instance() {
+    return reinterpret_cast<const TensorProto*>(
+               &_TensorProto_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    0;
+
+  void UnsafeArenaSwap(TensorProto* other);
+  void Swap(TensorProto* other);
+  friend void swap(TensorProto& a, TensorProto& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline TensorProto* New() const final {
+    return CreateMaybeMessage<TensorProto>(NULL);
+  }
+
+  TensorProto* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<TensorProto>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const TensorProto& from);
+  void MergeFrom(const TensorProto& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(TensorProto* other);
+  protected:
+  explicit TensorProto(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // repeated float float_val = 5 [packed = true];
+  int float_val_size() const;
+  void clear_float_val();
+  static const int kFloatValFieldNumber = 5;
+  float float_val(int index) const;
+  void set_float_val(int index, float value);
+  void add_float_val(float value);
+  const ::google::protobuf::RepeatedField< float >&
+      float_val() const;
+  ::google::protobuf::RepeatedField< float >*
+      mutable_float_val();
+
+  // repeated double double_val = 6 [packed = true];
+  int double_val_size() const;
+  void clear_double_val();
+  static const int kDoubleValFieldNumber = 6;
+  double double_val(int index) const;
+  void set_double_val(int index, double value);
+  void add_double_val(double value);
+  const ::google::protobuf::RepeatedField< double >&
+      double_val() const;
+  ::google::protobuf::RepeatedField< double >*
+      mutable_double_val();
+
+  // repeated int32 int_val = 7 [packed = true];
+  int int_val_size() const;
+  void clear_int_val();
+  static const int kIntValFieldNumber = 7;
+  ::google::protobuf::int32 int_val(int index) const;
+  void set_int_val(int index, ::google::protobuf::int32 value);
+  void add_int_val(::google::protobuf::int32 value);
+  const ::google::protobuf::RepeatedField< ::google::protobuf::int32 >&
+      int_val() const;
+  ::google::protobuf::RepeatedField< ::google::protobuf::int32 >*
+      mutable_int_val();
+
+  // repeated bytes string_val = 8;
+  int string_val_size() const;
+  void clear_string_val();
+  static const int kStringValFieldNumber = 8;
+  const ::std::string& string_val(int index) const;
+  ::std::string* mutable_string_val(int index);
+  void set_string_val(int index, const ::std::string& value);
+  #if LANG_CXX11
+  void set_string_val(int index, ::std::string&& value);
+  #endif
+  void set_string_val(int index, const char* value);
+  void set_string_val(int index, const void* value, size_t size);
+  ::std::string* add_string_val();
+  void add_string_val(const ::std::string& value);
+  #if LANG_CXX11
+  void add_string_val(::std::string&& value);
+  #endif
+  void add_string_val(const char* value);
+  void add_string_val(const void* value, size_t size);
+  const ::google::protobuf::RepeatedPtrField<::std::string>& string_val() const;
+  ::google::protobuf::RepeatedPtrField<::std::string>* mutable_string_val();
+
+  // repeated float scomplex_val = 9 [packed = true];
+  int scomplex_val_size() const;
+  void clear_scomplex_val();
+  static const int kScomplexValFieldNumber = 9;
+  float scomplex_val(int index) const;
+  void set_scomplex_val(int index, float value);
+  void add_scomplex_val(float value);
+  const ::google::protobuf::RepeatedField< float >&
+      scomplex_val() const;
+  ::google::protobuf::RepeatedField< float >*
+      mutable_scomplex_val();
+
+  // repeated int64 int64_val = 10 [packed = true];
+  int int64_val_size() const;
+  void clear_int64_val();
+  static const int kInt64ValFieldNumber = 10;
+  ::google::protobuf::int64 int64_val(int index) const;
+  void set_int64_val(int index, ::google::protobuf::int64 value);
+  void add_int64_val(::google::protobuf::int64 value);
+  const ::google::protobuf::RepeatedField< ::google::protobuf::int64 >&
+      int64_val() const;
+  ::google::protobuf::RepeatedField< ::google::protobuf::int64 >*
+      mutable_int64_val();
+
+  // repeated bool bool_val = 11 [packed = true];
+  int bool_val_size() const;
+  void clear_bool_val();
+  static const int kBoolValFieldNumber = 11;
+  bool bool_val(int index) const;
+  void set_bool_val(int index, bool value);
+  void add_bool_val(bool value);
+  const ::google::protobuf::RepeatedField< bool >&
+      bool_val() const;
+  ::google::protobuf::RepeatedField< bool >*
+      mutable_bool_val();
+
+  // repeated double dcomplex_val = 12 [packed = true];
+  int dcomplex_val_size() const;
+  void clear_dcomplex_val();
+  static const int kDcomplexValFieldNumber = 12;
+  double dcomplex_val(int index) const;
+  void set_dcomplex_val(int index, double value);
+  void add_dcomplex_val(double value);
+  const ::google::protobuf::RepeatedField< double >&
+      dcomplex_val() const;
+  ::google::protobuf::RepeatedField< double >*
+      mutable_dcomplex_val();
+
+  // repeated int32 half_val = 13 [packed = true];
+  int half_val_size() const;
+  void clear_half_val();
+  static const int kHalfValFieldNumber = 13;
+  ::google::protobuf::int32 half_val(int index) const;
+  void set_half_val(int index, ::google::protobuf::int32 value);
+  void add_half_val(::google::protobuf::int32 value);
+  const ::google::protobuf::RepeatedField< ::google::protobuf::int32 >&
+      half_val() const;
+  ::google::protobuf::RepeatedField< ::google::protobuf::int32 >*
+      mutable_half_val();
+
+  // repeated .tensorflow.ResourceHandleProto resource_handle_val = 14;
+  int resource_handle_val_size() const;
+  void clear_resource_handle_val();
+  static const int kResourceHandleValFieldNumber = 14;
+  ::tensorflow::ResourceHandleProto* mutable_resource_handle_val(int index);
+  ::google::protobuf::RepeatedPtrField< ::tensorflow::ResourceHandleProto >*
+      mutable_resource_handle_val();
+  const ::tensorflow::ResourceHandleProto& resource_handle_val(int index) const;
+  ::tensorflow::ResourceHandleProto* add_resource_handle_val();
+  const ::google::protobuf::RepeatedPtrField< ::tensorflow::ResourceHandleProto >&
+      resource_handle_val() const;
+
+  // repeated .tensorflow.VariantTensorDataProto variant_val = 15;
+  int variant_val_size() const;
+  void clear_variant_val();
+  static const int kVariantValFieldNumber = 15;
+  ::tensorflow::VariantTensorDataProto* mutable_variant_val(int index);
+  ::google::protobuf::RepeatedPtrField< ::tensorflow::VariantTensorDataProto >*
+      mutable_variant_val();
+  const ::tensorflow::VariantTensorDataProto& variant_val(int index) const;
+  ::tensorflow::VariantTensorDataProto* add_variant_val();
+  const ::google::protobuf::RepeatedPtrField< ::tensorflow::VariantTensorDataProto >&
+      variant_val() const;
+
+  // repeated uint32 uint32_val = 16 [packed = true];
+  int uint32_val_size() const;
+  void clear_uint32_val();
+  static const int kUint32ValFieldNumber = 16;
+  ::google::protobuf::uint32 uint32_val(int index) const;
+  void set_uint32_val(int index, ::google::protobuf::uint32 value);
+  void add_uint32_val(::google::protobuf::uint32 value);
+  const ::google::protobuf::RepeatedField< ::google::protobuf::uint32 >&
+      uint32_val() const;
+  ::google::protobuf::RepeatedField< ::google::protobuf::uint32 >*
+      mutable_uint32_val();
+
+  // repeated uint64 uint64_val = 17 [packed = true];
+  int uint64_val_size() const;
+  void clear_uint64_val();
+  static const int kUint64ValFieldNumber = 17;
+  ::google::protobuf::uint64 uint64_val(int index) const;
+  void set_uint64_val(int index, ::google::protobuf::uint64 value);
+  void add_uint64_val(::google::protobuf::uint64 value);
+  const ::google::protobuf::RepeatedField< ::google::protobuf::uint64 >&
+      uint64_val() const;
+  ::google::protobuf::RepeatedField< ::google::protobuf::uint64 >*
+      mutable_uint64_val();
+
+  // bytes tensor_content = 4;
+  void clear_tensor_content();
+  static const int kTensorContentFieldNumber = 4;
+  const ::std::string& tensor_content() const;
+  void set_tensor_content(const ::std::string& value);
+  #if LANG_CXX11
+  void set_tensor_content(::std::string&& value);
+  #endif
+  void set_tensor_content(const char* value);
+  void set_tensor_content(const void* value, size_t size);
+  ::std::string* mutable_tensor_content();
+  ::std::string* release_tensor_content();
+  void set_allocated_tensor_content(::std::string* tensor_content);
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  ::std::string* unsafe_arena_release_tensor_content();
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  void unsafe_arena_set_allocated_tensor_content(
+      ::std::string* tensor_content);
+
+  // .tensorflow.TensorShapeProto tensor_shape = 2;
+  bool has_tensor_shape() const;
+  void clear_tensor_shape();
+  static const int kTensorShapeFieldNumber = 2;
+  const ::tensorflow::TensorShapeProto& tensor_shape() const;
+  ::tensorflow::TensorShapeProto* release_tensor_shape();
+  ::tensorflow::TensorShapeProto* mutable_tensor_shape();
+  void set_allocated_tensor_shape(::tensorflow::TensorShapeProto* tensor_shape);
+  void unsafe_arena_set_allocated_tensor_shape(
+      ::tensorflow::TensorShapeProto* tensor_shape);
+  ::tensorflow::TensorShapeProto* unsafe_arena_release_tensor_shape();
+
+  // .tensorflow.DataType dtype = 1;
+  void clear_dtype();
+  static const int kDtypeFieldNumber = 1;
+  ::tensorflow::DataType dtype() const;
+  void set_dtype(::tensorflow::DataType value);
+
+  // int32 version_number = 3;
+  void clear_version_number();
+  static const int kVersionNumberFieldNumber = 3;
+  ::google::protobuf::int32 version_number() const;
+  void set_version_number(::google::protobuf::int32 value);
+
+  // @@protoc_insertion_point(class_scope:tensorflow.TensorProto)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  ::google::protobuf::RepeatedField< float > float_val_;
+  mutable std::atomic<int> _float_val_cached_byte_size_;
+  ::google::protobuf::RepeatedField< double > double_val_;
+  mutable std::atomic<int> _double_val_cached_byte_size_;
+  ::google::protobuf::RepeatedField< ::google::protobuf::int32 > int_val_;
+  mutable std::atomic<int> _int_val_cached_byte_size_;
+  ::google::protobuf::RepeatedPtrField<::std::string> string_val_;
+  ::google::protobuf::RepeatedField< float > scomplex_val_;
+  mutable std::atomic<int> _scomplex_val_cached_byte_size_;
+  ::google::protobuf::RepeatedField< ::google::protobuf::int64 > int64_val_;
+  mutable std::atomic<int> _int64_val_cached_byte_size_;
+  ::google::protobuf::RepeatedField< bool > bool_val_;
+  mutable std::atomic<int> _bool_val_cached_byte_size_;
+  ::google::protobuf::RepeatedField< double > dcomplex_val_;
+  mutable std::atomic<int> _dcomplex_val_cached_byte_size_;
+  ::google::protobuf::RepeatedField< ::google::protobuf::int32 > half_val_;
+  mutable std::atomic<int> _half_val_cached_byte_size_;
+  ::google::protobuf::RepeatedPtrField< ::tensorflow::ResourceHandleProto > resource_handle_val_;
+  ::google::protobuf::RepeatedPtrField< ::tensorflow::VariantTensorDataProto > variant_val_;
+  ::google::protobuf::RepeatedField< ::google::protobuf::uint32 > uint32_val_;
+  mutable std::atomic<int> _uint32_val_cached_byte_size_;
+  ::google::protobuf::RepeatedField< ::google::protobuf::uint64 > uint64_val_;
+  mutable std::atomic<int> _uint64_val_cached_byte_size_;
+  ::google::protobuf::internal::ArenaStringPtr tensor_content_;
+  ::tensorflow::TensorShapeProto* tensor_shape_;
+  int dtype_;
+  ::google::protobuf::int32 version_number_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fframework_2ftensor_2eproto;
+};
+// -------------------------------------------------------------------
+
+class VariantTensorDataProto : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.VariantTensorDataProto) */ {
+ public:
+  VariantTensorDataProto();
+  virtual ~VariantTensorDataProto();
+
+  VariantTensorDataProto(const VariantTensorDataProto& from);
+
+  inline VariantTensorDataProto& operator=(const VariantTensorDataProto& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  VariantTensorDataProto(VariantTensorDataProto&& from) noexcept
+    : VariantTensorDataProto() {
+    *this = ::std::move(from);
+  }
+
+  inline VariantTensorDataProto& operator=(VariantTensorDataProto&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const VariantTensorDataProto& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const VariantTensorDataProto* internal_default_instance() {
+    return reinterpret_cast<const VariantTensorDataProto*>(
+               &_VariantTensorDataProto_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    1;
+
+  void UnsafeArenaSwap(VariantTensorDataProto* other);
+  void Swap(VariantTensorDataProto* other);
+  friend void swap(VariantTensorDataProto& a, VariantTensorDataProto& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline VariantTensorDataProto* New() const final {
+    return CreateMaybeMessage<VariantTensorDataProto>(NULL);
+  }
+
+  VariantTensorDataProto* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<VariantTensorDataProto>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const VariantTensorDataProto& from);
+  void MergeFrom(const VariantTensorDataProto& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(VariantTensorDataProto* other);
+  protected:
+  explicit VariantTensorDataProto(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // repeated .tensorflow.TensorProto tensors = 3;
+  int tensors_size() const;
+  void clear_tensors();
+  static const int kTensorsFieldNumber = 3;
+  ::tensorflow::TensorProto* mutable_tensors(int index);
+  ::google::protobuf::RepeatedPtrField< ::tensorflow::TensorProto >*
+      mutable_tensors();
+  const ::tensorflow::TensorProto& tensors(int index) const;
+  ::tensorflow::TensorProto* add_tensors();
+  const ::google::protobuf::RepeatedPtrField< ::tensorflow::TensorProto >&
+      tensors() const;
+
+  // string type_name = 1;
+  void clear_type_name();
+  static const int kTypeNameFieldNumber = 1;
+  const ::std::string& type_name() const;
+  void set_type_name(const ::std::string& value);
+  #if LANG_CXX11
+  void set_type_name(::std::string&& value);
+  #endif
+  void set_type_name(const char* value);
+  void set_type_name(const char* value, size_t size);
+  ::std::string* mutable_type_name();
+  ::std::string* release_type_name();
+  void set_allocated_type_name(::std::string* type_name);
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  ::std::string* unsafe_arena_release_type_name();
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  void unsafe_arena_set_allocated_type_name(
+      ::std::string* type_name);
+
+  // bytes metadata = 2;
+  void clear_metadata();
+  static const int kMetadataFieldNumber = 2;
+  const ::std::string& metadata() const;
+  void set_metadata(const ::std::string& value);
+  #if LANG_CXX11
+  void set_metadata(::std::string&& value);
+  #endif
+  void set_metadata(const char* value);
+  void set_metadata(const void* value, size_t size);
+  ::std::string* mutable_metadata();
+  ::std::string* release_metadata();
+  void set_allocated_metadata(::std::string* metadata);
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  ::std::string* unsafe_arena_release_metadata();
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  void unsafe_arena_set_allocated_metadata(
+      ::std::string* metadata);
+
+  // @@protoc_insertion_point(class_scope:tensorflow.VariantTensorDataProto)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  ::google::protobuf::RepeatedPtrField< ::tensorflow::TensorProto > tensors_;
+  ::google::protobuf::internal::ArenaStringPtr type_name_;
+  ::google::protobuf::internal::ArenaStringPtr metadata_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fframework_2ftensor_2eproto;
+};
+// ===================================================================
+
+
+// ===================================================================
+
+#ifdef __GNUC__
+  #pragma GCC diagnostic push
+  #pragma GCC diagnostic ignored "-Wstrict-aliasing"
+#endif  // __GNUC__
+// TensorProto
+
+// .tensorflow.DataType dtype = 1;
+inline void TensorProto::clear_dtype() {
+  dtype_ = 0;
+}
+inline ::tensorflow::DataType TensorProto::dtype() const {
+  // @@protoc_insertion_point(field_get:tensorflow.TensorProto.dtype)
+  return static_cast< ::tensorflow::DataType >(dtype_);
+}
+inline void TensorProto::set_dtype(::tensorflow::DataType value) {
+  
+  dtype_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.TensorProto.dtype)
+}
+
+// .tensorflow.TensorShapeProto tensor_shape = 2;
+inline bool TensorProto::has_tensor_shape() const {
+  return this != internal_default_instance() && tensor_shape_ != NULL;
+}
+inline const ::tensorflow::TensorShapeProto& TensorProto::tensor_shape() const {
+  const ::tensorflow::TensorShapeProto* p = tensor_shape_;
+  // @@protoc_insertion_point(field_get:tensorflow.TensorProto.tensor_shape)
+  return p != NULL ? *p : *reinterpret_cast<const ::tensorflow::TensorShapeProto*>(
+      &::tensorflow::_TensorShapeProto_default_instance_);
+}
+inline ::tensorflow::TensorShapeProto* TensorProto::release_tensor_shape() {
+  // @@protoc_insertion_point(field_release:tensorflow.TensorProto.tensor_shape)
+  
+  ::tensorflow::TensorShapeProto* temp = tensor_shape_;
+  if (GetArenaNoVirtual() != NULL) {
+    temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
+  }
+  tensor_shape_ = NULL;
+  return temp;
+}
+inline ::tensorflow::TensorShapeProto* TensorProto::unsafe_arena_release_tensor_shape() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.TensorProto.tensor_shape)
+  
+  ::tensorflow::TensorShapeProto* temp = tensor_shape_;
+  tensor_shape_ = NULL;
+  return temp;
+}
+inline ::tensorflow::TensorShapeProto* TensorProto::mutable_tensor_shape() {
+  
+  if (tensor_shape_ == NULL) {
+    auto* p = CreateMaybeMessage<::tensorflow::TensorShapeProto>(GetArenaNoVirtual());
+    tensor_shape_ = p;
+  }
+  // @@protoc_insertion_point(field_mutable:tensorflow.TensorProto.tensor_shape)
+  return tensor_shape_;
+}
+inline void TensorProto::set_allocated_tensor_shape(::tensorflow::TensorShapeProto* tensor_shape) {
+  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
+  if (message_arena == NULL) {
+    delete reinterpret_cast< ::google::protobuf::MessageLite*>(tensor_shape_);
+  }
+  if (tensor_shape) {
+    ::google::protobuf::Arena* submessage_arena =
+      reinterpret_cast<::google::protobuf::MessageLite*>(tensor_shape)->GetArena();
+    if (message_arena != submessage_arena) {
+      tensor_shape = ::google::protobuf::internal::GetOwnedMessage(
+          message_arena, tensor_shape, submessage_arena);
+    }
+    
+  } else {
+    
+  }
+  tensor_shape_ = tensor_shape;
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.TensorProto.tensor_shape)
+}
+
+// int32 version_number = 3;
+inline void TensorProto::clear_version_number() {
+  version_number_ = 0;
+}
+inline ::google::protobuf::int32 TensorProto::version_number() const {
+  // @@protoc_insertion_point(field_get:tensorflow.TensorProto.version_number)
+  return version_number_;
+}
+inline void TensorProto::set_version_number(::google::protobuf::int32 value) {
+  
+  version_number_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.TensorProto.version_number)
+}
+
+// bytes tensor_content = 4;
+inline void TensorProto::clear_tensor_content() {
+  tensor_content_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline const ::std::string& TensorProto::tensor_content() const {
+  // @@protoc_insertion_point(field_get:tensorflow.TensorProto.tensor_content)
+  return tensor_content_.Get();
+}
+inline void TensorProto::set_tensor_content(const ::std::string& value) {
+  
+  tensor_content_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set:tensorflow.TensorProto.tensor_content)
+}
+#if LANG_CXX11
+inline void TensorProto::set_tensor_content(::std::string&& value) {
+  
+  tensor_content_.Set(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.TensorProto.tensor_content)
+}
+#endif
+inline void TensorProto::set_tensor_content(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  tensor_content_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
+              GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_char:tensorflow.TensorProto.tensor_content)
+}
+inline void TensorProto::set_tensor_content(const void* value,
+    size_t size) {
+  
+  tensor_content_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
+      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.TensorProto.tensor_content)
+}
+inline ::std::string* TensorProto::mutable_tensor_content() {
+  
+  // @@protoc_insertion_point(field_mutable:tensorflow.TensorProto.tensor_content)
+  return tensor_content_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline ::std::string* TensorProto::release_tensor_content() {
+  // @@protoc_insertion_point(field_release:tensorflow.TensorProto.tensor_content)
+  
+  return tensor_content_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline void TensorProto::set_allocated_tensor_content(::std::string* tensor_content) {
+  if (tensor_content != NULL) {
+    
+  } else {
+    
+  }
+  tensor_content_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), tensor_content,
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.TensorProto.tensor_content)
+}
+inline ::std::string* TensorProto::unsafe_arena_release_tensor_content() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.TensorProto.tensor_content)
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  
+  return tensor_content_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      GetArenaNoVirtual());
+}
+inline void TensorProto::unsafe_arena_set_allocated_tensor_content(
+    ::std::string* tensor_content) {
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (tensor_content != NULL) {
+    
+  } else {
+    
+  }
+  tensor_content_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      tensor_content, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.TensorProto.tensor_content)
+}
+
+// repeated int32 half_val = 13 [packed = true];
+inline int TensorProto::half_val_size() const {
+  return half_val_.size();
+}
+inline void TensorProto::clear_half_val() {
+  half_val_.Clear();
+}
+inline ::google::protobuf::int32 TensorProto::half_val(int index) const {
+  // @@protoc_insertion_point(field_get:tensorflow.TensorProto.half_val)
+  return half_val_.Get(index);
+}
+inline void TensorProto::set_half_val(int index, ::google::protobuf::int32 value) {
+  half_val_.Set(index, value);
+  // @@protoc_insertion_point(field_set:tensorflow.TensorProto.half_val)
+}
+inline void TensorProto::add_half_val(::google::protobuf::int32 value) {
+  half_val_.Add(value);
+  // @@protoc_insertion_point(field_add:tensorflow.TensorProto.half_val)
+}
+inline const ::google::protobuf::RepeatedField< ::google::protobuf::int32 >&
+TensorProto::half_val() const {
+  // @@protoc_insertion_point(field_list:tensorflow.TensorProto.half_val)
+  return half_val_;
+}
+inline ::google::protobuf::RepeatedField< ::google::protobuf::int32 >*
+TensorProto::mutable_half_val() {
+  // @@protoc_insertion_point(field_mutable_list:tensorflow.TensorProto.half_val)
+  return &half_val_;
+}
+
+// repeated float float_val = 5 [packed = true];
+inline int TensorProto::float_val_size() const {
+  return float_val_.size();
+}
+inline void TensorProto::clear_float_val() {
+  float_val_.Clear();
+}
+inline float TensorProto::float_val(int index) const {
+  // @@protoc_insertion_point(field_get:tensorflow.TensorProto.float_val)
+  return float_val_.Get(index);
+}
+inline void TensorProto::set_float_val(int index, float value) {
+  float_val_.Set(index, value);
+  // @@protoc_insertion_point(field_set:tensorflow.TensorProto.float_val)
+}
+inline void TensorProto::add_float_val(float value) {
+  float_val_.Add(value);
+  // @@protoc_insertion_point(field_add:tensorflow.TensorProto.float_val)
+}
+inline const ::google::protobuf::RepeatedField< float >&
+TensorProto::float_val() const {
+  // @@protoc_insertion_point(field_list:tensorflow.TensorProto.float_val)
+  return float_val_;
+}
+inline ::google::protobuf::RepeatedField< float >*
+TensorProto::mutable_float_val() {
+  // @@protoc_insertion_point(field_mutable_list:tensorflow.TensorProto.float_val)
+  return &float_val_;
+}
+
+// repeated double double_val = 6 [packed = true];
+inline int TensorProto::double_val_size() const {
+  return double_val_.size();
+}
+inline void TensorProto::clear_double_val() {
+  double_val_.Clear();
+}
+inline double TensorProto::double_val(int index) const {
+  // @@protoc_insertion_point(field_get:tensorflow.TensorProto.double_val)
+  return double_val_.Get(index);
+}
+inline void TensorProto::set_double_val(int index, double value) {
+  double_val_.Set(index, value);
+  // @@protoc_insertion_point(field_set:tensorflow.TensorProto.double_val)
+}
+inline void TensorProto::add_double_val(double value) {
+  double_val_.Add(value);
+  // @@protoc_insertion_point(field_add:tensorflow.TensorProto.double_val)
+}
+inline const ::google::protobuf::RepeatedField< double >&
+TensorProto::double_val() const {
+  // @@protoc_insertion_point(field_list:tensorflow.TensorProto.double_val)
+  return double_val_;
+}
+inline ::google::protobuf::RepeatedField< double >*
+TensorProto::mutable_double_val() {
+  // @@protoc_insertion_point(field_mutable_list:tensorflow.TensorProto.double_val)
+  return &double_val_;
+}
+
+// repeated int32 int_val = 7 [packed = true];
+inline int TensorProto::int_val_size() const {
+  return int_val_.size();
+}
+inline void TensorProto::clear_int_val() {
+  int_val_.Clear();
+}
+inline ::google::protobuf::int32 TensorProto::int_val(int index) const {
+  // @@protoc_insertion_point(field_get:tensorflow.TensorProto.int_val)
+  return int_val_.Get(index);
+}
+inline void TensorProto::set_int_val(int index, ::google::protobuf::int32 value) {
+  int_val_.Set(index, value);
+  // @@protoc_insertion_point(field_set:tensorflow.TensorProto.int_val)
+}
+inline void TensorProto::add_int_val(::google::protobuf::int32 value) {
+  int_val_.Add(value);
+  // @@protoc_insertion_point(field_add:tensorflow.TensorProto.int_val)
+}
+inline const ::google::protobuf::RepeatedField< ::google::protobuf::int32 >&
+TensorProto::int_val() const {
+  // @@protoc_insertion_point(field_list:tensorflow.TensorProto.int_val)
+  return int_val_;
+}
+inline ::google::protobuf::RepeatedField< ::google::protobuf::int32 >*
+TensorProto::mutable_int_val() {
+  // @@protoc_insertion_point(field_mutable_list:tensorflow.TensorProto.int_val)
+  return &int_val_;
+}
+
+// repeated bytes string_val = 8;
+inline int TensorProto::string_val_size() const {
+  return string_val_.size();
+}
+inline void TensorProto::clear_string_val() {
+  string_val_.Clear();
+}
+inline const ::std::string& TensorProto::string_val(int index) const {
+  // @@protoc_insertion_point(field_get:tensorflow.TensorProto.string_val)
+  return string_val_.Get(index);
+}
+inline ::std::string* TensorProto::mutable_string_val(int index) {
+  // @@protoc_insertion_point(field_mutable:tensorflow.TensorProto.string_val)
+  return string_val_.Mutable(index);
+}
+inline void TensorProto::set_string_val(int index, const ::std::string& value) {
+  // @@protoc_insertion_point(field_set:tensorflow.TensorProto.string_val)
+  string_val_.Mutable(index)->assign(value);
+}
+#if LANG_CXX11
+inline void TensorProto::set_string_val(int index, ::std::string&& value) {
+  // @@protoc_insertion_point(field_set:tensorflow.TensorProto.string_val)
+  string_val_.Mutable(index)->assign(std::move(value));
+}
+#endif
+inline void TensorProto::set_string_val(int index, const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  string_val_.Mutable(index)->assign(value);
+  // @@protoc_insertion_point(field_set_char:tensorflow.TensorProto.string_val)
+}
+inline void TensorProto::set_string_val(int index, const void* value, size_t size) {
+  string_val_.Mutable(index)->assign(
+    reinterpret_cast<const char*>(value), size);
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.TensorProto.string_val)
+}
+inline ::std::string* TensorProto::add_string_val() {
+  // @@protoc_insertion_point(field_add_mutable:tensorflow.TensorProto.string_val)
+  return string_val_.Add();
+}
+inline void TensorProto::add_string_val(const ::std::string& value) {
+  string_val_.Add()->assign(value);
+  // @@protoc_insertion_point(field_add:tensorflow.TensorProto.string_val)
+}
+#if LANG_CXX11
+inline void TensorProto::add_string_val(::std::string&& value) {
+  string_val_.Add(std::move(value));
+  // @@protoc_insertion_point(field_add:tensorflow.TensorProto.string_val)
+}
+#endif
+inline void TensorProto::add_string_val(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  string_val_.Add()->assign(value);
+  // @@protoc_insertion_point(field_add_char:tensorflow.TensorProto.string_val)
+}
+inline void TensorProto::add_string_val(const void* value, size_t size) {
+  string_val_.Add()->assign(reinterpret_cast<const char*>(value), size);
+  // @@protoc_insertion_point(field_add_pointer:tensorflow.TensorProto.string_val)
+}
+inline const ::google::protobuf::RepeatedPtrField<::std::string>&
+TensorProto::string_val() const {
+  // @@protoc_insertion_point(field_list:tensorflow.TensorProto.string_val)
+  return string_val_;
+}
+inline ::google::protobuf::RepeatedPtrField<::std::string>*
+TensorProto::mutable_string_val() {
+  // @@protoc_insertion_point(field_mutable_list:tensorflow.TensorProto.string_val)
+  return &string_val_;
+}
+
+// repeated float scomplex_val = 9 [packed = true];
+inline int TensorProto::scomplex_val_size() const {
+  return scomplex_val_.size();
+}
+inline void TensorProto::clear_scomplex_val() {
+  scomplex_val_.Clear();
+}
+inline float TensorProto::scomplex_val(int index) const {
+  // @@protoc_insertion_point(field_get:tensorflow.TensorProto.scomplex_val)
+  return scomplex_val_.Get(index);
+}
+inline void TensorProto::set_scomplex_val(int index, float value) {
+  scomplex_val_.Set(index, value);
+  // @@protoc_insertion_point(field_set:tensorflow.TensorProto.scomplex_val)
+}
+inline void TensorProto::add_scomplex_val(float value) {
+  scomplex_val_.Add(value);
+  // @@protoc_insertion_point(field_add:tensorflow.TensorProto.scomplex_val)
+}
+inline const ::google::protobuf::RepeatedField< float >&
+TensorProto::scomplex_val() const {
+  // @@protoc_insertion_point(field_list:tensorflow.TensorProto.scomplex_val)
+  return scomplex_val_;
+}
+inline ::google::protobuf::RepeatedField< float >*
+TensorProto::mutable_scomplex_val() {
+  // @@protoc_insertion_point(field_mutable_list:tensorflow.TensorProto.scomplex_val)
+  return &scomplex_val_;
+}
+
+// repeated int64 int64_val = 10 [packed = true];
+inline int TensorProto::int64_val_size() const {
+  return int64_val_.size();
+}
+inline void TensorProto::clear_int64_val() {
+  int64_val_.Clear();
+}
+inline ::google::protobuf::int64 TensorProto::int64_val(int index) const {
+  // @@protoc_insertion_point(field_get:tensorflow.TensorProto.int64_val)
+  return int64_val_.Get(index);
+}
+inline void TensorProto::set_int64_val(int index, ::google::protobuf::int64 value) {
+  int64_val_.Set(index, value);
+  // @@protoc_insertion_point(field_set:tensorflow.TensorProto.int64_val)
+}
+inline void TensorProto::add_int64_val(::google::protobuf::int64 value) {
+  int64_val_.Add(value);
+  // @@protoc_insertion_point(field_add:tensorflow.TensorProto.int64_val)
+}
+inline const ::google::protobuf::RepeatedField< ::google::protobuf::int64 >&
+TensorProto::int64_val() const {
+  // @@protoc_insertion_point(field_list:tensorflow.TensorProto.int64_val)
+  return int64_val_;
+}
+inline ::google::protobuf::RepeatedField< ::google::protobuf::int64 >*
+TensorProto::mutable_int64_val() {
+  // @@protoc_insertion_point(field_mutable_list:tensorflow.TensorProto.int64_val)
+  return &int64_val_;
+}
+
+// repeated bool bool_val = 11 [packed = true];
+inline int TensorProto::bool_val_size() const {
+  return bool_val_.size();
+}
+inline void TensorProto::clear_bool_val() {
+  bool_val_.Clear();
+}
+inline bool TensorProto::bool_val(int index) const {
+  // @@protoc_insertion_point(field_get:tensorflow.TensorProto.bool_val)
+  return bool_val_.Get(index);
+}
+inline void TensorProto::set_bool_val(int index, bool value) {
+  bool_val_.Set(index, value);
+  // @@protoc_insertion_point(field_set:tensorflow.TensorProto.bool_val)
+}
+inline void TensorProto::add_bool_val(bool value) {
+  bool_val_.Add(value);
+  // @@protoc_insertion_point(field_add:tensorflow.TensorProto.bool_val)
+}
+inline const ::google::protobuf::RepeatedField< bool >&
+TensorProto::bool_val() const {
+  // @@protoc_insertion_point(field_list:tensorflow.TensorProto.bool_val)
+  return bool_val_;
+}
+inline ::google::protobuf::RepeatedField< bool >*
+TensorProto::mutable_bool_val() {
+  // @@protoc_insertion_point(field_mutable_list:tensorflow.TensorProto.bool_val)
+  return &bool_val_;
+}
+
+// repeated double dcomplex_val = 12 [packed = true];
+inline int TensorProto::dcomplex_val_size() const {
+  return dcomplex_val_.size();
+}
+inline void TensorProto::clear_dcomplex_val() {
+  dcomplex_val_.Clear();
+}
+inline double TensorProto::dcomplex_val(int index) const {
+  // @@protoc_insertion_point(field_get:tensorflow.TensorProto.dcomplex_val)
+  return dcomplex_val_.Get(index);
+}
+inline void TensorProto::set_dcomplex_val(int index, double value) {
+  dcomplex_val_.Set(index, value);
+  // @@protoc_insertion_point(field_set:tensorflow.TensorProto.dcomplex_val)
+}
+inline void TensorProto::add_dcomplex_val(double value) {
+  dcomplex_val_.Add(value);
+  // @@protoc_insertion_point(field_add:tensorflow.TensorProto.dcomplex_val)
+}
+inline const ::google::protobuf::RepeatedField< double >&
+TensorProto::dcomplex_val() const {
+  // @@protoc_insertion_point(field_list:tensorflow.TensorProto.dcomplex_val)
+  return dcomplex_val_;
+}
+inline ::google::protobuf::RepeatedField< double >*
+TensorProto::mutable_dcomplex_val() {
+  // @@protoc_insertion_point(field_mutable_list:tensorflow.TensorProto.dcomplex_val)
+  return &dcomplex_val_;
+}
+
+// repeated .tensorflow.ResourceHandleProto resource_handle_val = 14;
+inline int TensorProto::resource_handle_val_size() const {
+  return resource_handle_val_.size();
+}
+inline ::tensorflow::ResourceHandleProto* TensorProto::mutable_resource_handle_val(int index) {
+  // @@protoc_insertion_point(field_mutable:tensorflow.TensorProto.resource_handle_val)
+  return resource_handle_val_.Mutable(index);
+}
+inline ::google::protobuf::RepeatedPtrField< ::tensorflow::ResourceHandleProto >*
+TensorProto::mutable_resource_handle_val() {
+  // @@protoc_insertion_point(field_mutable_list:tensorflow.TensorProto.resource_handle_val)
+  return &resource_handle_val_;
+}
+inline const ::tensorflow::ResourceHandleProto& TensorProto::resource_handle_val(int index) const {
+  // @@protoc_insertion_point(field_get:tensorflow.TensorProto.resource_handle_val)
+  return resource_handle_val_.Get(index);
+}
+inline ::tensorflow::ResourceHandleProto* TensorProto::add_resource_handle_val() {
+  // @@protoc_insertion_point(field_add:tensorflow.TensorProto.resource_handle_val)
+  return resource_handle_val_.Add();
+}
+inline const ::google::protobuf::RepeatedPtrField< ::tensorflow::ResourceHandleProto >&
+TensorProto::resource_handle_val() const {
+  // @@protoc_insertion_point(field_list:tensorflow.TensorProto.resource_handle_val)
+  return resource_handle_val_;
+}
+
+// repeated .tensorflow.VariantTensorDataProto variant_val = 15;
+inline int TensorProto::variant_val_size() const {
+  return variant_val_.size();
+}
+inline void TensorProto::clear_variant_val() {
+  variant_val_.Clear();
+}
+inline ::tensorflow::VariantTensorDataProto* TensorProto::mutable_variant_val(int index) {
+  // @@protoc_insertion_point(field_mutable:tensorflow.TensorProto.variant_val)
+  return variant_val_.Mutable(index);
+}
+inline ::google::protobuf::RepeatedPtrField< ::tensorflow::VariantTensorDataProto >*
+TensorProto::mutable_variant_val() {
+  // @@protoc_insertion_point(field_mutable_list:tensorflow.TensorProto.variant_val)
+  return &variant_val_;
+}
+inline const ::tensorflow::VariantTensorDataProto& TensorProto::variant_val(int index) const {
+  // @@protoc_insertion_point(field_get:tensorflow.TensorProto.variant_val)
+  return variant_val_.Get(index);
+}
+inline ::tensorflow::VariantTensorDataProto* TensorProto::add_variant_val() {
+  // @@protoc_insertion_point(field_add:tensorflow.TensorProto.variant_val)
+  return variant_val_.Add();
+}
+inline const ::google::protobuf::RepeatedPtrField< ::tensorflow::VariantTensorDataProto >&
+TensorProto::variant_val() const {
+  // @@protoc_insertion_point(field_list:tensorflow.TensorProto.variant_val)
+  return variant_val_;
+}
+
+// repeated uint32 uint32_val = 16 [packed = true];
+inline int TensorProto::uint32_val_size() const {
+  return uint32_val_.size();
+}
+inline void TensorProto::clear_uint32_val() {
+  uint32_val_.Clear();
+}
+inline ::google::protobuf::uint32 TensorProto::uint32_val(int index) const {
+  // @@protoc_insertion_point(field_get:tensorflow.TensorProto.uint32_val)
+  return uint32_val_.Get(index);
+}
+inline void TensorProto::set_uint32_val(int index, ::google::protobuf::uint32 value) {
+  uint32_val_.Set(index, value);
+  // @@protoc_insertion_point(field_set:tensorflow.TensorProto.uint32_val)
+}
+inline void TensorProto::add_uint32_val(::google::protobuf::uint32 value) {
+  uint32_val_.Add(value);
+  // @@protoc_insertion_point(field_add:tensorflow.TensorProto.uint32_val)
+}
+inline const ::google::protobuf::RepeatedField< ::google::protobuf::uint32 >&
+TensorProto::uint32_val() const {
+  // @@protoc_insertion_point(field_list:tensorflow.TensorProto.uint32_val)
+  return uint32_val_;
+}
+inline ::google::protobuf::RepeatedField< ::google::protobuf::uint32 >*
+TensorProto::mutable_uint32_val() {
+  // @@protoc_insertion_point(field_mutable_list:tensorflow.TensorProto.uint32_val)
+  return &uint32_val_;
+}
+
+// repeated uint64 uint64_val = 17 [packed = true];
+inline int TensorProto::uint64_val_size() const {
+  return uint64_val_.size();
+}
+inline void TensorProto::clear_uint64_val() {
+  uint64_val_.Clear();
+}
+inline ::google::protobuf::uint64 TensorProto::uint64_val(int index) const {
+  // @@protoc_insertion_point(field_get:tensorflow.TensorProto.uint64_val)
+  return uint64_val_.Get(index);
+}
+inline void TensorProto::set_uint64_val(int index, ::google::protobuf::uint64 value) {
+  uint64_val_.Set(index, value);
+  // @@protoc_insertion_point(field_set:tensorflow.TensorProto.uint64_val)
+}
+inline void TensorProto::add_uint64_val(::google::protobuf::uint64 value) {
+  uint64_val_.Add(value);
+  // @@protoc_insertion_point(field_add:tensorflow.TensorProto.uint64_val)
+}
+inline const ::google::protobuf::RepeatedField< ::google::protobuf::uint64 >&
+TensorProto::uint64_val() const {
+  // @@protoc_insertion_point(field_list:tensorflow.TensorProto.uint64_val)
+  return uint64_val_;
+}
+inline ::google::protobuf::RepeatedField< ::google::protobuf::uint64 >*
+TensorProto::mutable_uint64_val() {
+  // @@protoc_insertion_point(field_mutable_list:tensorflow.TensorProto.uint64_val)
+  return &uint64_val_;
+}
+
+// -------------------------------------------------------------------
+
+// VariantTensorDataProto
+
+// string type_name = 1;
+inline void VariantTensorDataProto::clear_type_name() {
+  type_name_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline const ::std::string& VariantTensorDataProto::type_name() const {
+  // @@protoc_insertion_point(field_get:tensorflow.VariantTensorDataProto.type_name)
+  return type_name_.Get();
+}
+inline void VariantTensorDataProto::set_type_name(const ::std::string& value) {
+  
+  type_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set:tensorflow.VariantTensorDataProto.type_name)
+}
+#if LANG_CXX11
+inline void VariantTensorDataProto::set_type_name(::std::string&& value) {
+  
+  type_name_.Set(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.VariantTensorDataProto.type_name)
+}
+#endif
+inline void VariantTensorDataProto::set_type_name(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  type_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
+              GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_char:tensorflow.VariantTensorDataProto.type_name)
+}
+inline void VariantTensorDataProto::set_type_name(const char* value,
+    size_t size) {
+  
+  type_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
+      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.VariantTensorDataProto.type_name)
+}
+inline ::std::string* VariantTensorDataProto::mutable_type_name() {
+  
+  // @@protoc_insertion_point(field_mutable:tensorflow.VariantTensorDataProto.type_name)
+  return type_name_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline ::std::string* VariantTensorDataProto::release_type_name() {
+  // @@protoc_insertion_point(field_release:tensorflow.VariantTensorDataProto.type_name)
+  
+  return type_name_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline void VariantTensorDataProto::set_allocated_type_name(::std::string* type_name) {
+  if (type_name != NULL) {
+    
+  } else {
+    
+  }
+  type_name_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), type_name,
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.VariantTensorDataProto.type_name)
+}
+inline ::std::string* VariantTensorDataProto::unsafe_arena_release_type_name() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.VariantTensorDataProto.type_name)
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  
+  return type_name_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      GetArenaNoVirtual());
+}
+inline void VariantTensorDataProto::unsafe_arena_set_allocated_type_name(
+    ::std::string* type_name) {
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (type_name != NULL) {
+    
+  } else {
+    
+  }
+  type_name_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      type_name, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.VariantTensorDataProto.type_name)
+}
+
+// bytes metadata = 2;
+inline void VariantTensorDataProto::clear_metadata() {
+  metadata_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline const ::std::string& VariantTensorDataProto::metadata() const {
+  // @@protoc_insertion_point(field_get:tensorflow.VariantTensorDataProto.metadata)
+  return metadata_.Get();
+}
+inline void VariantTensorDataProto::set_metadata(const ::std::string& value) {
+  
+  metadata_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set:tensorflow.VariantTensorDataProto.metadata)
+}
+#if LANG_CXX11
+inline void VariantTensorDataProto::set_metadata(::std::string&& value) {
+  
+  metadata_.Set(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.VariantTensorDataProto.metadata)
+}
+#endif
+inline void VariantTensorDataProto::set_metadata(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  metadata_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
+              GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_char:tensorflow.VariantTensorDataProto.metadata)
+}
+inline void VariantTensorDataProto::set_metadata(const void* value,
+    size_t size) {
+  
+  metadata_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
+      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.VariantTensorDataProto.metadata)
+}
+inline ::std::string* VariantTensorDataProto::mutable_metadata() {
+  
+  // @@protoc_insertion_point(field_mutable:tensorflow.VariantTensorDataProto.metadata)
+  return metadata_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline ::std::string* VariantTensorDataProto::release_metadata() {
+  // @@protoc_insertion_point(field_release:tensorflow.VariantTensorDataProto.metadata)
+  
+  return metadata_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline void VariantTensorDataProto::set_allocated_metadata(::std::string* metadata) {
+  if (metadata != NULL) {
+    
+  } else {
+    
+  }
+  metadata_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), metadata,
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.VariantTensorDataProto.metadata)
+}
+inline ::std::string* VariantTensorDataProto::unsafe_arena_release_metadata() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.VariantTensorDataProto.metadata)
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  
+  return metadata_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      GetArenaNoVirtual());
+}
+inline void VariantTensorDataProto::unsafe_arena_set_allocated_metadata(
+    ::std::string* metadata) {
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (metadata != NULL) {
+    
+  } else {
+    
+  }
+  metadata_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      metadata, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.VariantTensorDataProto.metadata)
+}
+
+// repeated .tensorflow.TensorProto tensors = 3;
+inline int VariantTensorDataProto::tensors_size() const {
+  return tensors_.size();
+}
+inline void VariantTensorDataProto::clear_tensors() {
+  tensors_.Clear();
+}
+inline ::tensorflow::TensorProto* VariantTensorDataProto::mutable_tensors(int index) {
+  // @@protoc_insertion_point(field_mutable:tensorflow.VariantTensorDataProto.tensors)
+  return tensors_.Mutable(index);
+}
+inline ::google::protobuf::RepeatedPtrField< ::tensorflow::TensorProto >*
+VariantTensorDataProto::mutable_tensors() {
+  // @@protoc_insertion_point(field_mutable_list:tensorflow.VariantTensorDataProto.tensors)
+  return &tensors_;
+}
+inline const ::tensorflow::TensorProto& VariantTensorDataProto::tensors(int index) const {
+  // @@protoc_insertion_point(field_get:tensorflow.VariantTensorDataProto.tensors)
+  return tensors_.Get(index);
+}
+inline ::tensorflow::TensorProto* VariantTensorDataProto::add_tensors() {
+  // @@protoc_insertion_point(field_add:tensorflow.VariantTensorDataProto.tensors)
+  return tensors_.Add();
+}
+inline const ::google::protobuf::RepeatedPtrField< ::tensorflow::TensorProto >&
+VariantTensorDataProto::tensors() const {
+  // @@protoc_insertion_point(field_list:tensorflow.VariantTensorDataProto.tensors)
+  return tensors_;
+}
+
+#ifdef __GNUC__
+  #pragma GCC diagnostic pop
+#endif  // __GNUC__
+// -------------------------------------------------------------------
+
+
+// @@protoc_insertion_point(namespace_scope)
+
+}  // namespace tensorflow
+
+// @@protoc_insertion_point(global_scope)
+
+#include <google/protobuf/port_undef.inc>
+#endif  // PROTOBUF_INCLUDED_tensorflow_2fcore_2fframework_2ftensor_2eproto
diff --git a/tensorflow/core/framework/tensor.proto b/tensorflow/core/framework/tensor.proto
new file mode 100644 (file)
index 0000000..55921af
--- /dev/null
@@ -0,0 +1,94 @@
+syntax = "proto3";
+
+package tensorflow;
+option cc_enable_arenas = true;
+option java_outer_classname = "TensorProtos";
+option java_multiple_files = true;
+option java_package = "org.tensorflow.framework";
+option go_package = "github.com/tensorflow/tensorflow/tensorflow/go/core/framework";
+import "tensorflow/core/framework/resource_handle.proto";
+import "tensorflow/core/framework/tensor_shape.proto";
+import "tensorflow/core/framework/types.proto";
+
+// Protocol buffer representing a tensor.
+message TensorProto {
+  DataType dtype = 1;
+
+  // Shape of the tensor.  TODO(touts): sort out the 0-rank issues.
+  TensorShapeProto tensor_shape = 2;
+
+  // Only one of the representations below is set, one of "tensor_contents" and
+  // the "xxx_val" attributes.  We are not using oneof because as oneofs cannot
+  // contain repeated fields it would require another extra set of messages.
+
+  // Version number.
+  //
+  // In version 0, if the "repeated xxx" representations contain only one
+  // element, that element is repeated to fill the shape.  This makes it easy
+  // to represent a constant Tensor with a single value.
+  int32 version_number = 3;
+
+  // Serialized raw tensor content from either Tensor::AsProtoTensorContent or
+  // memcpy in tensorflow::grpc::EncodeTensorToByteBuffer. This representation
+  // can be used for all tensor types. The purpose of this representation is to
+  // reduce serialization overhead during RPC call by avoiding serialization of
+  // many repeated small items.
+  bytes tensor_content = 4;
+
+  // Type specific representations that make it easy to create tensor protos in
+  // all languages.  Only the representation corresponding to "dtype" can
+  // be set.  The values hold the flattened representation of the tensor in
+  // row major order.
+
+  // DT_HALF, DT_BFLOAT16. Note that since protobuf has no int16 type, we'll
+  // have some pointless zero padding for each value here.
+  repeated int32 half_val = 13 [packed = true];
+
+  // DT_FLOAT.
+  repeated float float_val = 5 [packed = true];
+
+  // DT_DOUBLE.
+  repeated double double_val = 6 [packed = true];
+
+  // DT_INT32, DT_INT16, DT_INT8, DT_UINT8.
+  repeated int32 int_val = 7 [packed = true];
+
+  // DT_STRING
+  repeated bytes string_val = 8;
+
+  // DT_COMPLEX64. scomplex_val(2*i) and scomplex_val(2*i+1) are real
+  // and imaginary parts of i-th single precision complex.
+  repeated float scomplex_val = 9 [packed = true];
+
+  // DT_INT64
+  repeated int64 int64_val = 10 [packed = true];
+
+  // DT_BOOL
+  repeated bool bool_val = 11 [packed = true];
+
+  // DT_COMPLEX128. dcomplex_val(2*i) and dcomplex_val(2*i+1) are real
+  // and imaginary parts of i-th double precision complex.
+  repeated double dcomplex_val = 12 [packed = true];
+
+  // DT_RESOURCE
+  repeated ResourceHandleProto resource_handle_val = 14;
+
+  // DT_VARIANT
+  repeated VariantTensorDataProto variant_val = 15;
+
+  // DT_UINT32
+  repeated uint32 uint32_val = 16 [packed = true];
+
+  // DT_UINT64
+  repeated uint64 uint64_val = 17 [packed = true];
+};
+
+// Protocol buffer representing the serialization format of DT_VARIANT tensors.
+message VariantTensorDataProto {
+  // Name of the type of objects being serialized.
+  string type_name = 1;
+  // Portions of the object that are not Tensors.
+  bytes metadata = 2;
+  // Tensors contained within objects being serialized.
+  repeated TensorProto tensors = 3;
+}
diff --git a/tensorflow/core/framework/tensor_description.pb.cc b/tensorflow/core/framework/tensor_description.pb.cc
new file mode 100644 (file)
index 0000000..df3a1e1
--- /dev/null
@@ -0,0 +1,599 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: tensorflow/core/framework/tensor_description.proto
+
+#include "tensorflow/core/framework/tensor_description.pb.h"
+
+#include <algorithm>
+
+#include <google/protobuf/stubs/common.h>
+#include <google/protobuf/io/coded_stream.h>
+#include <google/protobuf/extension_set.h>
+#include <google/protobuf/wire_format_lite_inl.h>
+#include <google/protobuf/descriptor.h>
+#include <google/protobuf/generated_message_reflection.h>
+#include <google/protobuf/reflection_ops.h>
+#include <google/protobuf/wire_format.h>
+// @@protoc_insertion_point(includes)
+#include <google/protobuf/port_def.inc>
+
+extern PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fframework_2fallocation_5fdescription_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_AllocationDescription_tensorflow_2fcore_2fframework_2fallocation_5fdescription_2eproto;
+extern PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fframework_2ftensor_5fshape_2eproto ::google::protobuf::internal::SCCInfo<1> scc_info_TensorShapeProto_tensorflow_2fcore_2fframework_2ftensor_5fshape_2eproto;
+namespace tensorflow {
+class TensorDescriptionDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<TensorDescription> _instance;
+} _TensorDescription_default_instance_;
+}  // namespace tensorflow
+static void InitDefaultsTensorDescription_tensorflow_2fcore_2fframework_2ftensor_5fdescription_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_TensorDescription_default_instance_;
+    new (ptr) ::tensorflow::TensorDescription();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::TensorDescription::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<2> scc_info_TensorDescription_tensorflow_2fcore_2fframework_2ftensor_5fdescription_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 2, InitDefaultsTensorDescription_tensorflow_2fcore_2fframework_2ftensor_5fdescription_2eproto}, {
+      &scc_info_TensorShapeProto_tensorflow_2fcore_2fframework_2ftensor_5fshape_2eproto.base,
+      &scc_info_AllocationDescription_tensorflow_2fcore_2fframework_2fallocation_5fdescription_2eproto.base,}};
+
+void InitDefaults_tensorflow_2fcore_2fframework_2ftensor_5fdescription_2eproto() {
+  ::google::protobuf::internal::InitSCC(&scc_info_TensorDescription_tensorflow_2fcore_2fframework_2ftensor_5fdescription_2eproto.base);
+}
+
+::google::protobuf::Metadata file_level_metadata_tensorflow_2fcore_2fframework_2ftensor_5fdescription_2eproto[1];
+constexpr ::google::protobuf::EnumDescriptor const** file_level_enum_descriptors_tensorflow_2fcore_2fframework_2ftensor_5fdescription_2eproto = nullptr;
+constexpr ::google::protobuf::ServiceDescriptor const** file_level_service_descriptors_tensorflow_2fcore_2fframework_2ftensor_5fdescription_2eproto = nullptr;
+
+const ::google::protobuf::uint32 TableStruct_tensorflow_2fcore_2fframework_2ftensor_5fdescription_2eproto::offsets[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = {
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::TensorDescription, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::TensorDescription, dtype_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::TensorDescription, shape_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::TensorDescription, allocation_description_),
+};
+static const ::google::protobuf::internal::MigrationSchema schemas[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = {
+  { 0, -1, sizeof(::tensorflow::TensorDescription)},
+};
+
+static ::google::protobuf::Message const * const file_default_instances[] = {
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_TensorDescription_default_instance_),
+};
+
+::google::protobuf::internal::AssignDescriptorsTable assign_descriptors_table_tensorflow_2fcore_2fframework_2ftensor_5fdescription_2eproto = {
+  {}, AddDescriptors_tensorflow_2fcore_2fframework_2ftensor_5fdescription_2eproto, "tensorflow/core/framework/tensor_description.proto", schemas,
+  file_default_instances, TableStruct_tensorflow_2fcore_2fframework_2ftensor_5fdescription_2eproto::offsets,
+  file_level_metadata_tensorflow_2fcore_2fframework_2ftensor_5fdescription_2eproto, 1, file_level_enum_descriptors_tensorflow_2fcore_2fframework_2ftensor_5fdescription_2eproto, file_level_service_descriptors_tensorflow_2fcore_2fframework_2ftensor_5fdescription_2eproto,
+};
+
+::google::protobuf::internal::DescriptorTable descriptor_table_tensorflow_2fcore_2fframework_2ftensor_5fdescription_2eproto = {
+  false, InitDefaults_tensorflow_2fcore_2fframework_2ftensor_5fdescription_2eproto, 
+  "\n2tensorflow/core/framework/tensor_descr"
+  "iption.proto\022\ntensorflow\032%tensorflow/cor"
+  "e/framework/types.proto\032,tensorflow/core"
+  "/framework/tensor_shape.proto\0326tensorflo"
+  "w/core/framework/allocation_description."
+  "proto\"\250\001\n\021TensorDescription\022#\n\005dtype\030\001 \001"
+  "(\0162\024.tensorflow.DataType\022+\n\005shape\030\002 \001(\0132"
+  "\034.tensorflow.TensorShapeProto\022A\n\026allocat"
+  "ion_description\030\004 \001(\0132!.tensorflow.Alloc"
+  "ationDescriptionBw\n\030org.tensorflow.frame"
+  "workB\027TensorDescriptionProtosP\001Z=github."
+  "com/tensorflow/tensorflow/tensorflow/go/"
+  "core/framework\370\001\001b\006proto3"
+,
+  "tensorflow/core/framework/tensor_description.proto", &assign_descriptors_table_tensorflow_2fcore_2fframework_2ftensor_5fdescription_2eproto, 505,
+};
+
+void AddDescriptors_tensorflow_2fcore_2fframework_2ftensor_5fdescription_2eproto() {
+  static constexpr ::google::protobuf::internal::InitFunc deps[3] =
+  {
+    ::AddDescriptors_tensorflow_2fcore_2fframework_2ftypes_2eproto,
+    ::AddDescriptors_tensorflow_2fcore_2fframework_2ftensor_5fshape_2eproto,
+    ::AddDescriptors_tensorflow_2fcore_2fframework_2fallocation_5fdescription_2eproto,
+  };
+ ::google::protobuf::internal::AddDescriptors(&descriptor_table_tensorflow_2fcore_2fframework_2ftensor_5fdescription_2eproto, deps, 3);
+}
+
+// Force running AddDescriptors() at dynamic initialization time.
+static bool dynamic_init_dummy_tensorflow_2fcore_2fframework_2ftensor_5fdescription_2eproto = []() { AddDescriptors_tensorflow_2fcore_2fframework_2ftensor_5fdescription_2eproto(); return true; }();
+namespace tensorflow {
+
+// ===================================================================
+
+void TensorDescription::InitAsDefaultInstance() {
+  ::tensorflow::_TensorDescription_default_instance_._instance.get_mutable()->shape_ = const_cast< ::tensorflow::TensorShapeProto*>(
+      ::tensorflow::TensorShapeProto::internal_default_instance());
+  ::tensorflow::_TensorDescription_default_instance_._instance.get_mutable()->allocation_description_ = const_cast< ::tensorflow::AllocationDescription*>(
+      ::tensorflow::AllocationDescription::internal_default_instance());
+}
+class TensorDescription::HasBitSetters {
+ public:
+  static const ::tensorflow::TensorShapeProto& shape(const TensorDescription* msg);
+  static const ::tensorflow::AllocationDescription& allocation_description(const TensorDescription* msg);
+};
+
+const ::tensorflow::TensorShapeProto&
+TensorDescription::HasBitSetters::shape(const TensorDescription* msg) {
+  return *msg->shape_;
+}
+const ::tensorflow::AllocationDescription&
+TensorDescription::HasBitSetters::allocation_description(const TensorDescription* msg) {
+  return *msg->allocation_description_;
+}
+void TensorDescription::unsafe_arena_set_allocated_shape(
+    ::tensorflow::TensorShapeProto* shape) {
+  if (GetArenaNoVirtual() == NULL) {
+    delete shape_;
+  }
+  shape_ = shape;
+  if (shape) {
+    
+  } else {
+    
+  }
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.TensorDescription.shape)
+}
+void TensorDescription::clear_shape() {
+  if (GetArenaNoVirtual() == NULL && shape_ != NULL) {
+    delete shape_;
+  }
+  shape_ = NULL;
+}
+void TensorDescription::unsafe_arena_set_allocated_allocation_description(
+    ::tensorflow::AllocationDescription* allocation_description) {
+  if (GetArenaNoVirtual() == NULL) {
+    delete allocation_description_;
+  }
+  allocation_description_ = allocation_description;
+  if (allocation_description) {
+    
+  } else {
+    
+  }
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.TensorDescription.allocation_description)
+}
+void TensorDescription::clear_allocation_description() {
+  if (GetArenaNoVirtual() == NULL && allocation_description_ != NULL) {
+    delete allocation_description_;
+  }
+  allocation_description_ = NULL;
+}
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int TensorDescription::kDtypeFieldNumber;
+const int TensorDescription::kShapeFieldNumber;
+const int TensorDescription::kAllocationDescriptionFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+TensorDescription::TensorDescription()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.TensorDescription)
+}
+TensorDescription::TensorDescription(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.TensorDescription)
+}
+TensorDescription::TensorDescription(const TensorDescription& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  if (from.has_shape()) {
+    shape_ = new ::tensorflow::TensorShapeProto(*from.shape_);
+  } else {
+    shape_ = NULL;
+  }
+  if (from.has_allocation_description()) {
+    allocation_description_ = new ::tensorflow::AllocationDescription(*from.allocation_description_);
+  } else {
+    allocation_description_ = NULL;
+  }
+  dtype_ = from.dtype_;
+  // @@protoc_insertion_point(copy_constructor:tensorflow.TensorDescription)
+}
+
+void TensorDescription::SharedCtor() {
+  ::google::protobuf::internal::InitSCC(
+      &scc_info_TensorDescription_tensorflow_2fcore_2fframework_2ftensor_5fdescription_2eproto.base);
+  ::memset(&shape_, 0, static_cast<size_t>(
+      reinterpret_cast<char*>(&dtype_) -
+      reinterpret_cast<char*>(&shape_)) + sizeof(dtype_));
+}
+
+TensorDescription::~TensorDescription() {
+  // @@protoc_insertion_point(destructor:tensorflow.TensorDescription)
+  SharedDtor();
+}
+
+void TensorDescription::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+  if (this != internal_default_instance()) delete shape_;
+  if (this != internal_default_instance()) delete allocation_description_;
+}
+
+void TensorDescription::ArenaDtor(void* object) {
+  TensorDescription* _this = reinterpret_cast< TensorDescription* >(object);
+  (void)_this;
+}
+void TensorDescription::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void TensorDescription::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const TensorDescription& TensorDescription::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_TensorDescription_tensorflow_2fcore_2fframework_2ftensor_5fdescription_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void TensorDescription::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.TensorDescription)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  if (GetArenaNoVirtual() == NULL && shape_ != NULL) {
+    delete shape_;
+  }
+  shape_ = NULL;
+  if (GetArenaNoVirtual() == NULL && allocation_description_ != NULL) {
+    delete allocation_description_;
+  }
+  allocation_description_ = NULL;
+  dtype_ = 0;
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* TensorDescription::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<TensorDescription*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // .tensorflow.DataType dtype = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 8) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::tensorflow::DataType value = static_cast<::tensorflow::DataType>(val);
+        msg->set_dtype(value);
+        break;
+      }
+      // .tensorflow.TensorShapeProto shape = 2;
+      case 2: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 18) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        parser_till_end = ::tensorflow::TensorShapeProto::_InternalParse;
+        object = msg->mutable_shape();
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                       ptr, newend);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+        ptr = newend;
+        break;
+      }
+      // .tensorflow.AllocationDescription allocation_description = 4;
+      case 4: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 34) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        parser_till_end = ::tensorflow::AllocationDescription::_InternalParse;
+        object = msg->mutable_allocation_description();
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                       ptr, newend);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+        ptr = newend;
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool TensorDescription::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.TensorDescription)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // .tensorflow.DataType dtype = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (8 & 0xFF)) {
+          int value = 0;
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>(
+                 input, &value)));
+          set_dtype(static_cast< ::tensorflow::DataType >(value));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // .tensorflow.TensorShapeProto shape = 2;
+      case 2: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (18 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+               input, mutable_shape()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // .tensorflow.AllocationDescription allocation_description = 4;
+      case 4: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (34 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+               input, mutable_allocation_description()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.TensorDescription)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.TensorDescription)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void TensorDescription::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.TensorDescription)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // .tensorflow.DataType dtype = 1;
+  if (this->dtype() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteEnum(
+      1, this->dtype(), output);
+  }
+
+  // .tensorflow.TensorShapeProto shape = 2;
+  if (this->has_shape()) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      2, HasBitSetters::shape(this), output);
+  }
+
+  // .tensorflow.AllocationDescription allocation_description = 4;
+  if (this->has_allocation_description()) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      4, HasBitSetters::allocation_description(this), output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.TensorDescription)
+}
+
+::google::protobuf::uint8* TensorDescription::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.TensorDescription)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // .tensorflow.DataType dtype = 1;
+  if (this->dtype() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteEnumToArray(
+      1, this->dtype(), target);
+  }
+
+  // .tensorflow.TensorShapeProto shape = 2;
+  if (this->has_shape()) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        2, HasBitSetters::shape(this), deterministic, target);
+  }
+
+  // .tensorflow.AllocationDescription allocation_description = 4;
+  if (this->has_allocation_description()) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        4, HasBitSetters::allocation_description(this), deterministic, target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.TensorDescription)
+  return target;
+}
+
+size_t TensorDescription::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.TensorDescription)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // .tensorflow.TensorShapeProto shape = 2;
+  if (this->has_shape()) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::MessageSize(
+        *shape_);
+  }
+
+  // .tensorflow.AllocationDescription allocation_description = 4;
+  if (this->has_allocation_description()) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::MessageSize(
+        *allocation_description_);
+  }
+
+  // .tensorflow.DataType dtype = 1;
+  if (this->dtype() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::EnumSize(this->dtype());
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void TensorDescription::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.TensorDescription)
+  GOOGLE_DCHECK_NE(&from, this);
+  const TensorDescription* source =
+      ::google::protobuf::DynamicCastToGenerated<TensorDescription>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.TensorDescription)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.TensorDescription)
+    MergeFrom(*source);
+  }
+}
+
+void TensorDescription::MergeFrom(const TensorDescription& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.TensorDescription)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  if (from.has_shape()) {
+    mutable_shape()->::tensorflow::TensorShapeProto::MergeFrom(from.shape());
+  }
+  if (from.has_allocation_description()) {
+    mutable_allocation_description()->::tensorflow::AllocationDescription::MergeFrom(from.allocation_description());
+  }
+  if (from.dtype() != 0) {
+    set_dtype(from.dtype());
+  }
+}
+
+void TensorDescription::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.TensorDescription)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void TensorDescription::CopyFrom(const TensorDescription& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.TensorDescription)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool TensorDescription::IsInitialized() const {
+  return true;
+}
+
+void TensorDescription::Swap(TensorDescription* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    TensorDescription* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void TensorDescription::UnsafeArenaSwap(TensorDescription* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void TensorDescription::InternalSwap(TensorDescription* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  swap(shape_, other->shape_);
+  swap(allocation_description_, other->allocation_description_);
+  swap(dtype_, other->dtype_);
+}
+
+::google::protobuf::Metadata TensorDescription::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fframework_2ftensor_5fdescription_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fframework_2ftensor_5fdescription_2eproto[kIndexInFileMessages];
+}
+
+
+// @@protoc_insertion_point(namespace_scope)
+}  // namespace tensorflow
+namespace google {
+namespace protobuf {
+template<> PROTOBUF_NOINLINE ::tensorflow::TensorDescription* Arena::CreateMaybeMessage< ::tensorflow::TensorDescription >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::TensorDescription >(arena);
+}
+}  // namespace protobuf
+}  // namespace google
+
+// @@protoc_insertion_point(global_scope)
+#include <google/protobuf/port_undef.inc>
diff --git a/tensorflow/core/framework/tensor_description.pb.h b/tensorflow/core/framework/tensor_description.pb.h
new file mode 100644 (file)
index 0000000..ae3b27d
--- /dev/null
@@ -0,0 +1,366 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: tensorflow/core/framework/tensor_description.proto
+
+#ifndef PROTOBUF_INCLUDED_tensorflow_2fcore_2fframework_2ftensor_5fdescription_2eproto
+#define PROTOBUF_INCLUDED_tensorflow_2fcore_2fframework_2ftensor_5fdescription_2eproto
+
+#include <limits>
+#include <string>
+
+#include <google/protobuf/port_def.inc>
+#if PROTOBUF_VERSION < 3006001
+#error This file was generated by a newer version of protoc which is
+#error incompatible with your Protocol Buffer headers. Please update
+#error your headers.
+#endif
+#if 3006001 < PROTOBUF_MIN_PROTOC_VERSION
+#error This file was generated by an older version of protoc which is
+#error incompatible with your Protocol Buffer headers. Please
+#error regenerate this file with a newer version of protoc.
+#endif
+
+#include <google/protobuf/port_undef.inc>
+#include <google/protobuf/io/coded_stream.h>
+#include <google/protobuf/arena.h>
+#include <google/protobuf/arenastring.h>
+#include <google/protobuf/generated_message_table_driven.h>
+#include <google/protobuf/generated_message_util.h>
+#include <google/protobuf/inlined_string_field.h>
+#include <google/protobuf/metadata.h>
+#include <google/protobuf/message.h>
+#include <google/protobuf/repeated_field.h>  // IWYU pragma: export
+#include <google/protobuf/extension_set.h>  // IWYU pragma: export
+#include <google/protobuf/unknown_field_set.h>
+#include "tensorflow/core/framework/types.pb.h"
+#include "tensorflow/core/framework/tensor_shape.pb.h"
+#include "tensorflow/core/framework/allocation_description.pb.h"
+// @@protoc_insertion_point(includes)
+#include <google/protobuf/port_def.inc>
+#define PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fframework_2ftensor_5fdescription_2eproto
+
+// Internal implementation detail -- do not use these members.
+struct TableStruct_tensorflow_2fcore_2fframework_2ftensor_5fdescription_2eproto {
+  static const ::google::protobuf::internal::ParseTableField entries[]
+    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
+  static const ::google::protobuf::internal::AuxillaryParseTableField aux[]
+    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
+  static const ::google::protobuf::internal::ParseTable schema[1]
+    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
+  static const ::google::protobuf::internal::FieldMetadata field_metadata[];
+  static const ::google::protobuf::internal::SerializationTable serialization_table[];
+  static const ::google::protobuf::uint32 offsets[];
+};
+void AddDescriptors_tensorflow_2fcore_2fframework_2ftensor_5fdescription_2eproto();
+namespace tensorflow {
+class TensorDescription;
+class TensorDescriptionDefaultTypeInternal;
+extern TensorDescriptionDefaultTypeInternal _TensorDescription_default_instance_;
+}  // namespace tensorflow
+namespace google {
+namespace protobuf {
+template<> ::tensorflow::TensorDescription* Arena::CreateMaybeMessage<::tensorflow::TensorDescription>(Arena*);
+}  // namespace protobuf
+}  // namespace google
+namespace tensorflow {
+
+// ===================================================================
+
+class TensorDescription : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.TensorDescription) */ {
+ public:
+  TensorDescription();
+  virtual ~TensorDescription();
+
+  TensorDescription(const TensorDescription& from);
+
+  inline TensorDescription& operator=(const TensorDescription& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  TensorDescription(TensorDescription&& from) noexcept
+    : TensorDescription() {
+    *this = ::std::move(from);
+  }
+
+  inline TensorDescription& operator=(TensorDescription&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const TensorDescription& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const TensorDescription* internal_default_instance() {
+    return reinterpret_cast<const TensorDescription*>(
+               &_TensorDescription_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    0;
+
+  void UnsafeArenaSwap(TensorDescription* other);
+  void Swap(TensorDescription* other);
+  friend void swap(TensorDescription& a, TensorDescription& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline TensorDescription* New() const final {
+    return CreateMaybeMessage<TensorDescription>(NULL);
+  }
+
+  TensorDescription* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<TensorDescription>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const TensorDescription& from);
+  void MergeFrom(const TensorDescription& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(TensorDescription* other);
+  protected:
+  explicit TensorDescription(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // .tensorflow.TensorShapeProto shape = 2;
+  bool has_shape() const;
+  void clear_shape();
+  static const int kShapeFieldNumber = 2;
+  const ::tensorflow::TensorShapeProto& shape() const;
+  ::tensorflow::TensorShapeProto* release_shape();
+  ::tensorflow::TensorShapeProto* mutable_shape();
+  void set_allocated_shape(::tensorflow::TensorShapeProto* shape);
+  void unsafe_arena_set_allocated_shape(
+      ::tensorflow::TensorShapeProto* shape);
+  ::tensorflow::TensorShapeProto* unsafe_arena_release_shape();
+
+  // .tensorflow.AllocationDescription allocation_description = 4;
+  bool has_allocation_description() const;
+  void clear_allocation_description();
+  static const int kAllocationDescriptionFieldNumber = 4;
+  const ::tensorflow::AllocationDescription& allocation_description() const;
+  ::tensorflow::AllocationDescription* release_allocation_description();
+  ::tensorflow::AllocationDescription* mutable_allocation_description();
+  void set_allocated_allocation_description(::tensorflow::AllocationDescription* allocation_description);
+  void unsafe_arena_set_allocated_allocation_description(
+      ::tensorflow::AllocationDescription* allocation_description);
+  ::tensorflow::AllocationDescription* unsafe_arena_release_allocation_description();
+
+  // .tensorflow.DataType dtype = 1;
+  void clear_dtype();
+  static const int kDtypeFieldNumber = 1;
+  ::tensorflow::DataType dtype() const;
+  void set_dtype(::tensorflow::DataType value);
+
+  // @@protoc_insertion_point(class_scope:tensorflow.TensorDescription)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  ::tensorflow::TensorShapeProto* shape_;
+  ::tensorflow::AllocationDescription* allocation_description_;
+  int dtype_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fframework_2ftensor_5fdescription_2eproto;
+};
+// ===================================================================
+
+
+// ===================================================================
+
+#ifdef __GNUC__
+  #pragma GCC diagnostic push
+  #pragma GCC diagnostic ignored "-Wstrict-aliasing"
+#endif  // __GNUC__
+// TensorDescription
+
+// .tensorflow.DataType dtype = 1;
+inline void TensorDescription::clear_dtype() {
+  dtype_ = 0;
+}
+inline ::tensorflow::DataType TensorDescription::dtype() const {
+  // @@protoc_insertion_point(field_get:tensorflow.TensorDescription.dtype)
+  return static_cast< ::tensorflow::DataType >(dtype_);
+}
+inline void TensorDescription::set_dtype(::tensorflow::DataType value) {
+  
+  dtype_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.TensorDescription.dtype)
+}
+
+// .tensorflow.TensorShapeProto shape = 2;
+inline bool TensorDescription::has_shape() const {
+  return this != internal_default_instance() && shape_ != NULL;
+}
+inline const ::tensorflow::TensorShapeProto& TensorDescription::shape() const {
+  const ::tensorflow::TensorShapeProto* p = shape_;
+  // @@protoc_insertion_point(field_get:tensorflow.TensorDescription.shape)
+  return p != NULL ? *p : *reinterpret_cast<const ::tensorflow::TensorShapeProto*>(
+      &::tensorflow::_TensorShapeProto_default_instance_);
+}
+inline ::tensorflow::TensorShapeProto* TensorDescription::release_shape() {
+  // @@protoc_insertion_point(field_release:tensorflow.TensorDescription.shape)
+  
+  ::tensorflow::TensorShapeProto* temp = shape_;
+  if (GetArenaNoVirtual() != NULL) {
+    temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
+  }
+  shape_ = NULL;
+  return temp;
+}
+inline ::tensorflow::TensorShapeProto* TensorDescription::unsafe_arena_release_shape() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.TensorDescription.shape)
+  
+  ::tensorflow::TensorShapeProto* temp = shape_;
+  shape_ = NULL;
+  return temp;
+}
+inline ::tensorflow::TensorShapeProto* TensorDescription::mutable_shape() {
+  
+  if (shape_ == NULL) {
+    auto* p = CreateMaybeMessage<::tensorflow::TensorShapeProto>(GetArenaNoVirtual());
+    shape_ = p;
+  }
+  // @@protoc_insertion_point(field_mutable:tensorflow.TensorDescription.shape)
+  return shape_;
+}
+inline void TensorDescription::set_allocated_shape(::tensorflow::TensorShapeProto* shape) {
+  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
+  if (message_arena == NULL) {
+    delete reinterpret_cast< ::google::protobuf::MessageLite*>(shape_);
+  }
+  if (shape) {
+    ::google::protobuf::Arena* submessage_arena =
+      reinterpret_cast<::google::protobuf::MessageLite*>(shape)->GetArena();
+    if (message_arena != submessage_arena) {
+      shape = ::google::protobuf::internal::GetOwnedMessage(
+          message_arena, shape, submessage_arena);
+    }
+    
+  } else {
+    
+  }
+  shape_ = shape;
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.TensorDescription.shape)
+}
+
+// .tensorflow.AllocationDescription allocation_description = 4;
+inline bool TensorDescription::has_allocation_description() const {
+  return this != internal_default_instance() && allocation_description_ != NULL;
+}
+inline const ::tensorflow::AllocationDescription& TensorDescription::allocation_description() const {
+  const ::tensorflow::AllocationDescription* p = allocation_description_;
+  // @@protoc_insertion_point(field_get:tensorflow.TensorDescription.allocation_description)
+  return p != NULL ? *p : *reinterpret_cast<const ::tensorflow::AllocationDescription*>(
+      &::tensorflow::_AllocationDescription_default_instance_);
+}
+inline ::tensorflow::AllocationDescription* TensorDescription::release_allocation_description() {
+  // @@protoc_insertion_point(field_release:tensorflow.TensorDescription.allocation_description)
+  
+  ::tensorflow::AllocationDescription* temp = allocation_description_;
+  if (GetArenaNoVirtual() != NULL) {
+    temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
+  }
+  allocation_description_ = NULL;
+  return temp;
+}
+inline ::tensorflow::AllocationDescription* TensorDescription::unsafe_arena_release_allocation_description() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.TensorDescription.allocation_description)
+  
+  ::tensorflow::AllocationDescription* temp = allocation_description_;
+  allocation_description_ = NULL;
+  return temp;
+}
+inline ::tensorflow::AllocationDescription* TensorDescription::mutable_allocation_description() {
+  
+  if (allocation_description_ == NULL) {
+    auto* p = CreateMaybeMessage<::tensorflow::AllocationDescription>(GetArenaNoVirtual());
+    allocation_description_ = p;
+  }
+  // @@protoc_insertion_point(field_mutable:tensorflow.TensorDescription.allocation_description)
+  return allocation_description_;
+}
+inline void TensorDescription::set_allocated_allocation_description(::tensorflow::AllocationDescription* allocation_description) {
+  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
+  if (message_arena == NULL) {
+    delete reinterpret_cast< ::google::protobuf::MessageLite*>(allocation_description_);
+  }
+  if (allocation_description) {
+    ::google::protobuf::Arena* submessage_arena =
+      reinterpret_cast<::google::protobuf::MessageLite*>(allocation_description)->GetArena();
+    if (message_arena != submessage_arena) {
+      allocation_description = ::google::protobuf::internal::GetOwnedMessage(
+          message_arena, allocation_description, submessage_arena);
+    }
+    
+  } else {
+    
+  }
+  allocation_description_ = allocation_description;
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.TensorDescription.allocation_description)
+}
+
+#ifdef __GNUC__
+  #pragma GCC diagnostic pop
+#endif  // __GNUC__
+
+// @@protoc_insertion_point(namespace_scope)
+
+}  // namespace tensorflow
+
+// @@protoc_insertion_point(global_scope)
+
+#include <google/protobuf/port_undef.inc>
+#endif  // PROTOBUF_INCLUDED_tensorflow_2fcore_2fframework_2ftensor_5fdescription_2eproto
diff --git a/tensorflow/core/framework/tensor_description.proto b/tensorflow/core/framework/tensor_description.proto
new file mode 100644 (file)
index 0000000..4c23c7e
--- /dev/null
@@ -0,0 +1,22 @@
+syntax = "proto3";
+
+package tensorflow;
+option cc_enable_arenas = true;
+option java_outer_classname = "TensorDescriptionProtos";
+option java_multiple_files = true;
+option java_package = "org.tensorflow.framework";
+option go_package = "github.com/tensorflow/tensorflow/tensorflow/go/core/framework";
+import "tensorflow/core/framework/types.proto";
+import "tensorflow/core/framework/tensor_shape.proto";
+import "tensorflow/core/framework/allocation_description.proto";
+
+message TensorDescription {
+  // Data type of tensor elements
+  DataType dtype = 1;
+
+  // Shape of the tensor.
+  TensorShapeProto shape = 2;
+
+  // Information about the size and allocator used for the data
+  AllocationDescription allocation_description = 4;
+};
diff --git a/tensorflow/core/framework/tensor_shape.pb.cc b/tensorflow/core/framework/tensor_shape.pb.cc
new file mode 100644 (file)
index 0000000..0817b41
--- /dev/null
@@ -0,0 +1,877 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: tensorflow/core/framework/tensor_shape.proto
+
+#include "tensorflow/core/framework/tensor_shape.pb.h"
+
+#include <algorithm>
+
+#include <google/protobuf/stubs/common.h>
+#include <google/protobuf/io/coded_stream.h>
+#include <google/protobuf/extension_set.h>
+#include <google/protobuf/wire_format_lite_inl.h>
+#include <google/protobuf/descriptor.h>
+#include <google/protobuf/generated_message_reflection.h>
+#include <google/protobuf/reflection_ops.h>
+#include <google/protobuf/wire_format.h>
+// @@protoc_insertion_point(includes)
+#include <google/protobuf/port_def.inc>
+
+extern PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fframework_2ftensor_5fshape_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_TensorShapeProto_Dim_tensorflow_2fcore_2fframework_2ftensor_5fshape_2eproto;
+namespace tensorflow {
+class TensorShapeProto_DimDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<TensorShapeProto_Dim> _instance;
+} _TensorShapeProto_Dim_default_instance_;
+class TensorShapeProtoDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<TensorShapeProto> _instance;
+} _TensorShapeProto_default_instance_;
+}  // namespace tensorflow
+static void InitDefaultsTensorShapeProto_Dim_tensorflow_2fcore_2fframework_2ftensor_5fshape_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_TensorShapeProto_Dim_default_instance_;
+    new (ptr) ::tensorflow::TensorShapeProto_Dim();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::TensorShapeProto_Dim::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<0> scc_info_TensorShapeProto_Dim_tensorflow_2fcore_2fframework_2ftensor_5fshape_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsTensorShapeProto_Dim_tensorflow_2fcore_2fframework_2ftensor_5fshape_2eproto}, {}};
+
+static void InitDefaultsTensorShapeProto_tensorflow_2fcore_2fframework_2ftensor_5fshape_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_TensorShapeProto_default_instance_;
+    new (ptr) ::tensorflow::TensorShapeProto();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::TensorShapeProto::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<1> scc_info_TensorShapeProto_tensorflow_2fcore_2fframework_2ftensor_5fshape_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsTensorShapeProto_tensorflow_2fcore_2fframework_2ftensor_5fshape_2eproto}, {
+      &scc_info_TensorShapeProto_Dim_tensorflow_2fcore_2fframework_2ftensor_5fshape_2eproto.base,}};
+
+void InitDefaults_tensorflow_2fcore_2fframework_2ftensor_5fshape_2eproto() {
+  ::google::protobuf::internal::InitSCC(&scc_info_TensorShapeProto_Dim_tensorflow_2fcore_2fframework_2ftensor_5fshape_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_TensorShapeProto_tensorflow_2fcore_2fframework_2ftensor_5fshape_2eproto.base);
+}
+
+::google::protobuf::Metadata file_level_metadata_tensorflow_2fcore_2fframework_2ftensor_5fshape_2eproto[2];
+constexpr ::google::protobuf::EnumDescriptor const** file_level_enum_descriptors_tensorflow_2fcore_2fframework_2ftensor_5fshape_2eproto = nullptr;
+constexpr ::google::protobuf::ServiceDescriptor const** file_level_service_descriptors_tensorflow_2fcore_2fframework_2ftensor_5fshape_2eproto = nullptr;
+
+const ::google::protobuf::uint32 TableStruct_tensorflow_2fcore_2fframework_2ftensor_5fshape_2eproto::offsets[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = {
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::TensorShapeProto_Dim, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::TensorShapeProto_Dim, size_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::TensorShapeProto_Dim, name_),
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::TensorShapeProto, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::TensorShapeProto, dim_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::TensorShapeProto, unknown_rank_),
+};
+static const ::google::protobuf::internal::MigrationSchema schemas[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = {
+  { 0, -1, sizeof(::tensorflow::TensorShapeProto_Dim)},
+  { 7, -1, sizeof(::tensorflow::TensorShapeProto)},
+};
+
+static ::google::protobuf::Message const * const file_default_instances[] = {
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_TensorShapeProto_Dim_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_TensorShapeProto_default_instance_),
+};
+
+::google::protobuf::internal::AssignDescriptorsTable assign_descriptors_table_tensorflow_2fcore_2fframework_2ftensor_5fshape_2eproto = {
+  {}, AddDescriptors_tensorflow_2fcore_2fframework_2ftensor_5fshape_2eproto, "tensorflow/core/framework/tensor_shape.proto", schemas,
+  file_default_instances, TableStruct_tensorflow_2fcore_2fframework_2ftensor_5fshape_2eproto::offsets,
+  file_level_metadata_tensorflow_2fcore_2fframework_2ftensor_5fshape_2eproto, 2, file_level_enum_descriptors_tensorflow_2fcore_2fframework_2ftensor_5fshape_2eproto, file_level_service_descriptors_tensorflow_2fcore_2fframework_2ftensor_5fshape_2eproto,
+};
+
+::google::protobuf::internal::DescriptorTable descriptor_table_tensorflow_2fcore_2fframework_2ftensor_5fshape_2eproto = {
+  false, InitDefaults_tensorflow_2fcore_2fframework_2ftensor_5fshape_2eproto, 
+  "\n,tensorflow/core/framework/tensor_shape"
+  ".proto\022\ntensorflow\"z\n\020TensorShapeProto\022-"
+  "\n\003dim\030\002 \003(\0132 .tensorflow.TensorShapeProt"
+  "o.Dim\022\024\n\014unknown_rank\030\003 \001(\010\032!\n\003Dim\022\014\n\004si"
+  "ze\030\001 \001(\003\022\014\n\004name\030\002 \001(\tBq\n\030org.tensorflow"
+  ".frameworkB\021TensorShapeProtosP\001Z=github."
+  "com/tensorflow/tensorflow/tensorflow/go/"
+  "core/framework\370\001\001b\006proto3"
+,
+  "tensorflow/core/framework/tensor_shape.proto", &assign_descriptors_table_tensorflow_2fcore_2fframework_2ftensor_5fshape_2eproto, 305,
+};
+
+void AddDescriptors_tensorflow_2fcore_2fframework_2ftensor_5fshape_2eproto() {
+  static constexpr ::google::protobuf::internal::InitFunc deps[1] =
+  {
+  };
+ ::google::protobuf::internal::AddDescriptors(&descriptor_table_tensorflow_2fcore_2fframework_2ftensor_5fshape_2eproto, deps, 0);
+}
+
+// Force running AddDescriptors() at dynamic initialization time.
+static bool dynamic_init_dummy_tensorflow_2fcore_2fframework_2ftensor_5fshape_2eproto = []() { AddDescriptors_tensorflow_2fcore_2fframework_2ftensor_5fshape_2eproto(); return true; }();
+namespace tensorflow {
+
+// ===================================================================
+
+void TensorShapeProto_Dim::InitAsDefaultInstance() {
+}
+class TensorShapeProto_Dim::HasBitSetters {
+ public:
+};
+
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int TensorShapeProto_Dim::kSizeFieldNumber;
+const int TensorShapeProto_Dim::kNameFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+TensorShapeProto_Dim::TensorShapeProto_Dim()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.TensorShapeProto.Dim)
+}
+TensorShapeProto_Dim::TensorShapeProto_Dim(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.TensorShapeProto.Dim)
+}
+TensorShapeProto_Dim::TensorShapeProto_Dim(const TensorShapeProto_Dim& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.name().size() > 0) {
+    name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.name(),
+      GetArenaNoVirtual());
+  }
+  size_ = from.size_;
+  // @@protoc_insertion_point(copy_constructor:tensorflow.TensorShapeProto.Dim)
+}
+
+void TensorShapeProto_Dim::SharedCtor() {
+  ::google::protobuf::internal::InitSCC(
+      &scc_info_TensorShapeProto_Dim_tensorflow_2fcore_2fframework_2ftensor_5fshape_2eproto.base);
+  name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  size_ = PROTOBUF_LONGLONG(0);
+}
+
+TensorShapeProto_Dim::~TensorShapeProto_Dim() {
+  // @@protoc_insertion_point(destructor:tensorflow.TensorShapeProto.Dim)
+  SharedDtor();
+}
+
+void TensorShapeProto_Dim::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+  name_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+
+void TensorShapeProto_Dim::ArenaDtor(void* object) {
+  TensorShapeProto_Dim* _this = reinterpret_cast< TensorShapeProto_Dim* >(object);
+  (void)_this;
+}
+void TensorShapeProto_Dim::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void TensorShapeProto_Dim::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const TensorShapeProto_Dim& TensorShapeProto_Dim::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_TensorShapeProto_Dim_tensorflow_2fcore_2fframework_2ftensor_5fshape_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void TensorShapeProto_Dim::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.TensorShapeProto.Dim)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  name_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+  size_ = PROTOBUF_LONGLONG(0);
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* TensorShapeProto_Dim::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<TensorShapeProto_Dim*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // int64 size = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 8) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::google::protobuf::int64 value = val;
+        msg->set_size(value);
+        break;
+      }
+      // string name = 2;
+      case 2: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 18) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("tensorflow.TensorShapeProto.Dim.name");
+        parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+        ::std::string* str = msg->mutable_name();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool TensorShapeProto_Dim::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.TensorShapeProto.Dim)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // int64 size = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (8 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>(
+                 input, &size_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // string name = 2;
+      case 2: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (18 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_name()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->name().data(), static_cast<int>(this->name().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.TensorShapeProto.Dim.name"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.TensorShapeProto.Dim)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.TensorShapeProto.Dim)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void TensorShapeProto_Dim::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.TensorShapeProto.Dim)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // int64 size = 1;
+  if (this->size() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt64(1, this->size(), output);
+  }
+
+  // string name = 2;
+  if (this->name().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->name().data(), static_cast<int>(this->name().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.TensorShapeProto.Dim.name");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      2, this->name(), output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.TensorShapeProto.Dim)
+}
+
+::google::protobuf::uint8* TensorShapeProto_Dim::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.TensorShapeProto.Dim)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // int64 size = 1;
+  if (this->size() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt64ToArray(1, this->size(), target);
+  }
+
+  // string name = 2;
+  if (this->name().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->name().data(), static_cast<int>(this->name().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.TensorShapeProto.Dim.name");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        2, this->name(), target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.TensorShapeProto.Dim)
+  return target;
+}
+
+size_t TensorShapeProto_Dim::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.TensorShapeProto.Dim)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // string name = 2;
+  if (this->name().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->name());
+  }
+
+  // int64 size = 1;
+  if (this->size() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::Int64Size(
+        this->size());
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void TensorShapeProto_Dim::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.TensorShapeProto.Dim)
+  GOOGLE_DCHECK_NE(&from, this);
+  const TensorShapeProto_Dim* source =
+      ::google::protobuf::DynamicCastToGenerated<TensorShapeProto_Dim>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.TensorShapeProto.Dim)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.TensorShapeProto.Dim)
+    MergeFrom(*source);
+  }
+}
+
+void TensorShapeProto_Dim::MergeFrom(const TensorShapeProto_Dim& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.TensorShapeProto.Dim)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  if (from.name().size() > 0) {
+    set_name(from.name());
+  }
+  if (from.size() != 0) {
+    set_size(from.size());
+  }
+}
+
+void TensorShapeProto_Dim::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.TensorShapeProto.Dim)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void TensorShapeProto_Dim::CopyFrom(const TensorShapeProto_Dim& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.TensorShapeProto.Dim)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool TensorShapeProto_Dim::IsInitialized() const {
+  return true;
+}
+
+void TensorShapeProto_Dim::Swap(TensorShapeProto_Dim* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    TensorShapeProto_Dim* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void TensorShapeProto_Dim::UnsafeArenaSwap(TensorShapeProto_Dim* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void TensorShapeProto_Dim::InternalSwap(TensorShapeProto_Dim* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  name_.Swap(&other->name_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+  swap(size_, other->size_);
+}
+
+::google::protobuf::Metadata TensorShapeProto_Dim::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fframework_2ftensor_5fshape_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fframework_2ftensor_5fshape_2eproto[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+void TensorShapeProto::InitAsDefaultInstance() {
+}
+class TensorShapeProto::HasBitSetters {
+ public:
+};
+
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int TensorShapeProto::kDimFieldNumber;
+const int TensorShapeProto::kUnknownRankFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+TensorShapeProto::TensorShapeProto()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.TensorShapeProto)
+}
+TensorShapeProto::TensorShapeProto(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena),
+  dim_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.TensorShapeProto)
+}
+TensorShapeProto::TensorShapeProto(const TensorShapeProto& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL),
+      dim_(from.dim_) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  unknown_rank_ = from.unknown_rank_;
+  // @@protoc_insertion_point(copy_constructor:tensorflow.TensorShapeProto)
+}
+
+void TensorShapeProto::SharedCtor() {
+  ::google::protobuf::internal::InitSCC(
+      &scc_info_TensorShapeProto_tensorflow_2fcore_2fframework_2ftensor_5fshape_2eproto.base);
+  unknown_rank_ = false;
+}
+
+TensorShapeProto::~TensorShapeProto() {
+  // @@protoc_insertion_point(destructor:tensorflow.TensorShapeProto)
+  SharedDtor();
+}
+
+void TensorShapeProto::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+}
+
+void TensorShapeProto::ArenaDtor(void* object) {
+  TensorShapeProto* _this = reinterpret_cast< TensorShapeProto* >(object);
+  (void)_this;
+}
+void TensorShapeProto::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void TensorShapeProto::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const TensorShapeProto& TensorShapeProto::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_TensorShapeProto_tensorflow_2fcore_2fframework_2ftensor_5fshape_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void TensorShapeProto::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.TensorShapeProto)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  dim_.Clear();
+  unknown_rank_ = false;
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* TensorShapeProto::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<TensorShapeProto*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // repeated .tensorflow.TensorShapeProto.Dim dim = 2;
+      case 2: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 18) goto handle_unusual;
+        do {
+          ptr = Varint::Parse32Inline(ptr, &size);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          parser_till_end = ::tensorflow::TensorShapeProto_Dim::_InternalParse;
+          object = msg->add_dim();
+          if (size > end - ptr) goto len_delim_till_end;
+          auto newend = ptr + size;
+          bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                         ptr, newend);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          ptr = newend;
+          if (ptr >= end) break;
+        } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 18 && (ptr += 1));
+        break;
+      }
+      // bool unknown_rank = 3;
+      case 3: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 24) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        bool value = val;
+        msg->set_unknown_rank(value);
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool TensorShapeProto::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.TensorShapeProto)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // repeated .tensorflow.TensorShapeProto.Dim dim = 2;
+      case 2: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (18 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+                input, add_dim()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // bool unknown_rank = 3;
+      case 3: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (24 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
+                 input, &unknown_rank_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.TensorShapeProto)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.TensorShapeProto)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void TensorShapeProto::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.TensorShapeProto)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // repeated .tensorflow.TensorShapeProto.Dim dim = 2;
+  for (unsigned int i = 0,
+      n = static_cast<unsigned int>(this->dim_size()); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      2,
+      this->dim(static_cast<int>(i)),
+      output);
+  }
+
+  // bool unknown_rank = 3;
+  if (this->unknown_rank() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteBool(3, this->unknown_rank(), output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.TensorShapeProto)
+}
+
+::google::protobuf::uint8* TensorShapeProto::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.TensorShapeProto)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // repeated .tensorflow.TensorShapeProto.Dim dim = 2;
+  for (unsigned int i = 0,
+      n = static_cast<unsigned int>(this->dim_size()); i < n; i++) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        2, this->dim(static_cast<int>(i)), deterministic, target);
+  }
+
+  // bool unknown_rank = 3;
+  if (this->unknown_rank() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(3, this->unknown_rank(), target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.TensorShapeProto)
+  return target;
+}
+
+size_t TensorShapeProto::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.TensorShapeProto)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // repeated .tensorflow.TensorShapeProto.Dim dim = 2;
+  {
+    unsigned int count = static_cast<unsigned int>(this->dim_size());
+    total_size += 1UL * count;
+    for (unsigned int i = 0; i < count; i++) {
+      total_size +=
+        ::google::protobuf::internal::WireFormatLite::MessageSize(
+          this->dim(static_cast<int>(i)));
+    }
+  }
+
+  // bool unknown_rank = 3;
+  if (this->unknown_rank() != 0) {
+    total_size += 1 + 1;
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void TensorShapeProto::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.TensorShapeProto)
+  GOOGLE_DCHECK_NE(&from, this);
+  const TensorShapeProto* source =
+      ::google::protobuf::DynamicCastToGenerated<TensorShapeProto>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.TensorShapeProto)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.TensorShapeProto)
+    MergeFrom(*source);
+  }
+}
+
+void TensorShapeProto::MergeFrom(const TensorShapeProto& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.TensorShapeProto)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  dim_.MergeFrom(from.dim_);
+  if (from.unknown_rank() != 0) {
+    set_unknown_rank(from.unknown_rank());
+  }
+}
+
+void TensorShapeProto::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.TensorShapeProto)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void TensorShapeProto::CopyFrom(const TensorShapeProto& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.TensorShapeProto)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool TensorShapeProto::IsInitialized() const {
+  return true;
+}
+
+void TensorShapeProto::Swap(TensorShapeProto* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    TensorShapeProto* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void TensorShapeProto::UnsafeArenaSwap(TensorShapeProto* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void TensorShapeProto::InternalSwap(TensorShapeProto* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  CastToBase(&dim_)->InternalSwap(CastToBase(&other->dim_));
+  swap(unknown_rank_, other->unknown_rank_);
+}
+
+::google::protobuf::Metadata TensorShapeProto::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fframework_2ftensor_5fshape_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fframework_2ftensor_5fshape_2eproto[kIndexInFileMessages];
+}
+
+
+// @@protoc_insertion_point(namespace_scope)
+}  // namespace tensorflow
+namespace google {
+namespace protobuf {
+template<> PROTOBUF_NOINLINE ::tensorflow::TensorShapeProto_Dim* Arena::CreateMaybeMessage< ::tensorflow::TensorShapeProto_Dim >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::TensorShapeProto_Dim >(arena);
+}
+template<> PROTOBUF_NOINLINE ::tensorflow::TensorShapeProto* Arena::CreateMaybeMessage< ::tensorflow::TensorShapeProto >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::TensorShapeProto >(arena);
+}
+}  // namespace protobuf
+}  // namespace google
+
+// @@protoc_insertion_point(global_scope)
+#include <google/protobuf/port_undef.inc>
diff --git a/tensorflow/core/framework/tensor_shape.pb.h b/tensorflow/core/framework/tensor_shape.pb.h
new file mode 100644 (file)
index 0000000..eb43e1b
--- /dev/null
@@ -0,0 +1,519 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: tensorflow/core/framework/tensor_shape.proto
+
+#ifndef PROTOBUF_INCLUDED_tensorflow_2fcore_2fframework_2ftensor_5fshape_2eproto
+#define PROTOBUF_INCLUDED_tensorflow_2fcore_2fframework_2ftensor_5fshape_2eproto
+
+#include <limits>
+#include <string>
+
+#include <google/protobuf/port_def.inc>
+#if PROTOBUF_VERSION < 3006001
+#error This file was generated by a newer version of protoc which is
+#error incompatible with your Protocol Buffer headers. Please update
+#error your headers.
+#endif
+#if 3006001 < PROTOBUF_MIN_PROTOC_VERSION
+#error This file was generated by an older version of protoc which is
+#error incompatible with your Protocol Buffer headers. Please
+#error regenerate this file with a newer version of protoc.
+#endif
+
+#include <google/protobuf/port_undef.inc>
+#include <google/protobuf/io/coded_stream.h>
+#include <google/protobuf/arena.h>
+#include <google/protobuf/arenastring.h>
+#include <google/protobuf/generated_message_table_driven.h>
+#include <google/protobuf/generated_message_util.h>
+#include <google/protobuf/inlined_string_field.h>
+#include <google/protobuf/metadata.h>
+#include <google/protobuf/message.h>
+#include <google/protobuf/repeated_field.h>  // IWYU pragma: export
+#include <google/protobuf/extension_set.h>  // IWYU pragma: export
+#include <google/protobuf/unknown_field_set.h>
+// @@protoc_insertion_point(includes)
+#include <google/protobuf/port_def.inc>
+#define PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fframework_2ftensor_5fshape_2eproto
+
+// Internal implementation detail -- do not use these members.
+struct TableStruct_tensorflow_2fcore_2fframework_2ftensor_5fshape_2eproto {
+  static const ::google::protobuf::internal::ParseTableField entries[]
+    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
+  static const ::google::protobuf::internal::AuxillaryParseTableField aux[]
+    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
+  static const ::google::protobuf::internal::ParseTable schema[2]
+    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
+  static const ::google::protobuf::internal::FieldMetadata field_metadata[];
+  static const ::google::protobuf::internal::SerializationTable serialization_table[];
+  static const ::google::protobuf::uint32 offsets[];
+};
+void AddDescriptors_tensorflow_2fcore_2fframework_2ftensor_5fshape_2eproto();
+namespace tensorflow {
+class TensorShapeProto;
+class TensorShapeProtoDefaultTypeInternal;
+extern TensorShapeProtoDefaultTypeInternal _TensorShapeProto_default_instance_;
+class TensorShapeProto_Dim;
+class TensorShapeProto_DimDefaultTypeInternal;
+extern TensorShapeProto_DimDefaultTypeInternal _TensorShapeProto_Dim_default_instance_;
+}  // namespace tensorflow
+namespace google {
+namespace protobuf {
+template<> ::tensorflow::TensorShapeProto* Arena::CreateMaybeMessage<::tensorflow::TensorShapeProto>(Arena*);
+template<> ::tensorflow::TensorShapeProto_Dim* Arena::CreateMaybeMessage<::tensorflow::TensorShapeProto_Dim>(Arena*);
+}  // namespace protobuf
+}  // namespace google
+namespace tensorflow {
+
+// ===================================================================
+
+class TensorShapeProto_Dim : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.TensorShapeProto.Dim) */ {
+ public:
+  TensorShapeProto_Dim();
+  virtual ~TensorShapeProto_Dim();
+
+  TensorShapeProto_Dim(const TensorShapeProto_Dim& from);
+
+  inline TensorShapeProto_Dim& operator=(const TensorShapeProto_Dim& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  TensorShapeProto_Dim(TensorShapeProto_Dim&& from) noexcept
+    : TensorShapeProto_Dim() {
+    *this = ::std::move(from);
+  }
+
+  inline TensorShapeProto_Dim& operator=(TensorShapeProto_Dim&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const TensorShapeProto_Dim& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const TensorShapeProto_Dim* internal_default_instance() {
+    return reinterpret_cast<const TensorShapeProto_Dim*>(
+               &_TensorShapeProto_Dim_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    0;
+
+  void UnsafeArenaSwap(TensorShapeProto_Dim* other);
+  void Swap(TensorShapeProto_Dim* other);
+  friend void swap(TensorShapeProto_Dim& a, TensorShapeProto_Dim& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline TensorShapeProto_Dim* New() const final {
+    return CreateMaybeMessage<TensorShapeProto_Dim>(NULL);
+  }
+
+  TensorShapeProto_Dim* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<TensorShapeProto_Dim>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const TensorShapeProto_Dim& from);
+  void MergeFrom(const TensorShapeProto_Dim& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(TensorShapeProto_Dim* other);
+  protected:
+  explicit TensorShapeProto_Dim(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // string name = 2;
+  void clear_name();
+  static const int kNameFieldNumber = 2;
+  const ::std::string& name() const;
+  void set_name(const ::std::string& value);
+  #if LANG_CXX11
+  void set_name(::std::string&& value);
+  #endif
+  void set_name(const char* value);
+  void set_name(const char* value, size_t size);
+  ::std::string* mutable_name();
+  ::std::string* release_name();
+  void set_allocated_name(::std::string* name);
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  ::std::string* unsafe_arena_release_name();
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  void unsafe_arena_set_allocated_name(
+      ::std::string* name);
+
+  // int64 size = 1;
+  void clear_size();
+  static const int kSizeFieldNumber = 1;
+  ::google::protobuf::int64 size() const;
+  void set_size(::google::protobuf::int64 value);
+
+  // @@protoc_insertion_point(class_scope:tensorflow.TensorShapeProto.Dim)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  ::google::protobuf::internal::ArenaStringPtr name_;
+  ::google::protobuf::int64 size_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fframework_2ftensor_5fshape_2eproto;
+};
+// -------------------------------------------------------------------
+
+class TensorShapeProto : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.TensorShapeProto) */ {
+ public:
+  TensorShapeProto();
+  virtual ~TensorShapeProto();
+
+  TensorShapeProto(const TensorShapeProto& from);
+
+  inline TensorShapeProto& operator=(const TensorShapeProto& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  TensorShapeProto(TensorShapeProto&& from) noexcept
+    : TensorShapeProto() {
+    *this = ::std::move(from);
+  }
+
+  inline TensorShapeProto& operator=(TensorShapeProto&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const TensorShapeProto& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const TensorShapeProto* internal_default_instance() {
+    return reinterpret_cast<const TensorShapeProto*>(
+               &_TensorShapeProto_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    1;
+
+  void UnsafeArenaSwap(TensorShapeProto* other);
+  void Swap(TensorShapeProto* other);
+  friend void swap(TensorShapeProto& a, TensorShapeProto& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline TensorShapeProto* New() const final {
+    return CreateMaybeMessage<TensorShapeProto>(NULL);
+  }
+
+  TensorShapeProto* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<TensorShapeProto>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const TensorShapeProto& from);
+  void MergeFrom(const TensorShapeProto& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(TensorShapeProto* other);
+  protected:
+  explicit TensorShapeProto(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  typedef TensorShapeProto_Dim Dim;
+
+  // accessors -------------------------------------------------------
+
+  // repeated .tensorflow.TensorShapeProto.Dim dim = 2;
+  int dim_size() const;
+  void clear_dim();
+  static const int kDimFieldNumber = 2;
+  ::tensorflow::TensorShapeProto_Dim* mutable_dim(int index);
+  ::google::protobuf::RepeatedPtrField< ::tensorflow::TensorShapeProto_Dim >*
+      mutable_dim();
+  const ::tensorflow::TensorShapeProto_Dim& dim(int index) const;
+  ::tensorflow::TensorShapeProto_Dim* add_dim();
+  const ::google::protobuf::RepeatedPtrField< ::tensorflow::TensorShapeProto_Dim >&
+      dim() const;
+
+  // bool unknown_rank = 3;
+  void clear_unknown_rank();
+  static const int kUnknownRankFieldNumber = 3;
+  bool unknown_rank() const;
+  void set_unknown_rank(bool value);
+
+  // @@protoc_insertion_point(class_scope:tensorflow.TensorShapeProto)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  ::google::protobuf::RepeatedPtrField< ::tensorflow::TensorShapeProto_Dim > dim_;
+  bool unknown_rank_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fframework_2ftensor_5fshape_2eproto;
+};
+// ===================================================================
+
+
+// ===================================================================
+
+#ifdef __GNUC__
+  #pragma GCC diagnostic push
+  #pragma GCC diagnostic ignored "-Wstrict-aliasing"
+#endif  // __GNUC__
+// TensorShapeProto_Dim
+
+// int64 size = 1;
+inline void TensorShapeProto_Dim::clear_size() {
+  size_ = PROTOBUF_LONGLONG(0);
+}
+inline ::google::protobuf::int64 TensorShapeProto_Dim::size() const {
+  // @@protoc_insertion_point(field_get:tensorflow.TensorShapeProto.Dim.size)
+  return size_;
+}
+inline void TensorShapeProto_Dim::set_size(::google::protobuf::int64 value) {
+  
+  size_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.TensorShapeProto.Dim.size)
+}
+
+// string name = 2;
+inline void TensorShapeProto_Dim::clear_name() {
+  name_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline const ::std::string& TensorShapeProto_Dim::name() const {
+  // @@protoc_insertion_point(field_get:tensorflow.TensorShapeProto.Dim.name)
+  return name_.Get();
+}
+inline void TensorShapeProto_Dim::set_name(const ::std::string& value) {
+  
+  name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set:tensorflow.TensorShapeProto.Dim.name)
+}
+#if LANG_CXX11
+inline void TensorShapeProto_Dim::set_name(::std::string&& value) {
+  
+  name_.Set(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.TensorShapeProto.Dim.name)
+}
+#endif
+inline void TensorShapeProto_Dim::set_name(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
+              GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_char:tensorflow.TensorShapeProto.Dim.name)
+}
+inline void TensorShapeProto_Dim::set_name(const char* value,
+    size_t size) {
+  
+  name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
+      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.TensorShapeProto.Dim.name)
+}
+inline ::std::string* TensorShapeProto_Dim::mutable_name() {
+  
+  // @@protoc_insertion_point(field_mutable:tensorflow.TensorShapeProto.Dim.name)
+  return name_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline ::std::string* TensorShapeProto_Dim::release_name() {
+  // @@protoc_insertion_point(field_release:tensorflow.TensorShapeProto.Dim.name)
+  
+  return name_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline void TensorShapeProto_Dim::set_allocated_name(::std::string* name) {
+  if (name != NULL) {
+    
+  } else {
+    
+  }
+  name_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), name,
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.TensorShapeProto.Dim.name)
+}
+inline ::std::string* TensorShapeProto_Dim::unsafe_arena_release_name() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.TensorShapeProto.Dim.name)
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  
+  return name_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      GetArenaNoVirtual());
+}
+inline void TensorShapeProto_Dim::unsafe_arena_set_allocated_name(
+    ::std::string* name) {
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (name != NULL) {
+    
+  } else {
+    
+  }
+  name_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      name, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.TensorShapeProto.Dim.name)
+}
+
+// -------------------------------------------------------------------
+
+// TensorShapeProto
+
+// repeated .tensorflow.TensorShapeProto.Dim dim = 2;
+inline int TensorShapeProto::dim_size() const {
+  return dim_.size();
+}
+inline void TensorShapeProto::clear_dim() {
+  dim_.Clear();
+}
+inline ::tensorflow::TensorShapeProto_Dim* TensorShapeProto::mutable_dim(int index) {
+  // @@protoc_insertion_point(field_mutable:tensorflow.TensorShapeProto.dim)
+  return dim_.Mutable(index);
+}
+inline ::google::protobuf::RepeatedPtrField< ::tensorflow::TensorShapeProto_Dim >*
+TensorShapeProto::mutable_dim() {
+  // @@protoc_insertion_point(field_mutable_list:tensorflow.TensorShapeProto.dim)
+  return &dim_;
+}
+inline const ::tensorflow::TensorShapeProto_Dim& TensorShapeProto::dim(int index) const {
+  // @@protoc_insertion_point(field_get:tensorflow.TensorShapeProto.dim)
+  return dim_.Get(index);
+}
+inline ::tensorflow::TensorShapeProto_Dim* TensorShapeProto::add_dim() {
+  // @@protoc_insertion_point(field_add:tensorflow.TensorShapeProto.dim)
+  return dim_.Add();
+}
+inline const ::google::protobuf::RepeatedPtrField< ::tensorflow::TensorShapeProto_Dim >&
+TensorShapeProto::dim() const {
+  // @@protoc_insertion_point(field_list:tensorflow.TensorShapeProto.dim)
+  return dim_;
+}
+
+// bool unknown_rank = 3;
+inline void TensorShapeProto::clear_unknown_rank() {
+  unknown_rank_ = false;
+}
+inline bool TensorShapeProto::unknown_rank() const {
+  // @@protoc_insertion_point(field_get:tensorflow.TensorShapeProto.unknown_rank)
+  return unknown_rank_;
+}
+inline void TensorShapeProto::set_unknown_rank(bool value) {
+  
+  unknown_rank_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.TensorShapeProto.unknown_rank)
+}
+
+#ifdef __GNUC__
+  #pragma GCC diagnostic pop
+#endif  // __GNUC__
+// -------------------------------------------------------------------
+
+
+// @@protoc_insertion_point(namespace_scope)
+
+}  // namespace tensorflow
+
+// @@protoc_insertion_point(global_scope)
+
+#include <google/protobuf/port_undef.inc>
+#endif  // PROTOBUF_INCLUDED_tensorflow_2fcore_2fframework_2ftensor_5fshape_2eproto
diff --git a/tensorflow/core/framework/tensor_shape.proto b/tensorflow/core/framework/tensor_shape.proto
new file mode 100644 (file)
index 0000000..286156a
--- /dev/null
@@ -0,0 +1,46 @@
+// Protocol buffer representing the shape of tensors.
+
+syntax = "proto3";
+option cc_enable_arenas = true;
+option java_outer_classname = "TensorShapeProtos";
+option java_multiple_files = true;
+option java_package = "org.tensorflow.framework";
+option go_package = "github.com/tensorflow/tensorflow/tensorflow/go/core/framework";
+
+package tensorflow;
+
+// Dimensions of a tensor.
+message TensorShapeProto {
+  // One dimension of the tensor.
+  message Dim {
+    // Size of the tensor in that dimension.
+    // This value must be >= -1, but values of -1 are reserved for "unknown"
+    // shapes (values of -1 mean "unknown" dimension).  Certain wrappers
+    // that work with TensorShapeProto may fail at runtime when deserializing
+    // a TensorShapeProto containing a dim value of -1.
+    int64 size = 1;
+
+    // Optional name of the tensor dimension.
+    string name = 2;
+  };
+
+  // Dimensions of the tensor, such as {"input", 30}, {"output", 40}
+  // for a 30 x 40 2D tensor.  If an entry has size -1, this
+  // corresponds to a dimension of unknown size. The names are
+  // optional.
+  //
+  // The order of entries in "dim" matters: It indicates the layout of the
+  // values in the tensor in-memory representation.
+  //
+  // The first entry in "dim" is the outermost dimension used to layout the
+  // values, the last entry is the innermost dimension.  This matches the
+  // in-memory layout of RowMajor Eigen tensors.
+  //
+  // If "dim.size()" > 0, "unknown_rank" must be false.
+  repeated Dim dim = 2;
+
+  // If true, the number of dimensions in the shape is unknown.
+  //
+  // If true, "dim.size()" must be 0.
+  bool unknown_rank = 3;
+};
diff --git a/tensorflow/core/framework/tensor_slice.pb.cc b/tensorflow/core/framework/tensor_slice.pb.cc
new file mode 100644 (file)
index 0000000..aa7ce9c
--- /dev/null
@@ -0,0 +1,846 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: tensorflow/core/framework/tensor_slice.proto
+
+#include "tensorflow/core/framework/tensor_slice.pb.h"
+
+#include <algorithm>
+
+#include <google/protobuf/stubs/common.h>
+#include <google/protobuf/io/coded_stream.h>
+#include <google/protobuf/extension_set.h>
+#include <google/protobuf/wire_format_lite_inl.h>
+#include <google/protobuf/descriptor.h>
+#include <google/protobuf/generated_message_reflection.h>
+#include <google/protobuf/reflection_ops.h>
+#include <google/protobuf/wire_format.h>
+// @@protoc_insertion_point(includes)
+#include <google/protobuf/port_def.inc>
+
+extern PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fframework_2ftensor_5fslice_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_TensorSliceProto_Extent_tensorflow_2fcore_2fframework_2ftensor_5fslice_2eproto;
+namespace tensorflow {
+class TensorSliceProto_ExtentDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<TensorSliceProto_Extent> _instance;
+  ::google::protobuf::int64 length_;
+} _TensorSliceProto_Extent_default_instance_;
+class TensorSliceProtoDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<TensorSliceProto> _instance;
+} _TensorSliceProto_default_instance_;
+}  // namespace tensorflow
+static void InitDefaultsTensorSliceProto_Extent_tensorflow_2fcore_2fframework_2ftensor_5fslice_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_TensorSliceProto_Extent_default_instance_;
+    new (ptr) ::tensorflow::TensorSliceProto_Extent();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::TensorSliceProto_Extent::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<0> scc_info_TensorSliceProto_Extent_tensorflow_2fcore_2fframework_2ftensor_5fslice_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsTensorSliceProto_Extent_tensorflow_2fcore_2fframework_2ftensor_5fslice_2eproto}, {}};
+
+static void InitDefaultsTensorSliceProto_tensorflow_2fcore_2fframework_2ftensor_5fslice_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_TensorSliceProto_default_instance_;
+    new (ptr) ::tensorflow::TensorSliceProto();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::TensorSliceProto::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<1> scc_info_TensorSliceProto_tensorflow_2fcore_2fframework_2ftensor_5fslice_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsTensorSliceProto_tensorflow_2fcore_2fframework_2ftensor_5fslice_2eproto}, {
+      &scc_info_TensorSliceProto_Extent_tensorflow_2fcore_2fframework_2ftensor_5fslice_2eproto.base,}};
+
+void InitDefaults_tensorflow_2fcore_2fframework_2ftensor_5fslice_2eproto() {
+  ::google::protobuf::internal::InitSCC(&scc_info_TensorSliceProto_Extent_tensorflow_2fcore_2fframework_2ftensor_5fslice_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_TensorSliceProto_tensorflow_2fcore_2fframework_2ftensor_5fslice_2eproto.base);
+}
+
+::google::protobuf::Metadata file_level_metadata_tensorflow_2fcore_2fframework_2ftensor_5fslice_2eproto[2];
+constexpr ::google::protobuf::EnumDescriptor const** file_level_enum_descriptors_tensorflow_2fcore_2fframework_2ftensor_5fslice_2eproto = nullptr;
+constexpr ::google::protobuf::ServiceDescriptor const** file_level_service_descriptors_tensorflow_2fcore_2fframework_2ftensor_5fslice_2eproto = nullptr;
+
+const ::google::protobuf::uint32 TableStruct_tensorflow_2fcore_2fframework_2ftensor_5fslice_2eproto::offsets[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = {
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::TensorSliceProto_Extent, _internal_metadata_),
+  ~0u,  // no _extensions_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::TensorSliceProto_Extent, _oneof_case_[0]),
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::TensorSliceProto_Extent, start_),
+  offsetof(::tensorflow::TensorSliceProto_ExtentDefaultTypeInternal, length_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::TensorSliceProto_Extent, has_length_),
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::TensorSliceProto, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::TensorSliceProto, extent_),
+};
+static const ::google::protobuf::internal::MigrationSchema schemas[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = {
+  { 0, -1, sizeof(::tensorflow::TensorSliceProto_Extent)},
+  { 8, -1, sizeof(::tensorflow::TensorSliceProto)},
+};
+
+static ::google::protobuf::Message const * const file_default_instances[] = {
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_TensorSliceProto_Extent_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_TensorSliceProto_default_instance_),
+};
+
+::google::protobuf::internal::AssignDescriptorsTable assign_descriptors_table_tensorflow_2fcore_2fframework_2ftensor_5fslice_2eproto = {
+  {}, AddDescriptors_tensorflow_2fcore_2fframework_2ftensor_5fslice_2eproto, "tensorflow/core/framework/tensor_slice.proto", schemas,
+  file_default_instances, TableStruct_tensorflow_2fcore_2fframework_2ftensor_5fslice_2eproto::offsets,
+  file_level_metadata_tensorflow_2fcore_2fframework_2ftensor_5fslice_2eproto, 2, file_level_enum_descriptors_tensorflow_2fcore_2fframework_2ftensor_5fslice_2eproto, file_level_service_descriptors_tensorflow_2fcore_2fframework_2ftensor_5fslice_2eproto,
+};
+
+::google::protobuf::internal::DescriptorTable descriptor_table_tensorflow_2fcore_2fframework_2ftensor_5fslice_2eproto = {
+  false, InitDefaults_tensorflow_2fcore_2fframework_2ftensor_5fslice_2eproto, 
+  "\n,tensorflow/core/framework/tensor_slice"
+  ".proto\022\ntensorflow\"\200\001\n\020TensorSliceProto\022"
+  "3\n\006extent\030\001 \003(\0132#.tensorflow.TensorSlice"
+  "Proto.Extent\0327\n\006Extent\022\r\n\005start\030\001 \001(\003\022\020\n"
+  "\006length\030\002 \001(\003H\000B\014\n\nhas_lengthBq\n\030org.ten"
+  "sorflow.frameworkB\021TensorSliceProtosP\001Z="
+  "github.com/tensorflow/tensorflow/tensorf"
+  "low/go/core/framework\370\001\001b\006proto3"
+,
+  "tensorflow/core/framework/tensor_slice.proto", &assign_descriptors_table_tensorflow_2fcore_2fframework_2ftensor_5fslice_2eproto, 312,
+};
+
+void AddDescriptors_tensorflow_2fcore_2fframework_2ftensor_5fslice_2eproto() {
+  static constexpr ::google::protobuf::internal::InitFunc deps[1] =
+  {
+  };
+ ::google::protobuf::internal::AddDescriptors(&descriptor_table_tensorflow_2fcore_2fframework_2ftensor_5fslice_2eproto, deps, 0);
+}
+
+// Force running AddDescriptors() at dynamic initialization time.
+static bool dynamic_init_dummy_tensorflow_2fcore_2fframework_2ftensor_5fslice_2eproto = []() { AddDescriptors_tensorflow_2fcore_2fframework_2ftensor_5fslice_2eproto(); return true; }();
+namespace tensorflow {
+
+// ===================================================================
+
+void TensorSliceProto_Extent::InitAsDefaultInstance() {
+  ::tensorflow::_TensorSliceProto_Extent_default_instance_.length_ = PROTOBUF_LONGLONG(0);
+}
+class TensorSliceProto_Extent::HasBitSetters {
+ public:
+};
+
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int TensorSliceProto_Extent::kStartFieldNumber;
+const int TensorSliceProto_Extent::kLengthFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+TensorSliceProto_Extent::TensorSliceProto_Extent()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.TensorSliceProto.Extent)
+}
+TensorSliceProto_Extent::TensorSliceProto_Extent(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.TensorSliceProto.Extent)
+}
+TensorSliceProto_Extent::TensorSliceProto_Extent(const TensorSliceProto_Extent& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  start_ = from.start_;
+  clear_has_has_length();
+  switch (from.has_length_case()) {
+    case kLength: {
+      set_length(from.length());
+      break;
+    }
+    case HAS_LENGTH_NOT_SET: {
+      break;
+    }
+  }
+  // @@protoc_insertion_point(copy_constructor:tensorflow.TensorSliceProto.Extent)
+}
+
+void TensorSliceProto_Extent::SharedCtor() {
+  start_ = PROTOBUF_LONGLONG(0);
+  clear_has_has_length();
+}
+
+TensorSliceProto_Extent::~TensorSliceProto_Extent() {
+  // @@protoc_insertion_point(destructor:tensorflow.TensorSliceProto.Extent)
+  SharedDtor();
+}
+
+void TensorSliceProto_Extent::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+  if (has_has_length()) {
+    clear_has_length();
+  }
+}
+
+void TensorSliceProto_Extent::ArenaDtor(void* object) {
+  TensorSliceProto_Extent* _this = reinterpret_cast< TensorSliceProto_Extent* >(object);
+  (void)_this;
+}
+void TensorSliceProto_Extent::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void TensorSliceProto_Extent::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const TensorSliceProto_Extent& TensorSliceProto_Extent::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_TensorSliceProto_Extent_tensorflow_2fcore_2fframework_2ftensor_5fslice_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void TensorSliceProto_Extent::clear_has_length() {
+// @@protoc_insertion_point(one_of_clear_start:tensorflow.TensorSliceProto.Extent)
+  switch (has_length_case()) {
+    case kLength: {
+      // No need to clear
+      break;
+    }
+    case HAS_LENGTH_NOT_SET: {
+      break;
+    }
+  }
+  _oneof_case_[0] = HAS_LENGTH_NOT_SET;
+}
+
+
+void TensorSliceProto_Extent::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.TensorSliceProto.Extent)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  start_ = PROTOBUF_LONGLONG(0);
+  clear_has_length();
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* TensorSliceProto_Extent::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<TensorSliceProto_Extent*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // int64 start = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 8) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::google::protobuf::int64 value = val;
+        msg->set_start(value);
+        break;
+      }
+      // int64 length = 2;
+      case 2: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 16) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::google::protobuf::int64 value = val;
+        msg->set_length(value);
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool TensorSliceProto_Extent::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.TensorSliceProto.Extent)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // int64 start = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (8 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>(
+                 input, &start_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // int64 length = 2;
+      case 2: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (16 & 0xFF)) {
+          clear_has_length();
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>(
+                 input, &has_length_.length_)));
+          set_has_length();
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.TensorSliceProto.Extent)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.TensorSliceProto.Extent)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void TensorSliceProto_Extent::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.TensorSliceProto.Extent)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // int64 start = 1;
+  if (this->start() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt64(1, this->start(), output);
+  }
+
+  // int64 length = 2;
+  if (has_length()) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt64(2, this->length(), output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.TensorSliceProto.Extent)
+}
+
+::google::protobuf::uint8* TensorSliceProto_Extent::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.TensorSliceProto.Extent)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // int64 start = 1;
+  if (this->start() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt64ToArray(1, this->start(), target);
+  }
+
+  // int64 length = 2;
+  if (has_length()) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt64ToArray(2, this->length(), target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.TensorSliceProto.Extent)
+  return target;
+}
+
+size_t TensorSliceProto_Extent::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.TensorSliceProto.Extent)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // int64 start = 1;
+  if (this->start() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::Int64Size(
+        this->start());
+  }
+
+  switch (has_length_case()) {
+    // int64 length = 2;
+    case kLength: {
+      total_size += 1 +
+        ::google::protobuf::internal::WireFormatLite::Int64Size(
+          this->length());
+      break;
+    }
+    case HAS_LENGTH_NOT_SET: {
+      break;
+    }
+  }
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void TensorSliceProto_Extent::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.TensorSliceProto.Extent)
+  GOOGLE_DCHECK_NE(&from, this);
+  const TensorSliceProto_Extent* source =
+      ::google::protobuf::DynamicCastToGenerated<TensorSliceProto_Extent>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.TensorSliceProto.Extent)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.TensorSliceProto.Extent)
+    MergeFrom(*source);
+  }
+}
+
+void TensorSliceProto_Extent::MergeFrom(const TensorSliceProto_Extent& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.TensorSliceProto.Extent)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  if (from.start() != 0) {
+    set_start(from.start());
+  }
+  switch (from.has_length_case()) {
+    case kLength: {
+      set_length(from.length());
+      break;
+    }
+    case HAS_LENGTH_NOT_SET: {
+      break;
+    }
+  }
+}
+
+void TensorSliceProto_Extent::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.TensorSliceProto.Extent)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void TensorSliceProto_Extent::CopyFrom(const TensorSliceProto_Extent& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.TensorSliceProto.Extent)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool TensorSliceProto_Extent::IsInitialized() const {
+  return true;
+}
+
+void TensorSliceProto_Extent::Swap(TensorSliceProto_Extent* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    TensorSliceProto_Extent* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void TensorSliceProto_Extent::UnsafeArenaSwap(TensorSliceProto_Extent* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void TensorSliceProto_Extent::InternalSwap(TensorSliceProto_Extent* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  swap(start_, other->start_);
+  swap(has_length_, other->has_length_);
+  swap(_oneof_case_[0], other->_oneof_case_[0]);
+}
+
+::google::protobuf::Metadata TensorSliceProto_Extent::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fframework_2ftensor_5fslice_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fframework_2ftensor_5fslice_2eproto[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+void TensorSliceProto::InitAsDefaultInstance() {
+}
+class TensorSliceProto::HasBitSetters {
+ public:
+};
+
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int TensorSliceProto::kExtentFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+TensorSliceProto::TensorSliceProto()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.TensorSliceProto)
+}
+TensorSliceProto::TensorSliceProto(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena),
+  extent_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.TensorSliceProto)
+}
+TensorSliceProto::TensorSliceProto(const TensorSliceProto& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL),
+      extent_(from.extent_) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  // @@protoc_insertion_point(copy_constructor:tensorflow.TensorSliceProto)
+}
+
+void TensorSliceProto::SharedCtor() {
+  ::google::protobuf::internal::InitSCC(
+      &scc_info_TensorSliceProto_tensorflow_2fcore_2fframework_2ftensor_5fslice_2eproto.base);
+}
+
+TensorSliceProto::~TensorSliceProto() {
+  // @@protoc_insertion_point(destructor:tensorflow.TensorSliceProto)
+  SharedDtor();
+}
+
+void TensorSliceProto::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+}
+
+void TensorSliceProto::ArenaDtor(void* object) {
+  TensorSliceProto* _this = reinterpret_cast< TensorSliceProto* >(object);
+  (void)_this;
+}
+void TensorSliceProto::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void TensorSliceProto::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const TensorSliceProto& TensorSliceProto::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_TensorSliceProto_tensorflow_2fcore_2fframework_2ftensor_5fslice_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void TensorSliceProto::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.TensorSliceProto)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  extent_.Clear();
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* TensorSliceProto::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<TensorSliceProto*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // repeated .tensorflow.TensorSliceProto.Extent extent = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 10) goto handle_unusual;
+        do {
+          ptr = Varint::Parse32Inline(ptr, &size);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          parser_till_end = ::tensorflow::TensorSliceProto_Extent::_InternalParse;
+          object = msg->add_extent();
+          if (size > end - ptr) goto len_delim_till_end;
+          auto newend = ptr + size;
+          bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                         ptr, newend);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          ptr = newend;
+          if (ptr >= end) break;
+        } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 10 && (ptr += 1));
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool TensorSliceProto::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.TensorSliceProto)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // repeated .tensorflow.TensorSliceProto.Extent extent = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (10 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+                input, add_extent()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.TensorSliceProto)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.TensorSliceProto)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void TensorSliceProto::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.TensorSliceProto)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // repeated .tensorflow.TensorSliceProto.Extent extent = 1;
+  for (unsigned int i = 0,
+      n = static_cast<unsigned int>(this->extent_size()); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      1,
+      this->extent(static_cast<int>(i)),
+      output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.TensorSliceProto)
+}
+
+::google::protobuf::uint8* TensorSliceProto::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.TensorSliceProto)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // repeated .tensorflow.TensorSliceProto.Extent extent = 1;
+  for (unsigned int i = 0,
+      n = static_cast<unsigned int>(this->extent_size()); i < n; i++) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        1, this->extent(static_cast<int>(i)), deterministic, target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.TensorSliceProto)
+  return target;
+}
+
+size_t TensorSliceProto::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.TensorSliceProto)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // repeated .tensorflow.TensorSliceProto.Extent extent = 1;
+  {
+    unsigned int count = static_cast<unsigned int>(this->extent_size());
+    total_size += 1UL * count;
+    for (unsigned int i = 0; i < count; i++) {
+      total_size +=
+        ::google::protobuf::internal::WireFormatLite::MessageSize(
+          this->extent(static_cast<int>(i)));
+    }
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void TensorSliceProto::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.TensorSliceProto)
+  GOOGLE_DCHECK_NE(&from, this);
+  const TensorSliceProto* source =
+      ::google::protobuf::DynamicCastToGenerated<TensorSliceProto>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.TensorSliceProto)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.TensorSliceProto)
+    MergeFrom(*source);
+  }
+}
+
+void TensorSliceProto::MergeFrom(const TensorSliceProto& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.TensorSliceProto)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  extent_.MergeFrom(from.extent_);
+}
+
+void TensorSliceProto::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.TensorSliceProto)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void TensorSliceProto::CopyFrom(const TensorSliceProto& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.TensorSliceProto)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool TensorSliceProto::IsInitialized() const {
+  return true;
+}
+
+void TensorSliceProto::Swap(TensorSliceProto* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    TensorSliceProto* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void TensorSliceProto::UnsafeArenaSwap(TensorSliceProto* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void TensorSliceProto::InternalSwap(TensorSliceProto* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  CastToBase(&extent_)->InternalSwap(CastToBase(&other->extent_));
+}
+
+::google::protobuf::Metadata TensorSliceProto::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fframework_2ftensor_5fslice_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fframework_2ftensor_5fslice_2eproto[kIndexInFileMessages];
+}
+
+
+// @@protoc_insertion_point(namespace_scope)
+}  // namespace tensorflow
+namespace google {
+namespace protobuf {
+template<> PROTOBUF_NOINLINE ::tensorflow::TensorSliceProto_Extent* Arena::CreateMaybeMessage< ::tensorflow::TensorSliceProto_Extent >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::TensorSliceProto_Extent >(arena);
+}
+template<> PROTOBUF_NOINLINE ::tensorflow::TensorSliceProto* Arena::CreateMaybeMessage< ::tensorflow::TensorSliceProto >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::TensorSliceProto >(arena);
+}
+}  // namespace protobuf
+}  // namespace google
+
+// @@protoc_insertion_point(global_scope)
+#include <google/protobuf/port_undef.inc>
diff --git a/tensorflow/core/framework/tensor_slice.pb.h b/tensorflow/core/framework/tensor_slice.pb.h
new file mode 100644 (file)
index 0000000..638bfd2
--- /dev/null
@@ -0,0 +1,463 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: tensorflow/core/framework/tensor_slice.proto
+
+#ifndef PROTOBUF_INCLUDED_tensorflow_2fcore_2fframework_2ftensor_5fslice_2eproto
+#define PROTOBUF_INCLUDED_tensorflow_2fcore_2fframework_2ftensor_5fslice_2eproto
+
+#include <limits>
+#include <string>
+
+#include <google/protobuf/port_def.inc>
+#if PROTOBUF_VERSION < 3006001
+#error This file was generated by a newer version of protoc which is
+#error incompatible with your Protocol Buffer headers. Please update
+#error your headers.
+#endif
+#if 3006001 < PROTOBUF_MIN_PROTOC_VERSION
+#error This file was generated by an older version of protoc which is
+#error incompatible with your Protocol Buffer headers. Please
+#error regenerate this file with a newer version of protoc.
+#endif
+
+#include <google/protobuf/port_undef.inc>
+#include <google/protobuf/io/coded_stream.h>
+#include <google/protobuf/arena.h>
+#include <google/protobuf/arenastring.h>
+#include <google/protobuf/generated_message_table_driven.h>
+#include <google/protobuf/generated_message_util.h>
+#include <google/protobuf/inlined_string_field.h>
+#include <google/protobuf/metadata.h>
+#include <google/protobuf/message.h>
+#include <google/protobuf/repeated_field.h>  // IWYU pragma: export
+#include <google/protobuf/extension_set.h>  // IWYU pragma: export
+#include <google/protobuf/unknown_field_set.h>
+// @@protoc_insertion_point(includes)
+#include <google/protobuf/port_def.inc>
+#define PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fframework_2ftensor_5fslice_2eproto
+
+// Internal implementation detail -- do not use these members.
+struct TableStruct_tensorflow_2fcore_2fframework_2ftensor_5fslice_2eproto {
+  static const ::google::protobuf::internal::ParseTableField entries[]
+    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
+  static const ::google::protobuf::internal::AuxillaryParseTableField aux[]
+    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
+  static const ::google::protobuf::internal::ParseTable schema[2]
+    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
+  static const ::google::protobuf::internal::FieldMetadata field_metadata[];
+  static const ::google::protobuf::internal::SerializationTable serialization_table[];
+  static const ::google::protobuf::uint32 offsets[];
+};
+void AddDescriptors_tensorflow_2fcore_2fframework_2ftensor_5fslice_2eproto();
+namespace tensorflow {
+class TensorSliceProto;
+class TensorSliceProtoDefaultTypeInternal;
+extern TensorSliceProtoDefaultTypeInternal _TensorSliceProto_default_instance_;
+class TensorSliceProto_Extent;
+class TensorSliceProto_ExtentDefaultTypeInternal;
+extern TensorSliceProto_ExtentDefaultTypeInternal _TensorSliceProto_Extent_default_instance_;
+}  // namespace tensorflow
+namespace google {
+namespace protobuf {
+template<> ::tensorflow::TensorSliceProto* Arena::CreateMaybeMessage<::tensorflow::TensorSliceProto>(Arena*);
+template<> ::tensorflow::TensorSliceProto_Extent* Arena::CreateMaybeMessage<::tensorflow::TensorSliceProto_Extent>(Arena*);
+}  // namespace protobuf
+}  // namespace google
+namespace tensorflow {
+
+// ===================================================================
+
+class TensorSliceProto_Extent : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.TensorSliceProto.Extent) */ {
+ public:
+  TensorSliceProto_Extent();
+  virtual ~TensorSliceProto_Extent();
+
+  TensorSliceProto_Extent(const TensorSliceProto_Extent& from);
+
+  inline TensorSliceProto_Extent& operator=(const TensorSliceProto_Extent& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  TensorSliceProto_Extent(TensorSliceProto_Extent&& from) noexcept
+    : TensorSliceProto_Extent() {
+    *this = ::std::move(from);
+  }
+
+  inline TensorSliceProto_Extent& operator=(TensorSliceProto_Extent&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const TensorSliceProto_Extent& default_instance();
+
+  enum HasLengthCase {
+    kLength = 2,
+    HAS_LENGTH_NOT_SET = 0,
+  };
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const TensorSliceProto_Extent* internal_default_instance() {
+    return reinterpret_cast<const TensorSliceProto_Extent*>(
+               &_TensorSliceProto_Extent_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    0;
+
+  void UnsafeArenaSwap(TensorSliceProto_Extent* other);
+  void Swap(TensorSliceProto_Extent* other);
+  friend void swap(TensorSliceProto_Extent& a, TensorSliceProto_Extent& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline TensorSliceProto_Extent* New() const final {
+    return CreateMaybeMessage<TensorSliceProto_Extent>(NULL);
+  }
+
+  TensorSliceProto_Extent* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<TensorSliceProto_Extent>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const TensorSliceProto_Extent& from);
+  void MergeFrom(const TensorSliceProto_Extent& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(TensorSliceProto_Extent* other);
+  protected:
+  explicit TensorSliceProto_Extent(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // int64 start = 1;
+  void clear_start();
+  static const int kStartFieldNumber = 1;
+  ::google::protobuf::int64 start() const;
+  void set_start(::google::protobuf::int64 value);
+
+  // int64 length = 2;
+  private:
+  bool has_length() const;
+  public:
+  void clear_length();
+  static const int kLengthFieldNumber = 2;
+  ::google::protobuf::int64 length() const;
+  void set_length(::google::protobuf::int64 value);
+
+  void clear_has_length();
+  HasLengthCase has_length_case() const;
+  // @@protoc_insertion_point(class_scope:tensorflow.TensorSliceProto.Extent)
+ private:
+  class HasBitSetters;
+  void set_has_length();
+
+  inline bool has_has_length() const;
+  inline void clear_has_has_length();
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  ::google::protobuf::int64 start_;
+  union HasLengthUnion {
+    HasLengthUnion() {}
+    ::google::protobuf::int64 length_;
+  } has_length_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  ::google::protobuf::uint32 _oneof_case_[1];
+
+  friend struct ::TableStruct_tensorflow_2fcore_2fframework_2ftensor_5fslice_2eproto;
+};
+// -------------------------------------------------------------------
+
+class TensorSliceProto : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.TensorSliceProto) */ {
+ public:
+  TensorSliceProto();
+  virtual ~TensorSliceProto();
+
+  TensorSliceProto(const TensorSliceProto& from);
+
+  inline TensorSliceProto& operator=(const TensorSliceProto& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  TensorSliceProto(TensorSliceProto&& from) noexcept
+    : TensorSliceProto() {
+    *this = ::std::move(from);
+  }
+
+  inline TensorSliceProto& operator=(TensorSliceProto&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const TensorSliceProto& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const TensorSliceProto* internal_default_instance() {
+    return reinterpret_cast<const TensorSliceProto*>(
+               &_TensorSliceProto_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    1;
+
+  void UnsafeArenaSwap(TensorSliceProto* other);
+  void Swap(TensorSliceProto* other);
+  friend void swap(TensorSliceProto& a, TensorSliceProto& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline TensorSliceProto* New() const final {
+    return CreateMaybeMessage<TensorSliceProto>(NULL);
+  }
+
+  TensorSliceProto* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<TensorSliceProto>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const TensorSliceProto& from);
+  void MergeFrom(const TensorSliceProto& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(TensorSliceProto* other);
+  protected:
+  explicit TensorSliceProto(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  typedef TensorSliceProto_Extent Extent;
+
+  // accessors -------------------------------------------------------
+
+  // repeated .tensorflow.TensorSliceProto.Extent extent = 1;
+  int extent_size() const;
+  void clear_extent();
+  static const int kExtentFieldNumber = 1;
+  ::tensorflow::TensorSliceProto_Extent* mutable_extent(int index);
+  ::google::protobuf::RepeatedPtrField< ::tensorflow::TensorSliceProto_Extent >*
+      mutable_extent();
+  const ::tensorflow::TensorSliceProto_Extent& extent(int index) const;
+  ::tensorflow::TensorSliceProto_Extent* add_extent();
+  const ::google::protobuf::RepeatedPtrField< ::tensorflow::TensorSliceProto_Extent >&
+      extent() const;
+
+  // @@protoc_insertion_point(class_scope:tensorflow.TensorSliceProto)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  ::google::protobuf::RepeatedPtrField< ::tensorflow::TensorSliceProto_Extent > extent_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fframework_2ftensor_5fslice_2eproto;
+};
+// ===================================================================
+
+
+// ===================================================================
+
+#ifdef __GNUC__
+  #pragma GCC diagnostic push
+  #pragma GCC diagnostic ignored "-Wstrict-aliasing"
+#endif  // __GNUC__
+// TensorSliceProto_Extent
+
+// int64 start = 1;
+inline void TensorSliceProto_Extent::clear_start() {
+  start_ = PROTOBUF_LONGLONG(0);
+}
+inline ::google::protobuf::int64 TensorSliceProto_Extent::start() const {
+  // @@protoc_insertion_point(field_get:tensorflow.TensorSliceProto.Extent.start)
+  return start_;
+}
+inline void TensorSliceProto_Extent::set_start(::google::protobuf::int64 value) {
+  
+  start_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.TensorSliceProto.Extent.start)
+}
+
+// int64 length = 2;
+inline bool TensorSliceProto_Extent::has_length() const {
+  return has_length_case() == kLength;
+}
+inline void TensorSliceProto_Extent::set_has_length() {
+  _oneof_case_[0] = kLength;
+}
+inline void TensorSliceProto_Extent::clear_length() {
+  if (has_length()) {
+    has_length_.length_ = PROTOBUF_LONGLONG(0);
+    clear_has_has_length();
+  }
+}
+inline ::google::protobuf::int64 TensorSliceProto_Extent::length() const {
+  // @@protoc_insertion_point(field_get:tensorflow.TensorSliceProto.Extent.length)
+  if (has_length()) {
+    return has_length_.length_;
+  }
+  return PROTOBUF_LONGLONG(0);
+}
+inline void TensorSliceProto_Extent::set_length(::google::protobuf::int64 value) {
+  if (!has_length()) {
+    clear_has_length();
+    set_has_length();
+  }
+  has_length_.length_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.TensorSliceProto.Extent.length)
+}
+
+inline bool TensorSliceProto_Extent::has_has_length() const {
+  return has_length_case() != HAS_LENGTH_NOT_SET;
+}
+inline void TensorSliceProto_Extent::clear_has_has_length() {
+  _oneof_case_[0] = HAS_LENGTH_NOT_SET;
+}
+inline TensorSliceProto_Extent::HasLengthCase TensorSliceProto_Extent::has_length_case() const {
+  return TensorSliceProto_Extent::HasLengthCase(_oneof_case_[0]);
+}
+// -------------------------------------------------------------------
+
+// TensorSliceProto
+
+// repeated .tensorflow.TensorSliceProto.Extent extent = 1;
+inline int TensorSliceProto::extent_size() const {
+  return extent_.size();
+}
+inline void TensorSliceProto::clear_extent() {
+  extent_.Clear();
+}
+inline ::tensorflow::TensorSliceProto_Extent* TensorSliceProto::mutable_extent(int index) {
+  // @@protoc_insertion_point(field_mutable:tensorflow.TensorSliceProto.extent)
+  return extent_.Mutable(index);
+}
+inline ::google::protobuf::RepeatedPtrField< ::tensorflow::TensorSliceProto_Extent >*
+TensorSliceProto::mutable_extent() {
+  // @@protoc_insertion_point(field_mutable_list:tensorflow.TensorSliceProto.extent)
+  return &extent_;
+}
+inline const ::tensorflow::TensorSliceProto_Extent& TensorSliceProto::extent(int index) const {
+  // @@protoc_insertion_point(field_get:tensorflow.TensorSliceProto.extent)
+  return extent_.Get(index);
+}
+inline ::tensorflow::TensorSliceProto_Extent* TensorSliceProto::add_extent() {
+  // @@protoc_insertion_point(field_add:tensorflow.TensorSliceProto.extent)
+  return extent_.Add();
+}
+inline const ::google::protobuf::RepeatedPtrField< ::tensorflow::TensorSliceProto_Extent >&
+TensorSliceProto::extent() const {
+  // @@protoc_insertion_point(field_list:tensorflow.TensorSliceProto.extent)
+  return extent_;
+}
+
+#ifdef __GNUC__
+  #pragma GCC diagnostic pop
+#endif  // __GNUC__
+// -------------------------------------------------------------------
+
+
+// @@protoc_insertion_point(namespace_scope)
+
+}  // namespace tensorflow
+
+// @@protoc_insertion_point(global_scope)
+
+#include <google/protobuf/port_undef.inc>
+#endif  // PROTOBUF_INCLUDED_tensorflow_2fcore_2fframework_2ftensor_5fslice_2eproto
diff --git a/tensorflow/core/framework/tensor_slice.proto b/tensorflow/core/framework/tensor_slice.proto
new file mode 100644 (file)
index 0000000..a5c366e
--- /dev/null
@@ -0,0 +1,38 @@
+// Protocol buffer representing slices of a tensor
+
+syntax = "proto3";
+option cc_enable_arenas = true;
+option java_outer_classname = "TensorSliceProtos";
+option java_multiple_files = true;
+option java_package = "org.tensorflow.framework";
+option go_package = "github.com/tensorflow/tensorflow/tensorflow/go/core/framework";
+
+package tensorflow;
+
+// Can only be interpreted if you know the corresponding TensorShape.
+message TensorSliceProto {
+  // Extent of the slice in one dimension.
+  message Extent {
+    // Either both or no attributes must be set.  When no attribute is set
+    // means: All data in that dimension.
+
+    // Start index of the slice, starting at 0.
+    int64 start = 1;
+
+    // Length of the slice: if the length is missing or -1 we will
+    // interpret this as "everything in this dimension".  We use
+    // "oneof" to preserve information about whether the length is
+    // present without changing the serialization format from the
+    // prior proto2 version of this proto.
+    oneof has_length {
+      int64 length = 2;
+    }
+  };
+
+  // Extent of the slice in all tensor dimensions.
+  //
+  // Must have one entry for each of the dimension of the tensor that this
+  // slice belongs to.  The order of sizes is the same as the order of
+  // dimensions in the TensorShape.
+  repeated Extent extent = 1;
+};
diff --git a/tensorflow/core/framework/types.pb.cc b/tensorflow/core/framework/types.pb.cc
new file mode 100644 (file)
index 0000000..be1af40
--- /dev/null
@@ -0,0 +1,146 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: tensorflow/core/framework/types.proto
+
+#include "tensorflow/core/framework/types.pb.h"
+
+#include <algorithm>
+
+#include <google/protobuf/stubs/common.h>
+#include <google/protobuf/io/coded_stream.h>
+#include <google/protobuf/extension_set.h>
+#include <google/protobuf/wire_format_lite_inl.h>
+#include <google/protobuf/descriptor.h>
+#include <google/protobuf/generated_message_reflection.h>
+#include <google/protobuf/reflection_ops.h>
+#include <google/protobuf/wire_format.h>
+// @@protoc_insertion_point(includes)
+#include <google/protobuf/port_def.inc>
+
+namespace tensorflow {
+}  // namespace tensorflow
+void InitDefaults_tensorflow_2fcore_2fframework_2ftypes_2eproto() {
+}
+
+constexpr ::google::protobuf::Metadata* file_level_metadata_tensorflow_2fcore_2fframework_2ftypes_2eproto = nullptr;
+const ::google::protobuf::EnumDescriptor* file_level_enum_descriptors_tensorflow_2fcore_2fframework_2ftypes_2eproto[1];
+constexpr ::google::protobuf::ServiceDescriptor const** file_level_service_descriptors_tensorflow_2fcore_2fframework_2ftypes_2eproto = nullptr;
+const ::google::protobuf::uint32 TableStruct_tensorflow_2fcore_2fframework_2ftypes_2eproto::offsets[1] = {};
+static constexpr ::google::protobuf::internal::MigrationSchema* schemas = NULL;
+static constexpr ::google::protobuf::Message* const* file_default_instances = NULL;
+
+::google::protobuf::internal::AssignDescriptorsTable assign_descriptors_table_tensorflow_2fcore_2fframework_2ftypes_2eproto = {
+  {}, AddDescriptors_tensorflow_2fcore_2fframework_2ftypes_2eproto, "tensorflow/core/framework/types.proto", schemas,
+  file_default_instances, TableStruct_tensorflow_2fcore_2fframework_2ftypes_2eproto::offsets,
+  file_level_metadata_tensorflow_2fcore_2fframework_2ftypes_2eproto, 0, file_level_enum_descriptors_tensorflow_2fcore_2fframework_2ftypes_2eproto, file_level_service_descriptors_tensorflow_2fcore_2fframework_2ftypes_2eproto,
+};
+
+::google::protobuf::internal::DescriptorTable descriptor_table_tensorflow_2fcore_2fframework_2ftypes_2eproto = {
+  false, InitDefaults_tensorflow_2fcore_2fframework_2ftypes_2eproto, 
+  "\n%tensorflow/core/framework/types.proto\022"
+  "\ntensorflow*\252\006\n\010DataType\022\016\n\nDT_INVALID\020\000"
+  "\022\014\n\010DT_FLOAT\020\001\022\r\n\tDT_DOUBLE\020\002\022\014\n\010DT_INT3"
+  "2\020\003\022\014\n\010DT_UINT8\020\004\022\014\n\010DT_INT16\020\005\022\013\n\007DT_IN"
+  "T8\020\006\022\r\n\tDT_STRING\020\007\022\020\n\014DT_COMPLEX64\020\010\022\014\n"
+  "\010DT_INT64\020\t\022\013\n\007DT_BOOL\020\n\022\014\n\010DT_QINT8\020\013\022\r"
+  "\n\tDT_QUINT8\020\014\022\r\n\tDT_QINT32\020\r\022\017\n\013DT_BFLOA"
+  "T16\020\016\022\r\n\tDT_QINT16\020\017\022\016\n\nDT_QUINT16\020\020\022\r\n\t"
+  "DT_UINT16\020\021\022\021\n\rDT_COMPLEX128\020\022\022\013\n\007DT_HAL"
+  "F\020\023\022\017\n\013DT_RESOURCE\020\024\022\016\n\nDT_VARIANT\020\025\022\r\n\t"
+  "DT_UINT32\020\026\022\r\n\tDT_UINT64\020\027\022\020\n\014DT_FLOAT_R"
+  "EF\020e\022\021\n\rDT_DOUBLE_REF\020f\022\020\n\014DT_INT32_REF\020"
+  "g\022\020\n\014DT_UINT8_REF\020h\022\020\n\014DT_INT16_REF\020i\022\017\n"
+  "\013DT_INT8_REF\020j\022\021\n\rDT_STRING_REF\020k\022\024\n\020DT_"
+  "COMPLEX64_REF\020l\022\020\n\014DT_INT64_REF\020m\022\017\n\013DT_"
+  "BOOL_REF\020n\022\020\n\014DT_QINT8_REF\020o\022\021\n\rDT_QUINT"
+  "8_REF\020p\022\021\n\rDT_QINT32_REF\020q\022\023\n\017DT_BFLOAT1"
+  "6_REF\020r\022\021\n\rDT_QINT16_REF\020s\022\022\n\016DT_QUINT16"
+  "_REF\020t\022\021\n\rDT_UINT16_REF\020u\022\025\n\021DT_COMPLEX1"
+  "28_REF\020v\022\017\n\013DT_HALF_REF\020w\022\023\n\017DT_RESOURCE"
+  "_REF\020x\022\022\n\016DT_VARIANT_REF\020y\022\021\n\rDT_UINT32_"
+  "REF\020z\022\021\n\rDT_UINT64_REF\020{Bk\n\030org.tensorfl"
+  "ow.frameworkB\013TypesProtosP\001Z=github.com/"
+  "tensorflow/tensorflow/tensorflow/go/core"
+  "/framework\370\001\001b\006proto3"
+,
+  "tensorflow/core/framework/types.proto", &assign_descriptors_table_tensorflow_2fcore_2fframework_2ftypes_2eproto, 981,
+};
+
+void AddDescriptors_tensorflow_2fcore_2fframework_2ftypes_2eproto() {
+  static constexpr ::google::protobuf::internal::InitFunc deps[1] =
+  {
+  };
+ ::google::protobuf::internal::AddDescriptors(&descriptor_table_tensorflow_2fcore_2fframework_2ftypes_2eproto, deps, 0);
+}
+
+// Force running AddDescriptors() at dynamic initialization time.
+static bool dynamic_init_dummy_tensorflow_2fcore_2fframework_2ftypes_2eproto = []() { AddDescriptors_tensorflow_2fcore_2fframework_2ftypes_2eproto(); return true; }();
+namespace tensorflow {
+const ::google::protobuf::EnumDescriptor* DataType_descriptor() {
+  ::google::protobuf::internal::AssignDescriptors(&assign_descriptors_table_tensorflow_2fcore_2fframework_2ftypes_2eproto);
+  return file_level_enum_descriptors_tensorflow_2fcore_2fframework_2ftypes_2eproto[0];
+}
+bool DataType_IsValid(int value) {
+  switch (value) {
+    case 0:
+    case 1:
+    case 2:
+    case 3:
+    case 4:
+    case 5:
+    case 6:
+    case 7:
+    case 8:
+    case 9:
+    case 10:
+    case 11:
+    case 12:
+    case 13:
+    case 14:
+    case 15:
+    case 16:
+    case 17:
+    case 18:
+    case 19:
+    case 20:
+    case 21:
+    case 22:
+    case 23:
+    case 101:
+    case 102:
+    case 103:
+    case 104:
+    case 105:
+    case 106:
+    case 107:
+    case 108:
+    case 109:
+    case 110:
+    case 111:
+    case 112:
+    case 113:
+    case 114:
+    case 115:
+    case 116:
+    case 117:
+    case 118:
+    case 119:
+    case 120:
+    case 121:
+    case 122:
+    case 123:
+      return true;
+    default:
+      return false;
+  }
+}
+
+
+// @@protoc_insertion_point(namespace_scope)
+}  // namespace tensorflow
+namespace google {
+namespace protobuf {
+}  // namespace protobuf
+}  // namespace google
+
+// @@protoc_insertion_point(global_scope)
+#include <google/protobuf/port_undef.inc>
diff --git a/tensorflow/core/framework/types.pb.h b/tensorflow/core/framework/types.pb.h
new file mode 100644 (file)
index 0000000..359e588
--- /dev/null
@@ -0,0 +1,157 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: tensorflow/core/framework/types.proto
+
+#ifndef PROTOBUF_INCLUDED_tensorflow_2fcore_2fframework_2ftypes_2eproto
+#define PROTOBUF_INCLUDED_tensorflow_2fcore_2fframework_2ftypes_2eproto
+
+#include <limits>
+#include <string>
+
+#include <google/protobuf/port_def.inc>
+#if PROTOBUF_VERSION < 3006001
+#error This file was generated by a newer version of protoc which is
+#error incompatible with your Protocol Buffer headers. Please update
+#error your headers.
+#endif
+#if 3006001 < PROTOBUF_MIN_PROTOC_VERSION
+#error This file was generated by an older version of protoc which is
+#error incompatible with your Protocol Buffer headers. Please
+#error regenerate this file with a newer version of protoc.
+#endif
+
+#include <google/protobuf/port_undef.inc>
+#include <google/protobuf/io/coded_stream.h>
+#include <google/protobuf/arena.h>
+#include <google/protobuf/arenastring.h>
+#include <google/protobuf/generated_message_table_driven.h>
+#include <google/protobuf/generated_message_util.h>
+#include <google/protobuf/inlined_string_field.h>
+#include <google/protobuf/metadata.h>
+#include <google/protobuf/repeated_field.h>  // IWYU pragma: export
+#include <google/protobuf/extension_set.h>  // IWYU pragma: export
+#include <google/protobuf/generated_enum_reflection.h>
+// @@protoc_insertion_point(includes)
+#include <google/protobuf/port_def.inc>
+#define PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fframework_2ftypes_2eproto
+
+// Internal implementation detail -- do not use these members.
+struct TableStruct_tensorflow_2fcore_2fframework_2ftypes_2eproto {
+  static const ::google::protobuf::internal::ParseTableField entries[]
+    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
+  static const ::google::protobuf::internal::AuxillaryParseTableField aux[]
+    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
+  static const ::google::protobuf::internal::ParseTable schema[1]
+    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
+  static const ::google::protobuf::internal::FieldMetadata field_metadata[];
+  static const ::google::protobuf::internal::SerializationTable serialization_table[];
+  static const ::google::protobuf::uint32 offsets[];
+};
+void AddDescriptors_tensorflow_2fcore_2fframework_2ftypes_2eproto();
+namespace google {
+namespace protobuf {
+}  // namespace protobuf
+}  // namespace google
+namespace tensorflow {
+
+enum DataType {
+  DT_INVALID = 0,
+  DT_FLOAT = 1,
+  DT_DOUBLE = 2,
+  DT_INT32 = 3,
+  DT_UINT8 = 4,
+  DT_INT16 = 5,
+  DT_INT8 = 6,
+  DT_STRING = 7,
+  DT_COMPLEX64 = 8,
+  DT_INT64 = 9,
+  DT_BOOL = 10,
+  DT_QINT8 = 11,
+  DT_QUINT8 = 12,
+  DT_QINT32 = 13,
+  DT_BFLOAT16 = 14,
+  DT_QINT16 = 15,
+  DT_QUINT16 = 16,
+  DT_UINT16 = 17,
+  DT_COMPLEX128 = 18,
+  DT_HALF = 19,
+  DT_RESOURCE = 20,
+  DT_VARIANT = 21,
+  DT_UINT32 = 22,
+  DT_UINT64 = 23,
+  DT_FLOAT_REF = 101,
+  DT_DOUBLE_REF = 102,
+  DT_INT32_REF = 103,
+  DT_UINT8_REF = 104,
+  DT_INT16_REF = 105,
+  DT_INT8_REF = 106,
+  DT_STRING_REF = 107,
+  DT_COMPLEX64_REF = 108,
+  DT_INT64_REF = 109,
+  DT_BOOL_REF = 110,
+  DT_QINT8_REF = 111,
+  DT_QUINT8_REF = 112,
+  DT_QINT32_REF = 113,
+  DT_BFLOAT16_REF = 114,
+  DT_QINT16_REF = 115,
+  DT_QUINT16_REF = 116,
+  DT_UINT16_REF = 117,
+  DT_COMPLEX128_REF = 118,
+  DT_HALF_REF = 119,
+  DT_RESOURCE_REF = 120,
+  DT_VARIANT_REF = 121,
+  DT_UINT32_REF = 122,
+  DT_UINT64_REF = 123,
+  DataType_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::google::protobuf::int32>::min(),
+  DataType_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::google::protobuf::int32>::max()
+};
+bool DataType_IsValid(int value);
+const DataType DataType_MIN = DT_INVALID;
+const DataType DataType_MAX = DT_UINT64_REF;
+const int DataType_ARRAYSIZE = DataType_MAX + 1;
+
+const ::google::protobuf::EnumDescriptor* DataType_descriptor();
+inline const ::std::string& DataType_Name(DataType value) {
+  return ::google::protobuf::internal::NameOfEnum(
+    DataType_descriptor(), value);
+}
+inline bool DataType_Parse(
+    const ::std::string& name, DataType* value) {
+  return ::google::protobuf::internal::ParseNamedEnum<DataType>(
+    DataType_descriptor(), name, value);
+}
+// ===================================================================
+
+
+// ===================================================================
+
+
+// ===================================================================
+
+#ifdef __GNUC__
+  #pragma GCC diagnostic push
+  #pragma GCC diagnostic ignored "-Wstrict-aliasing"
+#endif  // __GNUC__
+#ifdef __GNUC__
+  #pragma GCC diagnostic pop
+#endif  // __GNUC__
+
+// @@protoc_insertion_point(namespace_scope)
+
+}  // namespace tensorflow
+
+namespace google {
+namespace protobuf {
+
+template <> struct is_proto_enum< ::tensorflow::DataType> : ::std::true_type {};
+template <>
+inline const EnumDescriptor* GetEnumDescriptor< ::tensorflow::DataType>() {
+  return ::tensorflow::DataType_descriptor();
+}
+
+}  // namespace protobuf
+}  // namespace google
+
+// @@protoc_insertion_point(global_scope)
+
+#include <google/protobuf/port_undef.inc>
+#endif  // PROTOBUF_INCLUDED_tensorflow_2fcore_2fframework_2ftypes_2eproto
diff --git a/tensorflow/core/framework/types.proto b/tensorflow/core/framework/types.proto
new file mode 100644 (file)
index 0000000..03835d1
--- /dev/null
@@ -0,0 +1,75 @@
+syntax = "proto3";
+
+package tensorflow;
+option cc_enable_arenas = true;
+option java_outer_classname = "TypesProtos";
+option java_multiple_files = true;
+option java_package = "org.tensorflow.framework";
+option go_package = "github.com/tensorflow/tensorflow/tensorflow/go/core/framework";
+
+// LINT.IfChange
+enum DataType {
+  // Not a legal value for DataType.  Used to indicate a DataType field
+  // has not been set.
+  DT_INVALID = 0;
+
+  // Data types that all computation devices are expected to be
+  // capable to support.
+  DT_FLOAT = 1;
+  DT_DOUBLE = 2;
+  DT_INT32 = 3;
+  DT_UINT8 = 4;
+  DT_INT16 = 5;
+  DT_INT8 = 6;
+  DT_STRING = 7;
+  DT_COMPLEX64 = 8;  // Single-precision complex
+  DT_INT64 = 9;
+  DT_BOOL = 10;
+  DT_QINT8 = 11;     // Quantized int8
+  DT_QUINT8 = 12;    // Quantized uint8
+  DT_QINT32 = 13;    // Quantized int32
+  DT_BFLOAT16 = 14;  // Float32 truncated to 16 bits.  Only for cast ops.
+  DT_QINT16 = 15;    // Quantized int16
+  DT_QUINT16 = 16;   // Quantized uint16
+  DT_UINT16 = 17;
+  DT_COMPLEX128 = 18;  // Double-precision complex
+  DT_HALF = 19;
+  DT_RESOURCE = 20;
+  DT_VARIANT = 21;  // Arbitrary C++ data types
+  DT_UINT32 = 22;
+  DT_UINT64 = 23;
+
+  // Do not use!  These are only for parameters.  Every enum above
+  // should have a corresponding value below (verified by types_test).
+  DT_FLOAT_REF = 101;
+  DT_DOUBLE_REF = 102;
+  DT_INT32_REF = 103;
+  DT_UINT8_REF = 104;
+  DT_INT16_REF = 105;
+  DT_INT8_REF = 106;
+  DT_STRING_REF = 107;
+  DT_COMPLEX64_REF = 108;
+  DT_INT64_REF = 109;
+  DT_BOOL_REF = 110;
+  DT_QINT8_REF = 111;
+  DT_QUINT8_REF = 112;
+  DT_QINT32_REF = 113;
+  DT_BFLOAT16_REF = 114;
+  DT_QINT16_REF = 115;
+  DT_QUINT16_REF = 116;
+  DT_UINT16_REF = 117;
+  DT_COMPLEX128_REF = 118;
+  DT_HALF_REF = 119;
+  DT_RESOURCE_REF = 120;
+  DT_VARIANT_REF = 121;
+  DT_UINT32_REF = 122;
+  DT_UINT64_REF = 123;
+}
+// LINT.ThenChange(
+//    https://www.tensorflow.org/code/tensorflow/c/c_api.h,
+//    https://www.tensorflow.org/code/tensorflow/go/tensor.go,
+//    https://www.tensorflow.org/code/tensorflow/core/framework/tensor.cc,
+//    https://www.tensorflow.org/code/tensorflow/core/framework/types.h,
+//    https://www.tensorflow.org/code/tensorflow/core/framework/types.cc,
+//    https://www.tensorflow.org/code/tensorflow/python/framework/dtypes.py,
+//    https://www.tensorflow.org/code/tensorflow/python/framework/function.py)
diff --git a/tensorflow/core/framework/variable.pb.cc b/tensorflow/core/framework/variable.pb.cc
new file mode 100644 (file)
index 0000000..7647874
--- /dev/null
@@ -0,0 +1,1452 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: tensorflow/core/framework/variable.proto
+
+#include "tensorflow/core/framework/variable.pb.h"
+
+#include <algorithm>
+
+#include <google/protobuf/stubs/common.h>
+#include <google/protobuf/io/coded_stream.h>
+#include <google/protobuf/extension_set.h>
+#include <google/protobuf/wire_format_lite_inl.h>
+#include <google/protobuf/descriptor.h>
+#include <google/protobuf/generated_message_reflection.h>
+#include <google/protobuf/reflection_ops.h>
+#include <google/protobuf/wire_format.h>
+// @@protoc_insertion_point(includes)
+#include <google/protobuf/port_def.inc>
+
+extern PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fframework_2fvariable_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_SaveSliceInfoDef_tensorflow_2fcore_2fframework_2fvariable_2eproto;
+namespace tensorflow {
+class VariableDefDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<VariableDef> _instance;
+} _VariableDef_default_instance_;
+class SaveSliceInfoDefDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<SaveSliceInfoDef> _instance;
+} _SaveSliceInfoDef_default_instance_;
+}  // namespace tensorflow
+static void InitDefaultsVariableDef_tensorflow_2fcore_2fframework_2fvariable_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_VariableDef_default_instance_;
+    new (ptr) ::tensorflow::VariableDef();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::VariableDef::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<1> scc_info_VariableDef_tensorflow_2fcore_2fframework_2fvariable_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsVariableDef_tensorflow_2fcore_2fframework_2fvariable_2eproto}, {
+      &scc_info_SaveSliceInfoDef_tensorflow_2fcore_2fframework_2fvariable_2eproto.base,}};
+
+static void InitDefaultsSaveSliceInfoDef_tensorflow_2fcore_2fframework_2fvariable_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_SaveSliceInfoDef_default_instance_;
+    new (ptr) ::tensorflow::SaveSliceInfoDef();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::SaveSliceInfoDef::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<0> scc_info_SaveSliceInfoDef_tensorflow_2fcore_2fframework_2fvariable_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsSaveSliceInfoDef_tensorflow_2fcore_2fframework_2fvariable_2eproto}, {}};
+
+void InitDefaults_tensorflow_2fcore_2fframework_2fvariable_2eproto() {
+  ::google::protobuf::internal::InitSCC(&scc_info_VariableDef_tensorflow_2fcore_2fframework_2fvariable_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_SaveSliceInfoDef_tensorflow_2fcore_2fframework_2fvariable_2eproto.base);
+}
+
+::google::protobuf::Metadata file_level_metadata_tensorflow_2fcore_2fframework_2fvariable_2eproto[2];
+constexpr ::google::protobuf::EnumDescriptor const** file_level_enum_descriptors_tensorflow_2fcore_2fframework_2fvariable_2eproto = nullptr;
+constexpr ::google::protobuf::ServiceDescriptor const** file_level_service_descriptors_tensorflow_2fcore_2fframework_2fvariable_2eproto = nullptr;
+
+const ::google::protobuf::uint32 TableStruct_tensorflow_2fcore_2fframework_2fvariable_2eproto::offsets[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = {
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::VariableDef, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::VariableDef, variable_name_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::VariableDef, initial_value_name_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::VariableDef, initializer_name_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::VariableDef, snapshot_name_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::VariableDef, save_slice_info_def_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::VariableDef, is_resource_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::VariableDef, trainable_),
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::SaveSliceInfoDef, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::SaveSliceInfoDef, full_name_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::SaveSliceInfoDef, full_shape_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::SaveSliceInfoDef, var_offset_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::SaveSliceInfoDef, var_shape_),
+};
+static const ::google::protobuf::internal::MigrationSchema schemas[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = {
+  { 0, -1, sizeof(::tensorflow::VariableDef)},
+  { 12, -1, sizeof(::tensorflow::SaveSliceInfoDef)},
+};
+
+static ::google::protobuf::Message const * const file_default_instances[] = {
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_VariableDef_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_SaveSliceInfoDef_default_instance_),
+};
+
+::google::protobuf::internal::AssignDescriptorsTable assign_descriptors_table_tensorflow_2fcore_2fframework_2fvariable_2eproto = {
+  {}, AddDescriptors_tensorflow_2fcore_2fframework_2fvariable_2eproto, "tensorflow/core/framework/variable.proto", schemas,
+  file_default_instances, TableStruct_tensorflow_2fcore_2fframework_2fvariable_2eproto::offsets,
+  file_level_metadata_tensorflow_2fcore_2fframework_2fvariable_2eproto, 2, file_level_enum_descriptors_tensorflow_2fcore_2fframework_2fvariable_2eproto, file_level_service_descriptors_tensorflow_2fcore_2fframework_2fvariable_2eproto,
+};
+
+::google::protobuf::internal::DescriptorTable descriptor_table_tensorflow_2fcore_2fframework_2fvariable_2eproto = {
+  false, InitDefaults_tensorflow_2fcore_2fframework_2fvariable_2eproto, 
+  "\n(tensorflow/core/framework/variable.pro"
+  "to\022\ntensorflow\"\324\001\n\013VariableDef\022\025\n\rvariab"
+  "le_name\030\001 \001(\t\022\032\n\022initial_value_name\030\006 \001("
+  "\t\022\030\n\020initializer_name\030\002 \001(\t\022\025\n\rsnapshot_"
+  "name\030\003 \001(\t\0229\n\023save_slice_info_def\030\004 \001(\0132"
+  "\034.tensorflow.SaveSliceInfoDef\022\023\n\013is_reso"
+  "urce\030\005 \001(\010\022\021\n\ttrainable\030\007 \001(\010\"`\n\020SaveSli"
+  "ceInfoDef\022\021\n\tfull_name\030\001 \001(\t\022\022\n\nfull_sha"
+  "pe\030\002 \003(\003\022\022\n\nvar_offset\030\003 \003(\003\022\021\n\tvar_shap"
+  "e\030\004 \003(\003Bn\n\030org.tensorflow.frameworkB\016Var"
+  "iableProtosP\001Z=github.com/tensorflow/ten"
+  "sorflow/tensorflow/go/core/framework\370\001\001b"
+  "\006proto3"
+,
+  "tensorflow/core/framework/variable.proto", &assign_descriptors_table_tensorflow_2fcore_2fframework_2fvariable_2eproto, 487,
+};
+
+void AddDescriptors_tensorflow_2fcore_2fframework_2fvariable_2eproto() {
+  static constexpr ::google::protobuf::internal::InitFunc deps[1] =
+  {
+  };
+ ::google::protobuf::internal::AddDescriptors(&descriptor_table_tensorflow_2fcore_2fframework_2fvariable_2eproto, deps, 0);
+}
+
+// Force running AddDescriptors() at dynamic initialization time.
+static bool dynamic_init_dummy_tensorflow_2fcore_2fframework_2fvariable_2eproto = []() { AddDescriptors_tensorflow_2fcore_2fframework_2fvariable_2eproto(); return true; }();
+namespace tensorflow {
+
+// ===================================================================
+
+void VariableDef::InitAsDefaultInstance() {
+  ::tensorflow::_VariableDef_default_instance_._instance.get_mutable()->save_slice_info_def_ = const_cast< ::tensorflow::SaveSliceInfoDef*>(
+      ::tensorflow::SaveSliceInfoDef::internal_default_instance());
+}
+class VariableDef::HasBitSetters {
+ public:
+  static const ::tensorflow::SaveSliceInfoDef& save_slice_info_def(const VariableDef* msg);
+};
+
+const ::tensorflow::SaveSliceInfoDef&
+VariableDef::HasBitSetters::save_slice_info_def(const VariableDef* msg) {
+  return *msg->save_slice_info_def_;
+}
+void VariableDef::unsafe_arena_set_allocated_save_slice_info_def(
+    ::tensorflow::SaveSliceInfoDef* save_slice_info_def) {
+  if (GetArenaNoVirtual() == NULL) {
+    delete save_slice_info_def_;
+  }
+  save_slice_info_def_ = save_slice_info_def;
+  if (save_slice_info_def) {
+    
+  } else {
+    
+  }
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.VariableDef.save_slice_info_def)
+}
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int VariableDef::kVariableNameFieldNumber;
+const int VariableDef::kInitialValueNameFieldNumber;
+const int VariableDef::kInitializerNameFieldNumber;
+const int VariableDef::kSnapshotNameFieldNumber;
+const int VariableDef::kSaveSliceInfoDefFieldNumber;
+const int VariableDef::kIsResourceFieldNumber;
+const int VariableDef::kTrainableFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+VariableDef::VariableDef()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.VariableDef)
+}
+VariableDef::VariableDef(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.VariableDef)
+}
+VariableDef::VariableDef(const VariableDef& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  variable_name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.variable_name().size() > 0) {
+    variable_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.variable_name(),
+      GetArenaNoVirtual());
+  }
+  initializer_name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.initializer_name().size() > 0) {
+    initializer_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.initializer_name(),
+      GetArenaNoVirtual());
+  }
+  snapshot_name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.snapshot_name().size() > 0) {
+    snapshot_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.snapshot_name(),
+      GetArenaNoVirtual());
+  }
+  initial_value_name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.initial_value_name().size() > 0) {
+    initial_value_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.initial_value_name(),
+      GetArenaNoVirtual());
+  }
+  if (from.has_save_slice_info_def()) {
+    save_slice_info_def_ = new ::tensorflow::SaveSliceInfoDef(*from.save_slice_info_def_);
+  } else {
+    save_slice_info_def_ = NULL;
+  }
+  ::memcpy(&is_resource_, &from.is_resource_,
+    static_cast<size_t>(reinterpret_cast<char*>(&trainable_) -
+    reinterpret_cast<char*>(&is_resource_)) + sizeof(trainable_));
+  // @@protoc_insertion_point(copy_constructor:tensorflow.VariableDef)
+}
+
+void VariableDef::SharedCtor() {
+  ::google::protobuf::internal::InitSCC(
+      &scc_info_VariableDef_tensorflow_2fcore_2fframework_2fvariable_2eproto.base);
+  variable_name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  initializer_name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  snapshot_name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  initial_value_name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  ::memset(&save_slice_info_def_, 0, static_cast<size_t>(
+      reinterpret_cast<char*>(&trainable_) -
+      reinterpret_cast<char*>(&save_slice_info_def_)) + sizeof(trainable_));
+}
+
+VariableDef::~VariableDef() {
+  // @@protoc_insertion_point(destructor:tensorflow.VariableDef)
+  SharedDtor();
+}
+
+void VariableDef::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+  variable_name_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  initializer_name_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  snapshot_name_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  initial_value_name_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (this != internal_default_instance()) delete save_slice_info_def_;
+}
+
+void VariableDef::ArenaDtor(void* object) {
+  VariableDef* _this = reinterpret_cast< VariableDef* >(object);
+  (void)_this;
+}
+void VariableDef::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void VariableDef::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const VariableDef& VariableDef::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_VariableDef_tensorflow_2fcore_2fframework_2fvariable_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void VariableDef::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.VariableDef)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  variable_name_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+  initializer_name_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+  snapshot_name_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+  initial_value_name_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+  if (GetArenaNoVirtual() == NULL && save_slice_info_def_ != NULL) {
+    delete save_slice_info_def_;
+  }
+  save_slice_info_def_ = NULL;
+  ::memset(&is_resource_, 0, static_cast<size_t>(
+      reinterpret_cast<char*>(&trainable_) -
+      reinterpret_cast<char*>(&is_resource_)) + sizeof(trainable_));
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* VariableDef::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<VariableDef*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // string variable_name = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 10) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("tensorflow.VariableDef.variable_name");
+        parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+        ::std::string* str = msg->mutable_variable_name();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+        break;
+      }
+      // string initializer_name = 2;
+      case 2: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 18) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("tensorflow.VariableDef.initializer_name");
+        parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+        ::std::string* str = msg->mutable_initializer_name();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+        break;
+      }
+      // string snapshot_name = 3;
+      case 3: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 26) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("tensorflow.VariableDef.snapshot_name");
+        parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+        ::std::string* str = msg->mutable_snapshot_name();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+        break;
+      }
+      // .tensorflow.SaveSliceInfoDef save_slice_info_def = 4;
+      case 4: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 34) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        parser_till_end = ::tensorflow::SaveSliceInfoDef::_InternalParse;
+        object = msg->mutable_save_slice_info_def();
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                       ptr, newend);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+        ptr = newend;
+        break;
+      }
+      // bool is_resource = 5;
+      case 5: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 40) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        bool value = val;
+        msg->set_is_resource(value);
+        break;
+      }
+      // string initial_value_name = 6;
+      case 6: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 50) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("tensorflow.VariableDef.initial_value_name");
+        parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+        ::std::string* str = msg->mutable_initial_value_name();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+        break;
+      }
+      // bool trainable = 7;
+      case 7: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 56) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        bool value = val;
+        msg->set_trainable(value);
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool VariableDef::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.VariableDef)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // string variable_name = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (10 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_variable_name()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->variable_name().data(), static_cast<int>(this->variable_name().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.VariableDef.variable_name"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // string initializer_name = 2;
+      case 2: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (18 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_initializer_name()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->initializer_name().data(), static_cast<int>(this->initializer_name().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.VariableDef.initializer_name"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // string snapshot_name = 3;
+      case 3: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (26 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_snapshot_name()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->snapshot_name().data(), static_cast<int>(this->snapshot_name().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.VariableDef.snapshot_name"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // .tensorflow.SaveSliceInfoDef save_slice_info_def = 4;
+      case 4: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (34 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+               input, mutable_save_slice_info_def()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // bool is_resource = 5;
+      case 5: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (40 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
+                 input, &is_resource_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // string initial_value_name = 6;
+      case 6: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (50 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_initial_value_name()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->initial_value_name().data(), static_cast<int>(this->initial_value_name().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.VariableDef.initial_value_name"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // bool trainable = 7;
+      case 7: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (56 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
+                 input, &trainable_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.VariableDef)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.VariableDef)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void VariableDef::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.VariableDef)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // string variable_name = 1;
+  if (this->variable_name().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->variable_name().data(), static_cast<int>(this->variable_name().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.VariableDef.variable_name");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      1, this->variable_name(), output);
+  }
+
+  // string initializer_name = 2;
+  if (this->initializer_name().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->initializer_name().data(), static_cast<int>(this->initializer_name().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.VariableDef.initializer_name");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      2, this->initializer_name(), output);
+  }
+
+  // string snapshot_name = 3;
+  if (this->snapshot_name().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->snapshot_name().data(), static_cast<int>(this->snapshot_name().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.VariableDef.snapshot_name");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      3, this->snapshot_name(), output);
+  }
+
+  // .tensorflow.SaveSliceInfoDef save_slice_info_def = 4;
+  if (this->has_save_slice_info_def()) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      4, HasBitSetters::save_slice_info_def(this), output);
+  }
+
+  // bool is_resource = 5;
+  if (this->is_resource() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteBool(5, this->is_resource(), output);
+  }
+
+  // string initial_value_name = 6;
+  if (this->initial_value_name().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->initial_value_name().data(), static_cast<int>(this->initial_value_name().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.VariableDef.initial_value_name");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      6, this->initial_value_name(), output);
+  }
+
+  // bool trainable = 7;
+  if (this->trainable() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteBool(7, this->trainable(), output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.VariableDef)
+}
+
+::google::protobuf::uint8* VariableDef::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.VariableDef)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // string variable_name = 1;
+  if (this->variable_name().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->variable_name().data(), static_cast<int>(this->variable_name().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.VariableDef.variable_name");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        1, this->variable_name(), target);
+  }
+
+  // string initializer_name = 2;
+  if (this->initializer_name().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->initializer_name().data(), static_cast<int>(this->initializer_name().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.VariableDef.initializer_name");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        2, this->initializer_name(), target);
+  }
+
+  // string snapshot_name = 3;
+  if (this->snapshot_name().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->snapshot_name().data(), static_cast<int>(this->snapshot_name().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.VariableDef.snapshot_name");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        3, this->snapshot_name(), target);
+  }
+
+  // .tensorflow.SaveSliceInfoDef save_slice_info_def = 4;
+  if (this->has_save_slice_info_def()) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        4, HasBitSetters::save_slice_info_def(this), deterministic, target);
+  }
+
+  // bool is_resource = 5;
+  if (this->is_resource() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(5, this->is_resource(), target);
+  }
+
+  // string initial_value_name = 6;
+  if (this->initial_value_name().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->initial_value_name().data(), static_cast<int>(this->initial_value_name().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.VariableDef.initial_value_name");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        6, this->initial_value_name(), target);
+  }
+
+  // bool trainable = 7;
+  if (this->trainable() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(7, this->trainable(), target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.VariableDef)
+  return target;
+}
+
+size_t VariableDef::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.VariableDef)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // string variable_name = 1;
+  if (this->variable_name().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->variable_name());
+  }
+
+  // string initializer_name = 2;
+  if (this->initializer_name().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->initializer_name());
+  }
+
+  // string snapshot_name = 3;
+  if (this->snapshot_name().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->snapshot_name());
+  }
+
+  // string initial_value_name = 6;
+  if (this->initial_value_name().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->initial_value_name());
+  }
+
+  // .tensorflow.SaveSliceInfoDef save_slice_info_def = 4;
+  if (this->has_save_slice_info_def()) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::MessageSize(
+        *save_slice_info_def_);
+  }
+
+  // bool is_resource = 5;
+  if (this->is_resource() != 0) {
+    total_size += 1 + 1;
+  }
+
+  // bool trainable = 7;
+  if (this->trainable() != 0) {
+    total_size += 1 + 1;
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void VariableDef::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.VariableDef)
+  GOOGLE_DCHECK_NE(&from, this);
+  const VariableDef* source =
+      ::google::protobuf::DynamicCastToGenerated<VariableDef>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.VariableDef)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.VariableDef)
+    MergeFrom(*source);
+  }
+}
+
+void VariableDef::MergeFrom(const VariableDef& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.VariableDef)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  if (from.variable_name().size() > 0) {
+    set_variable_name(from.variable_name());
+  }
+  if (from.initializer_name().size() > 0) {
+    set_initializer_name(from.initializer_name());
+  }
+  if (from.snapshot_name().size() > 0) {
+    set_snapshot_name(from.snapshot_name());
+  }
+  if (from.initial_value_name().size() > 0) {
+    set_initial_value_name(from.initial_value_name());
+  }
+  if (from.has_save_slice_info_def()) {
+    mutable_save_slice_info_def()->::tensorflow::SaveSliceInfoDef::MergeFrom(from.save_slice_info_def());
+  }
+  if (from.is_resource() != 0) {
+    set_is_resource(from.is_resource());
+  }
+  if (from.trainable() != 0) {
+    set_trainable(from.trainable());
+  }
+}
+
+void VariableDef::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.VariableDef)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void VariableDef::CopyFrom(const VariableDef& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.VariableDef)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool VariableDef::IsInitialized() const {
+  return true;
+}
+
+void VariableDef::Swap(VariableDef* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    VariableDef* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void VariableDef::UnsafeArenaSwap(VariableDef* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void VariableDef::InternalSwap(VariableDef* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  variable_name_.Swap(&other->variable_name_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+  initializer_name_.Swap(&other->initializer_name_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+  snapshot_name_.Swap(&other->snapshot_name_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+  initial_value_name_.Swap(&other->initial_value_name_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+  swap(save_slice_info_def_, other->save_slice_info_def_);
+  swap(is_resource_, other->is_resource_);
+  swap(trainable_, other->trainable_);
+}
+
+::google::protobuf::Metadata VariableDef::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fframework_2fvariable_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fframework_2fvariable_2eproto[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+void SaveSliceInfoDef::InitAsDefaultInstance() {
+}
+class SaveSliceInfoDef::HasBitSetters {
+ public:
+};
+
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int SaveSliceInfoDef::kFullNameFieldNumber;
+const int SaveSliceInfoDef::kFullShapeFieldNumber;
+const int SaveSliceInfoDef::kVarOffsetFieldNumber;
+const int SaveSliceInfoDef::kVarShapeFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+SaveSliceInfoDef::SaveSliceInfoDef()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.SaveSliceInfoDef)
+}
+SaveSliceInfoDef::SaveSliceInfoDef(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena),
+  full_shape_(arena),
+  var_offset_(arena),
+  var_shape_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.SaveSliceInfoDef)
+}
+SaveSliceInfoDef::SaveSliceInfoDef(const SaveSliceInfoDef& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL),
+      full_shape_(from.full_shape_),
+      var_offset_(from.var_offset_),
+      var_shape_(from.var_shape_) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  full_name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.full_name().size() > 0) {
+    full_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.full_name(),
+      GetArenaNoVirtual());
+  }
+  // @@protoc_insertion_point(copy_constructor:tensorflow.SaveSliceInfoDef)
+}
+
+void SaveSliceInfoDef::SharedCtor() {
+  ::google::protobuf::internal::InitSCC(
+      &scc_info_SaveSliceInfoDef_tensorflow_2fcore_2fframework_2fvariable_2eproto.base);
+  full_name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+
+SaveSliceInfoDef::~SaveSliceInfoDef() {
+  // @@protoc_insertion_point(destructor:tensorflow.SaveSliceInfoDef)
+  SharedDtor();
+}
+
+void SaveSliceInfoDef::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+  full_name_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+
+void SaveSliceInfoDef::ArenaDtor(void* object) {
+  SaveSliceInfoDef* _this = reinterpret_cast< SaveSliceInfoDef* >(object);
+  (void)_this;
+}
+void SaveSliceInfoDef::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void SaveSliceInfoDef::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const SaveSliceInfoDef& SaveSliceInfoDef::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_SaveSliceInfoDef_tensorflow_2fcore_2fframework_2fvariable_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void SaveSliceInfoDef::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.SaveSliceInfoDef)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  full_shape_.Clear();
+  var_offset_.Clear();
+  var_shape_.Clear();
+  full_name_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* SaveSliceInfoDef::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<SaveSliceInfoDef*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // string full_name = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 10) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("tensorflow.SaveSliceInfoDef.full_name");
+        parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+        ::std::string* str = msg->mutable_full_name();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+        break;
+      }
+      // repeated int64 full_shape = 2;
+      case 2: {
+        if (static_cast<::google::protobuf::uint8>(tag) == 18) {
+          ptr = Varint::Parse32Inline(ptr, &size);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          parser_till_end = ::google::protobuf::internal::PackedInt64Parser;
+          object = msg->mutable_full_shape();
+          if (size > end - ptr) goto len_delim_till_end;
+          auto newend = ptr + size;
+          if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+          break;
+        } else if (static_cast<::google::protobuf::uint8>(tag) != 16) goto handle_unusual;
+        do {
+          ::google::protobuf::uint64 val;
+          ptr = Varint::Parse64(ptr, &val);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          ::google::protobuf::int64 value = val;
+          msg->add_full_shape(value);
+          if (ptr >= end) break;
+        } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 16 && (ptr += 1));
+        break;
+      }
+      // repeated int64 var_offset = 3;
+      case 3: {
+        if (static_cast<::google::protobuf::uint8>(tag) == 26) {
+          ptr = Varint::Parse32Inline(ptr, &size);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          parser_till_end = ::google::protobuf::internal::PackedInt64Parser;
+          object = msg->mutable_var_offset();
+          if (size > end - ptr) goto len_delim_till_end;
+          auto newend = ptr + size;
+          if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+          break;
+        } else if (static_cast<::google::protobuf::uint8>(tag) != 24) goto handle_unusual;
+        do {
+          ::google::protobuf::uint64 val;
+          ptr = Varint::Parse64(ptr, &val);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          ::google::protobuf::int64 value = val;
+          msg->add_var_offset(value);
+          if (ptr >= end) break;
+        } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 24 && (ptr += 1));
+        break;
+      }
+      // repeated int64 var_shape = 4;
+      case 4: {
+        if (static_cast<::google::protobuf::uint8>(tag) == 34) {
+          ptr = Varint::Parse32Inline(ptr, &size);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          parser_till_end = ::google::protobuf::internal::PackedInt64Parser;
+          object = msg->mutable_var_shape();
+          if (size > end - ptr) goto len_delim_till_end;
+          auto newend = ptr + size;
+          if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+          break;
+        } else if (static_cast<::google::protobuf::uint8>(tag) != 32) goto handle_unusual;
+        do {
+          ::google::protobuf::uint64 val;
+          ptr = Varint::Parse64(ptr, &val);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          ::google::protobuf::int64 value = val;
+          msg->add_var_shape(value);
+          if (ptr >= end) break;
+        } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 32 && (ptr += 1));
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool SaveSliceInfoDef::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.SaveSliceInfoDef)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // string full_name = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (10 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_full_name()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->full_name().data(), static_cast<int>(this->full_name().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.SaveSliceInfoDef.full_name"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // repeated int64 full_shape = 2;
+      case 2: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (18 & 0xFF)) {
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPackedPrimitive<
+                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>(
+                 input, this->mutable_full_shape())));
+        } else if (static_cast< ::google::protobuf::uint8>(tag) == (16 & 0xFF)) {
+          DO_((::google::protobuf::internal::WireFormatLite::ReadRepeatedPrimitiveNoInline<
+                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>(
+                 1, 18u, input, this->mutable_full_shape())));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // repeated int64 var_offset = 3;
+      case 3: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (26 & 0xFF)) {
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPackedPrimitive<
+                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>(
+                 input, this->mutable_var_offset())));
+        } else if (static_cast< ::google::protobuf::uint8>(tag) == (24 & 0xFF)) {
+          DO_((::google::protobuf::internal::WireFormatLite::ReadRepeatedPrimitiveNoInline<
+                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>(
+                 1, 26u, input, this->mutable_var_offset())));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // repeated int64 var_shape = 4;
+      case 4: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (34 & 0xFF)) {
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPackedPrimitive<
+                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>(
+                 input, this->mutable_var_shape())));
+        } else if (static_cast< ::google::protobuf::uint8>(tag) == (32 & 0xFF)) {
+          DO_((::google::protobuf::internal::WireFormatLite::ReadRepeatedPrimitiveNoInline<
+                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>(
+                 1, 34u, input, this->mutable_var_shape())));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.SaveSliceInfoDef)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.SaveSliceInfoDef)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void SaveSliceInfoDef::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.SaveSliceInfoDef)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // string full_name = 1;
+  if (this->full_name().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->full_name().data(), static_cast<int>(this->full_name().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.SaveSliceInfoDef.full_name");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      1, this->full_name(), output);
+  }
+
+  // repeated int64 full_shape = 2;
+  if (this->full_shape_size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteTag(2, ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED, output);
+    output->WriteVarint32(_full_shape_cached_byte_size_.load(
+        std::memory_order_relaxed));
+  }
+  for (int i = 0, n = this->full_shape_size(); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt64NoTag(
+      this->full_shape(i), output);
+  }
+
+  // repeated int64 var_offset = 3;
+  if (this->var_offset_size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteTag(3, ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED, output);
+    output->WriteVarint32(_var_offset_cached_byte_size_.load(
+        std::memory_order_relaxed));
+  }
+  for (int i = 0, n = this->var_offset_size(); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt64NoTag(
+      this->var_offset(i), output);
+  }
+
+  // repeated int64 var_shape = 4;
+  if (this->var_shape_size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteTag(4, ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED, output);
+    output->WriteVarint32(_var_shape_cached_byte_size_.load(
+        std::memory_order_relaxed));
+  }
+  for (int i = 0, n = this->var_shape_size(); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt64NoTag(
+      this->var_shape(i), output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.SaveSliceInfoDef)
+}
+
+::google::protobuf::uint8* SaveSliceInfoDef::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.SaveSliceInfoDef)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // string full_name = 1;
+  if (this->full_name().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->full_name().data(), static_cast<int>(this->full_name().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.SaveSliceInfoDef.full_name");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        1, this->full_name(), target);
+  }
+
+  // repeated int64 full_shape = 2;
+  if (this->full_shape_size() > 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteTagToArray(
+      2,
+      ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED,
+      target);
+    target = ::google::protobuf::io::CodedOutputStream::WriteVarint32ToArray(
+        _full_shape_cached_byte_size_.load(std::memory_order_relaxed),
+         target);
+    target = ::google::protobuf::internal::WireFormatLite::
+      WriteInt64NoTagToArray(this->full_shape_, target);
+  }
+
+  // repeated int64 var_offset = 3;
+  if (this->var_offset_size() > 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteTagToArray(
+      3,
+      ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED,
+      target);
+    target = ::google::protobuf::io::CodedOutputStream::WriteVarint32ToArray(
+        _var_offset_cached_byte_size_.load(std::memory_order_relaxed),
+         target);
+    target = ::google::protobuf::internal::WireFormatLite::
+      WriteInt64NoTagToArray(this->var_offset_, target);
+  }
+
+  // repeated int64 var_shape = 4;
+  if (this->var_shape_size() > 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteTagToArray(
+      4,
+      ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED,
+      target);
+    target = ::google::protobuf::io::CodedOutputStream::WriteVarint32ToArray(
+        _var_shape_cached_byte_size_.load(std::memory_order_relaxed),
+         target);
+    target = ::google::protobuf::internal::WireFormatLite::
+      WriteInt64NoTagToArray(this->var_shape_, target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.SaveSliceInfoDef)
+  return target;
+}
+
+size_t SaveSliceInfoDef::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.SaveSliceInfoDef)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // repeated int64 full_shape = 2;
+  {
+    size_t data_size = ::google::protobuf::internal::WireFormatLite::
+      Int64Size(this->full_shape_);
+    if (data_size > 0) {
+      total_size += 1 +
+        ::google::protobuf::internal::WireFormatLite::Int32Size(
+            static_cast<::google::protobuf::int32>(data_size));
+    }
+    int cached_size = ::google::protobuf::internal::ToCachedSize(data_size);
+    _full_shape_cached_byte_size_.store(cached_size,
+                                    std::memory_order_relaxed);
+    total_size += data_size;
+  }
+
+  // repeated int64 var_offset = 3;
+  {
+    size_t data_size = ::google::protobuf::internal::WireFormatLite::
+      Int64Size(this->var_offset_);
+    if (data_size > 0) {
+      total_size += 1 +
+        ::google::protobuf::internal::WireFormatLite::Int32Size(
+            static_cast<::google::protobuf::int32>(data_size));
+    }
+    int cached_size = ::google::protobuf::internal::ToCachedSize(data_size);
+    _var_offset_cached_byte_size_.store(cached_size,
+                                    std::memory_order_relaxed);
+    total_size += data_size;
+  }
+
+  // repeated int64 var_shape = 4;
+  {
+    size_t data_size = ::google::protobuf::internal::WireFormatLite::
+      Int64Size(this->var_shape_);
+    if (data_size > 0) {
+      total_size += 1 +
+        ::google::protobuf::internal::WireFormatLite::Int32Size(
+            static_cast<::google::protobuf::int32>(data_size));
+    }
+    int cached_size = ::google::protobuf::internal::ToCachedSize(data_size);
+    _var_shape_cached_byte_size_.store(cached_size,
+                                    std::memory_order_relaxed);
+    total_size += data_size;
+  }
+
+  // string full_name = 1;
+  if (this->full_name().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->full_name());
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void SaveSliceInfoDef::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.SaveSliceInfoDef)
+  GOOGLE_DCHECK_NE(&from, this);
+  const SaveSliceInfoDef* source =
+      ::google::protobuf::DynamicCastToGenerated<SaveSliceInfoDef>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.SaveSliceInfoDef)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.SaveSliceInfoDef)
+    MergeFrom(*source);
+  }
+}
+
+void SaveSliceInfoDef::MergeFrom(const SaveSliceInfoDef& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.SaveSliceInfoDef)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  full_shape_.MergeFrom(from.full_shape_);
+  var_offset_.MergeFrom(from.var_offset_);
+  var_shape_.MergeFrom(from.var_shape_);
+  if (from.full_name().size() > 0) {
+    set_full_name(from.full_name());
+  }
+}
+
+void SaveSliceInfoDef::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.SaveSliceInfoDef)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void SaveSliceInfoDef::CopyFrom(const SaveSliceInfoDef& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.SaveSliceInfoDef)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool SaveSliceInfoDef::IsInitialized() const {
+  return true;
+}
+
+void SaveSliceInfoDef::Swap(SaveSliceInfoDef* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    SaveSliceInfoDef* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void SaveSliceInfoDef::UnsafeArenaSwap(SaveSliceInfoDef* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void SaveSliceInfoDef::InternalSwap(SaveSliceInfoDef* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  full_shape_.InternalSwap(&other->full_shape_);
+  var_offset_.InternalSwap(&other->var_offset_);
+  var_shape_.InternalSwap(&other->var_shape_);
+  full_name_.Swap(&other->full_name_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+}
+
+::google::protobuf::Metadata SaveSliceInfoDef::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fframework_2fvariable_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fframework_2fvariable_2eproto[kIndexInFileMessages];
+}
+
+
+// @@protoc_insertion_point(namespace_scope)
+}  // namespace tensorflow
+namespace google {
+namespace protobuf {
+template<> PROTOBUF_NOINLINE ::tensorflow::VariableDef* Arena::CreateMaybeMessage< ::tensorflow::VariableDef >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::VariableDef >(arena);
+}
+template<> PROTOBUF_NOINLINE ::tensorflow::SaveSliceInfoDef* Arena::CreateMaybeMessage< ::tensorflow::SaveSliceInfoDef >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::SaveSliceInfoDef >(arena);
+}
+}  // namespace protobuf
+}  // namespace google
+
+// @@protoc_insertion_point(global_scope)
+#include <google/protobuf/port_undef.inc>
diff --git a/tensorflow/core/framework/variable.pb.h b/tensorflow/core/framework/variable.pb.h
new file mode 100644 (file)
index 0000000..54bc635
--- /dev/null
@@ -0,0 +1,1077 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: tensorflow/core/framework/variable.proto
+
+#ifndef PROTOBUF_INCLUDED_tensorflow_2fcore_2fframework_2fvariable_2eproto
+#define PROTOBUF_INCLUDED_tensorflow_2fcore_2fframework_2fvariable_2eproto
+
+#include <limits>
+#include <string>
+
+#include <google/protobuf/port_def.inc>
+#if PROTOBUF_VERSION < 3006001
+#error This file was generated by a newer version of protoc which is
+#error incompatible with your Protocol Buffer headers. Please update
+#error your headers.
+#endif
+#if 3006001 < PROTOBUF_MIN_PROTOC_VERSION
+#error This file was generated by an older version of protoc which is
+#error incompatible with your Protocol Buffer headers. Please
+#error regenerate this file with a newer version of protoc.
+#endif
+
+#include <google/protobuf/port_undef.inc>
+#include <google/protobuf/io/coded_stream.h>
+#include <google/protobuf/arena.h>
+#include <google/protobuf/arenastring.h>
+#include <google/protobuf/generated_message_table_driven.h>
+#include <google/protobuf/generated_message_util.h>
+#include <google/protobuf/inlined_string_field.h>
+#include <google/protobuf/metadata.h>
+#include <google/protobuf/message.h>
+#include <google/protobuf/repeated_field.h>  // IWYU pragma: export
+#include <google/protobuf/extension_set.h>  // IWYU pragma: export
+#include <google/protobuf/unknown_field_set.h>
+// @@protoc_insertion_point(includes)
+#include <google/protobuf/port_def.inc>
+#define PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fframework_2fvariable_2eproto
+
+// Internal implementation detail -- do not use these members.
+struct TableStruct_tensorflow_2fcore_2fframework_2fvariable_2eproto {
+  static const ::google::protobuf::internal::ParseTableField entries[]
+    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
+  static const ::google::protobuf::internal::AuxillaryParseTableField aux[]
+    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
+  static const ::google::protobuf::internal::ParseTable schema[2]
+    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
+  static const ::google::protobuf::internal::FieldMetadata field_metadata[];
+  static const ::google::protobuf::internal::SerializationTable serialization_table[];
+  static const ::google::protobuf::uint32 offsets[];
+};
+void AddDescriptors_tensorflow_2fcore_2fframework_2fvariable_2eproto();
+namespace tensorflow {
+class SaveSliceInfoDef;
+class SaveSliceInfoDefDefaultTypeInternal;
+extern SaveSliceInfoDefDefaultTypeInternal _SaveSliceInfoDef_default_instance_;
+class VariableDef;
+class VariableDefDefaultTypeInternal;
+extern VariableDefDefaultTypeInternal _VariableDef_default_instance_;
+}  // namespace tensorflow
+namespace google {
+namespace protobuf {
+template<> ::tensorflow::SaveSliceInfoDef* Arena::CreateMaybeMessage<::tensorflow::SaveSliceInfoDef>(Arena*);
+template<> ::tensorflow::VariableDef* Arena::CreateMaybeMessage<::tensorflow::VariableDef>(Arena*);
+}  // namespace protobuf
+}  // namespace google
+namespace tensorflow {
+
+// ===================================================================
+
+class VariableDef : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.VariableDef) */ {
+ public:
+  VariableDef();
+  virtual ~VariableDef();
+
+  VariableDef(const VariableDef& from);
+
+  inline VariableDef& operator=(const VariableDef& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  VariableDef(VariableDef&& from) noexcept
+    : VariableDef() {
+    *this = ::std::move(from);
+  }
+
+  inline VariableDef& operator=(VariableDef&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const VariableDef& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const VariableDef* internal_default_instance() {
+    return reinterpret_cast<const VariableDef*>(
+               &_VariableDef_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    0;
+
+  void UnsafeArenaSwap(VariableDef* other);
+  void Swap(VariableDef* other);
+  friend void swap(VariableDef& a, VariableDef& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline VariableDef* New() const final {
+    return CreateMaybeMessage<VariableDef>(NULL);
+  }
+
+  VariableDef* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<VariableDef>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const VariableDef& from);
+  void MergeFrom(const VariableDef& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(VariableDef* other);
+  protected:
+  explicit VariableDef(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // string variable_name = 1;
+  void clear_variable_name();
+  static const int kVariableNameFieldNumber = 1;
+  const ::std::string& variable_name() const;
+  void set_variable_name(const ::std::string& value);
+  #if LANG_CXX11
+  void set_variable_name(::std::string&& value);
+  #endif
+  void set_variable_name(const char* value);
+  void set_variable_name(const char* value, size_t size);
+  ::std::string* mutable_variable_name();
+  ::std::string* release_variable_name();
+  void set_allocated_variable_name(::std::string* variable_name);
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  ::std::string* unsafe_arena_release_variable_name();
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  void unsafe_arena_set_allocated_variable_name(
+      ::std::string* variable_name);
+
+  // string initializer_name = 2;
+  void clear_initializer_name();
+  static const int kInitializerNameFieldNumber = 2;
+  const ::std::string& initializer_name() const;
+  void set_initializer_name(const ::std::string& value);
+  #if LANG_CXX11
+  void set_initializer_name(::std::string&& value);
+  #endif
+  void set_initializer_name(const char* value);
+  void set_initializer_name(const char* value, size_t size);
+  ::std::string* mutable_initializer_name();
+  ::std::string* release_initializer_name();
+  void set_allocated_initializer_name(::std::string* initializer_name);
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  ::std::string* unsafe_arena_release_initializer_name();
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  void unsafe_arena_set_allocated_initializer_name(
+      ::std::string* initializer_name);
+
+  // string snapshot_name = 3;
+  void clear_snapshot_name();
+  static const int kSnapshotNameFieldNumber = 3;
+  const ::std::string& snapshot_name() const;
+  void set_snapshot_name(const ::std::string& value);
+  #if LANG_CXX11
+  void set_snapshot_name(::std::string&& value);
+  #endif
+  void set_snapshot_name(const char* value);
+  void set_snapshot_name(const char* value, size_t size);
+  ::std::string* mutable_snapshot_name();
+  ::std::string* release_snapshot_name();
+  void set_allocated_snapshot_name(::std::string* snapshot_name);
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  ::std::string* unsafe_arena_release_snapshot_name();
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  void unsafe_arena_set_allocated_snapshot_name(
+      ::std::string* snapshot_name);
+
+  // string initial_value_name = 6;
+  void clear_initial_value_name();
+  static const int kInitialValueNameFieldNumber = 6;
+  const ::std::string& initial_value_name() const;
+  void set_initial_value_name(const ::std::string& value);
+  #if LANG_CXX11
+  void set_initial_value_name(::std::string&& value);
+  #endif
+  void set_initial_value_name(const char* value);
+  void set_initial_value_name(const char* value, size_t size);
+  ::std::string* mutable_initial_value_name();
+  ::std::string* release_initial_value_name();
+  void set_allocated_initial_value_name(::std::string* initial_value_name);
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  ::std::string* unsafe_arena_release_initial_value_name();
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  void unsafe_arena_set_allocated_initial_value_name(
+      ::std::string* initial_value_name);
+
+  // .tensorflow.SaveSliceInfoDef save_slice_info_def = 4;
+  bool has_save_slice_info_def() const;
+  void clear_save_slice_info_def();
+  static const int kSaveSliceInfoDefFieldNumber = 4;
+  const ::tensorflow::SaveSliceInfoDef& save_slice_info_def() const;
+  ::tensorflow::SaveSliceInfoDef* release_save_slice_info_def();
+  ::tensorflow::SaveSliceInfoDef* mutable_save_slice_info_def();
+  void set_allocated_save_slice_info_def(::tensorflow::SaveSliceInfoDef* save_slice_info_def);
+  void unsafe_arena_set_allocated_save_slice_info_def(
+      ::tensorflow::SaveSliceInfoDef* save_slice_info_def);
+  ::tensorflow::SaveSliceInfoDef* unsafe_arena_release_save_slice_info_def();
+
+  // bool is_resource = 5;
+  void clear_is_resource();
+  static const int kIsResourceFieldNumber = 5;
+  bool is_resource() const;
+  void set_is_resource(bool value);
+
+  // bool trainable = 7;
+  void clear_trainable();
+  static const int kTrainableFieldNumber = 7;
+  bool trainable() const;
+  void set_trainable(bool value);
+
+  // @@protoc_insertion_point(class_scope:tensorflow.VariableDef)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  ::google::protobuf::internal::ArenaStringPtr variable_name_;
+  ::google::protobuf::internal::ArenaStringPtr initializer_name_;
+  ::google::protobuf::internal::ArenaStringPtr snapshot_name_;
+  ::google::protobuf::internal::ArenaStringPtr initial_value_name_;
+  ::tensorflow::SaveSliceInfoDef* save_slice_info_def_;
+  bool is_resource_;
+  bool trainable_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fframework_2fvariable_2eproto;
+};
+// -------------------------------------------------------------------
+
+class SaveSliceInfoDef : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.SaveSliceInfoDef) */ {
+ public:
+  SaveSliceInfoDef();
+  virtual ~SaveSliceInfoDef();
+
+  SaveSliceInfoDef(const SaveSliceInfoDef& from);
+
+  inline SaveSliceInfoDef& operator=(const SaveSliceInfoDef& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  SaveSliceInfoDef(SaveSliceInfoDef&& from) noexcept
+    : SaveSliceInfoDef() {
+    *this = ::std::move(from);
+  }
+
+  inline SaveSliceInfoDef& operator=(SaveSliceInfoDef&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const SaveSliceInfoDef& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const SaveSliceInfoDef* internal_default_instance() {
+    return reinterpret_cast<const SaveSliceInfoDef*>(
+               &_SaveSliceInfoDef_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    1;
+
+  void UnsafeArenaSwap(SaveSliceInfoDef* other);
+  void Swap(SaveSliceInfoDef* other);
+  friend void swap(SaveSliceInfoDef& a, SaveSliceInfoDef& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline SaveSliceInfoDef* New() const final {
+    return CreateMaybeMessage<SaveSliceInfoDef>(NULL);
+  }
+
+  SaveSliceInfoDef* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<SaveSliceInfoDef>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const SaveSliceInfoDef& from);
+  void MergeFrom(const SaveSliceInfoDef& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(SaveSliceInfoDef* other);
+  protected:
+  explicit SaveSliceInfoDef(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // repeated int64 full_shape = 2;
+  int full_shape_size() const;
+  void clear_full_shape();
+  static const int kFullShapeFieldNumber = 2;
+  ::google::protobuf::int64 full_shape(int index) const;
+  void set_full_shape(int index, ::google::protobuf::int64 value);
+  void add_full_shape(::google::protobuf::int64 value);
+  const ::google::protobuf::RepeatedField< ::google::protobuf::int64 >&
+      full_shape() const;
+  ::google::protobuf::RepeatedField< ::google::protobuf::int64 >*
+      mutable_full_shape();
+
+  // repeated int64 var_offset = 3;
+  int var_offset_size() const;
+  void clear_var_offset();
+  static const int kVarOffsetFieldNumber = 3;
+  ::google::protobuf::int64 var_offset(int index) const;
+  void set_var_offset(int index, ::google::protobuf::int64 value);
+  void add_var_offset(::google::protobuf::int64 value);
+  const ::google::protobuf::RepeatedField< ::google::protobuf::int64 >&
+      var_offset() const;
+  ::google::protobuf::RepeatedField< ::google::protobuf::int64 >*
+      mutable_var_offset();
+
+  // repeated int64 var_shape = 4;
+  int var_shape_size() const;
+  void clear_var_shape();
+  static const int kVarShapeFieldNumber = 4;
+  ::google::protobuf::int64 var_shape(int index) const;
+  void set_var_shape(int index, ::google::protobuf::int64 value);
+  void add_var_shape(::google::protobuf::int64 value);
+  const ::google::protobuf::RepeatedField< ::google::protobuf::int64 >&
+      var_shape() const;
+  ::google::protobuf::RepeatedField< ::google::protobuf::int64 >*
+      mutable_var_shape();
+
+  // string full_name = 1;
+  void clear_full_name();
+  static const int kFullNameFieldNumber = 1;
+  const ::std::string& full_name() const;
+  void set_full_name(const ::std::string& value);
+  #if LANG_CXX11
+  void set_full_name(::std::string&& value);
+  #endif
+  void set_full_name(const char* value);
+  void set_full_name(const char* value, size_t size);
+  ::std::string* mutable_full_name();
+  ::std::string* release_full_name();
+  void set_allocated_full_name(::std::string* full_name);
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  ::std::string* unsafe_arena_release_full_name();
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  void unsafe_arena_set_allocated_full_name(
+      ::std::string* full_name);
+
+  // @@protoc_insertion_point(class_scope:tensorflow.SaveSliceInfoDef)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  ::google::protobuf::RepeatedField< ::google::protobuf::int64 > full_shape_;
+  mutable std::atomic<int> _full_shape_cached_byte_size_;
+  ::google::protobuf::RepeatedField< ::google::protobuf::int64 > var_offset_;
+  mutable std::atomic<int> _var_offset_cached_byte_size_;
+  ::google::protobuf::RepeatedField< ::google::protobuf::int64 > var_shape_;
+  mutable std::atomic<int> _var_shape_cached_byte_size_;
+  ::google::protobuf::internal::ArenaStringPtr full_name_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fframework_2fvariable_2eproto;
+};
+// ===================================================================
+
+
+// ===================================================================
+
+#ifdef __GNUC__
+  #pragma GCC diagnostic push
+  #pragma GCC diagnostic ignored "-Wstrict-aliasing"
+#endif  // __GNUC__
+// VariableDef
+
+// string variable_name = 1;
+inline void VariableDef::clear_variable_name() {
+  variable_name_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline const ::std::string& VariableDef::variable_name() const {
+  // @@protoc_insertion_point(field_get:tensorflow.VariableDef.variable_name)
+  return variable_name_.Get();
+}
+inline void VariableDef::set_variable_name(const ::std::string& value) {
+  
+  variable_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set:tensorflow.VariableDef.variable_name)
+}
+#if LANG_CXX11
+inline void VariableDef::set_variable_name(::std::string&& value) {
+  
+  variable_name_.Set(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.VariableDef.variable_name)
+}
+#endif
+inline void VariableDef::set_variable_name(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  variable_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
+              GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_char:tensorflow.VariableDef.variable_name)
+}
+inline void VariableDef::set_variable_name(const char* value,
+    size_t size) {
+  
+  variable_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
+      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.VariableDef.variable_name)
+}
+inline ::std::string* VariableDef::mutable_variable_name() {
+  
+  // @@protoc_insertion_point(field_mutable:tensorflow.VariableDef.variable_name)
+  return variable_name_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline ::std::string* VariableDef::release_variable_name() {
+  // @@protoc_insertion_point(field_release:tensorflow.VariableDef.variable_name)
+  
+  return variable_name_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline void VariableDef::set_allocated_variable_name(::std::string* variable_name) {
+  if (variable_name != NULL) {
+    
+  } else {
+    
+  }
+  variable_name_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), variable_name,
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.VariableDef.variable_name)
+}
+inline ::std::string* VariableDef::unsafe_arena_release_variable_name() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.VariableDef.variable_name)
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  
+  return variable_name_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      GetArenaNoVirtual());
+}
+inline void VariableDef::unsafe_arena_set_allocated_variable_name(
+    ::std::string* variable_name) {
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (variable_name != NULL) {
+    
+  } else {
+    
+  }
+  variable_name_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      variable_name, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.VariableDef.variable_name)
+}
+
+// string initial_value_name = 6;
+inline void VariableDef::clear_initial_value_name() {
+  initial_value_name_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline const ::std::string& VariableDef::initial_value_name() const {
+  // @@protoc_insertion_point(field_get:tensorflow.VariableDef.initial_value_name)
+  return initial_value_name_.Get();
+}
+inline void VariableDef::set_initial_value_name(const ::std::string& value) {
+  
+  initial_value_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set:tensorflow.VariableDef.initial_value_name)
+}
+#if LANG_CXX11
+inline void VariableDef::set_initial_value_name(::std::string&& value) {
+  
+  initial_value_name_.Set(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.VariableDef.initial_value_name)
+}
+#endif
+inline void VariableDef::set_initial_value_name(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  initial_value_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
+              GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_char:tensorflow.VariableDef.initial_value_name)
+}
+inline void VariableDef::set_initial_value_name(const char* value,
+    size_t size) {
+  
+  initial_value_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
+      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.VariableDef.initial_value_name)
+}
+inline ::std::string* VariableDef::mutable_initial_value_name() {
+  
+  // @@protoc_insertion_point(field_mutable:tensorflow.VariableDef.initial_value_name)
+  return initial_value_name_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline ::std::string* VariableDef::release_initial_value_name() {
+  // @@protoc_insertion_point(field_release:tensorflow.VariableDef.initial_value_name)
+  
+  return initial_value_name_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline void VariableDef::set_allocated_initial_value_name(::std::string* initial_value_name) {
+  if (initial_value_name != NULL) {
+    
+  } else {
+    
+  }
+  initial_value_name_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), initial_value_name,
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.VariableDef.initial_value_name)
+}
+inline ::std::string* VariableDef::unsafe_arena_release_initial_value_name() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.VariableDef.initial_value_name)
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  
+  return initial_value_name_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      GetArenaNoVirtual());
+}
+inline void VariableDef::unsafe_arena_set_allocated_initial_value_name(
+    ::std::string* initial_value_name) {
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (initial_value_name != NULL) {
+    
+  } else {
+    
+  }
+  initial_value_name_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      initial_value_name, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.VariableDef.initial_value_name)
+}
+
+// string initializer_name = 2;
+inline void VariableDef::clear_initializer_name() {
+  initializer_name_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline const ::std::string& VariableDef::initializer_name() const {
+  // @@protoc_insertion_point(field_get:tensorflow.VariableDef.initializer_name)
+  return initializer_name_.Get();
+}
+inline void VariableDef::set_initializer_name(const ::std::string& value) {
+  
+  initializer_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set:tensorflow.VariableDef.initializer_name)
+}
+#if LANG_CXX11
+inline void VariableDef::set_initializer_name(::std::string&& value) {
+  
+  initializer_name_.Set(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.VariableDef.initializer_name)
+}
+#endif
+inline void VariableDef::set_initializer_name(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  initializer_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
+              GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_char:tensorflow.VariableDef.initializer_name)
+}
+inline void VariableDef::set_initializer_name(const char* value,
+    size_t size) {
+  
+  initializer_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
+      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.VariableDef.initializer_name)
+}
+inline ::std::string* VariableDef::mutable_initializer_name() {
+  
+  // @@protoc_insertion_point(field_mutable:tensorflow.VariableDef.initializer_name)
+  return initializer_name_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline ::std::string* VariableDef::release_initializer_name() {
+  // @@protoc_insertion_point(field_release:tensorflow.VariableDef.initializer_name)
+  
+  return initializer_name_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline void VariableDef::set_allocated_initializer_name(::std::string* initializer_name) {
+  if (initializer_name != NULL) {
+    
+  } else {
+    
+  }
+  initializer_name_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), initializer_name,
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.VariableDef.initializer_name)
+}
+inline ::std::string* VariableDef::unsafe_arena_release_initializer_name() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.VariableDef.initializer_name)
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  
+  return initializer_name_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      GetArenaNoVirtual());
+}
+inline void VariableDef::unsafe_arena_set_allocated_initializer_name(
+    ::std::string* initializer_name) {
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (initializer_name != NULL) {
+    
+  } else {
+    
+  }
+  initializer_name_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      initializer_name, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.VariableDef.initializer_name)
+}
+
+// string snapshot_name = 3;
+inline void VariableDef::clear_snapshot_name() {
+  snapshot_name_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline const ::std::string& VariableDef::snapshot_name() const {
+  // @@protoc_insertion_point(field_get:tensorflow.VariableDef.snapshot_name)
+  return snapshot_name_.Get();
+}
+inline void VariableDef::set_snapshot_name(const ::std::string& value) {
+  
+  snapshot_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set:tensorflow.VariableDef.snapshot_name)
+}
+#if LANG_CXX11
+inline void VariableDef::set_snapshot_name(::std::string&& value) {
+  
+  snapshot_name_.Set(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.VariableDef.snapshot_name)
+}
+#endif
+inline void VariableDef::set_snapshot_name(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  snapshot_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
+              GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_char:tensorflow.VariableDef.snapshot_name)
+}
+inline void VariableDef::set_snapshot_name(const char* value,
+    size_t size) {
+  
+  snapshot_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
+      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.VariableDef.snapshot_name)
+}
+inline ::std::string* VariableDef::mutable_snapshot_name() {
+  
+  // @@protoc_insertion_point(field_mutable:tensorflow.VariableDef.snapshot_name)
+  return snapshot_name_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline ::std::string* VariableDef::release_snapshot_name() {
+  // @@protoc_insertion_point(field_release:tensorflow.VariableDef.snapshot_name)
+  
+  return snapshot_name_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline void VariableDef::set_allocated_snapshot_name(::std::string* snapshot_name) {
+  if (snapshot_name != NULL) {
+    
+  } else {
+    
+  }
+  snapshot_name_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), snapshot_name,
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.VariableDef.snapshot_name)
+}
+inline ::std::string* VariableDef::unsafe_arena_release_snapshot_name() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.VariableDef.snapshot_name)
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  
+  return snapshot_name_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      GetArenaNoVirtual());
+}
+inline void VariableDef::unsafe_arena_set_allocated_snapshot_name(
+    ::std::string* snapshot_name) {
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (snapshot_name != NULL) {
+    
+  } else {
+    
+  }
+  snapshot_name_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      snapshot_name, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.VariableDef.snapshot_name)
+}
+
+// .tensorflow.SaveSliceInfoDef save_slice_info_def = 4;
+inline bool VariableDef::has_save_slice_info_def() const {
+  return this != internal_default_instance() && save_slice_info_def_ != NULL;
+}
+inline void VariableDef::clear_save_slice_info_def() {
+  if (GetArenaNoVirtual() == NULL && save_slice_info_def_ != NULL) {
+    delete save_slice_info_def_;
+  }
+  save_slice_info_def_ = NULL;
+}
+inline const ::tensorflow::SaveSliceInfoDef& VariableDef::save_slice_info_def() const {
+  const ::tensorflow::SaveSliceInfoDef* p = save_slice_info_def_;
+  // @@protoc_insertion_point(field_get:tensorflow.VariableDef.save_slice_info_def)
+  return p != NULL ? *p : *reinterpret_cast<const ::tensorflow::SaveSliceInfoDef*>(
+      &::tensorflow::_SaveSliceInfoDef_default_instance_);
+}
+inline ::tensorflow::SaveSliceInfoDef* VariableDef::release_save_slice_info_def() {
+  // @@protoc_insertion_point(field_release:tensorflow.VariableDef.save_slice_info_def)
+  
+  ::tensorflow::SaveSliceInfoDef* temp = save_slice_info_def_;
+  if (GetArenaNoVirtual() != NULL) {
+    temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
+  }
+  save_slice_info_def_ = NULL;
+  return temp;
+}
+inline ::tensorflow::SaveSliceInfoDef* VariableDef::unsafe_arena_release_save_slice_info_def() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.VariableDef.save_slice_info_def)
+  
+  ::tensorflow::SaveSliceInfoDef* temp = save_slice_info_def_;
+  save_slice_info_def_ = NULL;
+  return temp;
+}
+inline ::tensorflow::SaveSliceInfoDef* VariableDef::mutable_save_slice_info_def() {
+  
+  if (save_slice_info_def_ == NULL) {
+    auto* p = CreateMaybeMessage<::tensorflow::SaveSliceInfoDef>(GetArenaNoVirtual());
+    save_slice_info_def_ = p;
+  }
+  // @@protoc_insertion_point(field_mutable:tensorflow.VariableDef.save_slice_info_def)
+  return save_slice_info_def_;
+}
+inline void VariableDef::set_allocated_save_slice_info_def(::tensorflow::SaveSliceInfoDef* save_slice_info_def) {
+  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
+  if (message_arena == NULL) {
+    delete save_slice_info_def_;
+  }
+  if (save_slice_info_def) {
+    ::google::protobuf::Arena* submessage_arena =
+      ::google::protobuf::Arena::GetArena(save_slice_info_def);
+    if (message_arena != submessage_arena) {
+      save_slice_info_def = ::google::protobuf::internal::GetOwnedMessage(
+          message_arena, save_slice_info_def, submessage_arena);
+    }
+    
+  } else {
+    
+  }
+  save_slice_info_def_ = save_slice_info_def;
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.VariableDef.save_slice_info_def)
+}
+
+// bool is_resource = 5;
+inline void VariableDef::clear_is_resource() {
+  is_resource_ = false;
+}
+inline bool VariableDef::is_resource() const {
+  // @@protoc_insertion_point(field_get:tensorflow.VariableDef.is_resource)
+  return is_resource_;
+}
+inline void VariableDef::set_is_resource(bool value) {
+  
+  is_resource_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.VariableDef.is_resource)
+}
+
+// bool trainable = 7;
+inline void VariableDef::clear_trainable() {
+  trainable_ = false;
+}
+inline bool VariableDef::trainable() const {
+  // @@protoc_insertion_point(field_get:tensorflow.VariableDef.trainable)
+  return trainable_;
+}
+inline void VariableDef::set_trainable(bool value) {
+  
+  trainable_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.VariableDef.trainable)
+}
+
+// -------------------------------------------------------------------
+
+// SaveSliceInfoDef
+
+// string full_name = 1;
+inline void SaveSliceInfoDef::clear_full_name() {
+  full_name_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline const ::std::string& SaveSliceInfoDef::full_name() const {
+  // @@protoc_insertion_point(field_get:tensorflow.SaveSliceInfoDef.full_name)
+  return full_name_.Get();
+}
+inline void SaveSliceInfoDef::set_full_name(const ::std::string& value) {
+  
+  full_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set:tensorflow.SaveSliceInfoDef.full_name)
+}
+#if LANG_CXX11
+inline void SaveSliceInfoDef::set_full_name(::std::string&& value) {
+  
+  full_name_.Set(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.SaveSliceInfoDef.full_name)
+}
+#endif
+inline void SaveSliceInfoDef::set_full_name(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  full_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
+              GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_char:tensorflow.SaveSliceInfoDef.full_name)
+}
+inline void SaveSliceInfoDef::set_full_name(const char* value,
+    size_t size) {
+  
+  full_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
+      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.SaveSliceInfoDef.full_name)
+}
+inline ::std::string* SaveSliceInfoDef::mutable_full_name() {
+  
+  // @@protoc_insertion_point(field_mutable:tensorflow.SaveSliceInfoDef.full_name)
+  return full_name_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline ::std::string* SaveSliceInfoDef::release_full_name() {
+  // @@protoc_insertion_point(field_release:tensorflow.SaveSliceInfoDef.full_name)
+  
+  return full_name_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline void SaveSliceInfoDef::set_allocated_full_name(::std::string* full_name) {
+  if (full_name != NULL) {
+    
+  } else {
+    
+  }
+  full_name_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), full_name,
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.SaveSliceInfoDef.full_name)
+}
+inline ::std::string* SaveSliceInfoDef::unsafe_arena_release_full_name() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.SaveSliceInfoDef.full_name)
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  
+  return full_name_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      GetArenaNoVirtual());
+}
+inline void SaveSliceInfoDef::unsafe_arena_set_allocated_full_name(
+    ::std::string* full_name) {
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (full_name != NULL) {
+    
+  } else {
+    
+  }
+  full_name_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      full_name, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.SaveSliceInfoDef.full_name)
+}
+
+// repeated int64 full_shape = 2;
+inline int SaveSliceInfoDef::full_shape_size() const {
+  return full_shape_.size();
+}
+inline void SaveSliceInfoDef::clear_full_shape() {
+  full_shape_.Clear();
+}
+inline ::google::protobuf::int64 SaveSliceInfoDef::full_shape(int index) const {
+  // @@protoc_insertion_point(field_get:tensorflow.SaveSliceInfoDef.full_shape)
+  return full_shape_.Get(index);
+}
+inline void SaveSliceInfoDef::set_full_shape(int index, ::google::protobuf::int64 value) {
+  full_shape_.Set(index, value);
+  // @@protoc_insertion_point(field_set:tensorflow.SaveSliceInfoDef.full_shape)
+}
+inline void SaveSliceInfoDef::add_full_shape(::google::protobuf::int64 value) {
+  full_shape_.Add(value);
+  // @@protoc_insertion_point(field_add:tensorflow.SaveSliceInfoDef.full_shape)
+}
+inline const ::google::protobuf::RepeatedField< ::google::protobuf::int64 >&
+SaveSliceInfoDef::full_shape() const {
+  // @@protoc_insertion_point(field_list:tensorflow.SaveSliceInfoDef.full_shape)
+  return full_shape_;
+}
+inline ::google::protobuf::RepeatedField< ::google::protobuf::int64 >*
+SaveSliceInfoDef::mutable_full_shape() {
+  // @@protoc_insertion_point(field_mutable_list:tensorflow.SaveSliceInfoDef.full_shape)
+  return &full_shape_;
+}
+
+// repeated int64 var_offset = 3;
+inline int SaveSliceInfoDef::var_offset_size() const {
+  return var_offset_.size();
+}
+inline void SaveSliceInfoDef::clear_var_offset() {
+  var_offset_.Clear();
+}
+inline ::google::protobuf::int64 SaveSliceInfoDef::var_offset(int index) const {
+  // @@protoc_insertion_point(field_get:tensorflow.SaveSliceInfoDef.var_offset)
+  return var_offset_.Get(index);
+}
+inline void SaveSliceInfoDef::set_var_offset(int index, ::google::protobuf::int64 value) {
+  var_offset_.Set(index, value);
+  // @@protoc_insertion_point(field_set:tensorflow.SaveSliceInfoDef.var_offset)
+}
+inline void SaveSliceInfoDef::add_var_offset(::google::protobuf::int64 value) {
+  var_offset_.Add(value);
+  // @@protoc_insertion_point(field_add:tensorflow.SaveSliceInfoDef.var_offset)
+}
+inline const ::google::protobuf::RepeatedField< ::google::protobuf::int64 >&
+SaveSliceInfoDef::var_offset() const {
+  // @@protoc_insertion_point(field_list:tensorflow.SaveSliceInfoDef.var_offset)
+  return var_offset_;
+}
+inline ::google::protobuf::RepeatedField< ::google::protobuf::int64 >*
+SaveSliceInfoDef::mutable_var_offset() {
+  // @@protoc_insertion_point(field_mutable_list:tensorflow.SaveSliceInfoDef.var_offset)
+  return &var_offset_;
+}
+
+// repeated int64 var_shape = 4;
+inline int SaveSliceInfoDef::var_shape_size() const {
+  return var_shape_.size();
+}
+inline void SaveSliceInfoDef::clear_var_shape() {
+  var_shape_.Clear();
+}
+inline ::google::protobuf::int64 SaveSliceInfoDef::var_shape(int index) const {
+  // @@protoc_insertion_point(field_get:tensorflow.SaveSliceInfoDef.var_shape)
+  return var_shape_.Get(index);
+}
+inline void SaveSliceInfoDef::set_var_shape(int index, ::google::protobuf::int64 value) {
+  var_shape_.Set(index, value);
+  // @@protoc_insertion_point(field_set:tensorflow.SaveSliceInfoDef.var_shape)
+}
+inline void SaveSliceInfoDef::add_var_shape(::google::protobuf::int64 value) {
+  var_shape_.Add(value);
+  // @@protoc_insertion_point(field_add:tensorflow.SaveSliceInfoDef.var_shape)
+}
+inline const ::google::protobuf::RepeatedField< ::google::protobuf::int64 >&
+SaveSliceInfoDef::var_shape() const {
+  // @@protoc_insertion_point(field_list:tensorflow.SaveSliceInfoDef.var_shape)
+  return var_shape_;
+}
+inline ::google::protobuf::RepeatedField< ::google::protobuf::int64 >*
+SaveSliceInfoDef::mutable_var_shape() {
+  // @@protoc_insertion_point(field_mutable_list:tensorflow.SaveSliceInfoDef.var_shape)
+  return &var_shape_;
+}
+
+#ifdef __GNUC__
+  #pragma GCC diagnostic pop
+#endif  // __GNUC__
+// -------------------------------------------------------------------
+
+
+// @@protoc_insertion_point(namespace_scope)
+
+}  // namespace tensorflow
+
+// @@protoc_insertion_point(global_scope)
+
+#include <google/protobuf/port_undef.inc>
+#endif  // PROTOBUF_INCLUDED_tensorflow_2fcore_2fframework_2fvariable_2eproto
diff --git a/tensorflow/core/framework/variable.proto b/tensorflow/core/framework/variable.proto
new file mode 100644 (file)
index 0000000..66ba4cb
--- /dev/null
@@ -0,0 +1,43 @@
+syntax = "proto3";
+
+package tensorflow;
+option cc_enable_arenas = true;
+option java_outer_classname = "VariableProtos";
+option java_multiple_files = true;
+option java_package = "org.tensorflow.framework";
+option go_package = "github.com/tensorflow/tensorflow/tensorflow/go/core/framework";
+
+// Protocol buffer representing a Variable.
+message VariableDef {
+  // Name of the variable tensor.
+  string variable_name = 1;
+
+  // Name of the tensor holding the variable's initial value.
+  string initial_value_name = 6;
+
+  // Name of the initializer op.
+  string initializer_name = 2;
+
+  // Name of the snapshot tensor.
+  string snapshot_name = 3;
+
+  // Support for saving variables as slices of a larger variable.
+  SaveSliceInfoDef save_slice_info_def = 4;
+
+  // Whether to represent this as a ResourceVariable.
+  bool is_resource = 5;
+
+  // Whether this variable should be trained.
+  bool trainable = 7;
+}
+
+message SaveSliceInfoDef {
+  // Name of the full variable of which this is a slice.
+  string full_name = 1;
+  // Shape of the full variable.
+  repeated int64 full_shape = 2;
+  // Offset of this variable into the full variable.
+  repeated int64 var_offset = 3;
+  // Shape of this variable.
+  repeated int64 var_shape = 4;
+}
diff --git a/tensorflow/core/framework/versions.pb.cc b/tensorflow/core/framework/versions.pb.cc
new file mode 100644 (file)
index 0000000..4193149
--- /dev/null
@@ -0,0 +1,541 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: tensorflow/core/framework/versions.proto
+
+#include "tensorflow/core/framework/versions.pb.h"
+
+#include <algorithm>
+
+#include <google/protobuf/stubs/common.h>
+#include <google/protobuf/io/coded_stream.h>
+#include <google/protobuf/extension_set.h>
+#include <google/protobuf/wire_format_lite_inl.h>
+#include <google/protobuf/descriptor.h>
+#include <google/protobuf/generated_message_reflection.h>
+#include <google/protobuf/reflection_ops.h>
+#include <google/protobuf/wire_format.h>
+// @@protoc_insertion_point(includes)
+#include <google/protobuf/port_def.inc>
+
+namespace tensorflow {
+class VersionDefDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<VersionDef> _instance;
+} _VersionDef_default_instance_;
+}  // namespace tensorflow
+static void InitDefaultsVersionDef_tensorflow_2fcore_2fframework_2fversions_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_VersionDef_default_instance_;
+    new (ptr) ::tensorflow::VersionDef();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::VersionDef::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<0> scc_info_VersionDef_tensorflow_2fcore_2fframework_2fversions_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsVersionDef_tensorflow_2fcore_2fframework_2fversions_2eproto}, {}};
+
+void InitDefaults_tensorflow_2fcore_2fframework_2fversions_2eproto() {
+  ::google::protobuf::internal::InitSCC(&scc_info_VersionDef_tensorflow_2fcore_2fframework_2fversions_2eproto.base);
+}
+
+::google::protobuf::Metadata file_level_metadata_tensorflow_2fcore_2fframework_2fversions_2eproto[1];
+constexpr ::google::protobuf::EnumDescriptor const** file_level_enum_descriptors_tensorflow_2fcore_2fframework_2fversions_2eproto = nullptr;
+constexpr ::google::protobuf::ServiceDescriptor const** file_level_service_descriptors_tensorflow_2fcore_2fframework_2fversions_2eproto = nullptr;
+
+const ::google::protobuf::uint32 TableStruct_tensorflow_2fcore_2fframework_2fversions_2eproto::offsets[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = {
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::VersionDef, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::VersionDef, producer_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::VersionDef, min_consumer_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::VersionDef, bad_consumers_),
+};
+static const ::google::protobuf::internal::MigrationSchema schemas[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = {
+  { 0, -1, sizeof(::tensorflow::VersionDef)},
+};
+
+static ::google::protobuf::Message const * const file_default_instances[] = {
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_VersionDef_default_instance_),
+};
+
+::google::protobuf::internal::AssignDescriptorsTable assign_descriptors_table_tensorflow_2fcore_2fframework_2fversions_2eproto = {
+  {}, AddDescriptors_tensorflow_2fcore_2fframework_2fversions_2eproto, "tensorflow/core/framework/versions.proto", schemas,
+  file_default_instances, TableStruct_tensorflow_2fcore_2fframework_2fversions_2eproto::offsets,
+  file_level_metadata_tensorflow_2fcore_2fframework_2fversions_2eproto, 1, file_level_enum_descriptors_tensorflow_2fcore_2fframework_2fversions_2eproto, file_level_service_descriptors_tensorflow_2fcore_2fframework_2fversions_2eproto,
+};
+
+::google::protobuf::internal::DescriptorTable descriptor_table_tensorflow_2fcore_2fframework_2fversions_2eproto = {
+  false, InitDefaults_tensorflow_2fcore_2fframework_2fversions_2eproto, 
+  "\n(tensorflow/core/framework/versions.pro"
+  "to\022\ntensorflow\"K\n\nVersionDef\022\020\n\010producer"
+  "\030\001 \001(\005\022\024\n\014min_consumer\030\002 \001(\005\022\025\n\rbad_cons"
+  "umers\030\003 \003(\005Bn\n\030org.tensorflow.frameworkB"
+  "\016VersionsProtosP\001Z=github.com/tensorflow"
+  "/tensorflow/tensorflow/go/core/framework"
+  "\370\001\001b\006proto3"
+,
+  "tensorflow/core/framework/versions.proto", &assign_descriptors_table_tensorflow_2fcore_2fframework_2fversions_2eproto, 251,
+};
+
+void AddDescriptors_tensorflow_2fcore_2fframework_2fversions_2eproto() {
+  static constexpr ::google::protobuf::internal::InitFunc deps[1] =
+  {
+  };
+ ::google::protobuf::internal::AddDescriptors(&descriptor_table_tensorflow_2fcore_2fframework_2fversions_2eproto, deps, 0);
+}
+
+// Force running AddDescriptors() at dynamic initialization time.
+static bool dynamic_init_dummy_tensorflow_2fcore_2fframework_2fversions_2eproto = []() { AddDescriptors_tensorflow_2fcore_2fframework_2fversions_2eproto(); return true; }();
+namespace tensorflow {
+
+// ===================================================================
+
+void VersionDef::InitAsDefaultInstance() {
+}
+class VersionDef::HasBitSetters {
+ public:
+};
+
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int VersionDef::kProducerFieldNumber;
+const int VersionDef::kMinConsumerFieldNumber;
+const int VersionDef::kBadConsumersFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+VersionDef::VersionDef()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.VersionDef)
+}
+VersionDef::VersionDef(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena),
+  bad_consumers_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.VersionDef)
+}
+VersionDef::VersionDef(const VersionDef& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL),
+      bad_consumers_(from.bad_consumers_) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::memcpy(&producer_, &from.producer_,
+    static_cast<size_t>(reinterpret_cast<char*>(&min_consumer_) -
+    reinterpret_cast<char*>(&producer_)) + sizeof(min_consumer_));
+  // @@protoc_insertion_point(copy_constructor:tensorflow.VersionDef)
+}
+
+void VersionDef::SharedCtor() {
+  ::memset(&producer_, 0, static_cast<size_t>(
+      reinterpret_cast<char*>(&min_consumer_) -
+      reinterpret_cast<char*>(&producer_)) + sizeof(min_consumer_));
+}
+
+VersionDef::~VersionDef() {
+  // @@protoc_insertion_point(destructor:tensorflow.VersionDef)
+  SharedDtor();
+}
+
+void VersionDef::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+}
+
+void VersionDef::ArenaDtor(void* object) {
+  VersionDef* _this = reinterpret_cast< VersionDef* >(object);
+  (void)_this;
+}
+void VersionDef::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void VersionDef::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const VersionDef& VersionDef::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_VersionDef_tensorflow_2fcore_2fframework_2fversions_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void VersionDef::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.VersionDef)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  bad_consumers_.Clear();
+  ::memset(&producer_, 0, static_cast<size_t>(
+      reinterpret_cast<char*>(&min_consumer_) -
+      reinterpret_cast<char*>(&producer_)) + sizeof(min_consumer_));
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* VersionDef::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<VersionDef*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // int32 producer = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 8) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::google::protobuf::int32 value = val;
+        msg->set_producer(value);
+        break;
+      }
+      // int32 min_consumer = 2;
+      case 2: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 16) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::google::protobuf::int32 value = val;
+        msg->set_min_consumer(value);
+        break;
+      }
+      // repeated int32 bad_consumers = 3;
+      case 3: {
+        if (static_cast<::google::protobuf::uint8>(tag) == 26) {
+          ptr = Varint::Parse32Inline(ptr, &size);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          parser_till_end = ::google::protobuf::internal::PackedInt32Parser;
+          object = msg->mutable_bad_consumers();
+          if (size > end - ptr) goto len_delim_till_end;
+          auto newend = ptr + size;
+          if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+          break;
+        } else if (static_cast<::google::protobuf::uint8>(tag) != 24) goto handle_unusual;
+        do {
+          ::google::protobuf::uint64 val;
+          ptr = Varint::Parse64(ptr, &val);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          ::google::protobuf::int32 value = val;
+          msg->add_bad_consumers(value);
+          if (ptr >= end) break;
+        } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 24 && (ptr += 1));
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool VersionDef::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.VersionDef)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // int32 producer = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (8 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
+                 input, &producer_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // int32 min_consumer = 2;
+      case 2: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (16 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
+                 input, &min_consumer_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // repeated int32 bad_consumers = 3;
+      case 3: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (26 & 0xFF)) {
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPackedPrimitive<
+                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
+                 input, this->mutable_bad_consumers())));
+        } else if (static_cast< ::google::protobuf::uint8>(tag) == (24 & 0xFF)) {
+          DO_((::google::protobuf::internal::WireFormatLite::ReadRepeatedPrimitiveNoInline<
+                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
+                 1, 26u, input, this->mutable_bad_consumers())));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.VersionDef)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.VersionDef)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void VersionDef::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.VersionDef)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // int32 producer = 1;
+  if (this->producer() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt32(1, this->producer(), output);
+  }
+
+  // int32 min_consumer = 2;
+  if (this->min_consumer() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt32(2, this->min_consumer(), output);
+  }
+
+  // repeated int32 bad_consumers = 3;
+  if (this->bad_consumers_size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteTag(3, ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED, output);
+    output->WriteVarint32(_bad_consumers_cached_byte_size_.load(
+        std::memory_order_relaxed));
+  }
+  for (int i = 0, n = this->bad_consumers_size(); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt32NoTag(
+      this->bad_consumers(i), output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.VersionDef)
+}
+
+::google::protobuf::uint8* VersionDef::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.VersionDef)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // int32 producer = 1;
+  if (this->producer() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt32ToArray(1, this->producer(), target);
+  }
+
+  // int32 min_consumer = 2;
+  if (this->min_consumer() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt32ToArray(2, this->min_consumer(), target);
+  }
+
+  // repeated int32 bad_consumers = 3;
+  if (this->bad_consumers_size() > 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteTagToArray(
+      3,
+      ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED,
+      target);
+    target = ::google::protobuf::io::CodedOutputStream::WriteVarint32ToArray(
+        _bad_consumers_cached_byte_size_.load(std::memory_order_relaxed),
+         target);
+    target = ::google::protobuf::internal::WireFormatLite::
+      WriteInt32NoTagToArray(this->bad_consumers_, target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.VersionDef)
+  return target;
+}
+
+size_t VersionDef::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.VersionDef)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // repeated int32 bad_consumers = 3;
+  {
+    size_t data_size = ::google::protobuf::internal::WireFormatLite::
+      Int32Size(this->bad_consumers_);
+    if (data_size > 0) {
+      total_size += 1 +
+        ::google::protobuf::internal::WireFormatLite::Int32Size(
+            static_cast<::google::protobuf::int32>(data_size));
+    }
+    int cached_size = ::google::protobuf::internal::ToCachedSize(data_size);
+    _bad_consumers_cached_byte_size_.store(cached_size,
+                                    std::memory_order_relaxed);
+    total_size += data_size;
+  }
+
+  // int32 producer = 1;
+  if (this->producer() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::Int32Size(
+        this->producer());
+  }
+
+  // int32 min_consumer = 2;
+  if (this->min_consumer() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::Int32Size(
+        this->min_consumer());
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void VersionDef::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.VersionDef)
+  GOOGLE_DCHECK_NE(&from, this);
+  const VersionDef* source =
+      ::google::protobuf::DynamicCastToGenerated<VersionDef>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.VersionDef)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.VersionDef)
+    MergeFrom(*source);
+  }
+}
+
+void VersionDef::MergeFrom(const VersionDef& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.VersionDef)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  bad_consumers_.MergeFrom(from.bad_consumers_);
+  if (from.producer() != 0) {
+    set_producer(from.producer());
+  }
+  if (from.min_consumer() != 0) {
+    set_min_consumer(from.min_consumer());
+  }
+}
+
+void VersionDef::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.VersionDef)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void VersionDef::CopyFrom(const VersionDef& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.VersionDef)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool VersionDef::IsInitialized() const {
+  return true;
+}
+
+void VersionDef::Swap(VersionDef* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    VersionDef* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void VersionDef::UnsafeArenaSwap(VersionDef* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void VersionDef::InternalSwap(VersionDef* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  bad_consumers_.InternalSwap(&other->bad_consumers_);
+  swap(producer_, other->producer_);
+  swap(min_consumer_, other->min_consumer_);
+}
+
+::google::protobuf::Metadata VersionDef::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fframework_2fversions_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fframework_2fversions_2eproto[kIndexInFileMessages];
+}
+
+
+// @@protoc_insertion_point(namespace_scope)
+}  // namespace tensorflow
+namespace google {
+namespace protobuf {
+template<> PROTOBUF_NOINLINE ::tensorflow::VersionDef* Arena::CreateMaybeMessage< ::tensorflow::VersionDef >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::VersionDef >(arena);
+}
+}  // namespace protobuf
+}  // namespace google
+
+// @@protoc_insertion_point(global_scope)
+#include <google/protobuf/port_undef.inc>
diff --git a/tensorflow/core/framework/versions.pb.h b/tensorflow/core/framework/versions.pb.h
new file mode 100644 (file)
index 0000000..169ffa3
--- /dev/null
@@ -0,0 +1,290 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: tensorflow/core/framework/versions.proto
+
+#ifndef PROTOBUF_INCLUDED_tensorflow_2fcore_2fframework_2fversions_2eproto
+#define PROTOBUF_INCLUDED_tensorflow_2fcore_2fframework_2fversions_2eproto
+
+#include <limits>
+#include <string>
+
+#include <google/protobuf/port_def.inc>
+#if PROTOBUF_VERSION < 3006001
+#error This file was generated by a newer version of protoc which is
+#error incompatible with your Protocol Buffer headers. Please update
+#error your headers.
+#endif
+#if 3006001 < PROTOBUF_MIN_PROTOC_VERSION
+#error This file was generated by an older version of protoc which is
+#error incompatible with your Protocol Buffer headers. Please
+#error regenerate this file with a newer version of protoc.
+#endif
+
+#include <google/protobuf/port_undef.inc>
+#include <google/protobuf/io/coded_stream.h>
+#include <google/protobuf/arena.h>
+#include <google/protobuf/arenastring.h>
+#include <google/protobuf/generated_message_table_driven.h>
+#include <google/protobuf/generated_message_util.h>
+#include <google/protobuf/inlined_string_field.h>
+#include <google/protobuf/metadata.h>
+#include <google/protobuf/message.h>
+#include <google/protobuf/repeated_field.h>  // IWYU pragma: export
+#include <google/protobuf/extension_set.h>  // IWYU pragma: export
+#include <google/protobuf/unknown_field_set.h>
+// @@protoc_insertion_point(includes)
+#include <google/protobuf/port_def.inc>
+#define PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fframework_2fversions_2eproto
+
+// Internal implementation detail -- do not use these members.
+struct TableStruct_tensorflow_2fcore_2fframework_2fversions_2eproto {
+  static const ::google::protobuf::internal::ParseTableField entries[]
+    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
+  static const ::google::protobuf::internal::AuxillaryParseTableField aux[]
+    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
+  static const ::google::protobuf::internal::ParseTable schema[1]
+    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
+  static const ::google::protobuf::internal::FieldMetadata field_metadata[];
+  static const ::google::protobuf::internal::SerializationTable serialization_table[];
+  static const ::google::protobuf::uint32 offsets[];
+};
+void AddDescriptors_tensorflow_2fcore_2fframework_2fversions_2eproto();
+namespace tensorflow {
+class VersionDef;
+class VersionDefDefaultTypeInternal;
+extern VersionDefDefaultTypeInternal _VersionDef_default_instance_;
+}  // namespace tensorflow
+namespace google {
+namespace protobuf {
+template<> ::tensorflow::VersionDef* Arena::CreateMaybeMessage<::tensorflow::VersionDef>(Arena*);
+}  // namespace protobuf
+}  // namespace google
+namespace tensorflow {
+
+// ===================================================================
+
+class VersionDef : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.VersionDef) */ {
+ public:
+  VersionDef();
+  virtual ~VersionDef();
+
+  VersionDef(const VersionDef& from);
+
+  inline VersionDef& operator=(const VersionDef& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  VersionDef(VersionDef&& from) noexcept
+    : VersionDef() {
+    *this = ::std::move(from);
+  }
+
+  inline VersionDef& operator=(VersionDef&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const VersionDef& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const VersionDef* internal_default_instance() {
+    return reinterpret_cast<const VersionDef*>(
+               &_VersionDef_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    0;
+
+  void UnsafeArenaSwap(VersionDef* other);
+  void Swap(VersionDef* other);
+  friend void swap(VersionDef& a, VersionDef& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline VersionDef* New() const final {
+    return CreateMaybeMessage<VersionDef>(NULL);
+  }
+
+  VersionDef* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<VersionDef>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const VersionDef& from);
+  void MergeFrom(const VersionDef& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(VersionDef* other);
+  protected:
+  explicit VersionDef(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // repeated int32 bad_consumers = 3;
+  int bad_consumers_size() const;
+  void clear_bad_consumers();
+  static const int kBadConsumersFieldNumber = 3;
+  ::google::protobuf::int32 bad_consumers(int index) const;
+  void set_bad_consumers(int index, ::google::protobuf::int32 value);
+  void add_bad_consumers(::google::protobuf::int32 value);
+  const ::google::protobuf::RepeatedField< ::google::protobuf::int32 >&
+      bad_consumers() const;
+  ::google::protobuf::RepeatedField< ::google::protobuf::int32 >*
+      mutable_bad_consumers();
+
+  // int32 producer = 1;
+  void clear_producer();
+  static const int kProducerFieldNumber = 1;
+  ::google::protobuf::int32 producer() const;
+  void set_producer(::google::protobuf::int32 value);
+
+  // int32 min_consumer = 2;
+  void clear_min_consumer();
+  static const int kMinConsumerFieldNumber = 2;
+  ::google::protobuf::int32 min_consumer() const;
+  void set_min_consumer(::google::protobuf::int32 value);
+
+  // @@protoc_insertion_point(class_scope:tensorflow.VersionDef)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  ::google::protobuf::RepeatedField< ::google::protobuf::int32 > bad_consumers_;
+  mutable std::atomic<int> _bad_consumers_cached_byte_size_;
+  ::google::protobuf::int32 producer_;
+  ::google::protobuf::int32 min_consumer_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fframework_2fversions_2eproto;
+};
+// ===================================================================
+
+
+// ===================================================================
+
+#ifdef __GNUC__
+  #pragma GCC diagnostic push
+  #pragma GCC diagnostic ignored "-Wstrict-aliasing"
+#endif  // __GNUC__
+// VersionDef
+
+// int32 producer = 1;
+inline void VersionDef::clear_producer() {
+  producer_ = 0;
+}
+inline ::google::protobuf::int32 VersionDef::producer() const {
+  // @@protoc_insertion_point(field_get:tensorflow.VersionDef.producer)
+  return producer_;
+}
+inline void VersionDef::set_producer(::google::protobuf::int32 value) {
+  
+  producer_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.VersionDef.producer)
+}
+
+// int32 min_consumer = 2;
+inline void VersionDef::clear_min_consumer() {
+  min_consumer_ = 0;
+}
+inline ::google::protobuf::int32 VersionDef::min_consumer() const {
+  // @@protoc_insertion_point(field_get:tensorflow.VersionDef.min_consumer)
+  return min_consumer_;
+}
+inline void VersionDef::set_min_consumer(::google::protobuf::int32 value) {
+  
+  min_consumer_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.VersionDef.min_consumer)
+}
+
+// repeated int32 bad_consumers = 3;
+inline int VersionDef::bad_consumers_size() const {
+  return bad_consumers_.size();
+}
+inline void VersionDef::clear_bad_consumers() {
+  bad_consumers_.Clear();
+}
+inline ::google::protobuf::int32 VersionDef::bad_consumers(int index) const {
+  // @@protoc_insertion_point(field_get:tensorflow.VersionDef.bad_consumers)
+  return bad_consumers_.Get(index);
+}
+inline void VersionDef::set_bad_consumers(int index, ::google::protobuf::int32 value) {
+  bad_consumers_.Set(index, value);
+  // @@protoc_insertion_point(field_set:tensorflow.VersionDef.bad_consumers)
+}
+inline void VersionDef::add_bad_consumers(::google::protobuf::int32 value) {
+  bad_consumers_.Add(value);
+  // @@protoc_insertion_point(field_add:tensorflow.VersionDef.bad_consumers)
+}
+inline const ::google::protobuf::RepeatedField< ::google::protobuf::int32 >&
+VersionDef::bad_consumers() const {
+  // @@protoc_insertion_point(field_list:tensorflow.VersionDef.bad_consumers)
+  return bad_consumers_;
+}
+inline ::google::protobuf::RepeatedField< ::google::protobuf::int32 >*
+VersionDef::mutable_bad_consumers() {
+  // @@protoc_insertion_point(field_mutable_list:tensorflow.VersionDef.bad_consumers)
+  return &bad_consumers_;
+}
+
+#ifdef __GNUC__
+  #pragma GCC diagnostic pop
+#endif  // __GNUC__
+
+// @@protoc_insertion_point(namespace_scope)
+
+}  // namespace tensorflow
+
+// @@protoc_insertion_point(global_scope)
+
+#include <google/protobuf/port_undef.inc>
+#endif  // PROTOBUF_INCLUDED_tensorflow_2fcore_2fframework_2fversions_2eproto
diff --git a/tensorflow/core/framework/versions.proto b/tensorflow/core/framework/versions.proto
new file mode 100644 (file)
index 0000000..dd2ec55
--- /dev/null
@@ -0,0 +1,32 @@
+syntax = "proto3";
+
+package tensorflow;
+option cc_enable_arenas = true;
+option java_outer_classname = "VersionsProtos";
+option java_multiple_files = true;
+option java_package = "org.tensorflow.framework";
+option go_package = "github.com/tensorflow/tensorflow/tensorflow/go/core/framework";
+
+// Version information for a piece of serialized data
+//
+// There are different types of versions for each type of data
+// (GraphDef, etc.), but they all have the same common shape
+// described here.
+//
+// Each consumer has "consumer" and "min_producer" versions (specified
+// elsewhere).  A consumer is allowed to consume this data if
+//
+//   producer >= min_producer
+//   consumer >= min_consumer
+//   consumer not in bad_consumers
+//
+message VersionDef {
+  // The version of the code that produced this data.
+  int32 producer = 1;
+
+  // Any consumer below this version is not allowed to consume this data.
+  int32 min_consumer = 2;
+
+  // Specific consumer versions which are disallowed (e.g. due to bugs).
+  repeated int32 bad_consumers = 3;
+};
diff --git a/tensorflow/core/lib/core/error_codes.pb.cc b/tensorflow/core/lib/core/error_codes.pb.cc
new file mode 100644 (file)
index 0000000..e7b9cd6
--- /dev/null
@@ -0,0 +1,111 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: tensorflow/core/lib/core/error_codes.proto
+
+#include "tensorflow/core/lib/core/error_codes.pb.h"
+
+#include <algorithm>
+
+#include <google/protobuf/stubs/common.h>
+#include <google/protobuf/io/coded_stream.h>
+#include <google/protobuf/extension_set.h>
+#include <google/protobuf/wire_format_lite_inl.h>
+#include <google/protobuf/descriptor.h>
+#include <google/protobuf/generated_message_reflection.h>
+#include <google/protobuf/reflection_ops.h>
+#include <google/protobuf/wire_format.h>
+// @@protoc_insertion_point(includes)
+#include <google/protobuf/port_def.inc>
+
+namespace tensorflow {
+namespace error {
+}  // namespace error
+}  // namespace tensorflow
+void InitDefaults_tensorflow_2fcore_2flib_2fcore_2ferror_5fcodes_2eproto() {
+}
+
+constexpr ::google::protobuf::Metadata* file_level_metadata_tensorflow_2fcore_2flib_2fcore_2ferror_5fcodes_2eproto = nullptr;
+const ::google::protobuf::EnumDescriptor* file_level_enum_descriptors_tensorflow_2fcore_2flib_2fcore_2ferror_5fcodes_2eproto[1];
+constexpr ::google::protobuf::ServiceDescriptor const** file_level_service_descriptors_tensorflow_2fcore_2flib_2fcore_2ferror_5fcodes_2eproto = nullptr;
+const ::google::protobuf::uint32 TableStruct_tensorflow_2fcore_2flib_2fcore_2ferror_5fcodes_2eproto::offsets[1] = {};
+static constexpr ::google::protobuf::internal::MigrationSchema* schemas = NULL;
+static constexpr ::google::protobuf::Message* const* file_default_instances = NULL;
+
+::google::protobuf::internal::AssignDescriptorsTable assign_descriptors_table_tensorflow_2fcore_2flib_2fcore_2ferror_5fcodes_2eproto = {
+  {}, AddDescriptors_tensorflow_2fcore_2flib_2fcore_2ferror_5fcodes_2eproto, "tensorflow/core/lib/core/error_codes.proto", schemas,
+  file_default_instances, TableStruct_tensorflow_2fcore_2flib_2fcore_2ferror_5fcodes_2eproto::offsets,
+  file_level_metadata_tensorflow_2fcore_2flib_2fcore_2ferror_5fcodes_2eproto, 0, file_level_enum_descriptors_tensorflow_2fcore_2flib_2fcore_2ferror_5fcodes_2eproto, file_level_service_descriptors_tensorflow_2fcore_2flib_2fcore_2ferror_5fcodes_2eproto,
+};
+
+::google::protobuf::internal::DescriptorTable descriptor_table_tensorflow_2fcore_2flib_2fcore_2ferror_5fcodes_2eproto = {
+  false, InitDefaults_tensorflow_2fcore_2flib_2fcore_2ferror_5fcodes_2eproto, 
+  "\n*tensorflow/core/lib/core/error_codes.p"
+  "roto\022\020tensorflow.error*\204\003\n\004Code\022\006\n\002OK\020\000\022"
+  "\r\n\tCANCELLED\020\001\022\013\n\007UNKNOWN\020\002\022\024\n\020INVALID_A"
+  "RGUMENT\020\003\022\025\n\021DEADLINE_EXCEEDED\020\004\022\r\n\tNOT_"
+  "FOUND\020\005\022\022\n\016ALREADY_EXISTS\020\006\022\025\n\021PERMISSIO"
+  "N_DENIED\020\007\022\023\n\017UNAUTHENTICATED\020\020\022\026\n\022RESOU"
+  "RCE_EXHAUSTED\020\010\022\027\n\023FAILED_PRECONDITION\020\t"
+  "\022\013\n\007ABORTED\020\n\022\020\n\014OUT_OF_RANGE\020\013\022\021\n\rUNIMP"
+  "LEMENTED\020\014\022\014\n\010INTERNAL\020\r\022\017\n\013UNAVAILABLE\020"
+  "\016\022\r\n\tDATA_LOSS\020\017\022K\nGDO_NOT_USE_RESERVED_"
+  "FOR_FUTURE_EXPANSION_USE_DEFAULT_IN_SWIT"
+  "CH_INSTEAD_\020\024Bo\n\030org.tensorflow.framewor"
+  "kB\020ErrorCodesProtosP\001Z<github.com/tensor"
+  "flow/tensorflow/tensorflow/go/core/lib/c"
+  "ore\370\001\001b\006proto3"
+,
+  "tensorflow/core/lib/core/error_codes.proto", &assign_descriptors_table_tensorflow_2fcore_2flib_2fcore_2ferror_5fcodes_2eproto, 574,
+};
+
+void AddDescriptors_tensorflow_2fcore_2flib_2fcore_2ferror_5fcodes_2eproto() {
+  static constexpr ::google::protobuf::internal::InitFunc deps[1] =
+  {
+  };
+ ::google::protobuf::internal::AddDescriptors(&descriptor_table_tensorflow_2fcore_2flib_2fcore_2ferror_5fcodes_2eproto, deps, 0);
+}
+
+// Force running AddDescriptors() at dynamic initialization time.
+static bool dynamic_init_dummy_tensorflow_2fcore_2flib_2fcore_2ferror_5fcodes_2eproto = []() { AddDescriptors_tensorflow_2fcore_2flib_2fcore_2ferror_5fcodes_2eproto(); return true; }();
+namespace tensorflow {
+namespace error {
+const ::google::protobuf::EnumDescriptor* Code_descriptor() {
+  ::google::protobuf::internal::AssignDescriptors(&assign_descriptors_table_tensorflow_2fcore_2flib_2fcore_2ferror_5fcodes_2eproto);
+  return file_level_enum_descriptors_tensorflow_2fcore_2flib_2fcore_2ferror_5fcodes_2eproto[0];
+}
+bool Code_IsValid(int value) {
+  switch (value) {
+    case 0:
+    case 1:
+    case 2:
+    case 3:
+    case 4:
+    case 5:
+    case 6:
+    case 7:
+    case 8:
+    case 9:
+    case 10:
+    case 11:
+    case 12:
+    case 13:
+    case 14:
+    case 15:
+    case 16:
+    case 20:
+      return true;
+    default:
+      return false;
+  }
+}
+
+
+// @@protoc_insertion_point(namespace_scope)
+}  // namespace error
+}  // namespace tensorflow
+namespace google {
+namespace protobuf {
+}  // namespace protobuf
+}  // namespace google
+
+// @@protoc_insertion_point(global_scope)
+#include <google/protobuf/port_undef.inc>
diff --git a/tensorflow/core/lib/core/error_codes.pb.h b/tensorflow/core/lib/core/error_codes.pb.h
new file mode 100644 (file)
index 0000000..513cbf8
--- /dev/null
@@ -0,0 +1,130 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: tensorflow/core/lib/core/error_codes.proto
+
+#ifndef PROTOBUF_INCLUDED_tensorflow_2fcore_2flib_2fcore_2ferror_5fcodes_2eproto
+#define PROTOBUF_INCLUDED_tensorflow_2fcore_2flib_2fcore_2ferror_5fcodes_2eproto
+
+#include <limits>
+#include <string>
+
+#include <google/protobuf/port_def.inc>
+#if PROTOBUF_VERSION < 3006001
+#error This file was generated by a newer version of protoc which is
+#error incompatible with your Protocol Buffer headers. Please update
+#error your headers.
+#endif
+#if 3006001 < PROTOBUF_MIN_PROTOC_VERSION
+#error This file was generated by an older version of protoc which is
+#error incompatible with your Protocol Buffer headers. Please
+#error regenerate this file with a newer version of protoc.
+#endif
+
+#include <google/protobuf/port_undef.inc>
+#include <google/protobuf/io/coded_stream.h>
+#include <google/protobuf/arena.h>
+#include <google/protobuf/arenastring.h>
+#include <google/protobuf/generated_message_table_driven.h>
+#include <google/protobuf/generated_message_util.h>
+#include <google/protobuf/inlined_string_field.h>
+#include <google/protobuf/metadata.h>
+#include <google/protobuf/repeated_field.h>  // IWYU pragma: export
+#include <google/protobuf/extension_set.h>  // IWYU pragma: export
+#include <google/protobuf/generated_enum_reflection.h>
+// @@protoc_insertion_point(includes)
+#include <google/protobuf/port_def.inc>
+#define PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2flib_2fcore_2ferror_5fcodes_2eproto
+
+// Internal implementation detail -- do not use these members.
+struct TableStruct_tensorflow_2fcore_2flib_2fcore_2ferror_5fcodes_2eproto {
+  static const ::google::protobuf::internal::ParseTableField entries[]
+    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
+  static const ::google::protobuf::internal::AuxillaryParseTableField aux[]
+    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
+  static const ::google::protobuf::internal::ParseTable schema[1]
+    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
+  static const ::google::protobuf::internal::FieldMetadata field_metadata[];
+  static const ::google::protobuf::internal::SerializationTable serialization_table[];
+  static const ::google::protobuf::uint32 offsets[];
+};
+void AddDescriptors_tensorflow_2fcore_2flib_2fcore_2ferror_5fcodes_2eproto();
+namespace google {
+namespace protobuf {
+}  // namespace protobuf
+}  // namespace google
+namespace tensorflow {
+namespace error {
+
+enum Code {
+  OK = 0,
+  CANCELLED = 1,
+  UNKNOWN = 2,
+  INVALID_ARGUMENT = 3,
+  DEADLINE_EXCEEDED = 4,
+  NOT_FOUND = 5,
+  ALREADY_EXISTS = 6,
+  PERMISSION_DENIED = 7,
+  UNAUTHENTICATED = 16,
+  RESOURCE_EXHAUSTED = 8,
+  FAILED_PRECONDITION = 9,
+  ABORTED = 10,
+  OUT_OF_RANGE = 11,
+  UNIMPLEMENTED = 12,
+  INTERNAL = 13,
+  UNAVAILABLE = 14,
+  DATA_LOSS = 15,
+  DO_NOT_USE_RESERVED_FOR_FUTURE_EXPANSION_USE_DEFAULT_IN_SWITCH_INSTEAD_ = 20,
+  Code_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::google::protobuf::int32>::min(),
+  Code_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::google::protobuf::int32>::max()
+};
+bool Code_IsValid(int value);
+const Code Code_MIN = OK;
+const Code Code_MAX = DO_NOT_USE_RESERVED_FOR_FUTURE_EXPANSION_USE_DEFAULT_IN_SWITCH_INSTEAD_;
+const int Code_ARRAYSIZE = Code_MAX + 1;
+
+const ::google::protobuf::EnumDescriptor* Code_descriptor();
+inline const ::std::string& Code_Name(Code value) {
+  return ::google::protobuf::internal::NameOfEnum(
+    Code_descriptor(), value);
+}
+inline bool Code_Parse(
+    const ::std::string& name, Code* value) {
+  return ::google::protobuf::internal::ParseNamedEnum<Code>(
+    Code_descriptor(), name, value);
+}
+// ===================================================================
+
+
+// ===================================================================
+
+
+// ===================================================================
+
+#ifdef __GNUC__
+  #pragma GCC diagnostic push
+  #pragma GCC diagnostic ignored "-Wstrict-aliasing"
+#endif  // __GNUC__
+#ifdef __GNUC__
+  #pragma GCC diagnostic pop
+#endif  // __GNUC__
+
+// @@protoc_insertion_point(namespace_scope)
+
+}  // namespace error
+}  // namespace tensorflow
+
+namespace google {
+namespace protobuf {
+
+template <> struct is_proto_enum< ::tensorflow::error::Code> : ::std::true_type {};
+template <>
+inline const EnumDescriptor* GetEnumDescriptor< ::tensorflow::error::Code>() {
+  return ::tensorflow::error::Code_descriptor();
+}
+
+}  // namespace protobuf
+}  // namespace google
+
+// @@protoc_insertion_point(global_scope)
+
+#include <google/protobuf/port_undef.inc>
+#endif  // PROTOBUF_INCLUDED_tensorflow_2fcore_2flib_2fcore_2ferror_5fcodes_2eproto
diff --git a/tensorflow/core/lib/core/error_codes.proto b/tensorflow/core/lib/core/error_codes.proto
new file mode 100644 (file)
index 0000000..5ced65a
--- /dev/null
@@ -0,0 +1,149 @@
+syntax = "proto3";
+
+package tensorflow.error;
+option cc_enable_arenas = true;
+option java_outer_classname = "ErrorCodesProtos";
+option java_multiple_files = true;
+option java_package = "org.tensorflow.framework";
+option go_package = "github.com/tensorflow/tensorflow/tensorflow/go/core/lib/core";
+
+// The canonical error codes for TensorFlow APIs.
+//
+// Warnings:
+//
+// -   Do not change any numeric assignments.
+// -   Changes to this list should only be made if there is a compelling
+//     need that can't be satisfied in another way.  Such changes
+//     must be approved by at least two OWNERS.
+//
+// Sometimes multiple error codes may apply.  Services should return
+// the most specific error code that applies.  For example, prefer
+// OUT_OF_RANGE over FAILED_PRECONDITION if both codes apply.
+// Similarly prefer NOT_FOUND or ALREADY_EXISTS over FAILED_PRECONDITION.
+enum Code {
+  // Not an error; returned on success
+  OK = 0;
+
+  // The operation was cancelled (typically by the caller).
+  CANCELLED = 1;
+
+  // Unknown error.  An example of where this error may be returned is
+  // if a Status value received from another address space belongs to
+  // an error-space that is not known in this address space.  Also
+  // errors raised by APIs that do not return enough error information
+  // may be converted to this error.
+  UNKNOWN = 2;
+
+  // Client specified an invalid argument.  Note that this differs
+  // from FAILED_PRECONDITION.  INVALID_ARGUMENT indicates arguments
+  // that are problematic regardless of the state of the system
+  // (e.g., a malformed file name).
+  INVALID_ARGUMENT = 3;
+
+  // Deadline expired before operation could complete.  For operations
+  // that change the state of the system, this error may be returned
+  // even if the operation has completed successfully.  For example, a
+  // successful response from a server could have been delayed long
+  // enough for the deadline to expire.
+  DEADLINE_EXCEEDED = 4;
+
+  // Some requested entity (e.g., file or directory) was not found.
+  // For privacy reasons, this code *may* be returned when the client
+  // does not have the access right to the entity.
+  NOT_FOUND = 5;
+
+  // Some entity that we attempted to create (e.g., file or directory)
+  // already exists.
+  ALREADY_EXISTS = 6;
+
+  // The caller does not have permission to execute the specified
+  // operation.  PERMISSION_DENIED must not be used for rejections
+  // caused by exhausting some resource (use RESOURCE_EXHAUSTED
+  // instead for those errors).  PERMISSION_DENIED must not be
+  // used if the caller can not be identified (use UNAUTHENTICATED
+  // instead for those errors).
+  PERMISSION_DENIED = 7;
+
+  // The request does not have valid authentication credentials for the
+  // operation.
+  UNAUTHENTICATED = 16;
+
+  // Some resource has been exhausted, perhaps a per-user quota, or
+  // perhaps the entire file system is out of space.
+  RESOURCE_EXHAUSTED = 8;
+
+  // Operation was rejected because the system is not in a state
+  // required for the operation's execution.  For example, directory
+  // to be deleted may be non-empty, an rmdir operation is applied to
+  // a non-directory, etc.
+  //
+  // A litmus test that may help a service implementor in deciding
+  // between FAILED_PRECONDITION, ABORTED, and UNAVAILABLE:
+  //  (a) Use UNAVAILABLE if the client can retry just the failing call.
+  //  (b) Use ABORTED if the client should retry at a higher-level
+  //      (e.g., restarting a read-modify-write sequence).
+  //  (c) Use FAILED_PRECONDITION if the client should not retry until
+  //      the system state has been explicitly fixed.  E.g., if an "rmdir"
+  //      fails because the directory is non-empty, FAILED_PRECONDITION
+  //      should be returned since the client should not retry unless
+  //      they have first fixed up the directory by deleting files from it.
+  //  (d) Use FAILED_PRECONDITION if the client performs conditional
+  //      REST Get/Update/Delete on a resource and the resource on the
+  //      server does not match the condition. E.g., conflicting
+  //      read-modify-write on the same resource.
+  FAILED_PRECONDITION = 9;
+
+  // The operation was aborted, typically due to a concurrency issue
+  // like sequencer check failures, transaction aborts, etc.
+  //
+  // See litmus test above for deciding between FAILED_PRECONDITION,
+  // ABORTED, and UNAVAILABLE.
+  ABORTED = 10;
+
+  // Operation tried to iterate past the valid input range.  E.g., seeking or
+  // reading past end of file.
+  //
+  // Unlike INVALID_ARGUMENT, this error indicates a problem that may
+  // be fixed if the system state changes. For example, a 32-bit file
+  // system will generate INVALID_ARGUMENT if asked to read at an
+  // offset that is not in the range [0,2^32-1], but it will generate
+  // OUT_OF_RANGE if asked to read from an offset past the current
+  // file size.
+  //
+  // There is a fair bit of overlap between FAILED_PRECONDITION and
+  // OUT_OF_RANGE.  We recommend using OUT_OF_RANGE (the more specific
+  // error) when it applies so that callers who are iterating through
+  // a space can easily look for an OUT_OF_RANGE error to detect when
+  // they are done.
+  OUT_OF_RANGE = 11;
+
+  // Operation is not implemented or not supported/enabled in this service.
+  UNIMPLEMENTED = 12;
+
+  // Internal errors.  Means some invariant expected by the underlying
+  // system has been broken.  If you see one of these errors,
+  // something is very broken.
+  INTERNAL = 13;
+
+  // The service is currently unavailable.  This is a most likely a
+  // transient condition and may be corrected by retrying with
+  // a backoff.
+  //
+  // See litmus test above for deciding between FAILED_PRECONDITION,
+  // ABORTED, and UNAVAILABLE.
+  UNAVAILABLE = 14;
+
+  // Unrecoverable data loss or corruption.
+  DATA_LOSS = 15;
+
+  // An extra enum entry to prevent people from writing code that
+  // fails to compile when a new code is added.
+  //
+  // Nobody should ever reference this enumeration entry. In particular,
+  // if you write C++ code that switches on this enumeration, add a default:
+  // case instead of a case that mentions this enumeration entry.
+  //
+  // Nobody should rely on the value (currently 20) listed here.  It
+  // may change in the future.
+  DO_NOT_USE_RESERVED_FOR_FUTURE_EXPANSION_USE_DEFAULT_IN_SWITCH_INSTEAD_ = 20;
+}
diff --git a/tensorflow/core/protobuf/checkpointable_object_graph.pb.cc b/tensorflow/core/protobuf/checkpointable_object_graph.pb.cc
new file mode 100644 (file)
index 0000000..5d50b7f
--- /dev/null
@@ -0,0 +1,2285 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: tensorflow/core/protobuf/checkpointable_object_graph.proto
+
+#include "tensorflow/core/protobuf/checkpointable_object_graph.pb.h"
+
+#include <algorithm>
+
+#include <google/protobuf/stubs/common.h>
+#include <google/protobuf/io/coded_stream.h>
+#include <google/protobuf/extension_set.h>
+#include <google/protobuf/wire_format_lite_inl.h>
+#include <google/protobuf/descriptor.h>
+#include <google/protobuf/generated_message_reflection.h>
+#include <google/protobuf/reflection_ops.h>
+#include <google/protobuf/wire_format.h>
+// @@protoc_insertion_point(includes)
+#include <google/protobuf/port_def.inc>
+
+extern PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fprotobuf_2fcheckpointable_5fobject_5fgraph_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_CheckpointableObjectGraph_CheckpointableObject_ObjectReference_tensorflow_2fcore_2fprotobuf_2fcheckpointable_5fobject_5fgraph_2eproto;
+extern PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fprotobuf_2fcheckpointable_5fobject_5fgraph_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_CheckpointableObjectGraph_CheckpointableObject_SerializedTensor_tensorflow_2fcore_2fprotobuf_2fcheckpointable_5fobject_5fgraph_2eproto;
+extern PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fprotobuf_2fcheckpointable_5fobject_5fgraph_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_CheckpointableObjectGraph_CheckpointableObject_SlotVariableReference_tensorflow_2fcore_2fprotobuf_2fcheckpointable_5fobject_5fgraph_2eproto;
+extern PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fprotobuf_2fcheckpointable_5fobject_5fgraph_2eproto ::google::protobuf::internal::SCCInfo<3> scc_info_CheckpointableObjectGraph_CheckpointableObject_tensorflow_2fcore_2fprotobuf_2fcheckpointable_5fobject_5fgraph_2eproto;
+namespace tensorflow {
+class CheckpointableObjectGraph_CheckpointableObject_ObjectReferenceDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<CheckpointableObjectGraph_CheckpointableObject_ObjectReference> _instance;
+} _CheckpointableObjectGraph_CheckpointableObject_ObjectReference_default_instance_;
+class CheckpointableObjectGraph_CheckpointableObject_SerializedTensorDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<CheckpointableObjectGraph_CheckpointableObject_SerializedTensor> _instance;
+} _CheckpointableObjectGraph_CheckpointableObject_SerializedTensor_default_instance_;
+class CheckpointableObjectGraph_CheckpointableObject_SlotVariableReferenceDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<CheckpointableObjectGraph_CheckpointableObject_SlotVariableReference> _instance;
+} _CheckpointableObjectGraph_CheckpointableObject_SlotVariableReference_default_instance_;
+class CheckpointableObjectGraph_CheckpointableObjectDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<CheckpointableObjectGraph_CheckpointableObject> _instance;
+} _CheckpointableObjectGraph_CheckpointableObject_default_instance_;
+class CheckpointableObjectGraphDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<CheckpointableObjectGraph> _instance;
+} _CheckpointableObjectGraph_default_instance_;
+}  // namespace tensorflow
+static void InitDefaultsCheckpointableObjectGraph_CheckpointableObject_ObjectReference_tensorflow_2fcore_2fprotobuf_2fcheckpointable_5fobject_5fgraph_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_CheckpointableObjectGraph_CheckpointableObject_ObjectReference_default_instance_;
+    new (ptr) ::tensorflow::CheckpointableObjectGraph_CheckpointableObject_ObjectReference();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::CheckpointableObjectGraph_CheckpointableObject_ObjectReference::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<0> scc_info_CheckpointableObjectGraph_CheckpointableObject_ObjectReference_tensorflow_2fcore_2fprotobuf_2fcheckpointable_5fobject_5fgraph_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsCheckpointableObjectGraph_CheckpointableObject_ObjectReference_tensorflow_2fcore_2fprotobuf_2fcheckpointable_5fobject_5fgraph_2eproto}, {}};
+
+static void InitDefaultsCheckpointableObjectGraph_CheckpointableObject_SerializedTensor_tensorflow_2fcore_2fprotobuf_2fcheckpointable_5fobject_5fgraph_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_CheckpointableObjectGraph_CheckpointableObject_SerializedTensor_default_instance_;
+    new (ptr) ::tensorflow::CheckpointableObjectGraph_CheckpointableObject_SerializedTensor();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::CheckpointableObjectGraph_CheckpointableObject_SerializedTensor::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<0> scc_info_CheckpointableObjectGraph_CheckpointableObject_SerializedTensor_tensorflow_2fcore_2fprotobuf_2fcheckpointable_5fobject_5fgraph_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsCheckpointableObjectGraph_CheckpointableObject_SerializedTensor_tensorflow_2fcore_2fprotobuf_2fcheckpointable_5fobject_5fgraph_2eproto}, {}};
+
+static void InitDefaultsCheckpointableObjectGraph_CheckpointableObject_SlotVariableReference_tensorflow_2fcore_2fprotobuf_2fcheckpointable_5fobject_5fgraph_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_CheckpointableObjectGraph_CheckpointableObject_SlotVariableReference_default_instance_;
+    new (ptr) ::tensorflow::CheckpointableObjectGraph_CheckpointableObject_SlotVariableReference();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::CheckpointableObjectGraph_CheckpointableObject_SlotVariableReference::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<0> scc_info_CheckpointableObjectGraph_CheckpointableObject_SlotVariableReference_tensorflow_2fcore_2fprotobuf_2fcheckpointable_5fobject_5fgraph_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsCheckpointableObjectGraph_CheckpointableObject_SlotVariableReference_tensorflow_2fcore_2fprotobuf_2fcheckpointable_5fobject_5fgraph_2eproto}, {}};
+
+static void InitDefaultsCheckpointableObjectGraph_CheckpointableObject_tensorflow_2fcore_2fprotobuf_2fcheckpointable_5fobject_5fgraph_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_CheckpointableObjectGraph_CheckpointableObject_default_instance_;
+    new (ptr) ::tensorflow::CheckpointableObjectGraph_CheckpointableObject();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::CheckpointableObjectGraph_CheckpointableObject::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<3> scc_info_CheckpointableObjectGraph_CheckpointableObject_tensorflow_2fcore_2fprotobuf_2fcheckpointable_5fobject_5fgraph_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 3, InitDefaultsCheckpointableObjectGraph_CheckpointableObject_tensorflow_2fcore_2fprotobuf_2fcheckpointable_5fobject_5fgraph_2eproto}, {
+      &scc_info_CheckpointableObjectGraph_CheckpointableObject_ObjectReference_tensorflow_2fcore_2fprotobuf_2fcheckpointable_5fobject_5fgraph_2eproto.base,
+      &scc_info_CheckpointableObjectGraph_CheckpointableObject_SerializedTensor_tensorflow_2fcore_2fprotobuf_2fcheckpointable_5fobject_5fgraph_2eproto.base,
+      &scc_info_CheckpointableObjectGraph_CheckpointableObject_SlotVariableReference_tensorflow_2fcore_2fprotobuf_2fcheckpointable_5fobject_5fgraph_2eproto.base,}};
+
+static void InitDefaultsCheckpointableObjectGraph_tensorflow_2fcore_2fprotobuf_2fcheckpointable_5fobject_5fgraph_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_CheckpointableObjectGraph_default_instance_;
+    new (ptr) ::tensorflow::CheckpointableObjectGraph();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::CheckpointableObjectGraph::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<1> scc_info_CheckpointableObjectGraph_tensorflow_2fcore_2fprotobuf_2fcheckpointable_5fobject_5fgraph_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsCheckpointableObjectGraph_tensorflow_2fcore_2fprotobuf_2fcheckpointable_5fobject_5fgraph_2eproto}, {
+      &scc_info_CheckpointableObjectGraph_CheckpointableObject_tensorflow_2fcore_2fprotobuf_2fcheckpointable_5fobject_5fgraph_2eproto.base,}};
+
+void InitDefaults_tensorflow_2fcore_2fprotobuf_2fcheckpointable_5fobject_5fgraph_2eproto() {
+  ::google::protobuf::internal::InitSCC(&scc_info_CheckpointableObjectGraph_CheckpointableObject_ObjectReference_tensorflow_2fcore_2fprotobuf_2fcheckpointable_5fobject_5fgraph_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_CheckpointableObjectGraph_CheckpointableObject_SerializedTensor_tensorflow_2fcore_2fprotobuf_2fcheckpointable_5fobject_5fgraph_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_CheckpointableObjectGraph_CheckpointableObject_SlotVariableReference_tensorflow_2fcore_2fprotobuf_2fcheckpointable_5fobject_5fgraph_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_CheckpointableObjectGraph_CheckpointableObject_tensorflow_2fcore_2fprotobuf_2fcheckpointable_5fobject_5fgraph_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_CheckpointableObjectGraph_tensorflow_2fcore_2fprotobuf_2fcheckpointable_5fobject_5fgraph_2eproto.base);
+}
+
+::google::protobuf::Metadata file_level_metadata_tensorflow_2fcore_2fprotobuf_2fcheckpointable_5fobject_5fgraph_2eproto[5];
+constexpr ::google::protobuf::EnumDescriptor const** file_level_enum_descriptors_tensorflow_2fcore_2fprotobuf_2fcheckpointable_5fobject_5fgraph_2eproto = nullptr;
+constexpr ::google::protobuf::ServiceDescriptor const** file_level_service_descriptors_tensorflow_2fcore_2fprotobuf_2fcheckpointable_5fobject_5fgraph_2eproto = nullptr;
+
+const ::google::protobuf::uint32 TableStruct_tensorflow_2fcore_2fprotobuf_2fcheckpointable_5fobject_5fgraph_2eproto::offsets[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = {
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::CheckpointableObjectGraph_CheckpointableObject_ObjectReference, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::CheckpointableObjectGraph_CheckpointableObject_ObjectReference, node_id_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::CheckpointableObjectGraph_CheckpointableObject_ObjectReference, local_name_),
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::CheckpointableObjectGraph_CheckpointableObject_SerializedTensor, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::CheckpointableObjectGraph_CheckpointableObject_SerializedTensor, name_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::CheckpointableObjectGraph_CheckpointableObject_SerializedTensor, full_name_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::CheckpointableObjectGraph_CheckpointableObject_SerializedTensor, checkpoint_key_),
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::CheckpointableObjectGraph_CheckpointableObject_SlotVariableReference, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::CheckpointableObjectGraph_CheckpointableObject_SlotVariableReference, original_variable_node_id_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::CheckpointableObjectGraph_CheckpointableObject_SlotVariableReference, slot_name_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::CheckpointableObjectGraph_CheckpointableObject_SlotVariableReference, slot_variable_node_id_),
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::CheckpointableObjectGraph_CheckpointableObject, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::CheckpointableObjectGraph_CheckpointableObject, children_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::CheckpointableObjectGraph_CheckpointableObject, attributes_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::CheckpointableObjectGraph_CheckpointableObject, slot_variables_),
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::CheckpointableObjectGraph, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::CheckpointableObjectGraph, nodes_),
+};
+static const ::google::protobuf::internal::MigrationSchema schemas[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = {
+  { 0, -1, sizeof(::tensorflow::CheckpointableObjectGraph_CheckpointableObject_ObjectReference)},
+  { 7, -1, sizeof(::tensorflow::CheckpointableObjectGraph_CheckpointableObject_SerializedTensor)},
+  { 15, -1, sizeof(::tensorflow::CheckpointableObjectGraph_CheckpointableObject_SlotVariableReference)},
+  { 23, -1, sizeof(::tensorflow::CheckpointableObjectGraph_CheckpointableObject)},
+  { 31, -1, sizeof(::tensorflow::CheckpointableObjectGraph)},
+};
+
+static ::google::protobuf::Message const * const file_default_instances[] = {
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_CheckpointableObjectGraph_CheckpointableObject_ObjectReference_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_CheckpointableObjectGraph_CheckpointableObject_SerializedTensor_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_CheckpointableObjectGraph_CheckpointableObject_SlotVariableReference_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_CheckpointableObjectGraph_CheckpointableObject_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_CheckpointableObjectGraph_default_instance_),
+};
+
+::google::protobuf::internal::AssignDescriptorsTable assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2fcheckpointable_5fobject_5fgraph_2eproto = {
+  {}, AddDescriptors_tensorflow_2fcore_2fprotobuf_2fcheckpointable_5fobject_5fgraph_2eproto, "tensorflow/core/protobuf/checkpointable_object_graph.proto", schemas,
+  file_default_instances, TableStruct_tensorflow_2fcore_2fprotobuf_2fcheckpointable_5fobject_5fgraph_2eproto::offsets,
+  file_level_metadata_tensorflow_2fcore_2fprotobuf_2fcheckpointable_5fobject_5fgraph_2eproto, 5, file_level_enum_descriptors_tensorflow_2fcore_2fprotobuf_2fcheckpointable_5fobject_5fgraph_2eproto, file_level_service_descriptors_tensorflow_2fcore_2fprotobuf_2fcheckpointable_5fobject_5fgraph_2eproto,
+};
+
+::google::protobuf::internal::DescriptorTable descriptor_table_tensorflow_2fcore_2fprotobuf_2fcheckpointable_5fobject_5fgraph_2eproto = {
+  false, InitDefaults_tensorflow_2fcore_2fprotobuf_2fcheckpointable_5fobject_5fgraph_2eproto, 
+  "\n:tensorflow/core/protobuf/checkpointabl"
+  "e_object_graph.proto\022\ntensorflow\"\233\005\n\031Che"
+  "ckpointableObjectGraph\022I\n\005nodes\030\001 \003(\0132:."
+  "tensorflow.CheckpointableObjectGraph.Che"
+  "ckpointableObject\032\262\004\n\024CheckpointableObje"
+  "ct\022\\\n\010children\030\001 \003(\0132J.tensorflow.Checkp"
+  "ointableObjectGraph.CheckpointableObject"
+  ".ObjectReference\022_\n\nattributes\030\002 \003(\0132K.t"
+  "ensorflow.CheckpointableObjectGraph.Chec"
+  "kpointableObject.SerializedTensor\022h\n\016slo"
+  "t_variables\030\003 \003(\0132P.tensorflow.Checkpoin"
+  "tableObjectGraph.CheckpointableObject.Sl"
+  "otVariableReference\0326\n\017ObjectReference\022\017"
+  "\n\007node_id\030\001 \001(\005\022\022\n\nlocal_name\030\002 \001(\t\032K\n\020S"
+  "erializedTensor\022\014\n\004name\030\001 \001(\t\022\021\n\tfull_na"
+  "me\030\002 \001(\t\022\026\n\016checkpoint_key\030\003 \001(\t\032l\n\025Slot"
+  "VariableReference\022!\n\031original_variable_n"
+  "ode_id\030\001 \001(\005\022\021\n\tslot_name\030\002 \001(\t\022\035\n\025slot_"
+  "variable_node_id\030\003 \001(\005B\003\370\001\001b\006proto3"
+,
+  "tensorflow/core/protobuf/checkpointable_object_graph.proto", &assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2fcheckpointable_5fobject_5fgraph_2eproto, 755,
+};
+
+void AddDescriptors_tensorflow_2fcore_2fprotobuf_2fcheckpointable_5fobject_5fgraph_2eproto() {
+  static constexpr ::google::protobuf::internal::InitFunc deps[1] =
+  {
+  };
+ ::google::protobuf::internal::AddDescriptors(&descriptor_table_tensorflow_2fcore_2fprotobuf_2fcheckpointable_5fobject_5fgraph_2eproto, deps, 0);
+}
+
+// Force running AddDescriptors() at dynamic initialization time.
+static bool dynamic_init_dummy_tensorflow_2fcore_2fprotobuf_2fcheckpointable_5fobject_5fgraph_2eproto = []() { AddDescriptors_tensorflow_2fcore_2fprotobuf_2fcheckpointable_5fobject_5fgraph_2eproto(); return true; }();
+namespace tensorflow {
+
+// ===================================================================
+
+void CheckpointableObjectGraph_CheckpointableObject_ObjectReference::InitAsDefaultInstance() {
+}
+class CheckpointableObjectGraph_CheckpointableObject_ObjectReference::HasBitSetters {
+ public:
+};
+
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int CheckpointableObjectGraph_CheckpointableObject_ObjectReference::kNodeIdFieldNumber;
+const int CheckpointableObjectGraph_CheckpointableObject_ObjectReference::kLocalNameFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+CheckpointableObjectGraph_CheckpointableObject_ObjectReference::CheckpointableObjectGraph_CheckpointableObject_ObjectReference()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.CheckpointableObjectGraph.CheckpointableObject.ObjectReference)
+}
+CheckpointableObjectGraph_CheckpointableObject_ObjectReference::CheckpointableObjectGraph_CheckpointableObject_ObjectReference(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.CheckpointableObjectGraph.CheckpointableObject.ObjectReference)
+}
+CheckpointableObjectGraph_CheckpointableObject_ObjectReference::CheckpointableObjectGraph_CheckpointableObject_ObjectReference(const CheckpointableObjectGraph_CheckpointableObject_ObjectReference& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  local_name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.local_name().size() > 0) {
+    local_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.local_name(),
+      GetArenaNoVirtual());
+  }
+  node_id_ = from.node_id_;
+  // @@protoc_insertion_point(copy_constructor:tensorflow.CheckpointableObjectGraph.CheckpointableObject.ObjectReference)
+}
+
+void CheckpointableObjectGraph_CheckpointableObject_ObjectReference::SharedCtor() {
+  ::google::protobuf::internal::InitSCC(
+      &scc_info_CheckpointableObjectGraph_CheckpointableObject_ObjectReference_tensorflow_2fcore_2fprotobuf_2fcheckpointable_5fobject_5fgraph_2eproto.base);
+  local_name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  node_id_ = 0;
+}
+
+CheckpointableObjectGraph_CheckpointableObject_ObjectReference::~CheckpointableObjectGraph_CheckpointableObject_ObjectReference() {
+  // @@protoc_insertion_point(destructor:tensorflow.CheckpointableObjectGraph.CheckpointableObject.ObjectReference)
+  SharedDtor();
+}
+
+void CheckpointableObjectGraph_CheckpointableObject_ObjectReference::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+  local_name_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+
+void CheckpointableObjectGraph_CheckpointableObject_ObjectReference::ArenaDtor(void* object) {
+  CheckpointableObjectGraph_CheckpointableObject_ObjectReference* _this = reinterpret_cast< CheckpointableObjectGraph_CheckpointableObject_ObjectReference* >(object);
+  (void)_this;
+}
+void CheckpointableObjectGraph_CheckpointableObject_ObjectReference::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void CheckpointableObjectGraph_CheckpointableObject_ObjectReference::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const CheckpointableObjectGraph_CheckpointableObject_ObjectReference& CheckpointableObjectGraph_CheckpointableObject_ObjectReference::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_CheckpointableObjectGraph_CheckpointableObject_ObjectReference_tensorflow_2fcore_2fprotobuf_2fcheckpointable_5fobject_5fgraph_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void CheckpointableObjectGraph_CheckpointableObject_ObjectReference::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.CheckpointableObjectGraph.CheckpointableObject.ObjectReference)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  local_name_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+  node_id_ = 0;
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* CheckpointableObjectGraph_CheckpointableObject_ObjectReference::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<CheckpointableObjectGraph_CheckpointableObject_ObjectReference*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // int32 node_id = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 8) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::google::protobuf::int32 value = val;
+        msg->set_node_id(value);
+        break;
+      }
+      // string local_name = 2;
+      case 2: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 18) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("tensorflow.CheckpointableObjectGraph.CheckpointableObject.ObjectReference.local_name");
+        parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+        ::std::string* str = msg->mutable_local_name();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool CheckpointableObjectGraph_CheckpointableObject_ObjectReference::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.CheckpointableObjectGraph.CheckpointableObject.ObjectReference)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // int32 node_id = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (8 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
+                 input, &node_id_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // string local_name = 2;
+      case 2: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (18 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_local_name()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->local_name().data(), static_cast<int>(this->local_name().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.CheckpointableObjectGraph.CheckpointableObject.ObjectReference.local_name"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.CheckpointableObjectGraph.CheckpointableObject.ObjectReference)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.CheckpointableObjectGraph.CheckpointableObject.ObjectReference)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void CheckpointableObjectGraph_CheckpointableObject_ObjectReference::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.CheckpointableObjectGraph.CheckpointableObject.ObjectReference)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // int32 node_id = 1;
+  if (this->node_id() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt32(1, this->node_id(), output);
+  }
+
+  // string local_name = 2;
+  if (this->local_name().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->local_name().data(), static_cast<int>(this->local_name().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.CheckpointableObjectGraph.CheckpointableObject.ObjectReference.local_name");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      2, this->local_name(), output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.CheckpointableObjectGraph.CheckpointableObject.ObjectReference)
+}
+
+::google::protobuf::uint8* CheckpointableObjectGraph_CheckpointableObject_ObjectReference::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.CheckpointableObjectGraph.CheckpointableObject.ObjectReference)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // int32 node_id = 1;
+  if (this->node_id() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt32ToArray(1, this->node_id(), target);
+  }
+
+  // string local_name = 2;
+  if (this->local_name().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->local_name().data(), static_cast<int>(this->local_name().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.CheckpointableObjectGraph.CheckpointableObject.ObjectReference.local_name");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        2, this->local_name(), target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.CheckpointableObjectGraph.CheckpointableObject.ObjectReference)
+  return target;
+}
+
+size_t CheckpointableObjectGraph_CheckpointableObject_ObjectReference::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.CheckpointableObjectGraph.CheckpointableObject.ObjectReference)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // string local_name = 2;
+  if (this->local_name().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->local_name());
+  }
+
+  // int32 node_id = 1;
+  if (this->node_id() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::Int32Size(
+        this->node_id());
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void CheckpointableObjectGraph_CheckpointableObject_ObjectReference::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.CheckpointableObjectGraph.CheckpointableObject.ObjectReference)
+  GOOGLE_DCHECK_NE(&from, this);
+  const CheckpointableObjectGraph_CheckpointableObject_ObjectReference* source =
+      ::google::protobuf::DynamicCastToGenerated<CheckpointableObjectGraph_CheckpointableObject_ObjectReference>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.CheckpointableObjectGraph.CheckpointableObject.ObjectReference)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.CheckpointableObjectGraph.CheckpointableObject.ObjectReference)
+    MergeFrom(*source);
+  }
+}
+
+void CheckpointableObjectGraph_CheckpointableObject_ObjectReference::MergeFrom(const CheckpointableObjectGraph_CheckpointableObject_ObjectReference& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.CheckpointableObjectGraph.CheckpointableObject.ObjectReference)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  if (from.local_name().size() > 0) {
+    set_local_name(from.local_name());
+  }
+  if (from.node_id() != 0) {
+    set_node_id(from.node_id());
+  }
+}
+
+void CheckpointableObjectGraph_CheckpointableObject_ObjectReference::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.CheckpointableObjectGraph.CheckpointableObject.ObjectReference)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void CheckpointableObjectGraph_CheckpointableObject_ObjectReference::CopyFrom(const CheckpointableObjectGraph_CheckpointableObject_ObjectReference& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.CheckpointableObjectGraph.CheckpointableObject.ObjectReference)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool CheckpointableObjectGraph_CheckpointableObject_ObjectReference::IsInitialized() const {
+  return true;
+}
+
+void CheckpointableObjectGraph_CheckpointableObject_ObjectReference::Swap(CheckpointableObjectGraph_CheckpointableObject_ObjectReference* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    CheckpointableObjectGraph_CheckpointableObject_ObjectReference* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void CheckpointableObjectGraph_CheckpointableObject_ObjectReference::UnsafeArenaSwap(CheckpointableObjectGraph_CheckpointableObject_ObjectReference* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void CheckpointableObjectGraph_CheckpointableObject_ObjectReference::InternalSwap(CheckpointableObjectGraph_CheckpointableObject_ObjectReference* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  local_name_.Swap(&other->local_name_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+  swap(node_id_, other->node_id_);
+}
+
+::google::protobuf::Metadata CheckpointableObjectGraph_CheckpointableObject_ObjectReference::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2fcheckpointable_5fobject_5fgraph_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fprotobuf_2fcheckpointable_5fobject_5fgraph_2eproto[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+void CheckpointableObjectGraph_CheckpointableObject_SerializedTensor::InitAsDefaultInstance() {
+}
+class CheckpointableObjectGraph_CheckpointableObject_SerializedTensor::HasBitSetters {
+ public:
+};
+
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int CheckpointableObjectGraph_CheckpointableObject_SerializedTensor::kNameFieldNumber;
+const int CheckpointableObjectGraph_CheckpointableObject_SerializedTensor::kFullNameFieldNumber;
+const int CheckpointableObjectGraph_CheckpointableObject_SerializedTensor::kCheckpointKeyFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+CheckpointableObjectGraph_CheckpointableObject_SerializedTensor::CheckpointableObjectGraph_CheckpointableObject_SerializedTensor()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.CheckpointableObjectGraph.CheckpointableObject.SerializedTensor)
+}
+CheckpointableObjectGraph_CheckpointableObject_SerializedTensor::CheckpointableObjectGraph_CheckpointableObject_SerializedTensor(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.CheckpointableObjectGraph.CheckpointableObject.SerializedTensor)
+}
+CheckpointableObjectGraph_CheckpointableObject_SerializedTensor::CheckpointableObjectGraph_CheckpointableObject_SerializedTensor(const CheckpointableObjectGraph_CheckpointableObject_SerializedTensor& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.name().size() > 0) {
+    name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.name(),
+      GetArenaNoVirtual());
+  }
+  full_name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.full_name().size() > 0) {
+    full_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.full_name(),
+      GetArenaNoVirtual());
+  }
+  checkpoint_key_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.checkpoint_key().size() > 0) {
+    checkpoint_key_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.checkpoint_key(),
+      GetArenaNoVirtual());
+  }
+  // @@protoc_insertion_point(copy_constructor:tensorflow.CheckpointableObjectGraph.CheckpointableObject.SerializedTensor)
+}
+
+void CheckpointableObjectGraph_CheckpointableObject_SerializedTensor::SharedCtor() {
+  ::google::protobuf::internal::InitSCC(
+      &scc_info_CheckpointableObjectGraph_CheckpointableObject_SerializedTensor_tensorflow_2fcore_2fprotobuf_2fcheckpointable_5fobject_5fgraph_2eproto.base);
+  name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  full_name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  checkpoint_key_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+
+CheckpointableObjectGraph_CheckpointableObject_SerializedTensor::~CheckpointableObjectGraph_CheckpointableObject_SerializedTensor() {
+  // @@protoc_insertion_point(destructor:tensorflow.CheckpointableObjectGraph.CheckpointableObject.SerializedTensor)
+  SharedDtor();
+}
+
+void CheckpointableObjectGraph_CheckpointableObject_SerializedTensor::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+  name_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  full_name_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  checkpoint_key_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+
+void CheckpointableObjectGraph_CheckpointableObject_SerializedTensor::ArenaDtor(void* object) {
+  CheckpointableObjectGraph_CheckpointableObject_SerializedTensor* _this = reinterpret_cast< CheckpointableObjectGraph_CheckpointableObject_SerializedTensor* >(object);
+  (void)_this;
+}
+void CheckpointableObjectGraph_CheckpointableObject_SerializedTensor::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void CheckpointableObjectGraph_CheckpointableObject_SerializedTensor::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const CheckpointableObjectGraph_CheckpointableObject_SerializedTensor& CheckpointableObjectGraph_CheckpointableObject_SerializedTensor::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_CheckpointableObjectGraph_CheckpointableObject_SerializedTensor_tensorflow_2fcore_2fprotobuf_2fcheckpointable_5fobject_5fgraph_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void CheckpointableObjectGraph_CheckpointableObject_SerializedTensor::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.CheckpointableObjectGraph.CheckpointableObject.SerializedTensor)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  name_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+  full_name_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+  checkpoint_key_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* CheckpointableObjectGraph_CheckpointableObject_SerializedTensor::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<CheckpointableObjectGraph_CheckpointableObject_SerializedTensor*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // string name = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 10) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("tensorflow.CheckpointableObjectGraph.CheckpointableObject.SerializedTensor.name");
+        parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+        ::std::string* str = msg->mutable_name();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+        break;
+      }
+      // string full_name = 2;
+      case 2: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 18) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("tensorflow.CheckpointableObjectGraph.CheckpointableObject.SerializedTensor.full_name");
+        parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+        ::std::string* str = msg->mutable_full_name();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+        break;
+      }
+      // string checkpoint_key = 3;
+      case 3: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 26) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("tensorflow.CheckpointableObjectGraph.CheckpointableObject.SerializedTensor.checkpoint_key");
+        parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+        ::std::string* str = msg->mutable_checkpoint_key();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool CheckpointableObjectGraph_CheckpointableObject_SerializedTensor::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.CheckpointableObjectGraph.CheckpointableObject.SerializedTensor)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // string name = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (10 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_name()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->name().data(), static_cast<int>(this->name().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.CheckpointableObjectGraph.CheckpointableObject.SerializedTensor.name"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // string full_name = 2;
+      case 2: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (18 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_full_name()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->full_name().data(), static_cast<int>(this->full_name().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.CheckpointableObjectGraph.CheckpointableObject.SerializedTensor.full_name"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // string checkpoint_key = 3;
+      case 3: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (26 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_checkpoint_key()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->checkpoint_key().data(), static_cast<int>(this->checkpoint_key().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.CheckpointableObjectGraph.CheckpointableObject.SerializedTensor.checkpoint_key"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.CheckpointableObjectGraph.CheckpointableObject.SerializedTensor)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.CheckpointableObjectGraph.CheckpointableObject.SerializedTensor)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void CheckpointableObjectGraph_CheckpointableObject_SerializedTensor::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.CheckpointableObjectGraph.CheckpointableObject.SerializedTensor)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // string name = 1;
+  if (this->name().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->name().data(), static_cast<int>(this->name().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.CheckpointableObjectGraph.CheckpointableObject.SerializedTensor.name");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      1, this->name(), output);
+  }
+
+  // string full_name = 2;
+  if (this->full_name().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->full_name().data(), static_cast<int>(this->full_name().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.CheckpointableObjectGraph.CheckpointableObject.SerializedTensor.full_name");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      2, this->full_name(), output);
+  }
+
+  // string checkpoint_key = 3;
+  if (this->checkpoint_key().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->checkpoint_key().data(), static_cast<int>(this->checkpoint_key().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.CheckpointableObjectGraph.CheckpointableObject.SerializedTensor.checkpoint_key");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      3, this->checkpoint_key(), output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.CheckpointableObjectGraph.CheckpointableObject.SerializedTensor)
+}
+
+::google::protobuf::uint8* CheckpointableObjectGraph_CheckpointableObject_SerializedTensor::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.CheckpointableObjectGraph.CheckpointableObject.SerializedTensor)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // string name = 1;
+  if (this->name().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->name().data(), static_cast<int>(this->name().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.CheckpointableObjectGraph.CheckpointableObject.SerializedTensor.name");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        1, this->name(), target);
+  }
+
+  // string full_name = 2;
+  if (this->full_name().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->full_name().data(), static_cast<int>(this->full_name().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.CheckpointableObjectGraph.CheckpointableObject.SerializedTensor.full_name");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        2, this->full_name(), target);
+  }
+
+  // string checkpoint_key = 3;
+  if (this->checkpoint_key().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->checkpoint_key().data(), static_cast<int>(this->checkpoint_key().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.CheckpointableObjectGraph.CheckpointableObject.SerializedTensor.checkpoint_key");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        3, this->checkpoint_key(), target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.CheckpointableObjectGraph.CheckpointableObject.SerializedTensor)
+  return target;
+}
+
+size_t CheckpointableObjectGraph_CheckpointableObject_SerializedTensor::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.CheckpointableObjectGraph.CheckpointableObject.SerializedTensor)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // string name = 1;
+  if (this->name().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->name());
+  }
+
+  // string full_name = 2;
+  if (this->full_name().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->full_name());
+  }
+
+  // string checkpoint_key = 3;
+  if (this->checkpoint_key().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->checkpoint_key());
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void CheckpointableObjectGraph_CheckpointableObject_SerializedTensor::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.CheckpointableObjectGraph.CheckpointableObject.SerializedTensor)
+  GOOGLE_DCHECK_NE(&from, this);
+  const CheckpointableObjectGraph_CheckpointableObject_SerializedTensor* source =
+      ::google::protobuf::DynamicCastToGenerated<CheckpointableObjectGraph_CheckpointableObject_SerializedTensor>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.CheckpointableObjectGraph.CheckpointableObject.SerializedTensor)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.CheckpointableObjectGraph.CheckpointableObject.SerializedTensor)
+    MergeFrom(*source);
+  }
+}
+
+void CheckpointableObjectGraph_CheckpointableObject_SerializedTensor::MergeFrom(const CheckpointableObjectGraph_CheckpointableObject_SerializedTensor& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.CheckpointableObjectGraph.CheckpointableObject.SerializedTensor)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  if (from.name().size() > 0) {
+    set_name(from.name());
+  }
+  if (from.full_name().size() > 0) {
+    set_full_name(from.full_name());
+  }
+  if (from.checkpoint_key().size() > 0) {
+    set_checkpoint_key(from.checkpoint_key());
+  }
+}
+
+void CheckpointableObjectGraph_CheckpointableObject_SerializedTensor::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.CheckpointableObjectGraph.CheckpointableObject.SerializedTensor)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void CheckpointableObjectGraph_CheckpointableObject_SerializedTensor::CopyFrom(const CheckpointableObjectGraph_CheckpointableObject_SerializedTensor& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.CheckpointableObjectGraph.CheckpointableObject.SerializedTensor)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool CheckpointableObjectGraph_CheckpointableObject_SerializedTensor::IsInitialized() const {
+  return true;
+}
+
+void CheckpointableObjectGraph_CheckpointableObject_SerializedTensor::Swap(CheckpointableObjectGraph_CheckpointableObject_SerializedTensor* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    CheckpointableObjectGraph_CheckpointableObject_SerializedTensor* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void CheckpointableObjectGraph_CheckpointableObject_SerializedTensor::UnsafeArenaSwap(CheckpointableObjectGraph_CheckpointableObject_SerializedTensor* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void CheckpointableObjectGraph_CheckpointableObject_SerializedTensor::InternalSwap(CheckpointableObjectGraph_CheckpointableObject_SerializedTensor* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  name_.Swap(&other->name_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+  full_name_.Swap(&other->full_name_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+  checkpoint_key_.Swap(&other->checkpoint_key_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+}
+
+::google::protobuf::Metadata CheckpointableObjectGraph_CheckpointableObject_SerializedTensor::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2fcheckpointable_5fobject_5fgraph_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fprotobuf_2fcheckpointable_5fobject_5fgraph_2eproto[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+void CheckpointableObjectGraph_CheckpointableObject_SlotVariableReference::InitAsDefaultInstance() {
+}
+class CheckpointableObjectGraph_CheckpointableObject_SlotVariableReference::HasBitSetters {
+ public:
+};
+
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int CheckpointableObjectGraph_CheckpointableObject_SlotVariableReference::kOriginalVariableNodeIdFieldNumber;
+const int CheckpointableObjectGraph_CheckpointableObject_SlotVariableReference::kSlotNameFieldNumber;
+const int CheckpointableObjectGraph_CheckpointableObject_SlotVariableReference::kSlotVariableNodeIdFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+CheckpointableObjectGraph_CheckpointableObject_SlotVariableReference::CheckpointableObjectGraph_CheckpointableObject_SlotVariableReference()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.CheckpointableObjectGraph.CheckpointableObject.SlotVariableReference)
+}
+CheckpointableObjectGraph_CheckpointableObject_SlotVariableReference::CheckpointableObjectGraph_CheckpointableObject_SlotVariableReference(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.CheckpointableObjectGraph.CheckpointableObject.SlotVariableReference)
+}
+CheckpointableObjectGraph_CheckpointableObject_SlotVariableReference::CheckpointableObjectGraph_CheckpointableObject_SlotVariableReference(const CheckpointableObjectGraph_CheckpointableObject_SlotVariableReference& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  slot_name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.slot_name().size() > 0) {
+    slot_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.slot_name(),
+      GetArenaNoVirtual());
+  }
+  ::memcpy(&original_variable_node_id_, &from.original_variable_node_id_,
+    static_cast<size_t>(reinterpret_cast<char*>(&slot_variable_node_id_) -
+    reinterpret_cast<char*>(&original_variable_node_id_)) + sizeof(slot_variable_node_id_));
+  // @@protoc_insertion_point(copy_constructor:tensorflow.CheckpointableObjectGraph.CheckpointableObject.SlotVariableReference)
+}
+
+void CheckpointableObjectGraph_CheckpointableObject_SlotVariableReference::SharedCtor() {
+  ::google::protobuf::internal::InitSCC(
+      &scc_info_CheckpointableObjectGraph_CheckpointableObject_SlotVariableReference_tensorflow_2fcore_2fprotobuf_2fcheckpointable_5fobject_5fgraph_2eproto.base);
+  slot_name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  ::memset(&original_variable_node_id_, 0, static_cast<size_t>(
+      reinterpret_cast<char*>(&slot_variable_node_id_) -
+      reinterpret_cast<char*>(&original_variable_node_id_)) + sizeof(slot_variable_node_id_));
+}
+
+CheckpointableObjectGraph_CheckpointableObject_SlotVariableReference::~CheckpointableObjectGraph_CheckpointableObject_SlotVariableReference() {
+  // @@protoc_insertion_point(destructor:tensorflow.CheckpointableObjectGraph.CheckpointableObject.SlotVariableReference)
+  SharedDtor();
+}
+
+void CheckpointableObjectGraph_CheckpointableObject_SlotVariableReference::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+  slot_name_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+
+void CheckpointableObjectGraph_CheckpointableObject_SlotVariableReference::ArenaDtor(void* object) {
+  CheckpointableObjectGraph_CheckpointableObject_SlotVariableReference* _this = reinterpret_cast< CheckpointableObjectGraph_CheckpointableObject_SlotVariableReference* >(object);
+  (void)_this;
+}
+void CheckpointableObjectGraph_CheckpointableObject_SlotVariableReference::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void CheckpointableObjectGraph_CheckpointableObject_SlotVariableReference::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const CheckpointableObjectGraph_CheckpointableObject_SlotVariableReference& CheckpointableObjectGraph_CheckpointableObject_SlotVariableReference::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_CheckpointableObjectGraph_CheckpointableObject_SlotVariableReference_tensorflow_2fcore_2fprotobuf_2fcheckpointable_5fobject_5fgraph_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void CheckpointableObjectGraph_CheckpointableObject_SlotVariableReference::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.CheckpointableObjectGraph.CheckpointableObject.SlotVariableReference)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  slot_name_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+  ::memset(&original_variable_node_id_, 0, static_cast<size_t>(
+      reinterpret_cast<char*>(&slot_variable_node_id_) -
+      reinterpret_cast<char*>(&original_variable_node_id_)) + sizeof(slot_variable_node_id_));
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* CheckpointableObjectGraph_CheckpointableObject_SlotVariableReference::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<CheckpointableObjectGraph_CheckpointableObject_SlotVariableReference*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // int32 original_variable_node_id = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 8) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::google::protobuf::int32 value = val;
+        msg->set_original_variable_node_id(value);
+        break;
+      }
+      // string slot_name = 2;
+      case 2: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 18) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("tensorflow.CheckpointableObjectGraph.CheckpointableObject.SlotVariableReference.slot_name");
+        parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+        ::std::string* str = msg->mutable_slot_name();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+        break;
+      }
+      // int32 slot_variable_node_id = 3;
+      case 3: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 24) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::google::protobuf::int32 value = val;
+        msg->set_slot_variable_node_id(value);
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool CheckpointableObjectGraph_CheckpointableObject_SlotVariableReference::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.CheckpointableObjectGraph.CheckpointableObject.SlotVariableReference)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // int32 original_variable_node_id = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (8 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
+                 input, &original_variable_node_id_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // string slot_name = 2;
+      case 2: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (18 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_slot_name()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->slot_name().data(), static_cast<int>(this->slot_name().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.CheckpointableObjectGraph.CheckpointableObject.SlotVariableReference.slot_name"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // int32 slot_variable_node_id = 3;
+      case 3: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (24 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
+                 input, &slot_variable_node_id_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.CheckpointableObjectGraph.CheckpointableObject.SlotVariableReference)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.CheckpointableObjectGraph.CheckpointableObject.SlotVariableReference)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void CheckpointableObjectGraph_CheckpointableObject_SlotVariableReference::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.CheckpointableObjectGraph.CheckpointableObject.SlotVariableReference)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // int32 original_variable_node_id = 1;
+  if (this->original_variable_node_id() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt32(1, this->original_variable_node_id(), output);
+  }
+
+  // string slot_name = 2;
+  if (this->slot_name().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->slot_name().data(), static_cast<int>(this->slot_name().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.CheckpointableObjectGraph.CheckpointableObject.SlotVariableReference.slot_name");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      2, this->slot_name(), output);
+  }
+
+  // int32 slot_variable_node_id = 3;
+  if (this->slot_variable_node_id() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt32(3, this->slot_variable_node_id(), output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.CheckpointableObjectGraph.CheckpointableObject.SlotVariableReference)
+}
+
+::google::protobuf::uint8* CheckpointableObjectGraph_CheckpointableObject_SlotVariableReference::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.CheckpointableObjectGraph.CheckpointableObject.SlotVariableReference)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // int32 original_variable_node_id = 1;
+  if (this->original_variable_node_id() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt32ToArray(1, this->original_variable_node_id(), target);
+  }
+
+  // string slot_name = 2;
+  if (this->slot_name().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->slot_name().data(), static_cast<int>(this->slot_name().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.CheckpointableObjectGraph.CheckpointableObject.SlotVariableReference.slot_name");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        2, this->slot_name(), target);
+  }
+
+  // int32 slot_variable_node_id = 3;
+  if (this->slot_variable_node_id() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt32ToArray(3, this->slot_variable_node_id(), target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.CheckpointableObjectGraph.CheckpointableObject.SlotVariableReference)
+  return target;
+}
+
+size_t CheckpointableObjectGraph_CheckpointableObject_SlotVariableReference::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.CheckpointableObjectGraph.CheckpointableObject.SlotVariableReference)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // string slot_name = 2;
+  if (this->slot_name().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->slot_name());
+  }
+
+  // int32 original_variable_node_id = 1;
+  if (this->original_variable_node_id() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::Int32Size(
+        this->original_variable_node_id());
+  }
+
+  // int32 slot_variable_node_id = 3;
+  if (this->slot_variable_node_id() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::Int32Size(
+        this->slot_variable_node_id());
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void CheckpointableObjectGraph_CheckpointableObject_SlotVariableReference::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.CheckpointableObjectGraph.CheckpointableObject.SlotVariableReference)
+  GOOGLE_DCHECK_NE(&from, this);
+  const CheckpointableObjectGraph_CheckpointableObject_SlotVariableReference* source =
+      ::google::protobuf::DynamicCastToGenerated<CheckpointableObjectGraph_CheckpointableObject_SlotVariableReference>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.CheckpointableObjectGraph.CheckpointableObject.SlotVariableReference)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.CheckpointableObjectGraph.CheckpointableObject.SlotVariableReference)
+    MergeFrom(*source);
+  }
+}
+
+void CheckpointableObjectGraph_CheckpointableObject_SlotVariableReference::MergeFrom(const CheckpointableObjectGraph_CheckpointableObject_SlotVariableReference& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.CheckpointableObjectGraph.CheckpointableObject.SlotVariableReference)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  if (from.slot_name().size() > 0) {
+    set_slot_name(from.slot_name());
+  }
+  if (from.original_variable_node_id() != 0) {
+    set_original_variable_node_id(from.original_variable_node_id());
+  }
+  if (from.slot_variable_node_id() != 0) {
+    set_slot_variable_node_id(from.slot_variable_node_id());
+  }
+}
+
+void CheckpointableObjectGraph_CheckpointableObject_SlotVariableReference::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.CheckpointableObjectGraph.CheckpointableObject.SlotVariableReference)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void CheckpointableObjectGraph_CheckpointableObject_SlotVariableReference::CopyFrom(const CheckpointableObjectGraph_CheckpointableObject_SlotVariableReference& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.CheckpointableObjectGraph.CheckpointableObject.SlotVariableReference)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool CheckpointableObjectGraph_CheckpointableObject_SlotVariableReference::IsInitialized() const {
+  return true;
+}
+
+void CheckpointableObjectGraph_CheckpointableObject_SlotVariableReference::Swap(CheckpointableObjectGraph_CheckpointableObject_SlotVariableReference* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    CheckpointableObjectGraph_CheckpointableObject_SlotVariableReference* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void CheckpointableObjectGraph_CheckpointableObject_SlotVariableReference::UnsafeArenaSwap(CheckpointableObjectGraph_CheckpointableObject_SlotVariableReference* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void CheckpointableObjectGraph_CheckpointableObject_SlotVariableReference::InternalSwap(CheckpointableObjectGraph_CheckpointableObject_SlotVariableReference* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  slot_name_.Swap(&other->slot_name_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+  swap(original_variable_node_id_, other->original_variable_node_id_);
+  swap(slot_variable_node_id_, other->slot_variable_node_id_);
+}
+
+::google::protobuf::Metadata CheckpointableObjectGraph_CheckpointableObject_SlotVariableReference::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2fcheckpointable_5fobject_5fgraph_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fprotobuf_2fcheckpointable_5fobject_5fgraph_2eproto[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+void CheckpointableObjectGraph_CheckpointableObject::InitAsDefaultInstance() {
+}
+class CheckpointableObjectGraph_CheckpointableObject::HasBitSetters {
+ public:
+};
+
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int CheckpointableObjectGraph_CheckpointableObject::kChildrenFieldNumber;
+const int CheckpointableObjectGraph_CheckpointableObject::kAttributesFieldNumber;
+const int CheckpointableObjectGraph_CheckpointableObject::kSlotVariablesFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+CheckpointableObjectGraph_CheckpointableObject::CheckpointableObjectGraph_CheckpointableObject()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.CheckpointableObjectGraph.CheckpointableObject)
+}
+CheckpointableObjectGraph_CheckpointableObject::CheckpointableObjectGraph_CheckpointableObject(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena),
+  children_(arena),
+  attributes_(arena),
+  slot_variables_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.CheckpointableObjectGraph.CheckpointableObject)
+}
+CheckpointableObjectGraph_CheckpointableObject::CheckpointableObjectGraph_CheckpointableObject(const CheckpointableObjectGraph_CheckpointableObject& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL),
+      children_(from.children_),
+      attributes_(from.attributes_),
+      slot_variables_(from.slot_variables_) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  // @@protoc_insertion_point(copy_constructor:tensorflow.CheckpointableObjectGraph.CheckpointableObject)
+}
+
+void CheckpointableObjectGraph_CheckpointableObject::SharedCtor() {
+  ::google::protobuf::internal::InitSCC(
+      &scc_info_CheckpointableObjectGraph_CheckpointableObject_tensorflow_2fcore_2fprotobuf_2fcheckpointable_5fobject_5fgraph_2eproto.base);
+}
+
+CheckpointableObjectGraph_CheckpointableObject::~CheckpointableObjectGraph_CheckpointableObject() {
+  // @@protoc_insertion_point(destructor:tensorflow.CheckpointableObjectGraph.CheckpointableObject)
+  SharedDtor();
+}
+
+void CheckpointableObjectGraph_CheckpointableObject::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+}
+
+void CheckpointableObjectGraph_CheckpointableObject::ArenaDtor(void* object) {
+  CheckpointableObjectGraph_CheckpointableObject* _this = reinterpret_cast< CheckpointableObjectGraph_CheckpointableObject* >(object);
+  (void)_this;
+}
+void CheckpointableObjectGraph_CheckpointableObject::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void CheckpointableObjectGraph_CheckpointableObject::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const CheckpointableObjectGraph_CheckpointableObject& CheckpointableObjectGraph_CheckpointableObject::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_CheckpointableObjectGraph_CheckpointableObject_tensorflow_2fcore_2fprotobuf_2fcheckpointable_5fobject_5fgraph_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void CheckpointableObjectGraph_CheckpointableObject::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.CheckpointableObjectGraph.CheckpointableObject)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  children_.Clear();
+  attributes_.Clear();
+  slot_variables_.Clear();
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* CheckpointableObjectGraph_CheckpointableObject::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<CheckpointableObjectGraph_CheckpointableObject*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // repeated .tensorflow.CheckpointableObjectGraph.CheckpointableObject.ObjectReference children = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 10) goto handle_unusual;
+        do {
+          ptr = Varint::Parse32Inline(ptr, &size);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          parser_till_end = ::tensorflow::CheckpointableObjectGraph_CheckpointableObject_ObjectReference::_InternalParse;
+          object = msg->add_children();
+          if (size > end - ptr) goto len_delim_till_end;
+          auto newend = ptr + size;
+          bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                         ptr, newend);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          ptr = newend;
+          if (ptr >= end) break;
+        } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 10 && (ptr += 1));
+        break;
+      }
+      // repeated .tensorflow.CheckpointableObjectGraph.CheckpointableObject.SerializedTensor attributes = 2;
+      case 2: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 18) goto handle_unusual;
+        do {
+          ptr = Varint::Parse32Inline(ptr, &size);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          parser_till_end = ::tensorflow::CheckpointableObjectGraph_CheckpointableObject_SerializedTensor::_InternalParse;
+          object = msg->add_attributes();
+          if (size > end - ptr) goto len_delim_till_end;
+          auto newend = ptr + size;
+          bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                         ptr, newend);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          ptr = newend;
+          if (ptr >= end) break;
+        } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 18 && (ptr += 1));
+        break;
+      }
+      // repeated .tensorflow.CheckpointableObjectGraph.CheckpointableObject.SlotVariableReference slot_variables = 3;
+      case 3: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 26) goto handle_unusual;
+        do {
+          ptr = Varint::Parse32Inline(ptr, &size);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          parser_till_end = ::tensorflow::CheckpointableObjectGraph_CheckpointableObject_SlotVariableReference::_InternalParse;
+          object = msg->add_slot_variables();
+          if (size > end - ptr) goto len_delim_till_end;
+          auto newend = ptr + size;
+          bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                         ptr, newend);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          ptr = newend;
+          if (ptr >= end) break;
+        } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 26 && (ptr += 1));
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool CheckpointableObjectGraph_CheckpointableObject::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.CheckpointableObjectGraph.CheckpointableObject)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // repeated .tensorflow.CheckpointableObjectGraph.CheckpointableObject.ObjectReference children = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (10 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+                input, add_children()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // repeated .tensorflow.CheckpointableObjectGraph.CheckpointableObject.SerializedTensor attributes = 2;
+      case 2: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (18 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+                input, add_attributes()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // repeated .tensorflow.CheckpointableObjectGraph.CheckpointableObject.SlotVariableReference slot_variables = 3;
+      case 3: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (26 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+                input, add_slot_variables()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.CheckpointableObjectGraph.CheckpointableObject)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.CheckpointableObjectGraph.CheckpointableObject)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void CheckpointableObjectGraph_CheckpointableObject::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.CheckpointableObjectGraph.CheckpointableObject)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // repeated .tensorflow.CheckpointableObjectGraph.CheckpointableObject.ObjectReference children = 1;
+  for (unsigned int i = 0,
+      n = static_cast<unsigned int>(this->children_size()); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      1,
+      this->children(static_cast<int>(i)),
+      output);
+  }
+
+  // repeated .tensorflow.CheckpointableObjectGraph.CheckpointableObject.SerializedTensor attributes = 2;
+  for (unsigned int i = 0,
+      n = static_cast<unsigned int>(this->attributes_size()); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      2,
+      this->attributes(static_cast<int>(i)),
+      output);
+  }
+
+  // repeated .tensorflow.CheckpointableObjectGraph.CheckpointableObject.SlotVariableReference slot_variables = 3;
+  for (unsigned int i = 0,
+      n = static_cast<unsigned int>(this->slot_variables_size()); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      3,
+      this->slot_variables(static_cast<int>(i)),
+      output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.CheckpointableObjectGraph.CheckpointableObject)
+}
+
+::google::protobuf::uint8* CheckpointableObjectGraph_CheckpointableObject::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.CheckpointableObjectGraph.CheckpointableObject)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // repeated .tensorflow.CheckpointableObjectGraph.CheckpointableObject.ObjectReference children = 1;
+  for (unsigned int i = 0,
+      n = static_cast<unsigned int>(this->children_size()); i < n; i++) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        1, this->children(static_cast<int>(i)), deterministic, target);
+  }
+
+  // repeated .tensorflow.CheckpointableObjectGraph.CheckpointableObject.SerializedTensor attributes = 2;
+  for (unsigned int i = 0,
+      n = static_cast<unsigned int>(this->attributes_size()); i < n; i++) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        2, this->attributes(static_cast<int>(i)), deterministic, target);
+  }
+
+  // repeated .tensorflow.CheckpointableObjectGraph.CheckpointableObject.SlotVariableReference slot_variables = 3;
+  for (unsigned int i = 0,
+      n = static_cast<unsigned int>(this->slot_variables_size()); i < n; i++) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        3, this->slot_variables(static_cast<int>(i)), deterministic, target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.CheckpointableObjectGraph.CheckpointableObject)
+  return target;
+}
+
+size_t CheckpointableObjectGraph_CheckpointableObject::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.CheckpointableObjectGraph.CheckpointableObject)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // repeated .tensorflow.CheckpointableObjectGraph.CheckpointableObject.ObjectReference children = 1;
+  {
+    unsigned int count = static_cast<unsigned int>(this->children_size());
+    total_size += 1UL * count;
+    for (unsigned int i = 0; i < count; i++) {
+      total_size +=
+        ::google::protobuf::internal::WireFormatLite::MessageSize(
+          this->children(static_cast<int>(i)));
+    }
+  }
+
+  // repeated .tensorflow.CheckpointableObjectGraph.CheckpointableObject.SerializedTensor attributes = 2;
+  {
+    unsigned int count = static_cast<unsigned int>(this->attributes_size());
+    total_size += 1UL * count;
+    for (unsigned int i = 0; i < count; i++) {
+      total_size +=
+        ::google::protobuf::internal::WireFormatLite::MessageSize(
+          this->attributes(static_cast<int>(i)));
+    }
+  }
+
+  // repeated .tensorflow.CheckpointableObjectGraph.CheckpointableObject.SlotVariableReference slot_variables = 3;
+  {
+    unsigned int count = static_cast<unsigned int>(this->slot_variables_size());
+    total_size += 1UL * count;
+    for (unsigned int i = 0; i < count; i++) {
+      total_size +=
+        ::google::protobuf::internal::WireFormatLite::MessageSize(
+          this->slot_variables(static_cast<int>(i)));
+    }
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void CheckpointableObjectGraph_CheckpointableObject::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.CheckpointableObjectGraph.CheckpointableObject)
+  GOOGLE_DCHECK_NE(&from, this);
+  const CheckpointableObjectGraph_CheckpointableObject* source =
+      ::google::protobuf::DynamicCastToGenerated<CheckpointableObjectGraph_CheckpointableObject>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.CheckpointableObjectGraph.CheckpointableObject)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.CheckpointableObjectGraph.CheckpointableObject)
+    MergeFrom(*source);
+  }
+}
+
+void CheckpointableObjectGraph_CheckpointableObject::MergeFrom(const CheckpointableObjectGraph_CheckpointableObject& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.CheckpointableObjectGraph.CheckpointableObject)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  children_.MergeFrom(from.children_);
+  attributes_.MergeFrom(from.attributes_);
+  slot_variables_.MergeFrom(from.slot_variables_);
+}
+
+void CheckpointableObjectGraph_CheckpointableObject::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.CheckpointableObjectGraph.CheckpointableObject)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void CheckpointableObjectGraph_CheckpointableObject::CopyFrom(const CheckpointableObjectGraph_CheckpointableObject& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.CheckpointableObjectGraph.CheckpointableObject)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool CheckpointableObjectGraph_CheckpointableObject::IsInitialized() const {
+  return true;
+}
+
+void CheckpointableObjectGraph_CheckpointableObject::Swap(CheckpointableObjectGraph_CheckpointableObject* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    CheckpointableObjectGraph_CheckpointableObject* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void CheckpointableObjectGraph_CheckpointableObject::UnsafeArenaSwap(CheckpointableObjectGraph_CheckpointableObject* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void CheckpointableObjectGraph_CheckpointableObject::InternalSwap(CheckpointableObjectGraph_CheckpointableObject* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  CastToBase(&children_)->InternalSwap(CastToBase(&other->children_));
+  CastToBase(&attributes_)->InternalSwap(CastToBase(&other->attributes_));
+  CastToBase(&slot_variables_)->InternalSwap(CastToBase(&other->slot_variables_));
+}
+
+::google::protobuf::Metadata CheckpointableObjectGraph_CheckpointableObject::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2fcheckpointable_5fobject_5fgraph_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fprotobuf_2fcheckpointable_5fobject_5fgraph_2eproto[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+void CheckpointableObjectGraph::InitAsDefaultInstance() {
+}
+class CheckpointableObjectGraph::HasBitSetters {
+ public:
+};
+
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int CheckpointableObjectGraph::kNodesFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+CheckpointableObjectGraph::CheckpointableObjectGraph()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.CheckpointableObjectGraph)
+}
+CheckpointableObjectGraph::CheckpointableObjectGraph(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena),
+  nodes_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.CheckpointableObjectGraph)
+}
+CheckpointableObjectGraph::CheckpointableObjectGraph(const CheckpointableObjectGraph& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL),
+      nodes_(from.nodes_) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  // @@protoc_insertion_point(copy_constructor:tensorflow.CheckpointableObjectGraph)
+}
+
+void CheckpointableObjectGraph::SharedCtor() {
+  ::google::protobuf::internal::InitSCC(
+      &scc_info_CheckpointableObjectGraph_tensorflow_2fcore_2fprotobuf_2fcheckpointable_5fobject_5fgraph_2eproto.base);
+}
+
+CheckpointableObjectGraph::~CheckpointableObjectGraph() {
+  // @@protoc_insertion_point(destructor:tensorflow.CheckpointableObjectGraph)
+  SharedDtor();
+}
+
+void CheckpointableObjectGraph::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+}
+
+void CheckpointableObjectGraph::ArenaDtor(void* object) {
+  CheckpointableObjectGraph* _this = reinterpret_cast< CheckpointableObjectGraph* >(object);
+  (void)_this;
+}
+void CheckpointableObjectGraph::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void CheckpointableObjectGraph::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const CheckpointableObjectGraph& CheckpointableObjectGraph::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_CheckpointableObjectGraph_tensorflow_2fcore_2fprotobuf_2fcheckpointable_5fobject_5fgraph_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void CheckpointableObjectGraph::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.CheckpointableObjectGraph)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  nodes_.Clear();
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* CheckpointableObjectGraph::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<CheckpointableObjectGraph*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // repeated .tensorflow.CheckpointableObjectGraph.CheckpointableObject nodes = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 10) goto handle_unusual;
+        do {
+          ptr = Varint::Parse32Inline(ptr, &size);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          parser_till_end = ::tensorflow::CheckpointableObjectGraph_CheckpointableObject::_InternalParse;
+          object = msg->add_nodes();
+          if (size > end - ptr) goto len_delim_till_end;
+          auto newend = ptr + size;
+          bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                         ptr, newend);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          ptr = newend;
+          if (ptr >= end) break;
+        } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 10 && (ptr += 1));
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool CheckpointableObjectGraph::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.CheckpointableObjectGraph)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // repeated .tensorflow.CheckpointableObjectGraph.CheckpointableObject nodes = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (10 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+                input, add_nodes()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.CheckpointableObjectGraph)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.CheckpointableObjectGraph)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void CheckpointableObjectGraph::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.CheckpointableObjectGraph)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // repeated .tensorflow.CheckpointableObjectGraph.CheckpointableObject nodes = 1;
+  for (unsigned int i = 0,
+      n = static_cast<unsigned int>(this->nodes_size()); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      1,
+      this->nodes(static_cast<int>(i)),
+      output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.CheckpointableObjectGraph)
+}
+
+::google::protobuf::uint8* CheckpointableObjectGraph::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.CheckpointableObjectGraph)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // repeated .tensorflow.CheckpointableObjectGraph.CheckpointableObject nodes = 1;
+  for (unsigned int i = 0,
+      n = static_cast<unsigned int>(this->nodes_size()); i < n; i++) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        1, this->nodes(static_cast<int>(i)), deterministic, target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.CheckpointableObjectGraph)
+  return target;
+}
+
+size_t CheckpointableObjectGraph::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.CheckpointableObjectGraph)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // repeated .tensorflow.CheckpointableObjectGraph.CheckpointableObject nodes = 1;
+  {
+    unsigned int count = static_cast<unsigned int>(this->nodes_size());
+    total_size += 1UL * count;
+    for (unsigned int i = 0; i < count; i++) {
+      total_size +=
+        ::google::protobuf::internal::WireFormatLite::MessageSize(
+          this->nodes(static_cast<int>(i)));
+    }
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void CheckpointableObjectGraph::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.CheckpointableObjectGraph)
+  GOOGLE_DCHECK_NE(&from, this);
+  const CheckpointableObjectGraph* source =
+      ::google::protobuf::DynamicCastToGenerated<CheckpointableObjectGraph>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.CheckpointableObjectGraph)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.CheckpointableObjectGraph)
+    MergeFrom(*source);
+  }
+}
+
+void CheckpointableObjectGraph::MergeFrom(const CheckpointableObjectGraph& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.CheckpointableObjectGraph)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  nodes_.MergeFrom(from.nodes_);
+}
+
+void CheckpointableObjectGraph::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.CheckpointableObjectGraph)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void CheckpointableObjectGraph::CopyFrom(const CheckpointableObjectGraph& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.CheckpointableObjectGraph)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool CheckpointableObjectGraph::IsInitialized() const {
+  return true;
+}
+
+void CheckpointableObjectGraph::Swap(CheckpointableObjectGraph* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    CheckpointableObjectGraph* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void CheckpointableObjectGraph::UnsafeArenaSwap(CheckpointableObjectGraph* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void CheckpointableObjectGraph::InternalSwap(CheckpointableObjectGraph* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  CastToBase(&nodes_)->InternalSwap(CastToBase(&other->nodes_));
+}
+
+::google::protobuf::Metadata CheckpointableObjectGraph::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2fcheckpointable_5fobject_5fgraph_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fprotobuf_2fcheckpointable_5fobject_5fgraph_2eproto[kIndexInFileMessages];
+}
+
+
+// @@protoc_insertion_point(namespace_scope)
+}  // namespace tensorflow
+namespace google {
+namespace protobuf {
+template<> PROTOBUF_NOINLINE ::tensorflow::CheckpointableObjectGraph_CheckpointableObject_ObjectReference* Arena::CreateMaybeMessage< ::tensorflow::CheckpointableObjectGraph_CheckpointableObject_ObjectReference >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::CheckpointableObjectGraph_CheckpointableObject_ObjectReference >(arena);
+}
+template<> PROTOBUF_NOINLINE ::tensorflow::CheckpointableObjectGraph_CheckpointableObject_SerializedTensor* Arena::CreateMaybeMessage< ::tensorflow::CheckpointableObjectGraph_CheckpointableObject_SerializedTensor >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::CheckpointableObjectGraph_CheckpointableObject_SerializedTensor >(arena);
+}
+template<> PROTOBUF_NOINLINE ::tensorflow::CheckpointableObjectGraph_CheckpointableObject_SlotVariableReference* Arena::CreateMaybeMessage< ::tensorflow::CheckpointableObjectGraph_CheckpointableObject_SlotVariableReference >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::CheckpointableObjectGraph_CheckpointableObject_SlotVariableReference >(arena);
+}
+template<> PROTOBUF_NOINLINE ::tensorflow::CheckpointableObjectGraph_CheckpointableObject* Arena::CreateMaybeMessage< ::tensorflow::CheckpointableObjectGraph_CheckpointableObject >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::CheckpointableObjectGraph_CheckpointableObject >(arena);
+}
+template<> PROTOBUF_NOINLINE ::tensorflow::CheckpointableObjectGraph* Arena::CreateMaybeMessage< ::tensorflow::CheckpointableObjectGraph >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::CheckpointableObjectGraph >(arena);
+}
+}  // namespace protobuf
+}  // namespace google
+
+// @@protoc_insertion_point(global_scope)
+#include <google/protobuf/port_undef.inc>
diff --git a/tensorflow/core/protobuf/checkpointable_object_graph.pb.h b/tensorflow/core/protobuf/checkpointable_object_graph.pb.h
new file mode 100644 (file)
index 0000000..7ff5483
--- /dev/null
@@ -0,0 +1,1456 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: tensorflow/core/protobuf/checkpointable_object_graph.proto
+
+#ifndef PROTOBUF_INCLUDED_tensorflow_2fcore_2fprotobuf_2fcheckpointable_5fobject_5fgraph_2eproto
+#define PROTOBUF_INCLUDED_tensorflow_2fcore_2fprotobuf_2fcheckpointable_5fobject_5fgraph_2eproto
+
+#include <limits>
+#include <string>
+
+#include <google/protobuf/port_def.inc>
+#if PROTOBUF_VERSION < 3006001
+#error This file was generated by a newer version of protoc which is
+#error incompatible with your Protocol Buffer headers. Please update
+#error your headers.
+#endif
+#if 3006001 < PROTOBUF_MIN_PROTOC_VERSION
+#error This file was generated by an older version of protoc which is
+#error incompatible with your Protocol Buffer headers. Please
+#error regenerate this file with a newer version of protoc.
+#endif
+
+#include <google/protobuf/port_undef.inc>
+#include <google/protobuf/io/coded_stream.h>
+#include <google/protobuf/arena.h>
+#include <google/protobuf/arenastring.h>
+#include <google/protobuf/generated_message_table_driven.h>
+#include <google/protobuf/generated_message_util.h>
+#include <google/protobuf/inlined_string_field.h>
+#include <google/protobuf/metadata.h>
+#include <google/protobuf/message.h>
+#include <google/protobuf/repeated_field.h>  // IWYU pragma: export
+#include <google/protobuf/extension_set.h>  // IWYU pragma: export
+#include <google/protobuf/unknown_field_set.h>
+// @@protoc_insertion_point(includes)
+#include <google/protobuf/port_def.inc>
+#define PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fprotobuf_2fcheckpointable_5fobject_5fgraph_2eproto
+
+// Internal implementation detail -- do not use these members.
+struct TableStruct_tensorflow_2fcore_2fprotobuf_2fcheckpointable_5fobject_5fgraph_2eproto {
+  static const ::google::protobuf::internal::ParseTableField entries[]
+    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
+  static const ::google::protobuf::internal::AuxillaryParseTableField aux[]
+    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
+  static const ::google::protobuf::internal::ParseTable schema[5]
+    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
+  static const ::google::protobuf::internal::FieldMetadata field_metadata[];
+  static const ::google::protobuf::internal::SerializationTable serialization_table[];
+  static const ::google::protobuf::uint32 offsets[];
+};
+void AddDescriptors_tensorflow_2fcore_2fprotobuf_2fcheckpointable_5fobject_5fgraph_2eproto();
+namespace tensorflow {
+class CheckpointableObjectGraph;
+class CheckpointableObjectGraphDefaultTypeInternal;
+extern CheckpointableObjectGraphDefaultTypeInternal _CheckpointableObjectGraph_default_instance_;
+class CheckpointableObjectGraph_CheckpointableObject;
+class CheckpointableObjectGraph_CheckpointableObjectDefaultTypeInternal;
+extern CheckpointableObjectGraph_CheckpointableObjectDefaultTypeInternal _CheckpointableObjectGraph_CheckpointableObject_default_instance_;
+class CheckpointableObjectGraph_CheckpointableObject_ObjectReference;
+class CheckpointableObjectGraph_CheckpointableObject_ObjectReferenceDefaultTypeInternal;
+extern CheckpointableObjectGraph_CheckpointableObject_ObjectReferenceDefaultTypeInternal _CheckpointableObjectGraph_CheckpointableObject_ObjectReference_default_instance_;
+class CheckpointableObjectGraph_CheckpointableObject_SerializedTensor;
+class CheckpointableObjectGraph_CheckpointableObject_SerializedTensorDefaultTypeInternal;
+extern CheckpointableObjectGraph_CheckpointableObject_SerializedTensorDefaultTypeInternal _CheckpointableObjectGraph_CheckpointableObject_SerializedTensor_default_instance_;
+class CheckpointableObjectGraph_CheckpointableObject_SlotVariableReference;
+class CheckpointableObjectGraph_CheckpointableObject_SlotVariableReferenceDefaultTypeInternal;
+extern CheckpointableObjectGraph_CheckpointableObject_SlotVariableReferenceDefaultTypeInternal _CheckpointableObjectGraph_CheckpointableObject_SlotVariableReference_default_instance_;
+}  // namespace tensorflow
+namespace google {
+namespace protobuf {
+template<> ::tensorflow::CheckpointableObjectGraph* Arena::CreateMaybeMessage<::tensorflow::CheckpointableObjectGraph>(Arena*);
+template<> ::tensorflow::CheckpointableObjectGraph_CheckpointableObject* Arena::CreateMaybeMessage<::tensorflow::CheckpointableObjectGraph_CheckpointableObject>(Arena*);
+template<> ::tensorflow::CheckpointableObjectGraph_CheckpointableObject_ObjectReference* Arena::CreateMaybeMessage<::tensorflow::CheckpointableObjectGraph_CheckpointableObject_ObjectReference>(Arena*);
+template<> ::tensorflow::CheckpointableObjectGraph_CheckpointableObject_SerializedTensor* Arena::CreateMaybeMessage<::tensorflow::CheckpointableObjectGraph_CheckpointableObject_SerializedTensor>(Arena*);
+template<> ::tensorflow::CheckpointableObjectGraph_CheckpointableObject_SlotVariableReference* Arena::CreateMaybeMessage<::tensorflow::CheckpointableObjectGraph_CheckpointableObject_SlotVariableReference>(Arena*);
+}  // namespace protobuf
+}  // namespace google
+namespace tensorflow {
+
+// ===================================================================
+
+class CheckpointableObjectGraph_CheckpointableObject_ObjectReference : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.CheckpointableObjectGraph.CheckpointableObject.ObjectReference) */ {
+ public:
+  CheckpointableObjectGraph_CheckpointableObject_ObjectReference();
+  virtual ~CheckpointableObjectGraph_CheckpointableObject_ObjectReference();
+
+  CheckpointableObjectGraph_CheckpointableObject_ObjectReference(const CheckpointableObjectGraph_CheckpointableObject_ObjectReference& from);
+
+  inline CheckpointableObjectGraph_CheckpointableObject_ObjectReference& operator=(const CheckpointableObjectGraph_CheckpointableObject_ObjectReference& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  CheckpointableObjectGraph_CheckpointableObject_ObjectReference(CheckpointableObjectGraph_CheckpointableObject_ObjectReference&& from) noexcept
+    : CheckpointableObjectGraph_CheckpointableObject_ObjectReference() {
+    *this = ::std::move(from);
+  }
+
+  inline CheckpointableObjectGraph_CheckpointableObject_ObjectReference& operator=(CheckpointableObjectGraph_CheckpointableObject_ObjectReference&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const CheckpointableObjectGraph_CheckpointableObject_ObjectReference& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const CheckpointableObjectGraph_CheckpointableObject_ObjectReference* internal_default_instance() {
+    return reinterpret_cast<const CheckpointableObjectGraph_CheckpointableObject_ObjectReference*>(
+               &_CheckpointableObjectGraph_CheckpointableObject_ObjectReference_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    0;
+
+  void UnsafeArenaSwap(CheckpointableObjectGraph_CheckpointableObject_ObjectReference* other);
+  void Swap(CheckpointableObjectGraph_CheckpointableObject_ObjectReference* other);
+  friend void swap(CheckpointableObjectGraph_CheckpointableObject_ObjectReference& a, CheckpointableObjectGraph_CheckpointableObject_ObjectReference& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline CheckpointableObjectGraph_CheckpointableObject_ObjectReference* New() const final {
+    return CreateMaybeMessage<CheckpointableObjectGraph_CheckpointableObject_ObjectReference>(NULL);
+  }
+
+  CheckpointableObjectGraph_CheckpointableObject_ObjectReference* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<CheckpointableObjectGraph_CheckpointableObject_ObjectReference>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const CheckpointableObjectGraph_CheckpointableObject_ObjectReference& from);
+  void MergeFrom(const CheckpointableObjectGraph_CheckpointableObject_ObjectReference& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(CheckpointableObjectGraph_CheckpointableObject_ObjectReference* other);
+  protected:
+  explicit CheckpointableObjectGraph_CheckpointableObject_ObjectReference(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // string local_name = 2;
+  void clear_local_name();
+  static const int kLocalNameFieldNumber = 2;
+  const ::std::string& local_name() const;
+  void set_local_name(const ::std::string& value);
+  #if LANG_CXX11
+  void set_local_name(::std::string&& value);
+  #endif
+  void set_local_name(const char* value);
+  void set_local_name(const char* value, size_t size);
+  ::std::string* mutable_local_name();
+  ::std::string* release_local_name();
+  void set_allocated_local_name(::std::string* local_name);
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  ::std::string* unsafe_arena_release_local_name();
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  void unsafe_arena_set_allocated_local_name(
+      ::std::string* local_name);
+
+  // int32 node_id = 1;
+  void clear_node_id();
+  static const int kNodeIdFieldNumber = 1;
+  ::google::protobuf::int32 node_id() const;
+  void set_node_id(::google::protobuf::int32 value);
+
+  // @@protoc_insertion_point(class_scope:tensorflow.CheckpointableObjectGraph.CheckpointableObject.ObjectReference)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  ::google::protobuf::internal::ArenaStringPtr local_name_;
+  ::google::protobuf::int32 node_id_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fprotobuf_2fcheckpointable_5fobject_5fgraph_2eproto;
+};
+// -------------------------------------------------------------------
+
+class CheckpointableObjectGraph_CheckpointableObject_SerializedTensor : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.CheckpointableObjectGraph.CheckpointableObject.SerializedTensor) */ {
+ public:
+  CheckpointableObjectGraph_CheckpointableObject_SerializedTensor();
+  virtual ~CheckpointableObjectGraph_CheckpointableObject_SerializedTensor();
+
+  CheckpointableObjectGraph_CheckpointableObject_SerializedTensor(const CheckpointableObjectGraph_CheckpointableObject_SerializedTensor& from);
+
+  inline CheckpointableObjectGraph_CheckpointableObject_SerializedTensor& operator=(const CheckpointableObjectGraph_CheckpointableObject_SerializedTensor& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  CheckpointableObjectGraph_CheckpointableObject_SerializedTensor(CheckpointableObjectGraph_CheckpointableObject_SerializedTensor&& from) noexcept
+    : CheckpointableObjectGraph_CheckpointableObject_SerializedTensor() {
+    *this = ::std::move(from);
+  }
+
+  inline CheckpointableObjectGraph_CheckpointableObject_SerializedTensor& operator=(CheckpointableObjectGraph_CheckpointableObject_SerializedTensor&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const CheckpointableObjectGraph_CheckpointableObject_SerializedTensor& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const CheckpointableObjectGraph_CheckpointableObject_SerializedTensor* internal_default_instance() {
+    return reinterpret_cast<const CheckpointableObjectGraph_CheckpointableObject_SerializedTensor*>(
+               &_CheckpointableObjectGraph_CheckpointableObject_SerializedTensor_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    1;
+
+  void UnsafeArenaSwap(CheckpointableObjectGraph_CheckpointableObject_SerializedTensor* other);
+  void Swap(CheckpointableObjectGraph_CheckpointableObject_SerializedTensor* other);
+  friend void swap(CheckpointableObjectGraph_CheckpointableObject_SerializedTensor& a, CheckpointableObjectGraph_CheckpointableObject_SerializedTensor& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline CheckpointableObjectGraph_CheckpointableObject_SerializedTensor* New() const final {
+    return CreateMaybeMessage<CheckpointableObjectGraph_CheckpointableObject_SerializedTensor>(NULL);
+  }
+
+  CheckpointableObjectGraph_CheckpointableObject_SerializedTensor* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<CheckpointableObjectGraph_CheckpointableObject_SerializedTensor>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const CheckpointableObjectGraph_CheckpointableObject_SerializedTensor& from);
+  void MergeFrom(const CheckpointableObjectGraph_CheckpointableObject_SerializedTensor& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(CheckpointableObjectGraph_CheckpointableObject_SerializedTensor* other);
+  protected:
+  explicit CheckpointableObjectGraph_CheckpointableObject_SerializedTensor(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // string name = 1;
+  void clear_name();
+  static const int kNameFieldNumber = 1;
+  const ::std::string& name() const;
+  void set_name(const ::std::string& value);
+  #if LANG_CXX11
+  void set_name(::std::string&& value);
+  #endif
+  void set_name(const char* value);
+  void set_name(const char* value, size_t size);
+  ::std::string* mutable_name();
+  ::std::string* release_name();
+  void set_allocated_name(::std::string* name);
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  ::std::string* unsafe_arena_release_name();
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  void unsafe_arena_set_allocated_name(
+      ::std::string* name);
+
+  // string full_name = 2;
+  void clear_full_name();
+  static const int kFullNameFieldNumber = 2;
+  const ::std::string& full_name() const;
+  void set_full_name(const ::std::string& value);
+  #if LANG_CXX11
+  void set_full_name(::std::string&& value);
+  #endif
+  void set_full_name(const char* value);
+  void set_full_name(const char* value, size_t size);
+  ::std::string* mutable_full_name();
+  ::std::string* release_full_name();
+  void set_allocated_full_name(::std::string* full_name);
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  ::std::string* unsafe_arena_release_full_name();
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  void unsafe_arena_set_allocated_full_name(
+      ::std::string* full_name);
+
+  // string checkpoint_key = 3;
+  void clear_checkpoint_key();
+  static const int kCheckpointKeyFieldNumber = 3;
+  const ::std::string& checkpoint_key() const;
+  void set_checkpoint_key(const ::std::string& value);
+  #if LANG_CXX11
+  void set_checkpoint_key(::std::string&& value);
+  #endif
+  void set_checkpoint_key(const char* value);
+  void set_checkpoint_key(const char* value, size_t size);
+  ::std::string* mutable_checkpoint_key();
+  ::std::string* release_checkpoint_key();
+  void set_allocated_checkpoint_key(::std::string* checkpoint_key);
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  ::std::string* unsafe_arena_release_checkpoint_key();
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  void unsafe_arena_set_allocated_checkpoint_key(
+      ::std::string* checkpoint_key);
+
+  // @@protoc_insertion_point(class_scope:tensorflow.CheckpointableObjectGraph.CheckpointableObject.SerializedTensor)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  ::google::protobuf::internal::ArenaStringPtr name_;
+  ::google::protobuf::internal::ArenaStringPtr full_name_;
+  ::google::protobuf::internal::ArenaStringPtr checkpoint_key_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fprotobuf_2fcheckpointable_5fobject_5fgraph_2eproto;
+};
+// -------------------------------------------------------------------
+
+class CheckpointableObjectGraph_CheckpointableObject_SlotVariableReference : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.CheckpointableObjectGraph.CheckpointableObject.SlotVariableReference) */ {
+ public:
+  CheckpointableObjectGraph_CheckpointableObject_SlotVariableReference();
+  virtual ~CheckpointableObjectGraph_CheckpointableObject_SlotVariableReference();
+
+  CheckpointableObjectGraph_CheckpointableObject_SlotVariableReference(const CheckpointableObjectGraph_CheckpointableObject_SlotVariableReference& from);
+
+  inline CheckpointableObjectGraph_CheckpointableObject_SlotVariableReference& operator=(const CheckpointableObjectGraph_CheckpointableObject_SlotVariableReference& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  CheckpointableObjectGraph_CheckpointableObject_SlotVariableReference(CheckpointableObjectGraph_CheckpointableObject_SlotVariableReference&& from) noexcept
+    : CheckpointableObjectGraph_CheckpointableObject_SlotVariableReference() {
+    *this = ::std::move(from);
+  }
+
+  inline CheckpointableObjectGraph_CheckpointableObject_SlotVariableReference& operator=(CheckpointableObjectGraph_CheckpointableObject_SlotVariableReference&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const CheckpointableObjectGraph_CheckpointableObject_SlotVariableReference& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const CheckpointableObjectGraph_CheckpointableObject_SlotVariableReference* internal_default_instance() {
+    return reinterpret_cast<const CheckpointableObjectGraph_CheckpointableObject_SlotVariableReference*>(
+               &_CheckpointableObjectGraph_CheckpointableObject_SlotVariableReference_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    2;
+
+  void UnsafeArenaSwap(CheckpointableObjectGraph_CheckpointableObject_SlotVariableReference* other);
+  void Swap(CheckpointableObjectGraph_CheckpointableObject_SlotVariableReference* other);
+  friend void swap(CheckpointableObjectGraph_CheckpointableObject_SlotVariableReference& a, CheckpointableObjectGraph_CheckpointableObject_SlotVariableReference& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline CheckpointableObjectGraph_CheckpointableObject_SlotVariableReference* New() const final {
+    return CreateMaybeMessage<CheckpointableObjectGraph_CheckpointableObject_SlotVariableReference>(NULL);
+  }
+
+  CheckpointableObjectGraph_CheckpointableObject_SlotVariableReference* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<CheckpointableObjectGraph_CheckpointableObject_SlotVariableReference>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const CheckpointableObjectGraph_CheckpointableObject_SlotVariableReference& from);
+  void MergeFrom(const CheckpointableObjectGraph_CheckpointableObject_SlotVariableReference& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(CheckpointableObjectGraph_CheckpointableObject_SlotVariableReference* other);
+  protected:
+  explicit CheckpointableObjectGraph_CheckpointableObject_SlotVariableReference(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // string slot_name = 2;
+  void clear_slot_name();
+  static const int kSlotNameFieldNumber = 2;
+  const ::std::string& slot_name() const;
+  void set_slot_name(const ::std::string& value);
+  #if LANG_CXX11
+  void set_slot_name(::std::string&& value);
+  #endif
+  void set_slot_name(const char* value);
+  void set_slot_name(const char* value, size_t size);
+  ::std::string* mutable_slot_name();
+  ::std::string* release_slot_name();
+  void set_allocated_slot_name(::std::string* slot_name);
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  ::std::string* unsafe_arena_release_slot_name();
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  void unsafe_arena_set_allocated_slot_name(
+      ::std::string* slot_name);
+
+  // int32 original_variable_node_id = 1;
+  void clear_original_variable_node_id();
+  static const int kOriginalVariableNodeIdFieldNumber = 1;
+  ::google::protobuf::int32 original_variable_node_id() const;
+  void set_original_variable_node_id(::google::protobuf::int32 value);
+
+  // int32 slot_variable_node_id = 3;
+  void clear_slot_variable_node_id();
+  static const int kSlotVariableNodeIdFieldNumber = 3;
+  ::google::protobuf::int32 slot_variable_node_id() const;
+  void set_slot_variable_node_id(::google::protobuf::int32 value);
+
+  // @@protoc_insertion_point(class_scope:tensorflow.CheckpointableObjectGraph.CheckpointableObject.SlotVariableReference)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  ::google::protobuf::internal::ArenaStringPtr slot_name_;
+  ::google::protobuf::int32 original_variable_node_id_;
+  ::google::protobuf::int32 slot_variable_node_id_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fprotobuf_2fcheckpointable_5fobject_5fgraph_2eproto;
+};
+// -------------------------------------------------------------------
+
+class CheckpointableObjectGraph_CheckpointableObject : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.CheckpointableObjectGraph.CheckpointableObject) */ {
+ public:
+  CheckpointableObjectGraph_CheckpointableObject();
+  virtual ~CheckpointableObjectGraph_CheckpointableObject();
+
+  CheckpointableObjectGraph_CheckpointableObject(const CheckpointableObjectGraph_CheckpointableObject& from);
+
+  inline CheckpointableObjectGraph_CheckpointableObject& operator=(const CheckpointableObjectGraph_CheckpointableObject& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  CheckpointableObjectGraph_CheckpointableObject(CheckpointableObjectGraph_CheckpointableObject&& from) noexcept
+    : CheckpointableObjectGraph_CheckpointableObject() {
+    *this = ::std::move(from);
+  }
+
+  inline CheckpointableObjectGraph_CheckpointableObject& operator=(CheckpointableObjectGraph_CheckpointableObject&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const CheckpointableObjectGraph_CheckpointableObject& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const CheckpointableObjectGraph_CheckpointableObject* internal_default_instance() {
+    return reinterpret_cast<const CheckpointableObjectGraph_CheckpointableObject*>(
+               &_CheckpointableObjectGraph_CheckpointableObject_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    3;
+
+  void UnsafeArenaSwap(CheckpointableObjectGraph_CheckpointableObject* other);
+  void Swap(CheckpointableObjectGraph_CheckpointableObject* other);
+  friend void swap(CheckpointableObjectGraph_CheckpointableObject& a, CheckpointableObjectGraph_CheckpointableObject& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline CheckpointableObjectGraph_CheckpointableObject* New() const final {
+    return CreateMaybeMessage<CheckpointableObjectGraph_CheckpointableObject>(NULL);
+  }
+
+  CheckpointableObjectGraph_CheckpointableObject* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<CheckpointableObjectGraph_CheckpointableObject>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const CheckpointableObjectGraph_CheckpointableObject& from);
+  void MergeFrom(const CheckpointableObjectGraph_CheckpointableObject& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(CheckpointableObjectGraph_CheckpointableObject* other);
+  protected:
+  explicit CheckpointableObjectGraph_CheckpointableObject(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  typedef CheckpointableObjectGraph_CheckpointableObject_ObjectReference ObjectReference;
+  typedef CheckpointableObjectGraph_CheckpointableObject_SerializedTensor SerializedTensor;
+  typedef CheckpointableObjectGraph_CheckpointableObject_SlotVariableReference SlotVariableReference;
+
+  // accessors -------------------------------------------------------
+
+  // repeated .tensorflow.CheckpointableObjectGraph.CheckpointableObject.ObjectReference children = 1;
+  int children_size() const;
+  void clear_children();
+  static const int kChildrenFieldNumber = 1;
+  ::tensorflow::CheckpointableObjectGraph_CheckpointableObject_ObjectReference* mutable_children(int index);
+  ::google::protobuf::RepeatedPtrField< ::tensorflow::CheckpointableObjectGraph_CheckpointableObject_ObjectReference >*
+      mutable_children();
+  const ::tensorflow::CheckpointableObjectGraph_CheckpointableObject_ObjectReference& children(int index) const;
+  ::tensorflow::CheckpointableObjectGraph_CheckpointableObject_ObjectReference* add_children();
+  const ::google::protobuf::RepeatedPtrField< ::tensorflow::CheckpointableObjectGraph_CheckpointableObject_ObjectReference >&
+      children() const;
+
+  // repeated .tensorflow.CheckpointableObjectGraph.CheckpointableObject.SerializedTensor attributes = 2;
+  int attributes_size() const;
+  void clear_attributes();
+  static const int kAttributesFieldNumber = 2;
+  ::tensorflow::CheckpointableObjectGraph_CheckpointableObject_SerializedTensor* mutable_attributes(int index);
+  ::google::protobuf::RepeatedPtrField< ::tensorflow::CheckpointableObjectGraph_CheckpointableObject_SerializedTensor >*
+      mutable_attributes();
+  const ::tensorflow::CheckpointableObjectGraph_CheckpointableObject_SerializedTensor& attributes(int index) const;
+  ::tensorflow::CheckpointableObjectGraph_CheckpointableObject_SerializedTensor* add_attributes();
+  const ::google::protobuf::RepeatedPtrField< ::tensorflow::CheckpointableObjectGraph_CheckpointableObject_SerializedTensor >&
+      attributes() const;
+
+  // repeated .tensorflow.CheckpointableObjectGraph.CheckpointableObject.SlotVariableReference slot_variables = 3;
+  int slot_variables_size() const;
+  void clear_slot_variables();
+  static const int kSlotVariablesFieldNumber = 3;
+  ::tensorflow::CheckpointableObjectGraph_CheckpointableObject_SlotVariableReference* mutable_slot_variables(int index);
+  ::google::protobuf::RepeatedPtrField< ::tensorflow::CheckpointableObjectGraph_CheckpointableObject_SlotVariableReference >*
+      mutable_slot_variables();
+  const ::tensorflow::CheckpointableObjectGraph_CheckpointableObject_SlotVariableReference& slot_variables(int index) const;
+  ::tensorflow::CheckpointableObjectGraph_CheckpointableObject_SlotVariableReference* add_slot_variables();
+  const ::google::protobuf::RepeatedPtrField< ::tensorflow::CheckpointableObjectGraph_CheckpointableObject_SlotVariableReference >&
+      slot_variables() const;
+
+  // @@protoc_insertion_point(class_scope:tensorflow.CheckpointableObjectGraph.CheckpointableObject)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  ::google::protobuf::RepeatedPtrField< ::tensorflow::CheckpointableObjectGraph_CheckpointableObject_ObjectReference > children_;
+  ::google::protobuf::RepeatedPtrField< ::tensorflow::CheckpointableObjectGraph_CheckpointableObject_SerializedTensor > attributes_;
+  ::google::protobuf::RepeatedPtrField< ::tensorflow::CheckpointableObjectGraph_CheckpointableObject_SlotVariableReference > slot_variables_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fprotobuf_2fcheckpointable_5fobject_5fgraph_2eproto;
+};
+// -------------------------------------------------------------------
+
+class CheckpointableObjectGraph : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.CheckpointableObjectGraph) */ {
+ public:
+  CheckpointableObjectGraph();
+  virtual ~CheckpointableObjectGraph();
+
+  CheckpointableObjectGraph(const CheckpointableObjectGraph& from);
+
+  inline CheckpointableObjectGraph& operator=(const CheckpointableObjectGraph& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  CheckpointableObjectGraph(CheckpointableObjectGraph&& from) noexcept
+    : CheckpointableObjectGraph() {
+    *this = ::std::move(from);
+  }
+
+  inline CheckpointableObjectGraph& operator=(CheckpointableObjectGraph&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const CheckpointableObjectGraph& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const CheckpointableObjectGraph* internal_default_instance() {
+    return reinterpret_cast<const CheckpointableObjectGraph*>(
+               &_CheckpointableObjectGraph_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    4;
+
+  void UnsafeArenaSwap(CheckpointableObjectGraph* other);
+  void Swap(CheckpointableObjectGraph* other);
+  friend void swap(CheckpointableObjectGraph& a, CheckpointableObjectGraph& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline CheckpointableObjectGraph* New() const final {
+    return CreateMaybeMessage<CheckpointableObjectGraph>(NULL);
+  }
+
+  CheckpointableObjectGraph* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<CheckpointableObjectGraph>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const CheckpointableObjectGraph& from);
+  void MergeFrom(const CheckpointableObjectGraph& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(CheckpointableObjectGraph* other);
+  protected:
+  explicit CheckpointableObjectGraph(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  typedef CheckpointableObjectGraph_CheckpointableObject CheckpointableObject;
+
+  // accessors -------------------------------------------------------
+
+  // repeated .tensorflow.CheckpointableObjectGraph.CheckpointableObject nodes = 1;
+  int nodes_size() const;
+  void clear_nodes();
+  static const int kNodesFieldNumber = 1;
+  ::tensorflow::CheckpointableObjectGraph_CheckpointableObject* mutable_nodes(int index);
+  ::google::protobuf::RepeatedPtrField< ::tensorflow::CheckpointableObjectGraph_CheckpointableObject >*
+      mutable_nodes();
+  const ::tensorflow::CheckpointableObjectGraph_CheckpointableObject& nodes(int index) const;
+  ::tensorflow::CheckpointableObjectGraph_CheckpointableObject* add_nodes();
+  const ::google::protobuf::RepeatedPtrField< ::tensorflow::CheckpointableObjectGraph_CheckpointableObject >&
+      nodes() const;
+
+  // @@protoc_insertion_point(class_scope:tensorflow.CheckpointableObjectGraph)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  ::google::protobuf::RepeatedPtrField< ::tensorflow::CheckpointableObjectGraph_CheckpointableObject > nodes_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fprotobuf_2fcheckpointable_5fobject_5fgraph_2eproto;
+};
+// ===================================================================
+
+
+// ===================================================================
+
+#ifdef __GNUC__
+  #pragma GCC diagnostic push
+  #pragma GCC diagnostic ignored "-Wstrict-aliasing"
+#endif  // __GNUC__
+// CheckpointableObjectGraph_CheckpointableObject_ObjectReference
+
+// int32 node_id = 1;
+inline void CheckpointableObjectGraph_CheckpointableObject_ObjectReference::clear_node_id() {
+  node_id_ = 0;
+}
+inline ::google::protobuf::int32 CheckpointableObjectGraph_CheckpointableObject_ObjectReference::node_id() const {
+  // @@protoc_insertion_point(field_get:tensorflow.CheckpointableObjectGraph.CheckpointableObject.ObjectReference.node_id)
+  return node_id_;
+}
+inline void CheckpointableObjectGraph_CheckpointableObject_ObjectReference::set_node_id(::google::protobuf::int32 value) {
+  
+  node_id_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.CheckpointableObjectGraph.CheckpointableObject.ObjectReference.node_id)
+}
+
+// string local_name = 2;
+inline void CheckpointableObjectGraph_CheckpointableObject_ObjectReference::clear_local_name() {
+  local_name_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline const ::std::string& CheckpointableObjectGraph_CheckpointableObject_ObjectReference::local_name() const {
+  // @@protoc_insertion_point(field_get:tensorflow.CheckpointableObjectGraph.CheckpointableObject.ObjectReference.local_name)
+  return local_name_.Get();
+}
+inline void CheckpointableObjectGraph_CheckpointableObject_ObjectReference::set_local_name(const ::std::string& value) {
+  
+  local_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set:tensorflow.CheckpointableObjectGraph.CheckpointableObject.ObjectReference.local_name)
+}
+#if LANG_CXX11
+inline void CheckpointableObjectGraph_CheckpointableObject_ObjectReference::set_local_name(::std::string&& value) {
+  
+  local_name_.Set(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.CheckpointableObjectGraph.CheckpointableObject.ObjectReference.local_name)
+}
+#endif
+inline void CheckpointableObjectGraph_CheckpointableObject_ObjectReference::set_local_name(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  local_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
+              GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_char:tensorflow.CheckpointableObjectGraph.CheckpointableObject.ObjectReference.local_name)
+}
+inline void CheckpointableObjectGraph_CheckpointableObject_ObjectReference::set_local_name(const char* value,
+    size_t size) {
+  
+  local_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
+      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.CheckpointableObjectGraph.CheckpointableObject.ObjectReference.local_name)
+}
+inline ::std::string* CheckpointableObjectGraph_CheckpointableObject_ObjectReference::mutable_local_name() {
+  
+  // @@protoc_insertion_point(field_mutable:tensorflow.CheckpointableObjectGraph.CheckpointableObject.ObjectReference.local_name)
+  return local_name_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline ::std::string* CheckpointableObjectGraph_CheckpointableObject_ObjectReference::release_local_name() {
+  // @@protoc_insertion_point(field_release:tensorflow.CheckpointableObjectGraph.CheckpointableObject.ObjectReference.local_name)
+  
+  return local_name_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline void CheckpointableObjectGraph_CheckpointableObject_ObjectReference::set_allocated_local_name(::std::string* local_name) {
+  if (local_name != NULL) {
+    
+  } else {
+    
+  }
+  local_name_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), local_name,
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.CheckpointableObjectGraph.CheckpointableObject.ObjectReference.local_name)
+}
+inline ::std::string* CheckpointableObjectGraph_CheckpointableObject_ObjectReference::unsafe_arena_release_local_name() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.CheckpointableObjectGraph.CheckpointableObject.ObjectReference.local_name)
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  
+  return local_name_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      GetArenaNoVirtual());
+}
+inline void CheckpointableObjectGraph_CheckpointableObject_ObjectReference::unsafe_arena_set_allocated_local_name(
+    ::std::string* local_name) {
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (local_name != NULL) {
+    
+  } else {
+    
+  }
+  local_name_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      local_name, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.CheckpointableObjectGraph.CheckpointableObject.ObjectReference.local_name)
+}
+
+// -------------------------------------------------------------------
+
+// CheckpointableObjectGraph_CheckpointableObject_SerializedTensor
+
+// string name = 1;
+inline void CheckpointableObjectGraph_CheckpointableObject_SerializedTensor::clear_name() {
+  name_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline const ::std::string& CheckpointableObjectGraph_CheckpointableObject_SerializedTensor::name() const {
+  // @@protoc_insertion_point(field_get:tensorflow.CheckpointableObjectGraph.CheckpointableObject.SerializedTensor.name)
+  return name_.Get();
+}
+inline void CheckpointableObjectGraph_CheckpointableObject_SerializedTensor::set_name(const ::std::string& value) {
+  
+  name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set:tensorflow.CheckpointableObjectGraph.CheckpointableObject.SerializedTensor.name)
+}
+#if LANG_CXX11
+inline void CheckpointableObjectGraph_CheckpointableObject_SerializedTensor::set_name(::std::string&& value) {
+  
+  name_.Set(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.CheckpointableObjectGraph.CheckpointableObject.SerializedTensor.name)
+}
+#endif
+inline void CheckpointableObjectGraph_CheckpointableObject_SerializedTensor::set_name(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
+              GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_char:tensorflow.CheckpointableObjectGraph.CheckpointableObject.SerializedTensor.name)
+}
+inline void CheckpointableObjectGraph_CheckpointableObject_SerializedTensor::set_name(const char* value,
+    size_t size) {
+  
+  name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
+      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.CheckpointableObjectGraph.CheckpointableObject.SerializedTensor.name)
+}
+inline ::std::string* CheckpointableObjectGraph_CheckpointableObject_SerializedTensor::mutable_name() {
+  
+  // @@protoc_insertion_point(field_mutable:tensorflow.CheckpointableObjectGraph.CheckpointableObject.SerializedTensor.name)
+  return name_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline ::std::string* CheckpointableObjectGraph_CheckpointableObject_SerializedTensor::release_name() {
+  // @@protoc_insertion_point(field_release:tensorflow.CheckpointableObjectGraph.CheckpointableObject.SerializedTensor.name)
+  
+  return name_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline void CheckpointableObjectGraph_CheckpointableObject_SerializedTensor::set_allocated_name(::std::string* name) {
+  if (name != NULL) {
+    
+  } else {
+    
+  }
+  name_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), name,
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.CheckpointableObjectGraph.CheckpointableObject.SerializedTensor.name)
+}
+inline ::std::string* CheckpointableObjectGraph_CheckpointableObject_SerializedTensor::unsafe_arena_release_name() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.CheckpointableObjectGraph.CheckpointableObject.SerializedTensor.name)
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  
+  return name_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      GetArenaNoVirtual());
+}
+inline void CheckpointableObjectGraph_CheckpointableObject_SerializedTensor::unsafe_arena_set_allocated_name(
+    ::std::string* name) {
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (name != NULL) {
+    
+  } else {
+    
+  }
+  name_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      name, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.CheckpointableObjectGraph.CheckpointableObject.SerializedTensor.name)
+}
+
+// string full_name = 2;
+inline void CheckpointableObjectGraph_CheckpointableObject_SerializedTensor::clear_full_name() {
+  full_name_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline const ::std::string& CheckpointableObjectGraph_CheckpointableObject_SerializedTensor::full_name() const {
+  // @@protoc_insertion_point(field_get:tensorflow.CheckpointableObjectGraph.CheckpointableObject.SerializedTensor.full_name)
+  return full_name_.Get();
+}
+inline void CheckpointableObjectGraph_CheckpointableObject_SerializedTensor::set_full_name(const ::std::string& value) {
+  
+  full_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set:tensorflow.CheckpointableObjectGraph.CheckpointableObject.SerializedTensor.full_name)
+}
+#if LANG_CXX11
+inline void CheckpointableObjectGraph_CheckpointableObject_SerializedTensor::set_full_name(::std::string&& value) {
+  
+  full_name_.Set(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.CheckpointableObjectGraph.CheckpointableObject.SerializedTensor.full_name)
+}
+#endif
+inline void CheckpointableObjectGraph_CheckpointableObject_SerializedTensor::set_full_name(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  full_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
+              GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_char:tensorflow.CheckpointableObjectGraph.CheckpointableObject.SerializedTensor.full_name)
+}
+inline void CheckpointableObjectGraph_CheckpointableObject_SerializedTensor::set_full_name(const char* value,
+    size_t size) {
+  
+  full_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
+      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.CheckpointableObjectGraph.CheckpointableObject.SerializedTensor.full_name)
+}
+inline ::std::string* CheckpointableObjectGraph_CheckpointableObject_SerializedTensor::mutable_full_name() {
+  
+  // @@protoc_insertion_point(field_mutable:tensorflow.CheckpointableObjectGraph.CheckpointableObject.SerializedTensor.full_name)
+  return full_name_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline ::std::string* CheckpointableObjectGraph_CheckpointableObject_SerializedTensor::release_full_name() {
+  // @@protoc_insertion_point(field_release:tensorflow.CheckpointableObjectGraph.CheckpointableObject.SerializedTensor.full_name)
+  
+  return full_name_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline void CheckpointableObjectGraph_CheckpointableObject_SerializedTensor::set_allocated_full_name(::std::string* full_name) {
+  if (full_name != NULL) {
+    
+  } else {
+    
+  }
+  full_name_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), full_name,
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.CheckpointableObjectGraph.CheckpointableObject.SerializedTensor.full_name)
+}
+inline ::std::string* CheckpointableObjectGraph_CheckpointableObject_SerializedTensor::unsafe_arena_release_full_name() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.CheckpointableObjectGraph.CheckpointableObject.SerializedTensor.full_name)
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  
+  return full_name_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      GetArenaNoVirtual());
+}
+inline void CheckpointableObjectGraph_CheckpointableObject_SerializedTensor::unsafe_arena_set_allocated_full_name(
+    ::std::string* full_name) {
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (full_name != NULL) {
+    
+  } else {
+    
+  }
+  full_name_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      full_name, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.CheckpointableObjectGraph.CheckpointableObject.SerializedTensor.full_name)
+}
+
+// string checkpoint_key = 3;
+inline void CheckpointableObjectGraph_CheckpointableObject_SerializedTensor::clear_checkpoint_key() {
+  checkpoint_key_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline const ::std::string& CheckpointableObjectGraph_CheckpointableObject_SerializedTensor::checkpoint_key() const {
+  // @@protoc_insertion_point(field_get:tensorflow.CheckpointableObjectGraph.CheckpointableObject.SerializedTensor.checkpoint_key)
+  return checkpoint_key_.Get();
+}
+inline void CheckpointableObjectGraph_CheckpointableObject_SerializedTensor::set_checkpoint_key(const ::std::string& value) {
+  
+  checkpoint_key_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set:tensorflow.CheckpointableObjectGraph.CheckpointableObject.SerializedTensor.checkpoint_key)
+}
+#if LANG_CXX11
+inline void CheckpointableObjectGraph_CheckpointableObject_SerializedTensor::set_checkpoint_key(::std::string&& value) {
+  
+  checkpoint_key_.Set(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.CheckpointableObjectGraph.CheckpointableObject.SerializedTensor.checkpoint_key)
+}
+#endif
+inline void CheckpointableObjectGraph_CheckpointableObject_SerializedTensor::set_checkpoint_key(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  checkpoint_key_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
+              GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_char:tensorflow.CheckpointableObjectGraph.CheckpointableObject.SerializedTensor.checkpoint_key)
+}
+inline void CheckpointableObjectGraph_CheckpointableObject_SerializedTensor::set_checkpoint_key(const char* value,
+    size_t size) {
+  
+  checkpoint_key_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
+      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.CheckpointableObjectGraph.CheckpointableObject.SerializedTensor.checkpoint_key)
+}
+inline ::std::string* CheckpointableObjectGraph_CheckpointableObject_SerializedTensor::mutable_checkpoint_key() {
+  
+  // @@protoc_insertion_point(field_mutable:tensorflow.CheckpointableObjectGraph.CheckpointableObject.SerializedTensor.checkpoint_key)
+  return checkpoint_key_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline ::std::string* CheckpointableObjectGraph_CheckpointableObject_SerializedTensor::release_checkpoint_key() {
+  // @@protoc_insertion_point(field_release:tensorflow.CheckpointableObjectGraph.CheckpointableObject.SerializedTensor.checkpoint_key)
+  
+  return checkpoint_key_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline void CheckpointableObjectGraph_CheckpointableObject_SerializedTensor::set_allocated_checkpoint_key(::std::string* checkpoint_key) {
+  if (checkpoint_key != NULL) {
+    
+  } else {
+    
+  }
+  checkpoint_key_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), checkpoint_key,
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.CheckpointableObjectGraph.CheckpointableObject.SerializedTensor.checkpoint_key)
+}
+inline ::std::string* CheckpointableObjectGraph_CheckpointableObject_SerializedTensor::unsafe_arena_release_checkpoint_key() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.CheckpointableObjectGraph.CheckpointableObject.SerializedTensor.checkpoint_key)
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  
+  return checkpoint_key_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      GetArenaNoVirtual());
+}
+inline void CheckpointableObjectGraph_CheckpointableObject_SerializedTensor::unsafe_arena_set_allocated_checkpoint_key(
+    ::std::string* checkpoint_key) {
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (checkpoint_key != NULL) {
+    
+  } else {
+    
+  }
+  checkpoint_key_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      checkpoint_key, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.CheckpointableObjectGraph.CheckpointableObject.SerializedTensor.checkpoint_key)
+}
+
+// -------------------------------------------------------------------
+
+// CheckpointableObjectGraph_CheckpointableObject_SlotVariableReference
+
+// int32 original_variable_node_id = 1;
+inline void CheckpointableObjectGraph_CheckpointableObject_SlotVariableReference::clear_original_variable_node_id() {
+  original_variable_node_id_ = 0;
+}
+inline ::google::protobuf::int32 CheckpointableObjectGraph_CheckpointableObject_SlotVariableReference::original_variable_node_id() const {
+  // @@protoc_insertion_point(field_get:tensorflow.CheckpointableObjectGraph.CheckpointableObject.SlotVariableReference.original_variable_node_id)
+  return original_variable_node_id_;
+}
+inline void CheckpointableObjectGraph_CheckpointableObject_SlotVariableReference::set_original_variable_node_id(::google::protobuf::int32 value) {
+  
+  original_variable_node_id_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.CheckpointableObjectGraph.CheckpointableObject.SlotVariableReference.original_variable_node_id)
+}
+
+// string slot_name = 2;
+inline void CheckpointableObjectGraph_CheckpointableObject_SlotVariableReference::clear_slot_name() {
+  slot_name_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline const ::std::string& CheckpointableObjectGraph_CheckpointableObject_SlotVariableReference::slot_name() const {
+  // @@protoc_insertion_point(field_get:tensorflow.CheckpointableObjectGraph.CheckpointableObject.SlotVariableReference.slot_name)
+  return slot_name_.Get();
+}
+inline void CheckpointableObjectGraph_CheckpointableObject_SlotVariableReference::set_slot_name(const ::std::string& value) {
+  
+  slot_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set:tensorflow.CheckpointableObjectGraph.CheckpointableObject.SlotVariableReference.slot_name)
+}
+#if LANG_CXX11
+inline void CheckpointableObjectGraph_CheckpointableObject_SlotVariableReference::set_slot_name(::std::string&& value) {
+  
+  slot_name_.Set(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.CheckpointableObjectGraph.CheckpointableObject.SlotVariableReference.slot_name)
+}
+#endif
+inline void CheckpointableObjectGraph_CheckpointableObject_SlotVariableReference::set_slot_name(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  slot_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
+              GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_char:tensorflow.CheckpointableObjectGraph.CheckpointableObject.SlotVariableReference.slot_name)
+}
+inline void CheckpointableObjectGraph_CheckpointableObject_SlotVariableReference::set_slot_name(const char* value,
+    size_t size) {
+  
+  slot_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
+      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.CheckpointableObjectGraph.CheckpointableObject.SlotVariableReference.slot_name)
+}
+inline ::std::string* CheckpointableObjectGraph_CheckpointableObject_SlotVariableReference::mutable_slot_name() {
+  
+  // @@protoc_insertion_point(field_mutable:tensorflow.CheckpointableObjectGraph.CheckpointableObject.SlotVariableReference.slot_name)
+  return slot_name_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline ::std::string* CheckpointableObjectGraph_CheckpointableObject_SlotVariableReference::release_slot_name() {
+  // @@protoc_insertion_point(field_release:tensorflow.CheckpointableObjectGraph.CheckpointableObject.SlotVariableReference.slot_name)
+  
+  return slot_name_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline void CheckpointableObjectGraph_CheckpointableObject_SlotVariableReference::set_allocated_slot_name(::std::string* slot_name) {
+  if (slot_name != NULL) {
+    
+  } else {
+    
+  }
+  slot_name_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), slot_name,
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.CheckpointableObjectGraph.CheckpointableObject.SlotVariableReference.slot_name)
+}
+inline ::std::string* CheckpointableObjectGraph_CheckpointableObject_SlotVariableReference::unsafe_arena_release_slot_name() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.CheckpointableObjectGraph.CheckpointableObject.SlotVariableReference.slot_name)
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  
+  return slot_name_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      GetArenaNoVirtual());
+}
+inline void CheckpointableObjectGraph_CheckpointableObject_SlotVariableReference::unsafe_arena_set_allocated_slot_name(
+    ::std::string* slot_name) {
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (slot_name != NULL) {
+    
+  } else {
+    
+  }
+  slot_name_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      slot_name, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.CheckpointableObjectGraph.CheckpointableObject.SlotVariableReference.slot_name)
+}
+
+// int32 slot_variable_node_id = 3;
+inline void CheckpointableObjectGraph_CheckpointableObject_SlotVariableReference::clear_slot_variable_node_id() {
+  slot_variable_node_id_ = 0;
+}
+inline ::google::protobuf::int32 CheckpointableObjectGraph_CheckpointableObject_SlotVariableReference::slot_variable_node_id() const {
+  // @@protoc_insertion_point(field_get:tensorflow.CheckpointableObjectGraph.CheckpointableObject.SlotVariableReference.slot_variable_node_id)
+  return slot_variable_node_id_;
+}
+inline void CheckpointableObjectGraph_CheckpointableObject_SlotVariableReference::set_slot_variable_node_id(::google::protobuf::int32 value) {
+  
+  slot_variable_node_id_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.CheckpointableObjectGraph.CheckpointableObject.SlotVariableReference.slot_variable_node_id)
+}
+
+// -------------------------------------------------------------------
+
+// CheckpointableObjectGraph_CheckpointableObject
+
+// repeated .tensorflow.CheckpointableObjectGraph.CheckpointableObject.ObjectReference children = 1;
+inline int CheckpointableObjectGraph_CheckpointableObject::children_size() const {
+  return children_.size();
+}
+inline void CheckpointableObjectGraph_CheckpointableObject::clear_children() {
+  children_.Clear();
+}
+inline ::tensorflow::CheckpointableObjectGraph_CheckpointableObject_ObjectReference* CheckpointableObjectGraph_CheckpointableObject::mutable_children(int index) {
+  // @@protoc_insertion_point(field_mutable:tensorflow.CheckpointableObjectGraph.CheckpointableObject.children)
+  return children_.Mutable(index);
+}
+inline ::google::protobuf::RepeatedPtrField< ::tensorflow::CheckpointableObjectGraph_CheckpointableObject_ObjectReference >*
+CheckpointableObjectGraph_CheckpointableObject::mutable_children() {
+  // @@protoc_insertion_point(field_mutable_list:tensorflow.CheckpointableObjectGraph.CheckpointableObject.children)
+  return &children_;
+}
+inline const ::tensorflow::CheckpointableObjectGraph_CheckpointableObject_ObjectReference& CheckpointableObjectGraph_CheckpointableObject::children(int index) const {
+  // @@protoc_insertion_point(field_get:tensorflow.CheckpointableObjectGraph.CheckpointableObject.children)
+  return children_.Get(index);
+}
+inline ::tensorflow::CheckpointableObjectGraph_CheckpointableObject_ObjectReference* CheckpointableObjectGraph_CheckpointableObject::add_children() {
+  // @@protoc_insertion_point(field_add:tensorflow.CheckpointableObjectGraph.CheckpointableObject.children)
+  return children_.Add();
+}
+inline const ::google::protobuf::RepeatedPtrField< ::tensorflow::CheckpointableObjectGraph_CheckpointableObject_ObjectReference >&
+CheckpointableObjectGraph_CheckpointableObject::children() const {
+  // @@protoc_insertion_point(field_list:tensorflow.CheckpointableObjectGraph.CheckpointableObject.children)
+  return children_;
+}
+
+// repeated .tensorflow.CheckpointableObjectGraph.CheckpointableObject.SerializedTensor attributes = 2;
+inline int CheckpointableObjectGraph_CheckpointableObject::attributes_size() const {
+  return attributes_.size();
+}
+inline void CheckpointableObjectGraph_CheckpointableObject::clear_attributes() {
+  attributes_.Clear();
+}
+inline ::tensorflow::CheckpointableObjectGraph_CheckpointableObject_SerializedTensor* CheckpointableObjectGraph_CheckpointableObject::mutable_attributes(int index) {
+  // @@protoc_insertion_point(field_mutable:tensorflow.CheckpointableObjectGraph.CheckpointableObject.attributes)
+  return attributes_.Mutable(index);
+}
+inline ::google::protobuf::RepeatedPtrField< ::tensorflow::CheckpointableObjectGraph_CheckpointableObject_SerializedTensor >*
+CheckpointableObjectGraph_CheckpointableObject::mutable_attributes() {
+  // @@protoc_insertion_point(field_mutable_list:tensorflow.CheckpointableObjectGraph.CheckpointableObject.attributes)
+  return &attributes_;
+}
+inline const ::tensorflow::CheckpointableObjectGraph_CheckpointableObject_SerializedTensor& CheckpointableObjectGraph_CheckpointableObject::attributes(int index) const {
+  // @@protoc_insertion_point(field_get:tensorflow.CheckpointableObjectGraph.CheckpointableObject.attributes)
+  return attributes_.Get(index);
+}
+inline ::tensorflow::CheckpointableObjectGraph_CheckpointableObject_SerializedTensor* CheckpointableObjectGraph_CheckpointableObject::add_attributes() {
+  // @@protoc_insertion_point(field_add:tensorflow.CheckpointableObjectGraph.CheckpointableObject.attributes)
+  return attributes_.Add();
+}
+inline const ::google::protobuf::RepeatedPtrField< ::tensorflow::CheckpointableObjectGraph_CheckpointableObject_SerializedTensor >&
+CheckpointableObjectGraph_CheckpointableObject::attributes() const {
+  // @@protoc_insertion_point(field_list:tensorflow.CheckpointableObjectGraph.CheckpointableObject.attributes)
+  return attributes_;
+}
+
+// repeated .tensorflow.CheckpointableObjectGraph.CheckpointableObject.SlotVariableReference slot_variables = 3;
+inline int CheckpointableObjectGraph_CheckpointableObject::slot_variables_size() const {
+  return slot_variables_.size();
+}
+inline void CheckpointableObjectGraph_CheckpointableObject::clear_slot_variables() {
+  slot_variables_.Clear();
+}
+inline ::tensorflow::CheckpointableObjectGraph_CheckpointableObject_SlotVariableReference* CheckpointableObjectGraph_CheckpointableObject::mutable_slot_variables(int index) {
+  // @@protoc_insertion_point(field_mutable:tensorflow.CheckpointableObjectGraph.CheckpointableObject.slot_variables)
+  return slot_variables_.Mutable(index);
+}
+inline ::google::protobuf::RepeatedPtrField< ::tensorflow::CheckpointableObjectGraph_CheckpointableObject_SlotVariableReference >*
+CheckpointableObjectGraph_CheckpointableObject::mutable_slot_variables() {
+  // @@protoc_insertion_point(field_mutable_list:tensorflow.CheckpointableObjectGraph.CheckpointableObject.slot_variables)
+  return &slot_variables_;
+}
+inline const ::tensorflow::CheckpointableObjectGraph_CheckpointableObject_SlotVariableReference& CheckpointableObjectGraph_CheckpointableObject::slot_variables(int index) const {
+  // @@protoc_insertion_point(field_get:tensorflow.CheckpointableObjectGraph.CheckpointableObject.slot_variables)
+  return slot_variables_.Get(index);
+}
+inline ::tensorflow::CheckpointableObjectGraph_CheckpointableObject_SlotVariableReference* CheckpointableObjectGraph_CheckpointableObject::add_slot_variables() {
+  // @@protoc_insertion_point(field_add:tensorflow.CheckpointableObjectGraph.CheckpointableObject.slot_variables)
+  return slot_variables_.Add();
+}
+inline const ::google::protobuf::RepeatedPtrField< ::tensorflow::CheckpointableObjectGraph_CheckpointableObject_SlotVariableReference >&
+CheckpointableObjectGraph_CheckpointableObject::slot_variables() const {
+  // @@protoc_insertion_point(field_list:tensorflow.CheckpointableObjectGraph.CheckpointableObject.slot_variables)
+  return slot_variables_;
+}
+
+// -------------------------------------------------------------------
+
+// CheckpointableObjectGraph
+
+// repeated .tensorflow.CheckpointableObjectGraph.CheckpointableObject nodes = 1;
+inline int CheckpointableObjectGraph::nodes_size() const {
+  return nodes_.size();
+}
+inline void CheckpointableObjectGraph::clear_nodes() {
+  nodes_.Clear();
+}
+inline ::tensorflow::CheckpointableObjectGraph_CheckpointableObject* CheckpointableObjectGraph::mutable_nodes(int index) {
+  // @@protoc_insertion_point(field_mutable:tensorflow.CheckpointableObjectGraph.nodes)
+  return nodes_.Mutable(index);
+}
+inline ::google::protobuf::RepeatedPtrField< ::tensorflow::CheckpointableObjectGraph_CheckpointableObject >*
+CheckpointableObjectGraph::mutable_nodes() {
+  // @@protoc_insertion_point(field_mutable_list:tensorflow.CheckpointableObjectGraph.nodes)
+  return &nodes_;
+}
+inline const ::tensorflow::CheckpointableObjectGraph_CheckpointableObject& CheckpointableObjectGraph::nodes(int index) const {
+  // @@protoc_insertion_point(field_get:tensorflow.CheckpointableObjectGraph.nodes)
+  return nodes_.Get(index);
+}
+inline ::tensorflow::CheckpointableObjectGraph_CheckpointableObject* CheckpointableObjectGraph::add_nodes() {
+  // @@protoc_insertion_point(field_add:tensorflow.CheckpointableObjectGraph.nodes)
+  return nodes_.Add();
+}
+inline const ::google::protobuf::RepeatedPtrField< ::tensorflow::CheckpointableObjectGraph_CheckpointableObject >&
+CheckpointableObjectGraph::nodes() const {
+  // @@protoc_insertion_point(field_list:tensorflow.CheckpointableObjectGraph.nodes)
+  return nodes_;
+}
+
+#ifdef __GNUC__
+  #pragma GCC diagnostic pop
+#endif  // __GNUC__
+// -------------------------------------------------------------------
+
+// -------------------------------------------------------------------
+
+// -------------------------------------------------------------------
+
+// -------------------------------------------------------------------
+
+
+// @@protoc_insertion_point(namespace_scope)
+
+}  // namespace tensorflow
+
+// @@protoc_insertion_point(global_scope)
+
+#include <google/protobuf/port_undef.inc>
+#endif  // PROTOBUF_INCLUDED_tensorflow_2fcore_2fprotobuf_2fcheckpointable_5fobject_5fgraph_2eproto
diff --git a/tensorflow/core/protobuf/checkpointable_object_graph.proto b/tensorflow/core/protobuf/checkpointable_object_graph.proto
new file mode 100644 (file)
index 0000000..651f692
--- /dev/null
@@ -0,0 +1,55 @@
+syntax = "proto3";
+
+option cc_enable_arenas = true;
+
+package tensorflow;
+
+// A TensorBundle addition which saves extra information about the objects which
+// own variables, allowing for more robust checkpoint loading into modified
+// programs.
+
+message CheckpointableObjectGraph {
+  message CheckpointableObject {
+    message ObjectReference {
+      // An index into `CheckpointableObjectGraph.nodes`, indicating the object
+      // being referenced.
+      int32 node_id = 1;
+      // A user-provided name for the edge.
+      string local_name = 2;
+    }
+
+    message SerializedTensor {
+      // A name for the Tensor. Simple variables have only one
+      // `SerializedTensor` named "VARIABLE_VALUE" by convention. This value may
+      // be restored on object creation as an optimization.
+      string name = 1;
+      // The full name of the variable/tensor, if applicable. Used to allow
+      // name-based loading of checkpoints which were saved using an
+      // object-based API. Should match the checkpoint key which would have been
+      // assigned by tf.train.Saver.
+      string full_name = 2;
+      // The generated name of the Tensor in the checkpoint.
+      string checkpoint_key = 3;
+    }
+
+    message SlotVariableReference {
+      // An index into `CheckpointableObjectGraph.nodes`, indicating the
+      // variable object this slot was created for.
+      int32 original_variable_node_id = 1;
+      // The name of the slot (e.g. "m"/"v").
+      string slot_name = 2;
+      // An index into `CheckpointableObjectGraph.nodes`, indicating the
+      // `Object` with the value of the slot variable.
+      int32 slot_variable_node_id = 3;
+    }
+
+    // Objects which this object depends on.
+    repeated ObjectReference children = 1;
+    // Serialized data specific to this object.
+    repeated SerializedTensor attributes = 2;
+    // Slot variables owned by this object.
+    repeated SlotVariableReference slot_variables = 3;
+  }
+
+  repeated CheckpointableObject nodes = 1;
+}
diff --git a/tensorflow/core/protobuf/cluster.pb.cc b/tensorflow/core/protobuf/cluster.pb.cc
new file mode 100644 (file)
index 0000000..92f1320
--- /dev/null
@@ -0,0 +1,1023 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: tensorflow/core/protobuf/cluster.proto
+
+#include "tensorflow/core/protobuf/cluster.pb.h"
+
+#include <algorithm>
+
+#include <google/protobuf/stubs/common.h>
+#include <google/protobuf/io/coded_stream.h>
+#include <google/protobuf/extension_set.h>
+#include <google/protobuf/wire_format_lite_inl.h>
+#include <google/protobuf/descriptor.h>
+#include <google/protobuf/generated_message_reflection.h>
+#include <google/protobuf/reflection_ops.h>
+#include <google/protobuf/wire_format.h>
+// @@protoc_insertion_point(includes)
+#include <google/protobuf/port_def.inc>
+
+extern PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fprotobuf_2fcluster_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_JobDef_TasksEntry_DoNotUse_tensorflow_2fcore_2fprotobuf_2fcluster_2eproto;
+extern PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fprotobuf_2fcluster_2eproto ::google::protobuf::internal::SCCInfo<1> scc_info_JobDef_tensorflow_2fcore_2fprotobuf_2fcluster_2eproto;
+namespace tensorflow {
+class JobDef_TasksEntry_DoNotUseDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<JobDef_TasksEntry_DoNotUse> _instance;
+} _JobDef_TasksEntry_DoNotUse_default_instance_;
+class JobDefDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<JobDef> _instance;
+} _JobDef_default_instance_;
+class ClusterDefDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<ClusterDef> _instance;
+} _ClusterDef_default_instance_;
+}  // namespace tensorflow
+static void InitDefaultsJobDef_TasksEntry_DoNotUse_tensorflow_2fcore_2fprotobuf_2fcluster_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_JobDef_TasksEntry_DoNotUse_default_instance_;
+    new (ptr) ::tensorflow::JobDef_TasksEntry_DoNotUse();
+  }
+  ::tensorflow::JobDef_TasksEntry_DoNotUse::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<0> scc_info_JobDef_TasksEntry_DoNotUse_tensorflow_2fcore_2fprotobuf_2fcluster_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsJobDef_TasksEntry_DoNotUse_tensorflow_2fcore_2fprotobuf_2fcluster_2eproto}, {}};
+
+static void InitDefaultsJobDef_tensorflow_2fcore_2fprotobuf_2fcluster_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_JobDef_default_instance_;
+    new (ptr) ::tensorflow::JobDef();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::JobDef::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<1> scc_info_JobDef_tensorflow_2fcore_2fprotobuf_2fcluster_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsJobDef_tensorflow_2fcore_2fprotobuf_2fcluster_2eproto}, {
+      &scc_info_JobDef_TasksEntry_DoNotUse_tensorflow_2fcore_2fprotobuf_2fcluster_2eproto.base,}};
+
+static void InitDefaultsClusterDef_tensorflow_2fcore_2fprotobuf_2fcluster_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_ClusterDef_default_instance_;
+    new (ptr) ::tensorflow::ClusterDef();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::ClusterDef::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<1> scc_info_ClusterDef_tensorflow_2fcore_2fprotobuf_2fcluster_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsClusterDef_tensorflow_2fcore_2fprotobuf_2fcluster_2eproto}, {
+      &scc_info_JobDef_tensorflow_2fcore_2fprotobuf_2fcluster_2eproto.base,}};
+
+void InitDefaults_tensorflow_2fcore_2fprotobuf_2fcluster_2eproto() {
+  ::google::protobuf::internal::InitSCC(&scc_info_JobDef_TasksEntry_DoNotUse_tensorflow_2fcore_2fprotobuf_2fcluster_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_JobDef_tensorflow_2fcore_2fprotobuf_2fcluster_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_ClusterDef_tensorflow_2fcore_2fprotobuf_2fcluster_2eproto.base);
+}
+
+::google::protobuf::Metadata file_level_metadata_tensorflow_2fcore_2fprotobuf_2fcluster_2eproto[3];
+constexpr ::google::protobuf::EnumDescriptor const** file_level_enum_descriptors_tensorflow_2fcore_2fprotobuf_2fcluster_2eproto = nullptr;
+constexpr ::google::protobuf::ServiceDescriptor const** file_level_service_descriptors_tensorflow_2fcore_2fprotobuf_2fcluster_2eproto = nullptr;
+
+const ::google::protobuf::uint32 TableStruct_tensorflow_2fcore_2fprotobuf_2fcluster_2eproto::offsets[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = {
+  PROTOBUF_FIELD_OFFSET(::tensorflow::JobDef_TasksEntry_DoNotUse, _has_bits_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::JobDef_TasksEntry_DoNotUse, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::JobDef_TasksEntry_DoNotUse, key_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::JobDef_TasksEntry_DoNotUse, value_),
+  0,
+  1,
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::JobDef, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::JobDef, name_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::JobDef, tasks_),
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::ClusterDef, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::ClusterDef, job_),
+};
+static const ::google::protobuf::internal::MigrationSchema schemas[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = {
+  { 0, 7, sizeof(::tensorflow::JobDef_TasksEntry_DoNotUse)},
+  { 9, -1, sizeof(::tensorflow::JobDef)},
+  { 16, -1, sizeof(::tensorflow::ClusterDef)},
+};
+
+static ::google::protobuf::Message const * const file_default_instances[] = {
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_JobDef_TasksEntry_DoNotUse_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_JobDef_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_ClusterDef_default_instance_),
+};
+
+::google::protobuf::internal::AssignDescriptorsTable assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2fcluster_2eproto = {
+  {}, AddDescriptors_tensorflow_2fcore_2fprotobuf_2fcluster_2eproto, "tensorflow/core/protobuf/cluster.proto", schemas,
+  file_default_instances, TableStruct_tensorflow_2fcore_2fprotobuf_2fcluster_2eproto::offsets,
+  file_level_metadata_tensorflow_2fcore_2fprotobuf_2fcluster_2eproto, 3, file_level_enum_descriptors_tensorflow_2fcore_2fprotobuf_2fcluster_2eproto, file_level_service_descriptors_tensorflow_2fcore_2fprotobuf_2fcluster_2eproto,
+};
+
+::google::protobuf::internal::DescriptorTable descriptor_table_tensorflow_2fcore_2fprotobuf_2fcluster_2eproto = {
+  false, InitDefaults_tensorflow_2fcore_2fprotobuf_2fcluster_2eproto, 
+  "\n&tensorflow/core/protobuf/cluster.proto"
+  "\022\ntensorflow\"r\n\006JobDef\022\014\n\004name\030\001 \001(\t\022,\n\005"
+  "tasks\030\002 \003(\0132\035.tensorflow.JobDef.TasksEnt"
+  "ry\032,\n\nTasksEntry\022\013\n\003key\030\001 \001(\005\022\r\n\005value\030\002"
+  " \001(\t:\0028\001\"-\n\nClusterDef\022\037\n\003job\030\001 \003(\0132\022.te"
+  "nsorflow.JobDefBn\n\032org.tensorflow.distru"
+  "ntimeB\rClusterProtosP\001Z<github.com/tenso"
+  "rflow/tensorflow/tensorflow/go/core/prot"
+  "obuf\370\001\001b\006proto3"
+,
+  "tensorflow/core/protobuf/cluster.proto", &assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2fcluster_2eproto, 335,
+};
+
+void AddDescriptors_tensorflow_2fcore_2fprotobuf_2fcluster_2eproto() {
+  static constexpr ::google::protobuf::internal::InitFunc deps[1] =
+  {
+  };
+ ::google::protobuf::internal::AddDescriptors(&descriptor_table_tensorflow_2fcore_2fprotobuf_2fcluster_2eproto, deps, 0);
+}
+
+// Force running AddDescriptors() at dynamic initialization time.
+static bool dynamic_init_dummy_tensorflow_2fcore_2fprotobuf_2fcluster_2eproto = []() { AddDescriptors_tensorflow_2fcore_2fprotobuf_2fcluster_2eproto(); return true; }();
+namespace tensorflow {
+
+// ===================================================================
+
+JobDef_TasksEntry_DoNotUse::JobDef_TasksEntry_DoNotUse() {}
+JobDef_TasksEntry_DoNotUse::JobDef_TasksEntry_DoNotUse(::google::protobuf::Arena* arena)
+    : SuperType(arena) {}
+void JobDef_TasksEntry_DoNotUse::MergeFrom(const JobDef_TasksEntry_DoNotUse& other) {
+  MergeFromInternal(other);
+}
+::google::protobuf::Metadata JobDef_TasksEntry_DoNotUse::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2fcluster_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fprotobuf_2fcluster_2eproto[0];
+}
+void JobDef_TasksEntry_DoNotUse::MergeFrom(
+    const ::google::protobuf::Message& other) {
+  ::google::protobuf::Message::MergeFrom(other);
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool JobDef_TasksEntry_DoNotUse::_ParseMap(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx) {
+  using MF = ::google::protobuf::internal::MapField<
+      JobDef_TasksEntry_DoNotUse, EntryKeyType, EntryValueType,
+      kEntryKeyFieldType, kEntryValueFieldType,
+      kEntryDefaultEnumValue>;
+  auto mf = static_cast<MF*>(object);
+  Parser<MF, ::google::protobuf::Map<EntryKeyType, EntryValueType>> parser(mf);
+#define DO_(x) if (!(x)) return false
+  DO_(parser.ParseMap(begin, end));
+  DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+    parser.value().data(), static_cast<int>(parser.value().length()),
+    ::google::protobuf::internal::WireFormatLite::PARSE,
+    "tensorflow.JobDef.TasksEntry.value"));
+#undef DO_
+  return true;
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+
+// ===================================================================
+
+void JobDef::InitAsDefaultInstance() {
+}
+class JobDef::HasBitSetters {
+ public:
+};
+
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int JobDef::kNameFieldNumber;
+const int JobDef::kTasksFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+JobDef::JobDef()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.JobDef)
+}
+JobDef::JobDef(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena),
+  tasks_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.JobDef)
+}
+JobDef::JobDef(const JobDef& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  tasks_.MergeFrom(from.tasks_);
+  name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.name().size() > 0) {
+    name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.name(),
+      GetArenaNoVirtual());
+  }
+  // @@protoc_insertion_point(copy_constructor:tensorflow.JobDef)
+}
+
+void JobDef::SharedCtor() {
+  ::google::protobuf::internal::InitSCC(
+      &scc_info_JobDef_tensorflow_2fcore_2fprotobuf_2fcluster_2eproto.base);
+  name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+
+JobDef::~JobDef() {
+  // @@protoc_insertion_point(destructor:tensorflow.JobDef)
+  SharedDtor();
+}
+
+void JobDef::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+  name_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+
+void JobDef::ArenaDtor(void* object) {
+  JobDef* _this = reinterpret_cast< JobDef* >(object);
+  (void)_this;
+}
+void JobDef::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void JobDef::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const JobDef& JobDef::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_JobDef_tensorflow_2fcore_2fprotobuf_2fcluster_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void JobDef::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.JobDef)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  tasks_.Clear();
+  name_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* JobDef::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<JobDef*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // string name = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 10) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("tensorflow.JobDef.name");
+        parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+        ::std::string* str = msg->mutable_name();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+        break;
+      }
+      // map<int32, string> tasks = 2;
+      case 2: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 18) goto handle_unusual;
+        do {
+          ptr = Varint::Parse32Inline(ptr, &size);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          parser_till_end = ::google::protobuf::internal::SlowMapEntryParser;
+          auto parse_map = ::tensorflow::JobDef_TasksEntry_DoNotUse::_ParseMap;
+          ctx->extra_parse_data().payload.clear();
+          ctx->extra_parse_data().parse_map = parse_map;
+          object = &msg->tasks_;
+          if (size > end - ptr) goto len_delim_till_end;
+          auto newend = ptr + size;
+          GOOGLE_PROTOBUF_PARSER_ASSERT(parse_map(ptr, newend, object, ctx));
+          ptr = newend;
+          if (ptr >= end) break;
+        } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 18 && (ptr += 1));
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool JobDef::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.JobDef)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // string name = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (10 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_name()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->name().data(), static_cast<int>(this->name().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.JobDef.name"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // map<int32, string> tasks = 2;
+      case 2: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (18 & 0xFF)) {
+          JobDef_TasksEntry_DoNotUse::Parser< ::google::protobuf::internal::MapField<
+              JobDef_TasksEntry_DoNotUse,
+              ::google::protobuf::int32, ::std::string,
+              ::google::protobuf::internal::WireFormatLite::TYPE_INT32,
+              ::google::protobuf::internal::WireFormatLite::TYPE_STRING,
+              0 >,
+            ::google::protobuf::Map< ::google::protobuf::int32, ::std::string > > parser(&tasks_);
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
+              input, &parser));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            parser.value().data(), static_cast<int>(parser.value().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.JobDef.TasksEntry.value"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.JobDef)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.JobDef)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void JobDef::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.JobDef)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // string name = 1;
+  if (this->name().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->name().data(), static_cast<int>(this->name().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.JobDef.name");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      1, this->name(), output);
+  }
+
+  // map<int32, string> tasks = 2;
+  if (!this->tasks().empty()) {
+    typedef ::google::protobuf::Map< ::google::protobuf::int32, ::std::string >::const_pointer
+        ConstPtr;
+    typedef ::google::protobuf::internal::SortItem< ::google::protobuf::int32, ConstPtr > SortItem;
+    typedef ::google::protobuf::internal::CompareByFirstField<SortItem> Less;
+    struct Utf8Check {
+      static void Check(ConstPtr p) {
+        ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+          p->second.data(), static_cast<int>(p->second.length()),
+          ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+          "tensorflow.JobDef.TasksEntry.value");
+      }
+    };
+
+    if (output->IsSerializationDeterministic() &&
+        this->tasks().size() > 1) {
+      ::std::unique_ptr<SortItem[]> items(
+          new SortItem[this->tasks().size()]);
+      typedef ::google::protobuf::Map< ::google::protobuf::int32, ::std::string >::size_type size_type;
+      size_type n = 0;
+      for (::google::protobuf::Map< ::google::protobuf::int32, ::std::string >::const_iterator
+          it = this->tasks().begin();
+          it != this->tasks().end(); ++it, ++n) {
+        items[static_cast<ptrdiff_t>(n)] = SortItem(&*it);
+      }
+      ::std::sort(&items[0], &items[static_cast<ptrdiff_t>(n)], Less());
+      ::std::unique_ptr<JobDef_TasksEntry_DoNotUse> entry;
+      for (size_type i = 0; i < n; i++) {
+        entry.reset(tasks_.NewEntryWrapper(items[static_cast<ptrdiff_t>(i)].second->first, items[static_cast<ptrdiff_t>(i)].second->second));
+        ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(2, *entry, output);
+        if (entry->GetArena() != NULL) {
+          entry.release();
+        }
+        Utf8Check::Check(&(*items[static_cast<ptrdiff_t>(i)].second));
+      }
+    } else {
+      ::std::unique_ptr<JobDef_TasksEntry_DoNotUse> entry;
+      for (::google::protobuf::Map< ::google::protobuf::int32, ::std::string >::const_iterator
+          it = this->tasks().begin();
+          it != this->tasks().end(); ++it) {
+        entry.reset(tasks_.NewEntryWrapper(it->first, it->second));
+        ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(2, *entry, output);
+        if (entry->GetArena() != NULL) {
+          entry.release();
+        }
+        Utf8Check::Check(&(*it));
+      }
+    }
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.JobDef)
+}
+
+::google::protobuf::uint8* JobDef::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.JobDef)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // string name = 1;
+  if (this->name().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->name().data(), static_cast<int>(this->name().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.JobDef.name");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        1, this->name(), target);
+  }
+
+  // map<int32, string> tasks = 2;
+  if (!this->tasks().empty()) {
+    typedef ::google::protobuf::Map< ::google::protobuf::int32, ::std::string >::const_pointer
+        ConstPtr;
+    typedef ::google::protobuf::internal::SortItem< ::google::protobuf::int32, ConstPtr > SortItem;
+    typedef ::google::protobuf::internal::CompareByFirstField<SortItem> Less;
+    struct Utf8Check {
+      static void Check(ConstPtr p) {
+        ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+          p->second.data(), static_cast<int>(p->second.length()),
+          ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+          "tensorflow.JobDef.TasksEntry.value");
+      }
+    };
+
+    if (deterministic &&
+        this->tasks().size() > 1) {
+      ::std::unique_ptr<SortItem[]> items(
+          new SortItem[this->tasks().size()]);
+      typedef ::google::protobuf::Map< ::google::protobuf::int32, ::std::string >::size_type size_type;
+      size_type n = 0;
+      for (::google::protobuf::Map< ::google::protobuf::int32, ::std::string >::const_iterator
+          it = this->tasks().begin();
+          it != this->tasks().end(); ++it, ++n) {
+        items[static_cast<ptrdiff_t>(n)] = SortItem(&*it);
+      }
+      ::std::sort(&items[0], &items[static_cast<ptrdiff_t>(n)], Less());
+      ::std::unique_ptr<JobDef_TasksEntry_DoNotUse> entry;
+      for (size_type i = 0; i < n; i++) {
+        entry.reset(tasks_.NewEntryWrapper(items[static_cast<ptrdiff_t>(i)].second->first, items[static_cast<ptrdiff_t>(i)].second->second));
+        target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessageNoVirtualToArray(2, *entry, deterministic, target);
+        if (entry->GetArena() != NULL) {
+          entry.release();
+        }
+        Utf8Check::Check(&(*items[static_cast<ptrdiff_t>(i)].second));
+      }
+    } else {
+      ::std::unique_ptr<JobDef_TasksEntry_DoNotUse> entry;
+      for (::google::protobuf::Map< ::google::protobuf::int32, ::std::string >::const_iterator
+          it = this->tasks().begin();
+          it != this->tasks().end(); ++it) {
+        entry.reset(tasks_.NewEntryWrapper(it->first, it->second));
+        target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessageNoVirtualToArray(2, *entry, deterministic, target);
+        if (entry->GetArena() != NULL) {
+          entry.release();
+        }
+        Utf8Check::Check(&(*it));
+      }
+    }
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.JobDef)
+  return target;
+}
+
+size_t JobDef::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.JobDef)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // map<int32, string> tasks = 2;
+  total_size += 1 *
+      ::google::protobuf::internal::FromIntSize(this->tasks_size());
+  {
+    ::std::unique_ptr<JobDef_TasksEntry_DoNotUse> entry;
+    for (::google::protobuf::Map< ::google::protobuf::int32, ::std::string >::const_iterator
+        it = this->tasks().begin();
+        it != this->tasks().end(); ++it) {
+      if (entry.get() != NULL && entry->GetArena() != NULL) {
+        entry.release();
+      }
+      entry.reset(tasks_.NewEntryWrapper(it->first, it->second));
+      total_size += ::google::protobuf::internal::WireFormatLite::
+          MessageSizeNoVirtual(*entry);
+    }
+    if (entry.get() != NULL && entry->GetArena() != NULL) {
+      entry.release();
+    }
+  }
+
+  // string name = 1;
+  if (this->name().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->name());
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void JobDef::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.JobDef)
+  GOOGLE_DCHECK_NE(&from, this);
+  const JobDef* source =
+      ::google::protobuf::DynamicCastToGenerated<JobDef>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.JobDef)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.JobDef)
+    MergeFrom(*source);
+  }
+}
+
+void JobDef::MergeFrom(const JobDef& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.JobDef)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  tasks_.MergeFrom(from.tasks_);
+  if (from.name().size() > 0) {
+    set_name(from.name());
+  }
+}
+
+void JobDef::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.JobDef)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void JobDef::CopyFrom(const JobDef& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.JobDef)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool JobDef::IsInitialized() const {
+  return true;
+}
+
+void JobDef::Swap(JobDef* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    JobDef* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void JobDef::UnsafeArenaSwap(JobDef* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void JobDef::InternalSwap(JobDef* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  tasks_.Swap(&other->tasks_);
+  name_.Swap(&other->name_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+}
+
+::google::protobuf::Metadata JobDef::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2fcluster_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fprotobuf_2fcluster_2eproto[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+void ClusterDef::InitAsDefaultInstance() {
+}
+class ClusterDef::HasBitSetters {
+ public:
+};
+
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int ClusterDef::kJobFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+ClusterDef::ClusterDef()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.ClusterDef)
+}
+ClusterDef::ClusterDef(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena),
+  job_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.ClusterDef)
+}
+ClusterDef::ClusterDef(const ClusterDef& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL),
+      job_(from.job_) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  // @@protoc_insertion_point(copy_constructor:tensorflow.ClusterDef)
+}
+
+void ClusterDef::SharedCtor() {
+  ::google::protobuf::internal::InitSCC(
+      &scc_info_ClusterDef_tensorflow_2fcore_2fprotobuf_2fcluster_2eproto.base);
+}
+
+ClusterDef::~ClusterDef() {
+  // @@protoc_insertion_point(destructor:tensorflow.ClusterDef)
+  SharedDtor();
+}
+
+void ClusterDef::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+}
+
+void ClusterDef::ArenaDtor(void* object) {
+  ClusterDef* _this = reinterpret_cast< ClusterDef* >(object);
+  (void)_this;
+}
+void ClusterDef::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void ClusterDef::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const ClusterDef& ClusterDef::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_ClusterDef_tensorflow_2fcore_2fprotobuf_2fcluster_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void ClusterDef::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.ClusterDef)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  job_.Clear();
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* ClusterDef::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<ClusterDef*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // repeated .tensorflow.JobDef job = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 10) goto handle_unusual;
+        do {
+          ptr = Varint::Parse32Inline(ptr, &size);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          parser_till_end = ::tensorflow::JobDef::_InternalParse;
+          object = msg->add_job();
+          if (size > end - ptr) goto len_delim_till_end;
+          auto newend = ptr + size;
+          bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                         ptr, newend);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          ptr = newend;
+          if (ptr >= end) break;
+        } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 10 && (ptr += 1));
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool ClusterDef::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.ClusterDef)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // repeated .tensorflow.JobDef job = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (10 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+                input, add_job()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.ClusterDef)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.ClusterDef)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void ClusterDef::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.ClusterDef)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // repeated .tensorflow.JobDef job = 1;
+  for (unsigned int i = 0,
+      n = static_cast<unsigned int>(this->job_size()); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      1,
+      this->job(static_cast<int>(i)),
+      output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.ClusterDef)
+}
+
+::google::protobuf::uint8* ClusterDef::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.ClusterDef)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // repeated .tensorflow.JobDef job = 1;
+  for (unsigned int i = 0,
+      n = static_cast<unsigned int>(this->job_size()); i < n; i++) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        1, this->job(static_cast<int>(i)), deterministic, target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.ClusterDef)
+  return target;
+}
+
+size_t ClusterDef::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.ClusterDef)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // repeated .tensorflow.JobDef job = 1;
+  {
+    unsigned int count = static_cast<unsigned int>(this->job_size());
+    total_size += 1UL * count;
+    for (unsigned int i = 0; i < count; i++) {
+      total_size +=
+        ::google::protobuf::internal::WireFormatLite::MessageSize(
+          this->job(static_cast<int>(i)));
+    }
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void ClusterDef::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.ClusterDef)
+  GOOGLE_DCHECK_NE(&from, this);
+  const ClusterDef* source =
+      ::google::protobuf::DynamicCastToGenerated<ClusterDef>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.ClusterDef)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.ClusterDef)
+    MergeFrom(*source);
+  }
+}
+
+void ClusterDef::MergeFrom(const ClusterDef& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.ClusterDef)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  job_.MergeFrom(from.job_);
+}
+
+void ClusterDef::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.ClusterDef)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void ClusterDef::CopyFrom(const ClusterDef& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.ClusterDef)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool ClusterDef::IsInitialized() const {
+  return true;
+}
+
+void ClusterDef::Swap(ClusterDef* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    ClusterDef* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void ClusterDef::UnsafeArenaSwap(ClusterDef* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void ClusterDef::InternalSwap(ClusterDef* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  CastToBase(&job_)->InternalSwap(CastToBase(&other->job_));
+}
+
+::google::protobuf::Metadata ClusterDef::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2fcluster_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fprotobuf_2fcluster_2eproto[kIndexInFileMessages];
+}
+
+
+// @@protoc_insertion_point(namespace_scope)
+}  // namespace tensorflow
+namespace google {
+namespace protobuf {
+template<> PROTOBUF_NOINLINE ::tensorflow::JobDef_TasksEntry_DoNotUse* Arena::CreateMaybeMessage< ::tensorflow::JobDef_TasksEntry_DoNotUse >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::JobDef_TasksEntry_DoNotUse >(arena);
+}
+template<> PROTOBUF_NOINLINE ::tensorflow::JobDef* Arena::CreateMaybeMessage< ::tensorflow::JobDef >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::JobDef >(arena);
+}
+template<> PROTOBUF_NOINLINE ::tensorflow::ClusterDef* Arena::CreateMaybeMessage< ::tensorflow::ClusterDef >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::ClusterDef >(arena);
+}
+}  // namespace protobuf
+}  // namespace google
+
+// @@protoc_insertion_point(global_scope)
+#include <google/protobuf/port_undef.inc>
diff --git a/tensorflow/core/protobuf/cluster.pb.h b/tensorflow/core/protobuf/cluster.pb.h
new file mode 100644 (file)
index 0000000..425f94c
--- /dev/null
@@ -0,0 +1,544 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: tensorflow/core/protobuf/cluster.proto
+
+#ifndef PROTOBUF_INCLUDED_tensorflow_2fcore_2fprotobuf_2fcluster_2eproto
+#define PROTOBUF_INCLUDED_tensorflow_2fcore_2fprotobuf_2fcluster_2eproto
+
+#include <limits>
+#include <string>
+
+#include <google/protobuf/port_def.inc>
+#if PROTOBUF_VERSION < 3006001
+#error This file was generated by a newer version of protoc which is
+#error incompatible with your Protocol Buffer headers. Please update
+#error your headers.
+#endif
+#if 3006001 < PROTOBUF_MIN_PROTOC_VERSION
+#error This file was generated by an older version of protoc which is
+#error incompatible with your Protocol Buffer headers. Please
+#error regenerate this file with a newer version of protoc.
+#endif
+
+#include <google/protobuf/port_undef.inc>
+#include <google/protobuf/io/coded_stream.h>
+#include <google/protobuf/arena.h>
+#include <google/protobuf/arenastring.h>
+#include <google/protobuf/generated_message_table_driven.h>
+#include <google/protobuf/generated_message_util.h>
+#include <google/protobuf/inlined_string_field.h>
+#include <google/protobuf/metadata.h>
+#include <google/protobuf/message.h>
+#include <google/protobuf/repeated_field.h>  // IWYU pragma: export
+#include <google/protobuf/extension_set.h>  // IWYU pragma: export
+#include <google/protobuf/map.h>  // IWYU pragma: export
+#include <google/protobuf/map_entry.h>
+#include <google/protobuf/map_field_inl.h>
+#include <google/protobuf/unknown_field_set.h>
+// @@protoc_insertion_point(includes)
+#include <google/protobuf/port_def.inc>
+#define PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fprotobuf_2fcluster_2eproto
+
+// Internal implementation detail -- do not use these members.
+struct TableStruct_tensorflow_2fcore_2fprotobuf_2fcluster_2eproto {
+  static const ::google::protobuf::internal::ParseTableField entries[]
+    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
+  static const ::google::protobuf::internal::AuxillaryParseTableField aux[]
+    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
+  static const ::google::protobuf::internal::ParseTable schema[3]
+    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
+  static const ::google::protobuf::internal::FieldMetadata field_metadata[];
+  static const ::google::protobuf::internal::SerializationTable serialization_table[];
+  static const ::google::protobuf::uint32 offsets[];
+};
+void AddDescriptors_tensorflow_2fcore_2fprotobuf_2fcluster_2eproto();
+namespace tensorflow {
+class ClusterDef;
+class ClusterDefDefaultTypeInternal;
+extern ClusterDefDefaultTypeInternal _ClusterDef_default_instance_;
+class JobDef;
+class JobDefDefaultTypeInternal;
+extern JobDefDefaultTypeInternal _JobDef_default_instance_;
+class JobDef_TasksEntry_DoNotUse;
+class JobDef_TasksEntry_DoNotUseDefaultTypeInternal;
+extern JobDef_TasksEntry_DoNotUseDefaultTypeInternal _JobDef_TasksEntry_DoNotUse_default_instance_;
+}  // namespace tensorflow
+namespace google {
+namespace protobuf {
+template<> ::tensorflow::ClusterDef* Arena::CreateMaybeMessage<::tensorflow::ClusterDef>(Arena*);
+template<> ::tensorflow::JobDef* Arena::CreateMaybeMessage<::tensorflow::JobDef>(Arena*);
+template<> ::tensorflow::JobDef_TasksEntry_DoNotUse* Arena::CreateMaybeMessage<::tensorflow::JobDef_TasksEntry_DoNotUse>(Arena*);
+}  // namespace protobuf
+}  // namespace google
+namespace tensorflow {
+
+// ===================================================================
+
+class JobDef_TasksEntry_DoNotUse : public ::google::protobuf::internal::MapEntry<JobDef_TasksEntry_DoNotUse, 
+    ::google::protobuf::int32, ::std::string,
+    ::google::protobuf::internal::WireFormatLite::TYPE_INT32,
+    ::google::protobuf::internal::WireFormatLite::TYPE_STRING,
+    0 > {
+public:
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+static bool _ParseMap(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  typedef ::google::protobuf::internal::MapEntry<JobDef_TasksEntry_DoNotUse, 
+    ::google::protobuf::int32, ::std::string,
+    ::google::protobuf::internal::WireFormatLite::TYPE_INT32,
+    ::google::protobuf::internal::WireFormatLite::TYPE_STRING,
+    0 > SuperType;
+  JobDef_TasksEntry_DoNotUse();
+  JobDef_TasksEntry_DoNotUse(::google::protobuf::Arena* arena);
+  void MergeFrom(const JobDef_TasksEntry_DoNotUse& other);
+  static const JobDef_TasksEntry_DoNotUse* internal_default_instance() { return reinterpret_cast<const JobDef_TasksEntry_DoNotUse*>(&_JobDef_TasksEntry_DoNotUse_default_instance_); }
+  void MergeFrom(const ::google::protobuf::Message& other) final;
+  ::google::protobuf::Metadata GetMetadata() const;
+};
+
+// -------------------------------------------------------------------
+
+class JobDef : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.JobDef) */ {
+ public:
+  JobDef();
+  virtual ~JobDef();
+
+  JobDef(const JobDef& from);
+
+  inline JobDef& operator=(const JobDef& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  JobDef(JobDef&& from) noexcept
+    : JobDef() {
+    *this = ::std::move(from);
+  }
+
+  inline JobDef& operator=(JobDef&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const JobDef& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const JobDef* internal_default_instance() {
+    return reinterpret_cast<const JobDef*>(
+               &_JobDef_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    1;
+
+  void UnsafeArenaSwap(JobDef* other);
+  void Swap(JobDef* other);
+  friend void swap(JobDef& a, JobDef& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline JobDef* New() const final {
+    return CreateMaybeMessage<JobDef>(NULL);
+  }
+
+  JobDef* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<JobDef>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const JobDef& from);
+  void MergeFrom(const JobDef& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(JobDef* other);
+  protected:
+  explicit JobDef(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+
+  // accessors -------------------------------------------------------
+
+  // map<int32, string> tasks = 2;
+  int tasks_size() const;
+  void clear_tasks();
+  static const int kTasksFieldNumber = 2;
+  const ::google::protobuf::Map< ::google::protobuf::int32, ::std::string >&
+      tasks() const;
+  ::google::protobuf::Map< ::google::protobuf::int32, ::std::string >*
+      mutable_tasks();
+
+  // string name = 1;
+  void clear_name();
+  static const int kNameFieldNumber = 1;
+  const ::std::string& name() const;
+  void set_name(const ::std::string& value);
+  #if LANG_CXX11
+  void set_name(::std::string&& value);
+  #endif
+  void set_name(const char* value);
+  void set_name(const char* value, size_t size);
+  ::std::string* mutable_name();
+  ::std::string* release_name();
+  void set_allocated_name(::std::string* name);
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  ::std::string* unsafe_arena_release_name();
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  void unsafe_arena_set_allocated_name(
+      ::std::string* name);
+
+  // @@protoc_insertion_point(class_scope:tensorflow.JobDef)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  ::google::protobuf::internal::MapField<
+      JobDef_TasksEntry_DoNotUse,
+      ::google::protobuf::int32, ::std::string,
+      ::google::protobuf::internal::WireFormatLite::TYPE_INT32,
+      ::google::protobuf::internal::WireFormatLite::TYPE_STRING,
+      0 > tasks_;
+  ::google::protobuf::internal::ArenaStringPtr name_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fprotobuf_2fcluster_2eproto;
+};
+// -------------------------------------------------------------------
+
+class ClusterDef : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.ClusterDef) */ {
+ public:
+  ClusterDef();
+  virtual ~ClusterDef();
+
+  ClusterDef(const ClusterDef& from);
+
+  inline ClusterDef& operator=(const ClusterDef& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  ClusterDef(ClusterDef&& from) noexcept
+    : ClusterDef() {
+    *this = ::std::move(from);
+  }
+
+  inline ClusterDef& operator=(ClusterDef&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const ClusterDef& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const ClusterDef* internal_default_instance() {
+    return reinterpret_cast<const ClusterDef*>(
+               &_ClusterDef_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    2;
+
+  void UnsafeArenaSwap(ClusterDef* other);
+  void Swap(ClusterDef* other);
+  friend void swap(ClusterDef& a, ClusterDef& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline ClusterDef* New() const final {
+    return CreateMaybeMessage<ClusterDef>(NULL);
+  }
+
+  ClusterDef* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<ClusterDef>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const ClusterDef& from);
+  void MergeFrom(const ClusterDef& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(ClusterDef* other);
+  protected:
+  explicit ClusterDef(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // repeated .tensorflow.JobDef job = 1;
+  int job_size() const;
+  void clear_job();
+  static const int kJobFieldNumber = 1;
+  ::tensorflow::JobDef* mutable_job(int index);
+  ::google::protobuf::RepeatedPtrField< ::tensorflow::JobDef >*
+      mutable_job();
+  const ::tensorflow::JobDef& job(int index) const;
+  ::tensorflow::JobDef* add_job();
+  const ::google::protobuf::RepeatedPtrField< ::tensorflow::JobDef >&
+      job() const;
+
+  // @@protoc_insertion_point(class_scope:tensorflow.ClusterDef)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  ::google::protobuf::RepeatedPtrField< ::tensorflow::JobDef > job_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fprotobuf_2fcluster_2eproto;
+};
+// ===================================================================
+
+
+// ===================================================================
+
+#ifdef __GNUC__
+  #pragma GCC diagnostic push
+  #pragma GCC diagnostic ignored "-Wstrict-aliasing"
+#endif  // __GNUC__
+// -------------------------------------------------------------------
+
+// JobDef
+
+// string name = 1;
+inline void JobDef::clear_name() {
+  name_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline const ::std::string& JobDef::name() const {
+  // @@protoc_insertion_point(field_get:tensorflow.JobDef.name)
+  return name_.Get();
+}
+inline void JobDef::set_name(const ::std::string& value) {
+  
+  name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set:tensorflow.JobDef.name)
+}
+#if LANG_CXX11
+inline void JobDef::set_name(::std::string&& value) {
+  
+  name_.Set(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.JobDef.name)
+}
+#endif
+inline void JobDef::set_name(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
+              GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_char:tensorflow.JobDef.name)
+}
+inline void JobDef::set_name(const char* value,
+    size_t size) {
+  
+  name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
+      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.JobDef.name)
+}
+inline ::std::string* JobDef::mutable_name() {
+  
+  // @@protoc_insertion_point(field_mutable:tensorflow.JobDef.name)
+  return name_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline ::std::string* JobDef::release_name() {
+  // @@protoc_insertion_point(field_release:tensorflow.JobDef.name)
+  
+  return name_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline void JobDef::set_allocated_name(::std::string* name) {
+  if (name != NULL) {
+    
+  } else {
+    
+  }
+  name_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), name,
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.JobDef.name)
+}
+inline ::std::string* JobDef::unsafe_arena_release_name() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.JobDef.name)
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  
+  return name_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      GetArenaNoVirtual());
+}
+inline void JobDef::unsafe_arena_set_allocated_name(
+    ::std::string* name) {
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (name != NULL) {
+    
+  } else {
+    
+  }
+  name_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      name, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.JobDef.name)
+}
+
+// map<int32, string> tasks = 2;
+inline int JobDef::tasks_size() const {
+  return tasks_.size();
+}
+inline void JobDef::clear_tasks() {
+  tasks_.Clear();
+}
+inline const ::google::protobuf::Map< ::google::protobuf::int32, ::std::string >&
+JobDef::tasks() const {
+  // @@protoc_insertion_point(field_map:tensorflow.JobDef.tasks)
+  return tasks_.GetMap();
+}
+inline ::google::protobuf::Map< ::google::protobuf::int32, ::std::string >*
+JobDef::mutable_tasks() {
+  // @@protoc_insertion_point(field_mutable_map:tensorflow.JobDef.tasks)
+  return tasks_.MutableMap();
+}
+
+// -------------------------------------------------------------------
+
+// ClusterDef
+
+// repeated .tensorflow.JobDef job = 1;
+inline int ClusterDef::job_size() const {
+  return job_.size();
+}
+inline void ClusterDef::clear_job() {
+  job_.Clear();
+}
+inline ::tensorflow::JobDef* ClusterDef::mutable_job(int index) {
+  // @@protoc_insertion_point(field_mutable:tensorflow.ClusterDef.job)
+  return job_.Mutable(index);
+}
+inline ::google::protobuf::RepeatedPtrField< ::tensorflow::JobDef >*
+ClusterDef::mutable_job() {
+  // @@protoc_insertion_point(field_mutable_list:tensorflow.ClusterDef.job)
+  return &job_;
+}
+inline const ::tensorflow::JobDef& ClusterDef::job(int index) const {
+  // @@protoc_insertion_point(field_get:tensorflow.ClusterDef.job)
+  return job_.Get(index);
+}
+inline ::tensorflow::JobDef* ClusterDef::add_job() {
+  // @@protoc_insertion_point(field_add:tensorflow.ClusterDef.job)
+  return job_.Add();
+}
+inline const ::google::protobuf::RepeatedPtrField< ::tensorflow::JobDef >&
+ClusterDef::job() const {
+  // @@protoc_insertion_point(field_list:tensorflow.ClusterDef.job)
+  return job_;
+}
+
+#ifdef __GNUC__
+  #pragma GCC diagnostic pop
+#endif  // __GNUC__
+// -------------------------------------------------------------------
+
+// -------------------------------------------------------------------
+
+
+// @@protoc_insertion_point(namespace_scope)
+
+}  // namespace tensorflow
+
+// @@protoc_insertion_point(global_scope)
+
+#include <google/protobuf/port_undef.inc>
+#endif  // PROTOBUF_INCLUDED_tensorflow_2fcore_2fprotobuf_2fcluster_2eproto
diff --git a/tensorflow/core/protobuf/cluster.proto b/tensorflow/core/protobuf/cluster.proto
new file mode 100644 (file)
index 0000000..c696d34
--- /dev/null
@@ -0,0 +1,83 @@
+/* Copyright 2016 The TensorFlow Authors. All Rights Reserved.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+==============================================================================*/
+
+syntax = "proto3";
+
+package tensorflow;
+option cc_enable_arenas = true;
+option java_outer_classname = "ClusterProtos";
+option java_multiple_files = true;
+option java_package = "org.tensorflow.distruntime";
+option go_package = "github.com/tensorflow/tensorflow/tensorflow/go/core/protobuf";
+
+// This file contains protos to be used when defining a TensorFlow
+// cluster.
+//
+// EXAMPLES
+// --------
+//
+// 1. A single-process cluster, containing "/job:local/task:0".
+//
+//    Cluster:
+//      job { name: 'local' tasks { key: 0 value: 'localhost:2222' } }
+//
+//    Server:
+//      cluster { $CLUSTER } job_name: 'local' task_index: 0
+//
+// 2. A two-process cluster, containing "/job:local/task:{0,1}".
+//
+//    Cluster:
+//      job { name: 'local' tasks { key: 0 value: 'localhost:2222' }
+//                          tasks { key: 1 value: 'localhost:2223' } }
+//
+//    Servers:
+//      cluster { $CLUSTER } job_name: 'local' task_index: 0
+//      cluster { $CLUSTER } job_name: 'local' task_index: 1
+//
+// 3. A two-job cluster, containing "/job:worker/task:{0,1,2}" and
+//    "/job:ps/task:{0,1}".
+//
+//    Cluster:
+//      job { name: 'worker' tasks { key: 0 value: 'worker1:2222' }
+//                           tasks { key: 1 value: 'worker2:2222' }
+//                           tasks { key: 2 value: 'worker3:2222' } }
+//      job { name: 'ps'     tasks { key: 0 value: 'ps0:2222' }
+//                           tasks { key: 1 value: 'ps1:2222' } }
+//
+//    Servers:
+//      cluster { $CLUSTER } job_name: 'worker' task_index: 0
+//      cluster { $CLUSTER } job_name: 'worker' task_index: 1
+//      cluster { $CLUSTER } job_name: 'worker' task_index: 2
+//      cluster { $CLUSTER } job_name: 'ps'     task_index: 0
+//      cluster { $CLUSTER } job_name: 'ps'     task_index: 1
+
+// Defines a single job in a TensorFlow cluster.
+message JobDef {
+  // The name of this job.
+  string name = 1;
+
+  // Mapping from task ID to "hostname:port" string.
+  //
+  // If the `name` field contains "worker", and the `tasks` map contains a
+  // mapping from 7 to "example.org:2222", then the device prefix
+  // "/job:worker/task:7" will be assigned to "example.org:2222".
+  map<int32, string> tasks = 2;
+}
+
+// Defines a TensorFlow cluster as a set of jobs.
+message ClusterDef {
+  // The jobs that comprise the cluster.
+  repeated JobDef job = 1;
+}
diff --git a/tensorflow/core/protobuf/config.pb.cc b/tensorflow/core/protobuf/config.pb.cc
new file mode 100644 (file)
index 0000000..8694aca
--- /dev/null
@@ -0,0 +1,8305 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: tensorflow/core/protobuf/config.proto
+
+#include "tensorflow/core/protobuf/config.pb.h"
+
+#include <algorithm>
+
+#include <google/protobuf/stubs/common.h>
+#include <google/protobuf/io/coded_stream.h>
+#include <google/protobuf/extension_set.h>
+#include <google/protobuf/wire_format_lite_inl.h>
+#include <google/protobuf/descriptor.h>
+#include <google/protobuf/generated_message_reflection.h>
+#include <google/protobuf/reflection_ops.h>
+#include <google/protobuf/wire_format.h>
+// @@protoc_insertion_point(includes)
+#include <google/protobuf/port_def.inc>
+
+extern PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fframework_2fcost_5fgraph_2eproto ::google::protobuf::internal::SCCInfo<1> scc_info_CostGraphDef_tensorflow_2fcore_2fframework_2fcost_5fgraph_2eproto;
+extern PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fframework_2fgraph_2eproto ::google::protobuf::internal::SCCInfo<3> scc_info_GraphDef_tensorflow_2fcore_2fframework_2fgraph_2eproto;
+extern PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fframework_2fstep_5fstats_2eproto ::google::protobuf::internal::SCCInfo<1> scc_info_StepStats_tensorflow_2fcore_2fframework_2fstep_5fstats_2eproto;
+extern PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fprotobuf_2fcluster_2eproto ::google::protobuf::internal::SCCInfo<1> scc_info_ClusterDef_tensorflow_2fcore_2fprotobuf_2fcluster_2eproto;
+extern PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_ConfigProto_DeviceCountEntry_DoNotUse_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto;
+extern PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_ConfigProto_Experimental_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto;
+extern PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_GPUOptions_Experimental_VirtualDevices_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto;
+extern PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_OptimizerOptions_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto;
+extern PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_RPCOptions_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto;
+extern PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_RunOptions_Experimental_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto;
+extern PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_TensorConnection_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto;
+extern PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_ThreadPoolOptionProto_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto;
+extern PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto ::google::protobuf::internal::SCCInfo<1> scc_info_GPUOptions_Experimental_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto;
+extern PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto ::google::protobuf::internal::SCCInfo<1> scc_info_GPUOptions_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto;
+extern PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto ::google::protobuf::internal::SCCInfo<2> scc_info_GraphOptions_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto;
+extern PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto ::google::protobuf::internal::SCCInfo<2> scc_info_RunOptions_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto;
+extern PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fprotobuf_2fdebug_2eproto ::google::protobuf::internal::SCCInfo<1> scc_info_DebugOptions_tensorflow_2fcore_2fprotobuf_2fdebug_2eproto;
+extern PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fprotobuf_2frewriter_5fconfig_2eproto ::google::protobuf::internal::SCCInfo<3> scc_info_RewriterConfig_tensorflow_2fcore_2fprotobuf_2frewriter_5fconfig_2eproto;
+namespace tensorflow {
+class GPUOptions_Experimental_VirtualDevicesDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<GPUOptions_Experimental_VirtualDevices> _instance;
+} _GPUOptions_Experimental_VirtualDevices_default_instance_;
+class GPUOptions_ExperimentalDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<GPUOptions_Experimental> _instance;
+} _GPUOptions_Experimental_default_instance_;
+class GPUOptionsDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<GPUOptions> _instance;
+} _GPUOptions_default_instance_;
+class OptimizerOptionsDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<OptimizerOptions> _instance;
+} _OptimizerOptions_default_instance_;
+class GraphOptionsDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<GraphOptions> _instance;
+} _GraphOptions_default_instance_;
+class ThreadPoolOptionProtoDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<ThreadPoolOptionProto> _instance;
+} _ThreadPoolOptionProto_default_instance_;
+class RPCOptionsDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<RPCOptions> _instance;
+} _RPCOptions_default_instance_;
+class ConfigProto_DeviceCountEntry_DoNotUseDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<ConfigProto_DeviceCountEntry_DoNotUse> _instance;
+} _ConfigProto_DeviceCountEntry_DoNotUse_default_instance_;
+class ConfigProto_ExperimentalDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<ConfigProto_Experimental> _instance;
+} _ConfigProto_Experimental_default_instance_;
+class ConfigProtoDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<ConfigProto> _instance;
+} _ConfigProto_default_instance_;
+class RunOptions_ExperimentalDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<RunOptions_Experimental> _instance;
+} _RunOptions_Experimental_default_instance_;
+class RunOptionsDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<RunOptions> _instance;
+} _RunOptions_default_instance_;
+class RunMetadataDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<RunMetadata> _instance;
+} _RunMetadata_default_instance_;
+class TensorConnectionDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<TensorConnection> _instance;
+} _TensorConnection_default_instance_;
+class CallableOptionsDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<CallableOptions> _instance;
+} _CallableOptions_default_instance_;
+}  // namespace tensorflow
+static void InitDefaultsGPUOptions_Experimental_VirtualDevices_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_GPUOptions_Experimental_VirtualDevices_default_instance_;
+    new (ptr) ::tensorflow::GPUOptions_Experimental_VirtualDevices();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::GPUOptions_Experimental_VirtualDevices::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<0> scc_info_GPUOptions_Experimental_VirtualDevices_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsGPUOptions_Experimental_VirtualDevices_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto}, {}};
+
+static void InitDefaultsGPUOptions_Experimental_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_GPUOptions_Experimental_default_instance_;
+    new (ptr) ::tensorflow::GPUOptions_Experimental();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::GPUOptions_Experimental::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<1> scc_info_GPUOptions_Experimental_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsGPUOptions_Experimental_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto}, {
+      &scc_info_GPUOptions_Experimental_VirtualDevices_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto.base,}};
+
+static void InitDefaultsGPUOptions_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_GPUOptions_default_instance_;
+    new (ptr) ::tensorflow::GPUOptions();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::GPUOptions::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<1> scc_info_GPUOptions_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsGPUOptions_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto}, {
+      &scc_info_GPUOptions_Experimental_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto.base,}};
+
+static void InitDefaultsOptimizerOptions_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_OptimizerOptions_default_instance_;
+    new (ptr) ::tensorflow::OptimizerOptions();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::OptimizerOptions::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<0> scc_info_OptimizerOptions_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsOptimizerOptions_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto}, {}};
+
+static void InitDefaultsGraphOptions_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_GraphOptions_default_instance_;
+    new (ptr) ::tensorflow::GraphOptions();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::GraphOptions::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<2> scc_info_GraphOptions_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 2, InitDefaultsGraphOptions_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto}, {
+      &scc_info_OptimizerOptions_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto.base,
+      &scc_info_RewriterConfig_tensorflow_2fcore_2fprotobuf_2frewriter_5fconfig_2eproto.base,}};
+
+static void InitDefaultsThreadPoolOptionProto_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_ThreadPoolOptionProto_default_instance_;
+    new (ptr) ::tensorflow::ThreadPoolOptionProto();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::ThreadPoolOptionProto::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<0> scc_info_ThreadPoolOptionProto_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsThreadPoolOptionProto_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto}, {}};
+
+static void InitDefaultsRPCOptions_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_RPCOptions_default_instance_;
+    new (ptr) ::tensorflow::RPCOptions();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::RPCOptions::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<0> scc_info_RPCOptions_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsRPCOptions_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto}, {}};
+
+static void InitDefaultsConfigProto_DeviceCountEntry_DoNotUse_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_ConfigProto_DeviceCountEntry_DoNotUse_default_instance_;
+    new (ptr) ::tensorflow::ConfigProto_DeviceCountEntry_DoNotUse();
+  }
+  ::tensorflow::ConfigProto_DeviceCountEntry_DoNotUse::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<0> scc_info_ConfigProto_DeviceCountEntry_DoNotUse_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsConfigProto_DeviceCountEntry_DoNotUse_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto}, {}};
+
+static void InitDefaultsConfigProto_Experimental_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_ConfigProto_Experimental_default_instance_;
+    new (ptr) ::tensorflow::ConfigProto_Experimental();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::ConfigProto_Experimental::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<0> scc_info_ConfigProto_Experimental_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsConfigProto_Experimental_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto}, {}};
+
+static void InitDefaultsConfigProto_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_ConfigProto_default_instance_;
+    new (ptr) ::tensorflow::ConfigProto();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::ConfigProto::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<7> scc_info_ConfigProto_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 7, InitDefaultsConfigProto_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto}, {
+      &scc_info_ConfigProto_DeviceCountEntry_DoNotUse_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto.base,
+      &scc_info_ThreadPoolOptionProto_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto.base,
+      &scc_info_GPUOptions_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto.base,
+      &scc_info_GraphOptions_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto.base,
+      &scc_info_RPCOptions_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto.base,
+      &scc_info_ClusterDef_tensorflow_2fcore_2fprotobuf_2fcluster_2eproto.base,
+      &scc_info_ConfigProto_Experimental_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto.base,}};
+
+static void InitDefaultsRunOptions_Experimental_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_RunOptions_Experimental_default_instance_;
+    new (ptr) ::tensorflow::RunOptions_Experimental();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::RunOptions_Experimental::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<0> scc_info_RunOptions_Experimental_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsRunOptions_Experimental_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto}, {}};
+
+static void InitDefaultsRunOptions_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_RunOptions_default_instance_;
+    new (ptr) ::tensorflow::RunOptions();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::RunOptions::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<2> scc_info_RunOptions_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 2, InitDefaultsRunOptions_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto}, {
+      &scc_info_DebugOptions_tensorflow_2fcore_2fprotobuf_2fdebug_2eproto.base,
+      &scc_info_RunOptions_Experimental_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto.base,}};
+
+static void InitDefaultsRunMetadata_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_RunMetadata_default_instance_;
+    new (ptr) ::tensorflow::RunMetadata();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::RunMetadata::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<3> scc_info_RunMetadata_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 3, InitDefaultsRunMetadata_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto}, {
+      &scc_info_StepStats_tensorflow_2fcore_2fframework_2fstep_5fstats_2eproto.base,
+      &scc_info_CostGraphDef_tensorflow_2fcore_2fframework_2fcost_5fgraph_2eproto.base,
+      &scc_info_GraphDef_tensorflow_2fcore_2fframework_2fgraph_2eproto.base,}};
+
+static void InitDefaultsTensorConnection_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_TensorConnection_default_instance_;
+    new (ptr) ::tensorflow::TensorConnection();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::TensorConnection::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<0> scc_info_TensorConnection_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsTensorConnection_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto}, {}};
+
+static void InitDefaultsCallableOptions_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_CallableOptions_default_instance_;
+    new (ptr) ::tensorflow::CallableOptions();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::CallableOptions::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<2> scc_info_CallableOptions_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 2, InitDefaultsCallableOptions_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto}, {
+      &scc_info_RunOptions_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto.base,
+      &scc_info_TensorConnection_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto.base,}};
+
+void InitDefaults_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto() {
+  ::google::protobuf::internal::InitSCC(&scc_info_GPUOptions_Experimental_VirtualDevices_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_GPUOptions_Experimental_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_GPUOptions_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_OptimizerOptions_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_GraphOptions_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_ThreadPoolOptionProto_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_RPCOptions_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_ConfigProto_DeviceCountEntry_DoNotUse_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_ConfigProto_Experimental_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_ConfigProto_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_RunOptions_Experimental_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_RunOptions_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_RunMetadata_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_TensorConnection_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_CallableOptions_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto.base);
+}
+
+::google::protobuf::Metadata file_level_metadata_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto[15];
+const ::google::protobuf::EnumDescriptor* file_level_enum_descriptors_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto[3];
+constexpr ::google::protobuf::ServiceDescriptor const** file_level_service_descriptors_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto = nullptr;
+
+const ::google::protobuf::uint32 TableStruct_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto::offsets[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = {
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::GPUOptions_Experimental_VirtualDevices, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::GPUOptions_Experimental_VirtualDevices, memory_limit_mb_),
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::GPUOptions_Experimental, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::GPUOptions_Experimental, virtual_devices_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::GPUOptions_Experimental, use_unified_memory_),
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::GPUOptions, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::GPUOptions, per_process_gpu_memory_fraction_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::GPUOptions, allow_growth_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::GPUOptions, allocator_type_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::GPUOptions, deferred_deletion_bytes_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::GPUOptions, visible_device_list_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::GPUOptions, polling_active_delay_usecs_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::GPUOptions, polling_inactive_delay_msecs_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::GPUOptions, force_gpu_compatible_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::GPUOptions, experimental_),
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::OptimizerOptions, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::OptimizerOptions, do_common_subexpression_elimination_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::OptimizerOptions, do_constant_folding_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::OptimizerOptions, max_folded_constant_in_bytes_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::OptimizerOptions, do_function_inlining_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::OptimizerOptions, opt_level_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::OptimizerOptions, global_jit_level_),
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::GraphOptions, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::GraphOptions, enable_recv_scheduling_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::GraphOptions, optimizer_options_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::GraphOptions, build_cost_model_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::GraphOptions, build_cost_model_after_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::GraphOptions, infer_shapes_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::GraphOptions, place_pruned_graph_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::GraphOptions, enable_bfloat16_sendrecv_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::GraphOptions, timeline_step_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::GraphOptions, rewrite_options_),
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::ThreadPoolOptionProto, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::ThreadPoolOptionProto, num_threads_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::ThreadPoolOptionProto, global_name_),
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::RPCOptions, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::RPCOptions, use_rpc_for_inprocess_master_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::ConfigProto_DeviceCountEntry_DoNotUse, _has_bits_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::ConfigProto_DeviceCountEntry_DoNotUse, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::ConfigProto_DeviceCountEntry_DoNotUse, key_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::ConfigProto_DeviceCountEntry_DoNotUse, value_),
+  0,
+  1,
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::ConfigProto_Experimental, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::ConfigProto_Experimental, collective_group_leader_),
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::ConfigProto, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::ConfigProto, device_count_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::ConfigProto, intra_op_parallelism_threads_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::ConfigProto, inter_op_parallelism_threads_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::ConfigProto, use_per_session_threads_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::ConfigProto, session_inter_op_thread_pool_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::ConfigProto, placement_period_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::ConfigProto, device_filters_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::ConfigProto, gpu_options_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::ConfigProto, allow_soft_placement_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::ConfigProto, log_device_placement_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::ConfigProto, graph_options_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::ConfigProto, operation_timeout_in_ms_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::ConfigProto, rpc_options_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::ConfigProto, cluster_def_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::ConfigProto, isolate_session_state_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::ConfigProto, experimental_),
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::RunOptions_Experimental, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::RunOptions_Experimental, collective_graph_key_),
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::RunOptions, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::RunOptions, trace_level_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::RunOptions, timeout_in_ms_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::RunOptions, inter_op_thread_pool_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::RunOptions, output_partition_graphs_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::RunOptions, debug_options_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::RunOptions, report_tensor_allocations_upon_oom_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::RunOptions, experimental_),
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::RunMetadata, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::RunMetadata, step_stats_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::RunMetadata, cost_graph_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::RunMetadata, partition_graphs_),
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::TensorConnection, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::TensorConnection, from_tensor_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::TensorConnection, to_tensor_),
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::CallableOptions, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::CallableOptions, feed_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::CallableOptions, fetch_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::CallableOptions, target_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::CallableOptions, run_options_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::CallableOptions, tensor_connection_),
+};
+static const ::google::protobuf::internal::MigrationSchema schemas[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = {
+  { 0, -1, sizeof(::tensorflow::GPUOptions_Experimental_VirtualDevices)},
+  { 6, -1, sizeof(::tensorflow::GPUOptions_Experimental)},
+  { 13, -1, sizeof(::tensorflow::GPUOptions)},
+  { 27, -1, sizeof(::tensorflow::OptimizerOptions)},
+  { 38, -1, sizeof(::tensorflow::GraphOptions)},
+  { 52, -1, sizeof(::tensorflow::ThreadPoolOptionProto)},
+  { 59, -1, sizeof(::tensorflow::RPCOptions)},
+  { 65, 72, sizeof(::tensorflow::ConfigProto_DeviceCountEntry_DoNotUse)},
+  { 74, -1, sizeof(::tensorflow::ConfigProto_Experimental)},
+  { 80, -1, sizeof(::tensorflow::ConfigProto)},
+  { 101, -1, sizeof(::tensorflow::RunOptions_Experimental)},
+  { 107, -1, sizeof(::tensorflow::RunOptions)},
+  { 119, -1, sizeof(::tensorflow::RunMetadata)},
+  { 127, -1, sizeof(::tensorflow::TensorConnection)},
+  { 134, -1, sizeof(::tensorflow::CallableOptions)},
+};
+
+static ::google::protobuf::Message const * const file_default_instances[] = {
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_GPUOptions_Experimental_VirtualDevices_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_GPUOptions_Experimental_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_GPUOptions_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_OptimizerOptions_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_GraphOptions_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_ThreadPoolOptionProto_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_RPCOptions_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_ConfigProto_DeviceCountEntry_DoNotUse_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_ConfigProto_Experimental_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_ConfigProto_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_RunOptions_Experimental_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_RunOptions_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_RunMetadata_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_TensorConnection_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_CallableOptions_default_instance_),
+};
+
+::google::protobuf::internal::AssignDescriptorsTable assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto = {
+  {}, AddDescriptors_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto, "tensorflow/core/protobuf/config.proto", schemas,
+  file_default_instances, TableStruct_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto::offsets,
+  file_level_metadata_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto, 15, file_level_enum_descriptors_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto, file_level_service_descriptors_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto,
+};
+
+::google::protobuf::internal::DescriptorTable descriptor_table_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto = {
+  false, InitDefaults_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto, 
+  "\n%tensorflow/core/protobuf/config.proto\022"
+  "\ntensorflow\032*tensorflow/core/framework/c"
+  "ost_graph.proto\032%tensorflow/core/framewo"
+  "rk/graph.proto\032*tensorflow/core/framewor"
+  "k/step_stats.proto\032$tensorflow/core/prot"
+  "obuf/debug.proto\032&tensorflow/core/protob"
+  "uf/cluster.proto\032.tensorflow/core/protob"
+  "uf/rewriter_config.proto\"\351\003\n\nGPUOptions\022"
+  "\'\n\037per_process_gpu_memory_fraction\030\001 \001(\001"
+  "\022\024\n\014allow_growth\030\004 \001(\010\022\026\n\016allocator_type"
+  "\030\002 \001(\t\022\037\n\027deferred_deletion_bytes\030\003 \001(\003\022"
+  "\033\n\023visible_device_list\030\005 \001(\t\022\"\n\032polling_"
+  "active_delay_usecs\030\006 \001(\005\022$\n\034polling_inac"
+  "tive_delay_msecs\030\007 \001(\005\022\034\n\024force_gpu_comp"
+  "atible\030\010 \001(\010\0229\n\014experimental\030\t \001(\0132#.ten"
+  "sorflow.GPUOptions.Experimental\032\242\001\n\014Expe"
+  "rimental\022K\n\017virtual_devices\030\001 \003(\01322.tens"
+  "orflow.GPUOptions.Experimental.VirtualDe"
+  "vices\022\032\n\022use_unified_memory\030\002 \001(\010\032)\n\016Vir"
+  "tualDevices\022\027\n\017memory_limit_mb\030\001 \003(\002\"\205\003\n"
+  "\020OptimizerOptions\022+\n#do_common_subexpres"
+  "sion_elimination\030\001 \001(\010\022\033\n\023do_constant_fo"
+  "lding\030\002 \001(\010\022$\n\034max_folded_constant_in_by"
+  "tes\030\006 \001(\003\022\034\n\024do_function_inlining\030\004 \001(\010\022"
+  "5\n\topt_level\030\003 \001(\0162\".tensorflow.Optimize"
+  "rOptions.Level\022E\n\020global_jit_level\030\005 \001(\016"
+  "2+.tensorflow.OptimizerOptions.GlobalJit"
+  "Level\" \n\005Level\022\006\n\002L1\020\000\022\017\n\002L0\020\377\377\377\377\377\377\377\377\377\001\""
+  "C\n\016GlobalJitLevel\022\013\n\007DEFAULT\020\000\022\020\n\003OFF\020\377\377"
+  "\377\377\377\377\377\377\377\001\022\010\n\004ON_1\020\001\022\010\n\004ON_2\020\002\"\356\002\n\014GraphOp"
+  "tions\022\036\n\026enable_recv_scheduling\030\002 \001(\010\0227\n"
+  "\021optimizer_options\030\003 \001(\0132\034.tensorflow.Op"
+  "timizerOptions\022\030\n\020build_cost_model\030\004 \001(\003"
+  "\022\036\n\026build_cost_model_after\030\t \001(\003\022\024\n\014infe"
+  "r_shapes\030\005 \001(\010\022\032\n\022place_pruned_graph\030\006 \001"
+  "(\010\022 \n\030enable_bfloat16_sendrecv\030\007 \001(\010\022\025\n\r"
+  "timeline_step\030\010 \001(\005\0223\n\017rewrite_options\030\n"
+  " \001(\0132\032.tensorflow.RewriterConfigJ\004\010\001\020\002R%"
+  "skip_common_subexpression_elimination\"A\n"
+  "\025ThreadPoolOptionProto\022\023\n\013num_threads\030\001 "
+  "\001(\005\022\023\n\013global_name\030\002 \001(\t\"2\n\nRPCOptions\022$"
+  "\n\034use_rpc_for_inprocess_master\030\001 \001(\010\"\212\006\n"
+  "\013ConfigProto\022>\n\014device_count\030\001 \003(\0132(.ten"
+  "sorflow.ConfigProto.DeviceCountEntry\022$\n\034"
+  "intra_op_parallelism_threads\030\002 \001(\005\022$\n\034in"
+  "ter_op_parallelism_threads\030\005 \001(\005\022\037\n\027use_"
+  "per_session_threads\030\t \001(\010\022G\n\034session_int"
+  "er_op_thread_pool\030\014 \003(\0132!.tensorflow.Thr"
+  "eadPoolOptionProto\022\030\n\020placement_period\030\003"
+  " \001(\005\022\026\n\016device_filters\030\004 \003(\t\022+\n\013gpu_opti"
+  "ons\030\006 \001(\0132\026.tensorflow.GPUOptions\022\034\n\024all"
+  "ow_soft_placement\030\007 \001(\010\022\034\n\024log_device_pl"
+  "acement\030\010 \001(\010\022/\n\rgraph_options\030\n \001(\0132\030.t"
+  "ensorflow.GraphOptions\022\037\n\027operation_time"
+  "out_in_ms\030\013 \001(\003\022+\n\013rpc_options\030\r \001(\0132\026.t"
+  "ensorflow.RPCOptions\022+\n\013cluster_def\030\016 \001("
+  "\0132\026.tensorflow.ClusterDef\022\035\n\025isolate_ses"
+  "sion_state\030\017 \001(\010\022:\n\014experimental\030\020 \001(\0132$"
+  ".tensorflow.ConfigProto.Experimental\0322\n\020"
+  "DeviceCountEntry\022\013\n\003key\030\001 \001(\t\022\r\n\005value\030\002"
+  " \001(\005:\0028\001\032/\n\014Experimental\022\037\n\027collective_g"
+  "roup_leader\030\001 \001(\t\"\272\003\n\nRunOptions\0226\n\013trac"
+  "e_level\030\001 \001(\0162!.tensorflow.RunOptions.Tr"
+  "aceLevel\022\025\n\rtimeout_in_ms\030\002 \001(\003\022\034\n\024inter"
+  "_op_thread_pool\030\003 \001(\005\022\037\n\027output_partitio"
+  "n_graphs\030\005 \001(\010\022/\n\rdebug_options\030\006 \001(\0132\030."
+  "tensorflow.DebugOptions\022*\n\"report_tensor"
+  "_allocations_upon_oom\030\007 \001(\010\0229\n\014experimen"
+  "tal\030\010 \001(\0132#.tensorflow.RunOptions.Experi"
+  "mental\032,\n\014Experimental\022\034\n\024collective_gra"
+  "ph_key\030\001 \001(\003\"R\n\nTraceLevel\022\014\n\010NO_TRACE\020\000"
+  "\022\022\n\016SOFTWARE_TRACE\020\001\022\022\n\016HARDWARE_TRACE\020\002"
+  "\022\016\n\nFULL_TRACE\020\003J\004\010\004\020\005\"\226\001\n\013RunMetadata\022)"
+  "\n\nstep_stats\030\001 \001(\0132\025.tensorflow.StepStat"
+  "s\022,\n\ncost_graph\030\002 \001(\0132\030.tensorflow.CostG"
+  "raphDef\022.\n\020partition_graphs\030\003 \003(\0132\024.tens"
+  "orflow.GraphDef\":\n\020TensorConnection\022\023\n\013f"
+  "rom_tensor\030\001 \001(\t\022\021\n\tto_tensor\030\002 \001(\t\"\244\001\n\017"
+  "CallableOptions\022\014\n\004feed\030\001 \003(\t\022\r\n\005fetch\030\002"
+  " \003(\t\022\016\n\006target\030\003 \003(\t\022+\n\013run_options\030\004 \001("
+  "\0132\026.tensorflow.RunOptions\0227\n\021tensor_conn"
+  "ection\030\005 \003(\0132\034.tensorflow.TensorConnecti"
+  "onBk\n\030org.tensorflow.frameworkB\014ConfigPr"
+  "otosP\001Z<github.com/tensorflow/tensorflow"
+  "/tensorflow/go/core/protobuf\370\001\001b\006proto3"
+,
+  "tensorflow/core/protobuf/config.proto", &assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto, 3399,
+};
+
+void AddDescriptors_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto() {
+  static constexpr ::google::protobuf::internal::InitFunc deps[6] =
+  {
+    ::AddDescriptors_tensorflow_2fcore_2fframework_2fcost_5fgraph_2eproto,
+    ::AddDescriptors_tensorflow_2fcore_2fframework_2fgraph_2eproto,
+    ::AddDescriptors_tensorflow_2fcore_2fframework_2fstep_5fstats_2eproto,
+    ::AddDescriptors_tensorflow_2fcore_2fprotobuf_2fdebug_2eproto,
+    ::AddDescriptors_tensorflow_2fcore_2fprotobuf_2fcluster_2eproto,
+    ::AddDescriptors_tensorflow_2fcore_2fprotobuf_2frewriter_5fconfig_2eproto,
+  };
+ ::google::protobuf::internal::AddDescriptors(&descriptor_table_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto, deps, 6);
+}
+
+// Force running AddDescriptors() at dynamic initialization time.
+static bool dynamic_init_dummy_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto = []() { AddDescriptors_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto(); return true; }();
+namespace tensorflow {
+const ::google::protobuf::EnumDescriptor* OptimizerOptions_Level_descriptor() {
+  ::google::protobuf::internal::AssignDescriptors(&assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto);
+  return file_level_enum_descriptors_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto[0];
+}
+bool OptimizerOptions_Level_IsValid(int value) {
+  switch (value) {
+    case -1:
+    case 0:
+      return true;
+    default:
+      return false;
+  }
+}
+
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const OptimizerOptions_Level OptimizerOptions::L1;
+const OptimizerOptions_Level OptimizerOptions::L0;
+const OptimizerOptions_Level OptimizerOptions::Level_MIN;
+const OptimizerOptions_Level OptimizerOptions::Level_MAX;
+const int OptimizerOptions::Level_ARRAYSIZE;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+const ::google::protobuf::EnumDescriptor* OptimizerOptions_GlobalJitLevel_descriptor() {
+  ::google::protobuf::internal::AssignDescriptors(&assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto);
+  return file_level_enum_descriptors_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto[1];
+}
+bool OptimizerOptions_GlobalJitLevel_IsValid(int value) {
+  switch (value) {
+    case -1:
+    case 0:
+    case 1:
+    case 2:
+      return true;
+    default:
+      return false;
+  }
+}
+
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const OptimizerOptions_GlobalJitLevel OptimizerOptions::DEFAULT;
+const OptimizerOptions_GlobalJitLevel OptimizerOptions::OFF;
+const OptimizerOptions_GlobalJitLevel OptimizerOptions::ON_1;
+const OptimizerOptions_GlobalJitLevel OptimizerOptions::ON_2;
+const OptimizerOptions_GlobalJitLevel OptimizerOptions::GlobalJitLevel_MIN;
+const OptimizerOptions_GlobalJitLevel OptimizerOptions::GlobalJitLevel_MAX;
+const int OptimizerOptions::GlobalJitLevel_ARRAYSIZE;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+const ::google::protobuf::EnumDescriptor* RunOptions_TraceLevel_descriptor() {
+  ::google::protobuf::internal::AssignDescriptors(&assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto);
+  return file_level_enum_descriptors_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto[2];
+}
+bool RunOptions_TraceLevel_IsValid(int value) {
+  switch (value) {
+    case 0:
+    case 1:
+    case 2:
+    case 3:
+      return true;
+    default:
+      return false;
+  }
+}
+
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const RunOptions_TraceLevel RunOptions::NO_TRACE;
+const RunOptions_TraceLevel RunOptions::SOFTWARE_TRACE;
+const RunOptions_TraceLevel RunOptions::HARDWARE_TRACE;
+const RunOptions_TraceLevel RunOptions::FULL_TRACE;
+const RunOptions_TraceLevel RunOptions::TraceLevel_MIN;
+const RunOptions_TraceLevel RunOptions::TraceLevel_MAX;
+const int RunOptions::TraceLevel_ARRAYSIZE;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+// ===================================================================
+
+void GPUOptions_Experimental_VirtualDevices::InitAsDefaultInstance() {
+}
+class GPUOptions_Experimental_VirtualDevices::HasBitSetters {
+ public:
+};
+
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int GPUOptions_Experimental_VirtualDevices::kMemoryLimitMbFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+GPUOptions_Experimental_VirtualDevices::GPUOptions_Experimental_VirtualDevices()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.GPUOptions.Experimental.VirtualDevices)
+}
+GPUOptions_Experimental_VirtualDevices::GPUOptions_Experimental_VirtualDevices(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena),
+  memory_limit_mb_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.GPUOptions.Experimental.VirtualDevices)
+}
+GPUOptions_Experimental_VirtualDevices::GPUOptions_Experimental_VirtualDevices(const GPUOptions_Experimental_VirtualDevices& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL),
+      memory_limit_mb_(from.memory_limit_mb_) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  // @@protoc_insertion_point(copy_constructor:tensorflow.GPUOptions.Experimental.VirtualDevices)
+}
+
+void GPUOptions_Experimental_VirtualDevices::SharedCtor() {
+}
+
+GPUOptions_Experimental_VirtualDevices::~GPUOptions_Experimental_VirtualDevices() {
+  // @@protoc_insertion_point(destructor:tensorflow.GPUOptions.Experimental.VirtualDevices)
+  SharedDtor();
+}
+
+void GPUOptions_Experimental_VirtualDevices::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+}
+
+void GPUOptions_Experimental_VirtualDevices::ArenaDtor(void* object) {
+  GPUOptions_Experimental_VirtualDevices* _this = reinterpret_cast< GPUOptions_Experimental_VirtualDevices* >(object);
+  (void)_this;
+}
+void GPUOptions_Experimental_VirtualDevices::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void GPUOptions_Experimental_VirtualDevices::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const GPUOptions_Experimental_VirtualDevices& GPUOptions_Experimental_VirtualDevices::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_GPUOptions_Experimental_VirtualDevices_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void GPUOptions_Experimental_VirtualDevices::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.GPUOptions.Experimental.VirtualDevices)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  memory_limit_mb_.Clear();
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* GPUOptions_Experimental_VirtualDevices::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<GPUOptions_Experimental_VirtualDevices*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // repeated float memory_limit_mb = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) == 10) {
+          ptr = Varint::Parse32Inline(ptr, &size);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          parser_till_end = ::google::protobuf::internal::PackedFloatParser;
+          object = msg->mutable_memory_limit_mb();
+          if (size > end - ptr) goto len_delim_till_end;
+          auto newend = ptr + size;
+          if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+          break;
+        } else if (static_cast<::google::protobuf::uint8>(tag) != 13) goto handle_unusual;
+        do {
+          float val;
+          std::memcpy(&val, ptr, 4);
+          ptr += 4;
+          msg->add_memory_limit_mb(val);
+          if (ptr >= end) break;
+        } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 13 && (ptr += 1));
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool GPUOptions_Experimental_VirtualDevices::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.GPUOptions.Experimental.VirtualDevices)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // repeated float memory_limit_mb = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (10 & 0xFF)) {
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPackedPrimitive<
+                   float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>(
+                 input, this->mutable_memory_limit_mb())));
+        } else if (static_cast< ::google::protobuf::uint8>(tag) == (13 & 0xFF)) {
+          DO_((::google::protobuf::internal::WireFormatLite::ReadRepeatedPrimitiveNoInline<
+                   float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>(
+                 1, 10u, input, this->mutable_memory_limit_mb())));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.GPUOptions.Experimental.VirtualDevices)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.GPUOptions.Experimental.VirtualDevices)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void GPUOptions_Experimental_VirtualDevices::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.GPUOptions.Experimental.VirtualDevices)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // repeated float memory_limit_mb = 1;
+  if (this->memory_limit_mb_size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteTag(1, ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED, output);
+    output->WriteVarint32(_memory_limit_mb_cached_byte_size_.load(
+        std::memory_order_relaxed));
+    ::google::protobuf::internal::WireFormatLite::WriteFloatArray(
+      this->memory_limit_mb().data(), this->memory_limit_mb_size(), output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.GPUOptions.Experimental.VirtualDevices)
+}
+
+::google::protobuf::uint8* GPUOptions_Experimental_VirtualDevices::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.GPUOptions.Experimental.VirtualDevices)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // repeated float memory_limit_mb = 1;
+  if (this->memory_limit_mb_size() > 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteTagToArray(
+      1,
+      ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED,
+      target);
+    target = ::google::protobuf::io::CodedOutputStream::WriteVarint32ToArray(
+        _memory_limit_mb_cached_byte_size_.load(std::memory_order_relaxed),
+         target);
+    target = ::google::protobuf::internal::WireFormatLite::
+      WriteFloatNoTagToArray(this->memory_limit_mb_, target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.GPUOptions.Experimental.VirtualDevices)
+  return target;
+}
+
+size_t GPUOptions_Experimental_VirtualDevices::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.GPUOptions.Experimental.VirtualDevices)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // repeated float memory_limit_mb = 1;
+  {
+    unsigned int count = static_cast<unsigned int>(this->memory_limit_mb_size());
+    size_t data_size = 4UL * count;
+    if (data_size > 0) {
+      total_size += 1 +
+        ::google::protobuf::internal::WireFormatLite::Int32Size(
+            static_cast<::google::protobuf::int32>(data_size));
+    }
+    int cached_size = ::google::protobuf::internal::ToCachedSize(data_size);
+    _memory_limit_mb_cached_byte_size_.store(cached_size,
+                                    std::memory_order_relaxed);
+    total_size += data_size;
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void GPUOptions_Experimental_VirtualDevices::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.GPUOptions.Experimental.VirtualDevices)
+  GOOGLE_DCHECK_NE(&from, this);
+  const GPUOptions_Experimental_VirtualDevices* source =
+      ::google::protobuf::DynamicCastToGenerated<GPUOptions_Experimental_VirtualDevices>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.GPUOptions.Experimental.VirtualDevices)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.GPUOptions.Experimental.VirtualDevices)
+    MergeFrom(*source);
+  }
+}
+
+void GPUOptions_Experimental_VirtualDevices::MergeFrom(const GPUOptions_Experimental_VirtualDevices& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.GPUOptions.Experimental.VirtualDevices)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  memory_limit_mb_.MergeFrom(from.memory_limit_mb_);
+}
+
+void GPUOptions_Experimental_VirtualDevices::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.GPUOptions.Experimental.VirtualDevices)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void GPUOptions_Experimental_VirtualDevices::CopyFrom(const GPUOptions_Experimental_VirtualDevices& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.GPUOptions.Experimental.VirtualDevices)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool GPUOptions_Experimental_VirtualDevices::IsInitialized() const {
+  return true;
+}
+
+void GPUOptions_Experimental_VirtualDevices::Swap(GPUOptions_Experimental_VirtualDevices* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    GPUOptions_Experimental_VirtualDevices* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void GPUOptions_Experimental_VirtualDevices::UnsafeArenaSwap(GPUOptions_Experimental_VirtualDevices* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void GPUOptions_Experimental_VirtualDevices::InternalSwap(GPUOptions_Experimental_VirtualDevices* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  memory_limit_mb_.InternalSwap(&other->memory_limit_mb_);
+}
+
+::google::protobuf::Metadata GPUOptions_Experimental_VirtualDevices::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+void GPUOptions_Experimental::InitAsDefaultInstance() {
+}
+class GPUOptions_Experimental::HasBitSetters {
+ public:
+};
+
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int GPUOptions_Experimental::kVirtualDevicesFieldNumber;
+const int GPUOptions_Experimental::kUseUnifiedMemoryFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+GPUOptions_Experimental::GPUOptions_Experimental()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.GPUOptions.Experimental)
+}
+GPUOptions_Experimental::GPUOptions_Experimental(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena),
+  virtual_devices_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.GPUOptions.Experimental)
+}
+GPUOptions_Experimental::GPUOptions_Experimental(const GPUOptions_Experimental& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL),
+      virtual_devices_(from.virtual_devices_) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  use_unified_memory_ = from.use_unified_memory_;
+  // @@protoc_insertion_point(copy_constructor:tensorflow.GPUOptions.Experimental)
+}
+
+void GPUOptions_Experimental::SharedCtor() {
+  ::google::protobuf::internal::InitSCC(
+      &scc_info_GPUOptions_Experimental_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto.base);
+  use_unified_memory_ = false;
+}
+
+GPUOptions_Experimental::~GPUOptions_Experimental() {
+  // @@protoc_insertion_point(destructor:tensorflow.GPUOptions.Experimental)
+  SharedDtor();
+}
+
+void GPUOptions_Experimental::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+}
+
+void GPUOptions_Experimental::ArenaDtor(void* object) {
+  GPUOptions_Experimental* _this = reinterpret_cast< GPUOptions_Experimental* >(object);
+  (void)_this;
+}
+void GPUOptions_Experimental::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void GPUOptions_Experimental::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const GPUOptions_Experimental& GPUOptions_Experimental::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_GPUOptions_Experimental_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void GPUOptions_Experimental::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.GPUOptions.Experimental)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  virtual_devices_.Clear();
+  use_unified_memory_ = false;
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* GPUOptions_Experimental::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<GPUOptions_Experimental*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // repeated .tensorflow.GPUOptions.Experimental.VirtualDevices virtual_devices = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 10) goto handle_unusual;
+        do {
+          ptr = Varint::Parse32Inline(ptr, &size);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          parser_till_end = ::tensorflow::GPUOptions_Experimental_VirtualDevices::_InternalParse;
+          object = msg->add_virtual_devices();
+          if (size > end - ptr) goto len_delim_till_end;
+          auto newend = ptr + size;
+          bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                         ptr, newend);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          ptr = newend;
+          if (ptr >= end) break;
+        } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 10 && (ptr += 1));
+        break;
+      }
+      // bool use_unified_memory = 2;
+      case 2: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 16) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        bool value = val;
+        msg->set_use_unified_memory(value);
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool GPUOptions_Experimental::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.GPUOptions.Experimental)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // repeated .tensorflow.GPUOptions.Experimental.VirtualDevices virtual_devices = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (10 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+                input, add_virtual_devices()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // bool use_unified_memory = 2;
+      case 2: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (16 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
+                 input, &use_unified_memory_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.GPUOptions.Experimental)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.GPUOptions.Experimental)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void GPUOptions_Experimental::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.GPUOptions.Experimental)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // repeated .tensorflow.GPUOptions.Experimental.VirtualDevices virtual_devices = 1;
+  for (unsigned int i = 0,
+      n = static_cast<unsigned int>(this->virtual_devices_size()); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      1,
+      this->virtual_devices(static_cast<int>(i)),
+      output);
+  }
+
+  // bool use_unified_memory = 2;
+  if (this->use_unified_memory() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteBool(2, this->use_unified_memory(), output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.GPUOptions.Experimental)
+}
+
+::google::protobuf::uint8* GPUOptions_Experimental::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.GPUOptions.Experimental)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // repeated .tensorflow.GPUOptions.Experimental.VirtualDevices virtual_devices = 1;
+  for (unsigned int i = 0,
+      n = static_cast<unsigned int>(this->virtual_devices_size()); i < n; i++) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        1, this->virtual_devices(static_cast<int>(i)), deterministic, target);
+  }
+
+  // bool use_unified_memory = 2;
+  if (this->use_unified_memory() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(2, this->use_unified_memory(), target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.GPUOptions.Experimental)
+  return target;
+}
+
+size_t GPUOptions_Experimental::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.GPUOptions.Experimental)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // repeated .tensorflow.GPUOptions.Experimental.VirtualDevices virtual_devices = 1;
+  {
+    unsigned int count = static_cast<unsigned int>(this->virtual_devices_size());
+    total_size += 1UL * count;
+    for (unsigned int i = 0; i < count; i++) {
+      total_size +=
+        ::google::protobuf::internal::WireFormatLite::MessageSize(
+          this->virtual_devices(static_cast<int>(i)));
+    }
+  }
+
+  // bool use_unified_memory = 2;
+  if (this->use_unified_memory() != 0) {
+    total_size += 1 + 1;
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void GPUOptions_Experimental::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.GPUOptions.Experimental)
+  GOOGLE_DCHECK_NE(&from, this);
+  const GPUOptions_Experimental* source =
+      ::google::protobuf::DynamicCastToGenerated<GPUOptions_Experimental>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.GPUOptions.Experimental)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.GPUOptions.Experimental)
+    MergeFrom(*source);
+  }
+}
+
+void GPUOptions_Experimental::MergeFrom(const GPUOptions_Experimental& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.GPUOptions.Experimental)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  virtual_devices_.MergeFrom(from.virtual_devices_);
+  if (from.use_unified_memory() != 0) {
+    set_use_unified_memory(from.use_unified_memory());
+  }
+}
+
+void GPUOptions_Experimental::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.GPUOptions.Experimental)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void GPUOptions_Experimental::CopyFrom(const GPUOptions_Experimental& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.GPUOptions.Experimental)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool GPUOptions_Experimental::IsInitialized() const {
+  return true;
+}
+
+void GPUOptions_Experimental::Swap(GPUOptions_Experimental* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    GPUOptions_Experimental* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void GPUOptions_Experimental::UnsafeArenaSwap(GPUOptions_Experimental* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void GPUOptions_Experimental::InternalSwap(GPUOptions_Experimental* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  CastToBase(&virtual_devices_)->InternalSwap(CastToBase(&other->virtual_devices_));
+  swap(use_unified_memory_, other->use_unified_memory_);
+}
+
+::google::protobuf::Metadata GPUOptions_Experimental::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+void GPUOptions::InitAsDefaultInstance() {
+  ::tensorflow::_GPUOptions_default_instance_._instance.get_mutable()->experimental_ = const_cast< ::tensorflow::GPUOptions_Experimental*>(
+      ::tensorflow::GPUOptions_Experimental::internal_default_instance());
+}
+class GPUOptions::HasBitSetters {
+ public:
+  static const ::tensorflow::GPUOptions_Experimental& experimental(const GPUOptions* msg);
+};
+
+const ::tensorflow::GPUOptions_Experimental&
+GPUOptions::HasBitSetters::experimental(const GPUOptions* msg) {
+  return *msg->experimental_;
+}
+void GPUOptions::unsafe_arena_set_allocated_experimental(
+    ::tensorflow::GPUOptions_Experimental* experimental) {
+  if (GetArenaNoVirtual() == NULL) {
+    delete experimental_;
+  }
+  experimental_ = experimental;
+  if (experimental) {
+    
+  } else {
+    
+  }
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.GPUOptions.experimental)
+}
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int GPUOptions::kPerProcessGpuMemoryFractionFieldNumber;
+const int GPUOptions::kAllowGrowthFieldNumber;
+const int GPUOptions::kAllocatorTypeFieldNumber;
+const int GPUOptions::kDeferredDeletionBytesFieldNumber;
+const int GPUOptions::kVisibleDeviceListFieldNumber;
+const int GPUOptions::kPollingActiveDelayUsecsFieldNumber;
+const int GPUOptions::kPollingInactiveDelayMsecsFieldNumber;
+const int GPUOptions::kForceGpuCompatibleFieldNumber;
+const int GPUOptions::kExperimentalFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+GPUOptions::GPUOptions()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.GPUOptions)
+}
+GPUOptions::GPUOptions(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.GPUOptions)
+}
+GPUOptions::GPUOptions(const GPUOptions& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  allocator_type_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.allocator_type().size() > 0) {
+    allocator_type_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.allocator_type(),
+      GetArenaNoVirtual());
+  }
+  visible_device_list_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.visible_device_list().size() > 0) {
+    visible_device_list_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.visible_device_list(),
+      GetArenaNoVirtual());
+  }
+  if (from.has_experimental()) {
+    experimental_ = new ::tensorflow::GPUOptions_Experimental(*from.experimental_);
+  } else {
+    experimental_ = NULL;
+  }
+  ::memcpy(&per_process_gpu_memory_fraction_, &from.per_process_gpu_memory_fraction_,
+    static_cast<size_t>(reinterpret_cast<char*>(&polling_inactive_delay_msecs_) -
+    reinterpret_cast<char*>(&per_process_gpu_memory_fraction_)) + sizeof(polling_inactive_delay_msecs_));
+  // @@protoc_insertion_point(copy_constructor:tensorflow.GPUOptions)
+}
+
+void GPUOptions::SharedCtor() {
+  ::google::protobuf::internal::InitSCC(
+      &scc_info_GPUOptions_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto.base);
+  allocator_type_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  visible_device_list_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  ::memset(&experimental_, 0, static_cast<size_t>(
+      reinterpret_cast<char*>(&polling_inactive_delay_msecs_) -
+      reinterpret_cast<char*>(&experimental_)) + sizeof(polling_inactive_delay_msecs_));
+}
+
+GPUOptions::~GPUOptions() {
+  // @@protoc_insertion_point(destructor:tensorflow.GPUOptions)
+  SharedDtor();
+}
+
+void GPUOptions::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+  allocator_type_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  visible_device_list_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (this != internal_default_instance()) delete experimental_;
+}
+
+void GPUOptions::ArenaDtor(void* object) {
+  GPUOptions* _this = reinterpret_cast< GPUOptions* >(object);
+  (void)_this;
+}
+void GPUOptions::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void GPUOptions::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const GPUOptions& GPUOptions::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_GPUOptions_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void GPUOptions::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.GPUOptions)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  allocator_type_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+  visible_device_list_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+  if (GetArenaNoVirtual() == NULL && experimental_ != NULL) {
+    delete experimental_;
+  }
+  experimental_ = NULL;
+  ::memset(&per_process_gpu_memory_fraction_, 0, static_cast<size_t>(
+      reinterpret_cast<char*>(&polling_inactive_delay_msecs_) -
+      reinterpret_cast<char*>(&per_process_gpu_memory_fraction_)) + sizeof(polling_inactive_delay_msecs_));
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* GPUOptions::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<GPUOptions*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // double per_process_gpu_memory_fraction = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 9) goto handle_unusual;
+        double val;
+        ::std::memcpy(&val, ptr, 8);
+        ptr += 8;
+        msg->set_per_process_gpu_memory_fraction(val);
+        break;
+      }
+      // string allocator_type = 2;
+      case 2: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 18) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("tensorflow.GPUOptions.allocator_type");
+        parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+        ::std::string* str = msg->mutable_allocator_type();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+        break;
+      }
+      // int64 deferred_deletion_bytes = 3;
+      case 3: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 24) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::google::protobuf::int64 value = val;
+        msg->set_deferred_deletion_bytes(value);
+        break;
+      }
+      // bool allow_growth = 4;
+      case 4: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 32) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        bool value = val;
+        msg->set_allow_growth(value);
+        break;
+      }
+      // string visible_device_list = 5;
+      case 5: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 42) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("tensorflow.GPUOptions.visible_device_list");
+        parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+        ::std::string* str = msg->mutable_visible_device_list();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+        break;
+      }
+      // int32 polling_active_delay_usecs = 6;
+      case 6: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 48) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::google::protobuf::int32 value = val;
+        msg->set_polling_active_delay_usecs(value);
+        break;
+      }
+      // int32 polling_inactive_delay_msecs = 7;
+      case 7: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 56) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::google::protobuf::int32 value = val;
+        msg->set_polling_inactive_delay_msecs(value);
+        break;
+      }
+      // bool force_gpu_compatible = 8;
+      case 8: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 64) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        bool value = val;
+        msg->set_force_gpu_compatible(value);
+        break;
+      }
+      // .tensorflow.GPUOptions.Experimental experimental = 9;
+      case 9: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 74) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        parser_till_end = ::tensorflow::GPUOptions_Experimental::_InternalParse;
+        object = msg->mutable_experimental();
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                       ptr, newend);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+        ptr = newend;
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool GPUOptions::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.GPUOptions)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // double per_process_gpu_memory_fraction = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (9 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   double, ::google::protobuf::internal::WireFormatLite::TYPE_DOUBLE>(
+                 input, &per_process_gpu_memory_fraction_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // string allocator_type = 2;
+      case 2: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (18 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_allocator_type()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->allocator_type().data(), static_cast<int>(this->allocator_type().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.GPUOptions.allocator_type"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // int64 deferred_deletion_bytes = 3;
+      case 3: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (24 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>(
+                 input, &deferred_deletion_bytes_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // bool allow_growth = 4;
+      case 4: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (32 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
+                 input, &allow_growth_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // string visible_device_list = 5;
+      case 5: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (42 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_visible_device_list()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->visible_device_list().data(), static_cast<int>(this->visible_device_list().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.GPUOptions.visible_device_list"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // int32 polling_active_delay_usecs = 6;
+      case 6: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (48 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
+                 input, &polling_active_delay_usecs_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // int32 polling_inactive_delay_msecs = 7;
+      case 7: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (56 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
+                 input, &polling_inactive_delay_msecs_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // bool force_gpu_compatible = 8;
+      case 8: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (64 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
+                 input, &force_gpu_compatible_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // .tensorflow.GPUOptions.Experimental experimental = 9;
+      case 9: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (74 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+               input, mutable_experimental()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.GPUOptions)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.GPUOptions)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void GPUOptions::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.GPUOptions)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // double per_process_gpu_memory_fraction = 1;
+  if (this->per_process_gpu_memory_fraction() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteDouble(1, this->per_process_gpu_memory_fraction(), output);
+  }
+
+  // string allocator_type = 2;
+  if (this->allocator_type().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->allocator_type().data(), static_cast<int>(this->allocator_type().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.GPUOptions.allocator_type");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      2, this->allocator_type(), output);
+  }
+
+  // int64 deferred_deletion_bytes = 3;
+  if (this->deferred_deletion_bytes() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt64(3, this->deferred_deletion_bytes(), output);
+  }
+
+  // bool allow_growth = 4;
+  if (this->allow_growth() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteBool(4, this->allow_growth(), output);
+  }
+
+  // string visible_device_list = 5;
+  if (this->visible_device_list().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->visible_device_list().data(), static_cast<int>(this->visible_device_list().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.GPUOptions.visible_device_list");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      5, this->visible_device_list(), output);
+  }
+
+  // int32 polling_active_delay_usecs = 6;
+  if (this->polling_active_delay_usecs() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt32(6, this->polling_active_delay_usecs(), output);
+  }
+
+  // int32 polling_inactive_delay_msecs = 7;
+  if (this->polling_inactive_delay_msecs() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt32(7, this->polling_inactive_delay_msecs(), output);
+  }
+
+  // bool force_gpu_compatible = 8;
+  if (this->force_gpu_compatible() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteBool(8, this->force_gpu_compatible(), output);
+  }
+
+  // .tensorflow.GPUOptions.Experimental experimental = 9;
+  if (this->has_experimental()) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      9, HasBitSetters::experimental(this), output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.GPUOptions)
+}
+
+::google::protobuf::uint8* GPUOptions::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.GPUOptions)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // double per_process_gpu_memory_fraction = 1;
+  if (this->per_process_gpu_memory_fraction() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteDoubleToArray(1, this->per_process_gpu_memory_fraction(), target);
+  }
+
+  // string allocator_type = 2;
+  if (this->allocator_type().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->allocator_type().data(), static_cast<int>(this->allocator_type().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.GPUOptions.allocator_type");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        2, this->allocator_type(), target);
+  }
+
+  // int64 deferred_deletion_bytes = 3;
+  if (this->deferred_deletion_bytes() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt64ToArray(3, this->deferred_deletion_bytes(), target);
+  }
+
+  // bool allow_growth = 4;
+  if (this->allow_growth() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(4, this->allow_growth(), target);
+  }
+
+  // string visible_device_list = 5;
+  if (this->visible_device_list().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->visible_device_list().data(), static_cast<int>(this->visible_device_list().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.GPUOptions.visible_device_list");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        5, this->visible_device_list(), target);
+  }
+
+  // int32 polling_active_delay_usecs = 6;
+  if (this->polling_active_delay_usecs() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt32ToArray(6, this->polling_active_delay_usecs(), target);
+  }
+
+  // int32 polling_inactive_delay_msecs = 7;
+  if (this->polling_inactive_delay_msecs() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt32ToArray(7, this->polling_inactive_delay_msecs(), target);
+  }
+
+  // bool force_gpu_compatible = 8;
+  if (this->force_gpu_compatible() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(8, this->force_gpu_compatible(), target);
+  }
+
+  // .tensorflow.GPUOptions.Experimental experimental = 9;
+  if (this->has_experimental()) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        9, HasBitSetters::experimental(this), deterministic, target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.GPUOptions)
+  return target;
+}
+
+size_t GPUOptions::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.GPUOptions)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // string allocator_type = 2;
+  if (this->allocator_type().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->allocator_type());
+  }
+
+  // string visible_device_list = 5;
+  if (this->visible_device_list().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->visible_device_list());
+  }
+
+  // .tensorflow.GPUOptions.Experimental experimental = 9;
+  if (this->has_experimental()) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::MessageSize(
+        *experimental_);
+  }
+
+  // double per_process_gpu_memory_fraction = 1;
+  if (this->per_process_gpu_memory_fraction() != 0) {
+    total_size += 1 + 8;
+  }
+
+  // int64 deferred_deletion_bytes = 3;
+  if (this->deferred_deletion_bytes() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::Int64Size(
+        this->deferred_deletion_bytes());
+  }
+
+  // int32 polling_active_delay_usecs = 6;
+  if (this->polling_active_delay_usecs() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::Int32Size(
+        this->polling_active_delay_usecs());
+  }
+
+  // bool allow_growth = 4;
+  if (this->allow_growth() != 0) {
+    total_size += 1 + 1;
+  }
+
+  // bool force_gpu_compatible = 8;
+  if (this->force_gpu_compatible() != 0) {
+    total_size += 1 + 1;
+  }
+
+  // int32 polling_inactive_delay_msecs = 7;
+  if (this->polling_inactive_delay_msecs() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::Int32Size(
+        this->polling_inactive_delay_msecs());
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void GPUOptions::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.GPUOptions)
+  GOOGLE_DCHECK_NE(&from, this);
+  const GPUOptions* source =
+      ::google::protobuf::DynamicCastToGenerated<GPUOptions>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.GPUOptions)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.GPUOptions)
+    MergeFrom(*source);
+  }
+}
+
+void GPUOptions::MergeFrom(const GPUOptions& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.GPUOptions)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  if (from.allocator_type().size() > 0) {
+    set_allocator_type(from.allocator_type());
+  }
+  if (from.visible_device_list().size() > 0) {
+    set_visible_device_list(from.visible_device_list());
+  }
+  if (from.has_experimental()) {
+    mutable_experimental()->::tensorflow::GPUOptions_Experimental::MergeFrom(from.experimental());
+  }
+  if (from.per_process_gpu_memory_fraction() != 0) {
+    set_per_process_gpu_memory_fraction(from.per_process_gpu_memory_fraction());
+  }
+  if (from.deferred_deletion_bytes() != 0) {
+    set_deferred_deletion_bytes(from.deferred_deletion_bytes());
+  }
+  if (from.polling_active_delay_usecs() != 0) {
+    set_polling_active_delay_usecs(from.polling_active_delay_usecs());
+  }
+  if (from.allow_growth() != 0) {
+    set_allow_growth(from.allow_growth());
+  }
+  if (from.force_gpu_compatible() != 0) {
+    set_force_gpu_compatible(from.force_gpu_compatible());
+  }
+  if (from.polling_inactive_delay_msecs() != 0) {
+    set_polling_inactive_delay_msecs(from.polling_inactive_delay_msecs());
+  }
+}
+
+void GPUOptions::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.GPUOptions)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void GPUOptions::CopyFrom(const GPUOptions& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.GPUOptions)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool GPUOptions::IsInitialized() const {
+  return true;
+}
+
+void GPUOptions::Swap(GPUOptions* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    GPUOptions* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void GPUOptions::UnsafeArenaSwap(GPUOptions* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void GPUOptions::InternalSwap(GPUOptions* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  allocator_type_.Swap(&other->allocator_type_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+  visible_device_list_.Swap(&other->visible_device_list_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+  swap(experimental_, other->experimental_);
+  swap(per_process_gpu_memory_fraction_, other->per_process_gpu_memory_fraction_);
+  swap(deferred_deletion_bytes_, other->deferred_deletion_bytes_);
+  swap(polling_active_delay_usecs_, other->polling_active_delay_usecs_);
+  swap(allow_growth_, other->allow_growth_);
+  swap(force_gpu_compatible_, other->force_gpu_compatible_);
+  swap(polling_inactive_delay_msecs_, other->polling_inactive_delay_msecs_);
+}
+
+::google::protobuf::Metadata GPUOptions::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+void OptimizerOptions::InitAsDefaultInstance() {
+}
+class OptimizerOptions::HasBitSetters {
+ public:
+};
+
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int OptimizerOptions::kDoCommonSubexpressionEliminationFieldNumber;
+const int OptimizerOptions::kDoConstantFoldingFieldNumber;
+const int OptimizerOptions::kMaxFoldedConstantInBytesFieldNumber;
+const int OptimizerOptions::kDoFunctionInliningFieldNumber;
+const int OptimizerOptions::kOptLevelFieldNumber;
+const int OptimizerOptions::kGlobalJitLevelFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+OptimizerOptions::OptimizerOptions()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.OptimizerOptions)
+}
+OptimizerOptions::OptimizerOptions(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.OptimizerOptions)
+}
+OptimizerOptions::OptimizerOptions(const OptimizerOptions& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::memcpy(&do_common_subexpression_elimination_, &from.do_common_subexpression_elimination_,
+    static_cast<size_t>(reinterpret_cast<char*>(&global_jit_level_) -
+    reinterpret_cast<char*>(&do_common_subexpression_elimination_)) + sizeof(global_jit_level_));
+  // @@protoc_insertion_point(copy_constructor:tensorflow.OptimizerOptions)
+}
+
+void OptimizerOptions::SharedCtor() {
+  ::memset(&do_common_subexpression_elimination_, 0, static_cast<size_t>(
+      reinterpret_cast<char*>(&global_jit_level_) -
+      reinterpret_cast<char*>(&do_common_subexpression_elimination_)) + sizeof(global_jit_level_));
+}
+
+OptimizerOptions::~OptimizerOptions() {
+  // @@protoc_insertion_point(destructor:tensorflow.OptimizerOptions)
+  SharedDtor();
+}
+
+void OptimizerOptions::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+}
+
+void OptimizerOptions::ArenaDtor(void* object) {
+  OptimizerOptions* _this = reinterpret_cast< OptimizerOptions* >(object);
+  (void)_this;
+}
+void OptimizerOptions::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void OptimizerOptions::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const OptimizerOptions& OptimizerOptions::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_OptimizerOptions_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void OptimizerOptions::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.OptimizerOptions)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  ::memset(&do_common_subexpression_elimination_, 0, static_cast<size_t>(
+      reinterpret_cast<char*>(&global_jit_level_) -
+      reinterpret_cast<char*>(&do_common_subexpression_elimination_)) + sizeof(global_jit_level_));
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* OptimizerOptions::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<OptimizerOptions*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // bool do_common_subexpression_elimination = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 8) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        bool value = val;
+        msg->set_do_common_subexpression_elimination(value);
+        break;
+      }
+      // bool do_constant_folding = 2;
+      case 2: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 16) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        bool value = val;
+        msg->set_do_constant_folding(value);
+        break;
+      }
+      // .tensorflow.OptimizerOptions.Level opt_level = 3;
+      case 3: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 24) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::tensorflow::OptimizerOptions_Level value = static_cast<::tensorflow::OptimizerOptions_Level>(val);
+        msg->set_opt_level(value);
+        break;
+      }
+      // bool do_function_inlining = 4;
+      case 4: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 32) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        bool value = val;
+        msg->set_do_function_inlining(value);
+        break;
+      }
+      // .tensorflow.OptimizerOptions.GlobalJitLevel global_jit_level = 5;
+      case 5: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 40) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::tensorflow::OptimizerOptions_GlobalJitLevel value = static_cast<::tensorflow::OptimizerOptions_GlobalJitLevel>(val);
+        msg->set_global_jit_level(value);
+        break;
+      }
+      // int64 max_folded_constant_in_bytes = 6;
+      case 6: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 48) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::google::protobuf::int64 value = val;
+        msg->set_max_folded_constant_in_bytes(value);
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool OptimizerOptions::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.OptimizerOptions)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // bool do_common_subexpression_elimination = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (8 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
+                 input, &do_common_subexpression_elimination_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // bool do_constant_folding = 2;
+      case 2: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (16 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
+                 input, &do_constant_folding_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // .tensorflow.OptimizerOptions.Level opt_level = 3;
+      case 3: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (24 & 0xFF)) {
+          int value = 0;
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>(
+                 input, &value)));
+          set_opt_level(static_cast< ::tensorflow::OptimizerOptions_Level >(value));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // bool do_function_inlining = 4;
+      case 4: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (32 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
+                 input, &do_function_inlining_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // .tensorflow.OptimizerOptions.GlobalJitLevel global_jit_level = 5;
+      case 5: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (40 & 0xFF)) {
+          int value = 0;
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>(
+                 input, &value)));
+          set_global_jit_level(static_cast< ::tensorflow::OptimizerOptions_GlobalJitLevel >(value));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // int64 max_folded_constant_in_bytes = 6;
+      case 6: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (48 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>(
+                 input, &max_folded_constant_in_bytes_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.OptimizerOptions)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.OptimizerOptions)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void OptimizerOptions::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.OptimizerOptions)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // bool do_common_subexpression_elimination = 1;
+  if (this->do_common_subexpression_elimination() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteBool(1, this->do_common_subexpression_elimination(), output);
+  }
+
+  // bool do_constant_folding = 2;
+  if (this->do_constant_folding() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteBool(2, this->do_constant_folding(), output);
+  }
+
+  // .tensorflow.OptimizerOptions.Level opt_level = 3;
+  if (this->opt_level() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteEnum(
+      3, this->opt_level(), output);
+  }
+
+  // bool do_function_inlining = 4;
+  if (this->do_function_inlining() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteBool(4, this->do_function_inlining(), output);
+  }
+
+  // .tensorflow.OptimizerOptions.GlobalJitLevel global_jit_level = 5;
+  if (this->global_jit_level() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteEnum(
+      5, this->global_jit_level(), output);
+  }
+
+  // int64 max_folded_constant_in_bytes = 6;
+  if (this->max_folded_constant_in_bytes() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt64(6, this->max_folded_constant_in_bytes(), output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.OptimizerOptions)
+}
+
+::google::protobuf::uint8* OptimizerOptions::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.OptimizerOptions)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // bool do_common_subexpression_elimination = 1;
+  if (this->do_common_subexpression_elimination() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(1, this->do_common_subexpression_elimination(), target);
+  }
+
+  // bool do_constant_folding = 2;
+  if (this->do_constant_folding() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(2, this->do_constant_folding(), target);
+  }
+
+  // .tensorflow.OptimizerOptions.Level opt_level = 3;
+  if (this->opt_level() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteEnumToArray(
+      3, this->opt_level(), target);
+  }
+
+  // bool do_function_inlining = 4;
+  if (this->do_function_inlining() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(4, this->do_function_inlining(), target);
+  }
+
+  // .tensorflow.OptimizerOptions.GlobalJitLevel global_jit_level = 5;
+  if (this->global_jit_level() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteEnumToArray(
+      5, this->global_jit_level(), target);
+  }
+
+  // int64 max_folded_constant_in_bytes = 6;
+  if (this->max_folded_constant_in_bytes() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt64ToArray(6, this->max_folded_constant_in_bytes(), target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.OptimizerOptions)
+  return target;
+}
+
+size_t OptimizerOptions::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.OptimizerOptions)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // bool do_common_subexpression_elimination = 1;
+  if (this->do_common_subexpression_elimination() != 0) {
+    total_size += 1 + 1;
+  }
+
+  // bool do_constant_folding = 2;
+  if (this->do_constant_folding() != 0) {
+    total_size += 1 + 1;
+  }
+
+  // bool do_function_inlining = 4;
+  if (this->do_function_inlining() != 0) {
+    total_size += 1 + 1;
+  }
+
+  // .tensorflow.OptimizerOptions.Level opt_level = 3;
+  if (this->opt_level() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::EnumSize(this->opt_level());
+  }
+
+  // int64 max_folded_constant_in_bytes = 6;
+  if (this->max_folded_constant_in_bytes() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::Int64Size(
+        this->max_folded_constant_in_bytes());
+  }
+
+  // .tensorflow.OptimizerOptions.GlobalJitLevel global_jit_level = 5;
+  if (this->global_jit_level() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::EnumSize(this->global_jit_level());
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void OptimizerOptions::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.OptimizerOptions)
+  GOOGLE_DCHECK_NE(&from, this);
+  const OptimizerOptions* source =
+      ::google::protobuf::DynamicCastToGenerated<OptimizerOptions>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.OptimizerOptions)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.OptimizerOptions)
+    MergeFrom(*source);
+  }
+}
+
+void OptimizerOptions::MergeFrom(const OptimizerOptions& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.OptimizerOptions)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  if (from.do_common_subexpression_elimination() != 0) {
+    set_do_common_subexpression_elimination(from.do_common_subexpression_elimination());
+  }
+  if (from.do_constant_folding() != 0) {
+    set_do_constant_folding(from.do_constant_folding());
+  }
+  if (from.do_function_inlining() != 0) {
+    set_do_function_inlining(from.do_function_inlining());
+  }
+  if (from.opt_level() != 0) {
+    set_opt_level(from.opt_level());
+  }
+  if (from.max_folded_constant_in_bytes() != 0) {
+    set_max_folded_constant_in_bytes(from.max_folded_constant_in_bytes());
+  }
+  if (from.global_jit_level() != 0) {
+    set_global_jit_level(from.global_jit_level());
+  }
+}
+
+void OptimizerOptions::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.OptimizerOptions)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void OptimizerOptions::CopyFrom(const OptimizerOptions& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.OptimizerOptions)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool OptimizerOptions::IsInitialized() const {
+  return true;
+}
+
+void OptimizerOptions::Swap(OptimizerOptions* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    OptimizerOptions* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void OptimizerOptions::UnsafeArenaSwap(OptimizerOptions* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void OptimizerOptions::InternalSwap(OptimizerOptions* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  swap(do_common_subexpression_elimination_, other->do_common_subexpression_elimination_);
+  swap(do_constant_folding_, other->do_constant_folding_);
+  swap(do_function_inlining_, other->do_function_inlining_);
+  swap(opt_level_, other->opt_level_);
+  swap(max_folded_constant_in_bytes_, other->max_folded_constant_in_bytes_);
+  swap(global_jit_level_, other->global_jit_level_);
+}
+
+::google::protobuf::Metadata OptimizerOptions::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+void GraphOptions::InitAsDefaultInstance() {
+  ::tensorflow::_GraphOptions_default_instance_._instance.get_mutable()->optimizer_options_ = const_cast< ::tensorflow::OptimizerOptions*>(
+      ::tensorflow::OptimizerOptions::internal_default_instance());
+  ::tensorflow::_GraphOptions_default_instance_._instance.get_mutable()->rewrite_options_ = const_cast< ::tensorflow::RewriterConfig*>(
+      ::tensorflow::RewriterConfig::internal_default_instance());
+}
+class GraphOptions::HasBitSetters {
+ public:
+  static const ::tensorflow::OptimizerOptions& optimizer_options(const GraphOptions* msg);
+  static const ::tensorflow::RewriterConfig& rewrite_options(const GraphOptions* msg);
+};
+
+const ::tensorflow::OptimizerOptions&
+GraphOptions::HasBitSetters::optimizer_options(const GraphOptions* msg) {
+  return *msg->optimizer_options_;
+}
+const ::tensorflow::RewriterConfig&
+GraphOptions::HasBitSetters::rewrite_options(const GraphOptions* msg) {
+  return *msg->rewrite_options_;
+}
+void GraphOptions::unsafe_arena_set_allocated_optimizer_options(
+    ::tensorflow::OptimizerOptions* optimizer_options) {
+  if (GetArenaNoVirtual() == NULL) {
+    delete optimizer_options_;
+  }
+  optimizer_options_ = optimizer_options;
+  if (optimizer_options) {
+    
+  } else {
+    
+  }
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.GraphOptions.optimizer_options)
+}
+void GraphOptions::unsafe_arena_set_allocated_rewrite_options(
+    ::tensorflow::RewriterConfig* rewrite_options) {
+  if (GetArenaNoVirtual() == NULL) {
+    delete rewrite_options_;
+  }
+  rewrite_options_ = rewrite_options;
+  if (rewrite_options) {
+    
+  } else {
+    
+  }
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.GraphOptions.rewrite_options)
+}
+void GraphOptions::clear_rewrite_options() {
+  if (GetArenaNoVirtual() == NULL && rewrite_options_ != NULL) {
+    delete rewrite_options_;
+  }
+  rewrite_options_ = NULL;
+}
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int GraphOptions::kEnableRecvSchedulingFieldNumber;
+const int GraphOptions::kOptimizerOptionsFieldNumber;
+const int GraphOptions::kBuildCostModelFieldNumber;
+const int GraphOptions::kBuildCostModelAfterFieldNumber;
+const int GraphOptions::kInferShapesFieldNumber;
+const int GraphOptions::kPlacePrunedGraphFieldNumber;
+const int GraphOptions::kEnableBfloat16SendrecvFieldNumber;
+const int GraphOptions::kTimelineStepFieldNumber;
+const int GraphOptions::kRewriteOptionsFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+GraphOptions::GraphOptions()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.GraphOptions)
+}
+GraphOptions::GraphOptions(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.GraphOptions)
+}
+GraphOptions::GraphOptions(const GraphOptions& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  if (from.has_optimizer_options()) {
+    optimizer_options_ = new ::tensorflow::OptimizerOptions(*from.optimizer_options_);
+  } else {
+    optimizer_options_ = NULL;
+  }
+  if (from.has_rewrite_options()) {
+    rewrite_options_ = new ::tensorflow::RewriterConfig(*from.rewrite_options_);
+  } else {
+    rewrite_options_ = NULL;
+  }
+  ::memcpy(&build_cost_model_, &from.build_cost_model_,
+    static_cast<size_t>(reinterpret_cast<char*>(&build_cost_model_after_) -
+    reinterpret_cast<char*>(&build_cost_model_)) + sizeof(build_cost_model_after_));
+  // @@protoc_insertion_point(copy_constructor:tensorflow.GraphOptions)
+}
+
+void GraphOptions::SharedCtor() {
+  ::google::protobuf::internal::InitSCC(
+      &scc_info_GraphOptions_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto.base);
+  ::memset(&optimizer_options_, 0, static_cast<size_t>(
+      reinterpret_cast<char*>(&build_cost_model_after_) -
+      reinterpret_cast<char*>(&optimizer_options_)) + sizeof(build_cost_model_after_));
+}
+
+GraphOptions::~GraphOptions() {
+  // @@protoc_insertion_point(destructor:tensorflow.GraphOptions)
+  SharedDtor();
+}
+
+void GraphOptions::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+  if (this != internal_default_instance()) delete optimizer_options_;
+  if (this != internal_default_instance()) delete rewrite_options_;
+}
+
+void GraphOptions::ArenaDtor(void* object) {
+  GraphOptions* _this = reinterpret_cast< GraphOptions* >(object);
+  (void)_this;
+}
+void GraphOptions::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void GraphOptions::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const GraphOptions& GraphOptions::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_GraphOptions_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void GraphOptions::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.GraphOptions)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  if (GetArenaNoVirtual() == NULL && optimizer_options_ != NULL) {
+    delete optimizer_options_;
+  }
+  optimizer_options_ = NULL;
+  if (GetArenaNoVirtual() == NULL && rewrite_options_ != NULL) {
+    delete rewrite_options_;
+  }
+  rewrite_options_ = NULL;
+  ::memset(&build_cost_model_, 0, static_cast<size_t>(
+      reinterpret_cast<char*>(&build_cost_model_after_) -
+      reinterpret_cast<char*>(&build_cost_model_)) + sizeof(build_cost_model_after_));
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* GraphOptions::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<GraphOptions*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // bool enable_recv_scheduling = 2;
+      case 2: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 16) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        bool value = val;
+        msg->set_enable_recv_scheduling(value);
+        break;
+      }
+      // .tensorflow.OptimizerOptions optimizer_options = 3;
+      case 3: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 26) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        parser_till_end = ::tensorflow::OptimizerOptions::_InternalParse;
+        object = msg->mutable_optimizer_options();
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                       ptr, newend);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+        ptr = newend;
+        break;
+      }
+      // int64 build_cost_model = 4;
+      case 4: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 32) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::google::protobuf::int64 value = val;
+        msg->set_build_cost_model(value);
+        break;
+      }
+      // bool infer_shapes = 5;
+      case 5: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 40) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        bool value = val;
+        msg->set_infer_shapes(value);
+        break;
+      }
+      // bool place_pruned_graph = 6;
+      case 6: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 48) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        bool value = val;
+        msg->set_place_pruned_graph(value);
+        break;
+      }
+      // bool enable_bfloat16_sendrecv = 7;
+      case 7: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 56) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        bool value = val;
+        msg->set_enable_bfloat16_sendrecv(value);
+        break;
+      }
+      // int32 timeline_step = 8;
+      case 8: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 64) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::google::protobuf::int32 value = val;
+        msg->set_timeline_step(value);
+        break;
+      }
+      // int64 build_cost_model_after = 9;
+      case 9: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 72) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::google::protobuf::int64 value = val;
+        msg->set_build_cost_model_after(value);
+        break;
+      }
+      // .tensorflow.RewriterConfig rewrite_options = 10;
+      case 10: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 82) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        parser_till_end = ::tensorflow::RewriterConfig::_InternalParse;
+        object = msg->mutable_rewrite_options();
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                       ptr, newend);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+        ptr = newend;
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool GraphOptions::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.GraphOptions)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // bool enable_recv_scheduling = 2;
+      case 2: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (16 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
+                 input, &enable_recv_scheduling_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // .tensorflow.OptimizerOptions optimizer_options = 3;
+      case 3: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (26 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+               input, mutable_optimizer_options()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // int64 build_cost_model = 4;
+      case 4: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (32 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>(
+                 input, &build_cost_model_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // bool infer_shapes = 5;
+      case 5: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (40 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
+                 input, &infer_shapes_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // bool place_pruned_graph = 6;
+      case 6: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (48 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
+                 input, &place_pruned_graph_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // bool enable_bfloat16_sendrecv = 7;
+      case 7: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (56 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
+                 input, &enable_bfloat16_sendrecv_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // int32 timeline_step = 8;
+      case 8: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (64 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
+                 input, &timeline_step_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // int64 build_cost_model_after = 9;
+      case 9: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (72 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>(
+                 input, &build_cost_model_after_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // .tensorflow.RewriterConfig rewrite_options = 10;
+      case 10: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (82 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+               input, mutable_rewrite_options()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.GraphOptions)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.GraphOptions)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void GraphOptions::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.GraphOptions)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // bool enable_recv_scheduling = 2;
+  if (this->enable_recv_scheduling() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteBool(2, this->enable_recv_scheduling(), output);
+  }
+
+  // .tensorflow.OptimizerOptions optimizer_options = 3;
+  if (this->has_optimizer_options()) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      3, HasBitSetters::optimizer_options(this), output);
+  }
+
+  // int64 build_cost_model = 4;
+  if (this->build_cost_model() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt64(4, this->build_cost_model(), output);
+  }
+
+  // bool infer_shapes = 5;
+  if (this->infer_shapes() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteBool(5, this->infer_shapes(), output);
+  }
+
+  // bool place_pruned_graph = 6;
+  if (this->place_pruned_graph() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteBool(6, this->place_pruned_graph(), output);
+  }
+
+  // bool enable_bfloat16_sendrecv = 7;
+  if (this->enable_bfloat16_sendrecv() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteBool(7, this->enable_bfloat16_sendrecv(), output);
+  }
+
+  // int32 timeline_step = 8;
+  if (this->timeline_step() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt32(8, this->timeline_step(), output);
+  }
+
+  // int64 build_cost_model_after = 9;
+  if (this->build_cost_model_after() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt64(9, this->build_cost_model_after(), output);
+  }
+
+  // .tensorflow.RewriterConfig rewrite_options = 10;
+  if (this->has_rewrite_options()) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      10, HasBitSetters::rewrite_options(this), output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.GraphOptions)
+}
+
+::google::protobuf::uint8* GraphOptions::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.GraphOptions)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // bool enable_recv_scheduling = 2;
+  if (this->enable_recv_scheduling() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(2, this->enable_recv_scheduling(), target);
+  }
+
+  // .tensorflow.OptimizerOptions optimizer_options = 3;
+  if (this->has_optimizer_options()) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        3, HasBitSetters::optimizer_options(this), deterministic, target);
+  }
+
+  // int64 build_cost_model = 4;
+  if (this->build_cost_model() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt64ToArray(4, this->build_cost_model(), target);
+  }
+
+  // bool infer_shapes = 5;
+  if (this->infer_shapes() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(5, this->infer_shapes(), target);
+  }
+
+  // bool place_pruned_graph = 6;
+  if (this->place_pruned_graph() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(6, this->place_pruned_graph(), target);
+  }
+
+  // bool enable_bfloat16_sendrecv = 7;
+  if (this->enable_bfloat16_sendrecv() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(7, this->enable_bfloat16_sendrecv(), target);
+  }
+
+  // int32 timeline_step = 8;
+  if (this->timeline_step() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt32ToArray(8, this->timeline_step(), target);
+  }
+
+  // int64 build_cost_model_after = 9;
+  if (this->build_cost_model_after() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt64ToArray(9, this->build_cost_model_after(), target);
+  }
+
+  // .tensorflow.RewriterConfig rewrite_options = 10;
+  if (this->has_rewrite_options()) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        10, HasBitSetters::rewrite_options(this), deterministic, target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.GraphOptions)
+  return target;
+}
+
+size_t GraphOptions::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.GraphOptions)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // .tensorflow.OptimizerOptions optimizer_options = 3;
+  if (this->has_optimizer_options()) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::MessageSize(
+        *optimizer_options_);
+  }
+
+  // .tensorflow.RewriterConfig rewrite_options = 10;
+  if (this->has_rewrite_options()) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::MessageSize(
+        *rewrite_options_);
+  }
+
+  // int64 build_cost_model = 4;
+  if (this->build_cost_model() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::Int64Size(
+        this->build_cost_model());
+  }
+
+  // bool enable_recv_scheduling = 2;
+  if (this->enable_recv_scheduling() != 0) {
+    total_size += 1 + 1;
+  }
+
+  // bool infer_shapes = 5;
+  if (this->infer_shapes() != 0) {
+    total_size += 1 + 1;
+  }
+
+  // bool place_pruned_graph = 6;
+  if (this->place_pruned_graph() != 0) {
+    total_size += 1 + 1;
+  }
+
+  // bool enable_bfloat16_sendrecv = 7;
+  if (this->enable_bfloat16_sendrecv() != 0) {
+    total_size += 1 + 1;
+  }
+
+  // int32 timeline_step = 8;
+  if (this->timeline_step() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::Int32Size(
+        this->timeline_step());
+  }
+
+  // int64 build_cost_model_after = 9;
+  if (this->build_cost_model_after() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::Int64Size(
+        this->build_cost_model_after());
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void GraphOptions::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.GraphOptions)
+  GOOGLE_DCHECK_NE(&from, this);
+  const GraphOptions* source =
+      ::google::protobuf::DynamicCastToGenerated<GraphOptions>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.GraphOptions)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.GraphOptions)
+    MergeFrom(*source);
+  }
+}
+
+void GraphOptions::MergeFrom(const GraphOptions& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.GraphOptions)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  if (from.has_optimizer_options()) {
+    mutable_optimizer_options()->::tensorflow::OptimizerOptions::MergeFrom(from.optimizer_options());
+  }
+  if (from.has_rewrite_options()) {
+    mutable_rewrite_options()->::tensorflow::RewriterConfig::MergeFrom(from.rewrite_options());
+  }
+  if (from.build_cost_model() != 0) {
+    set_build_cost_model(from.build_cost_model());
+  }
+  if (from.enable_recv_scheduling() != 0) {
+    set_enable_recv_scheduling(from.enable_recv_scheduling());
+  }
+  if (from.infer_shapes() != 0) {
+    set_infer_shapes(from.infer_shapes());
+  }
+  if (from.place_pruned_graph() != 0) {
+    set_place_pruned_graph(from.place_pruned_graph());
+  }
+  if (from.enable_bfloat16_sendrecv() != 0) {
+    set_enable_bfloat16_sendrecv(from.enable_bfloat16_sendrecv());
+  }
+  if (from.timeline_step() != 0) {
+    set_timeline_step(from.timeline_step());
+  }
+  if (from.build_cost_model_after() != 0) {
+    set_build_cost_model_after(from.build_cost_model_after());
+  }
+}
+
+void GraphOptions::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.GraphOptions)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void GraphOptions::CopyFrom(const GraphOptions& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.GraphOptions)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool GraphOptions::IsInitialized() const {
+  return true;
+}
+
+void GraphOptions::Swap(GraphOptions* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    GraphOptions* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void GraphOptions::UnsafeArenaSwap(GraphOptions* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void GraphOptions::InternalSwap(GraphOptions* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  swap(optimizer_options_, other->optimizer_options_);
+  swap(rewrite_options_, other->rewrite_options_);
+  swap(build_cost_model_, other->build_cost_model_);
+  swap(enable_recv_scheduling_, other->enable_recv_scheduling_);
+  swap(infer_shapes_, other->infer_shapes_);
+  swap(place_pruned_graph_, other->place_pruned_graph_);
+  swap(enable_bfloat16_sendrecv_, other->enable_bfloat16_sendrecv_);
+  swap(timeline_step_, other->timeline_step_);
+  swap(build_cost_model_after_, other->build_cost_model_after_);
+}
+
+::google::protobuf::Metadata GraphOptions::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+void ThreadPoolOptionProto::InitAsDefaultInstance() {
+}
+class ThreadPoolOptionProto::HasBitSetters {
+ public:
+};
+
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int ThreadPoolOptionProto::kNumThreadsFieldNumber;
+const int ThreadPoolOptionProto::kGlobalNameFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+ThreadPoolOptionProto::ThreadPoolOptionProto()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.ThreadPoolOptionProto)
+}
+ThreadPoolOptionProto::ThreadPoolOptionProto(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.ThreadPoolOptionProto)
+}
+ThreadPoolOptionProto::ThreadPoolOptionProto(const ThreadPoolOptionProto& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  global_name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.global_name().size() > 0) {
+    global_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.global_name(),
+      GetArenaNoVirtual());
+  }
+  num_threads_ = from.num_threads_;
+  // @@protoc_insertion_point(copy_constructor:tensorflow.ThreadPoolOptionProto)
+}
+
+void ThreadPoolOptionProto::SharedCtor() {
+  ::google::protobuf::internal::InitSCC(
+      &scc_info_ThreadPoolOptionProto_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto.base);
+  global_name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  num_threads_ = 0;
+}
+
+ThreadPoolOptionProto::~ThreadPoolOptionProto() {
+  // @@protoc_insertion_point(destructor:tensorflow.ThreadPoolOptionProto)
+  SharedDtor();
+}
+
+void ThreadPoolOptionProto::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+  global_name_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+
+void ThreadPoolOptionProto::ArenaDtor(void* object) {
+  ThreadPoolOptionProto* _this = reinterpret_cast< ThreadPoolOptionProto* >(object);
+  (void)_this;
+}
+void ThreadPoolOptionProto::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void ThreadPoolOptionProto::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const ThreadPoolOptionProto& ThreadPoolOptionProto::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_ThreadPoolOptionProto_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void ThreadPoolOptionProto::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.ThreadPoolOptionProto)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  global_name_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+  num_threads_ = 0;
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* ThreadPoolOptionProto::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<ThreadPoolOptionProto*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // int32 num_threads = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 8) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::google::protobuf::int32 value = val;
+        msg->set_num_threads(value);
+        break;
+      }
+      // string global_name = 2;
+      case 2: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 18) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("tensorflow.ThreadPoolOptionProto.global_name");
+        parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+        ::std::string* str = msg->mutable_global_name();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool ThreadPoolOptionProto::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.ThreadPoolOptionProto)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // int32 num_threads = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (8 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
+                 input, &num_threads_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // string global_name = 2;
+      case 2: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (18 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_global_name()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->global_name().data(), static_cast<int>(this->global_name().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.ThreadPoolOptionProto.global_name"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.ThreadPoolOptionProto)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.ThreadPoolOptionProto)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void ThreadPoolOptionProto::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.ThreadPoolOptionProto)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // int32 num_threads = 1;
+  if (this->num_threads() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt32(1, this->num_threads(), output);
+  }
+
+  // string global_name = 2;
+  if (this->global_name().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->global_name().data(), static_cast<int>(this->global_name().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.ThreadPoolOptionProto.global_name");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      2, this->global_name(), output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.ThreadPoolOptionProto)
+}
+
+::google::protobuf::uint8* ThreadPoolOptionProto::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.ThreadPoolOptionProto)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // int32 num_threads = 1;
+  if (this->num_threads() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt32ToArray(1, this->num_threads(), target);
+  }
+
+  // string global_name = 2;
+  if (this->global_name().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->global_name().data(), static_cast<int>(this->global_name().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.ThreadPoolOptionProto.global_name");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        2, this->global_name(), target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.ThreadPoolOptionProto)
+  return target;
+}
+
+size_t ThreadPoolOptionProto::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.ThreadPoolOptionProto)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // string global_name = 2;
+  if (this->global_name().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->global_name());
+  }
+
+  // int32 num_threads = 1;
+  if (this->num_threads() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::Int32Size(
+        this->num_threads());
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void ThreadPoolOptionProto::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.ThreadPoolOptionProto)
+  GOOGLE_DCHECK_NE(&from, this);
+  const ThreadPoolOptionProto* source =
+      ::google::protobuf::DynamicCastToGenerated<ThreadPoolOptionProto>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.ThreadPoolOptionProto)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.ThreadPoolOptionProto)
+    MergeFrom(*source);
+  }
+}
+
+void ThreadPoolOptionProto::MergeFrom(const ThreadPoolOptionProto& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.ThreadPoolOptionProto)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  if (from.global_name().size() > 0) {
+    set_global_name(from.global_name());
+  }
+  if (from.num_threads() != 0) {
+    set_num_threads(from.num_threads());
+  }
+}
+
+void ThreadPoolOptionProto::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.ThreadPoolOptionProto)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void ThreadPoolOptionProto::CopyFrom(const ThreadPoolOptionProto& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.ThreadPoolOptionProto)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool ThreadPoolOptionProto::IsInitialized() const {
+  return true;
+}
+
+void ThreadPoolOptionProto::Swap(ThreadPoolOptionProto* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    ThreadPoolOptionProto* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void ThreadPoolOptionProto::UnsafeArenaSwap(ThreadPoolOptionProto* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void ThreadPoolOptionProto::InternalSwap(ThreadPoolOptionProto* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  global_name_.Swap(&other->global_name_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+  swap(num_threads_, other->num_threads_);
+}
+
+::google::protobuf::Metadata ThreadPoolOptionProto::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+void RPCOptions::InitAsDefaultInstance() {
+}
+class RPCOptions::HasBitSetters {
+ public:
+};
+
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int RPCOptions::kUseRpcForInprocessMasterFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+RPCOptions::RPCOptions()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.RPCOptions)
+}
+RPCOptions::RPCOptions(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.RPCOptions)
+}
+RPCOptions::RPCOptions(const RPCOptions& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  use_rpc_for_inprocess_master_ = from.use_rpc_for_inprocess_master_;
+  // @@protoc_insertion_point(copy_constructor:tensorflow.RPCOptions)
+}
+
+void RPCOptions::SharedCtor() {
+  use_rpc_for_inprocess_master_ = false;
+}
+
+RPCOptions::~RPCOptions() {
+  // @@protoc_insertion_point(destructor:tensorflow.RPCOptions)
+  SharedDtor();
+}
+
+void RPCOptions::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+}
+
+void RPCOptions::ArenaDtor(void* object) {
+  RPCOptions* _this = reinterpret_cast< RPCOptions* >(object);
+  (void)_this;
+}
+void RPCOptions::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void RPCOptions::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const RPCOptions& RPCOptions::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_RPCOptions_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void RPCOptions::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.RPCOptions)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  use_rpc_for_inprocess_master_ = false;
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* RPCOptions::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<RPCOptions*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // bool use_rpc_for_inprocess_master = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 8) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        bool value = val;
+        msg->set_use_rpc_for_inprocess_master(value);
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool RPCOptions::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.RPCOptions)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // bool use_rpc_for_inprocess_master = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (8 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
+                 input, &use_rpc_for_inprocess_master_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.RPCOptions)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.RPCOptions)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void RPCOptions::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.RPCOptions)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // bool use_rpc_for_inprocess_master = 1;
+  if (this->use_rpc_for_inprocess_master() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteBool(1, this->use_rpc_for_inprocess_master(), output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.RPCOptions)
+}
+
+::google::protobuf::uint8* RPCOptions::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.RPCOptions)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // bool use_rpc_for_inprocess_master = 1;
+  if (this->use_rpc_for_inprocess_master() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(1, this->use_rpc_for_inprocess_master(), target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.RPCOptions)
+  return target;
+}
+
+size_t RPCOptions::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.RPCOptions)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // bool use_rpc_for_inprocess_master = 1;
+  if (this->use_rpc_for_inprocess_master() != 0) {
+    total_size += 1 + 1;
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void RPCOptions::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.RPCOptions)
+  GOOGLE_DCHECK_NE(&from, this);
+  const RPCOptions* source =
+      ::google::protobuf::DynamicCastToGenerated<RPCOptions>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.RPCOptions)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.RPCOptions)
+    MergeFrom(*source);
+  }
+}
+
+void RPCOptions::MergeFrom(const RPCOptions& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.RPCOptions)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  if (from.use_rpc_for_inprocess_master() != 0) {
+    set_use_rpc_for_inprocess_master(from.use_rpc_for_inprocess_master());
+  }
+}
+
+void RPCOptions::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.RPCOptions)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void RPCOptions::CopyFrom(const RPCOptions& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.RPCOptions)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool RPCOptions::IsInitialized() const {
+  return true;
+}
+
+void RPCOptions::Swap(RPCOptions* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    RPCOptions* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void RPCOptions::UnsafeArenaSwap(RPCOptions* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void RPCOptions::InternalSwap(RPCOptions* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  swap(use_rpc_for_inprocess_master_, other->use_rpc_for_inprocess_master_);
+}
+
+::google::protobuf::Metadata RPCOptions::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+ConfigProto_DeviceCountEntry_DoNotUse::ConfigProto_DeviceCountEntry_DoNotUse() {}
+ConfigProto_DeviceCountEntry_DoNotUse::ConfigProto_DeviceCountEntry_DoNotUse(::google::protobuf::Arena* arena)
+    : SuperType(arena) {}
+void ConfigProto_DeviceCountEntry_DoNotUse::MergeFrom(const ConfigProto_DeviceCountEntry_DoNotUse& other) {
+  MergeFromInternal(other);
+}
+::google::protobuf::Metadata ConfigProto_DeviceCountEntry_DoNotUse::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto[7];
+}
+void ConfigProto_DeviceCountEntry_DoNotUse::MergeFrom(
+    const ::google::protobuf::Message& other) {
+  ::google::protobuf::Message::MergeFrom(other);
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool ConfigProto_DeviceCountEntry_DoNotUse::_ParseMap(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx) {
+  using MF = ::google::protobuf::internal::MapField<
+      ConfigProto_DeviceCountEntry_DoNotUse, EntryKeyType, EntryValueType,
+      kEntryKeyFieldType, kEntryValueFieldType,
+      kEntryDefaultEnumValue>;
+  auto mf = static_cast<MF*>(object);
+  Parser<MF, ::google::protobuf::Map<EntryKeyType, EntryValueType>> parser(mf);
+#define DO_(x) if (!(x)) return false
+  DO_(parser.ParseMap(begin, end));
+  DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+    parser.key().data(), static_cast<int>(parser.key().length()),
+    ::google::protobuf::internal::WireFormatLite::PARSE,
+    "tensorflow.ConfigProto.DeviceCountEntry.key"));
+#undef DO_
+  return true;
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+
+// ===================================================================
+
+void ConfigProto_Experimental::InitAsDefaultInstance() {
+}
+class ConfigProto_Experimental::HasBitSetters {
+ public:
+};
+
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int ConfigProto_Experimental::kCollectiveGroupLeaderFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+ConfigProto_Experimental::ConfigProto_Experimental()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.ConfigProto.Experimental)
+}
+ConfigProto_Experimental::ConfigProto_Experimental(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.ConfigProto.Experimental)
+}
+ConfigProto_Experimental::ConfigProto_Experimental(const ConfigProto_Experimental& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  collective_group_leader_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.collective_group_leader().size() > 0) {
+    collective_group_leader_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.collective_group_leader(),
+      GetArenaNoVirtual());
+  }
+  // @@protoc_insertion_point(copy_constructor:tensorflow.ConfigProto.Experimental)
+}
+
+void ConfigProto_Experimental::SharedCtor() {
+  ::google::protobuf::internal::InitSCC(
+      &scc_info_ConfigProto_Experimental_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto.base);
+  collective_group_leader_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+
+ConfigProto_Experimental::~ConfigProto_Experimental() {
+  // @@protoc_insertion_point(destructor:tensorflow.ConfigProto.Experimental)
+  SharedDtor();
+}
+
+void ConfigProto_Experimental::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+  collective_group_leader_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+
+void ConfigProto_Experimental::ArenaDtor(void* object) {
+  ConfigProto_Experimental* _this = reinterpret_cast< ConfigProto_Experimental* >(object);
+  (void)_this;
+}
+void ConfigProto_Experimental::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void ConfigProto_Experimental::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const ConfigProto_Experimental& ConfigProto_Experimental::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_ConfigProto_Experimental_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void ConfigProto_Experimental::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.ConfigProto.Experimental)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  collective_group_leader_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* ConfigProto_Experimental::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<ConfigProto_Experimental*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // string collective_group_leader = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 10) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("tensorflow.ConfigProto.Experimental.collective_group_leader");
+        parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+        ::std::string* str = msg->mutable_collective_group_leader();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool ConfigProto_Experimental::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.ConfigProto.Experimental)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // string collective_group_leader = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (10 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_collective_group_leader()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->collective_group_leader().data(), static_cast<int>(this->collective_group_leader().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.ConfigProto.Experimental.collective_group_leader"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.ConfigProto.Experimental)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.ConfigProto.Experimental)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void ConfigProto_Experimental::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.ConfigProto.Experimental)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // string collective_group_leader = 1;
+  if (this->collective_group_leader().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->collective_group_leader().data(), static_cast<int>(this->collective_group_leader().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.ConfigProto.Experimental.collective_group_leader");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      1, this->collective_group_leader(), output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.ConfigProto.Experimental)
+}
+
+::google::protobuf::uint8* ConfigProto_Experimental::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.ConfigProto.Experimental)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // string collective_group_leader = 1;
+  if (this->collective_group_leader().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->collective_group_leader().data(), static_cast<int>(this->collective_group_leader().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.ConfigProto.Experimental.collective_group_leader");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        1, this->collective_group_leader(), target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.ConfigProto.Experimental)
+  return target;
+}
+
+size_t ConfigProto_Experimental::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.ConfigProto.Experimental)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // string collective_group_leader = 1;
+  if (this->collective_group_leader().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->collective_group_leader());
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void ConfigProto_Experimental::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.ConfigProto.Experimental)
+  GOOGLE_DCHECK_NE(&from, this);
+  const ConfigProto_Experimental* source =
+      ::google::protobuf::DynamicCastToGenerated<ConfigProto_Experimental>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.ConfigProto.Experimental)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.ConfigProto.Experimental)
+    MergeFrom(*source);
+  }
+}
+
+void ConfigProto_Experimental::MergeFrom(const ConfigProto_Experimental& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.ConfigProto.Experimental)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  if (from.collective_group_leader().size() > 0) {
+    set_collective_group_leader(from.collective_group_leader());
+  }
+}
+
+void ConfigProto_Experimental::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.ConfigProto.Experimental)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void ConfigProto_Experimental::CopyFrom(const ConfigProto_Experimental& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.ConfigProto.Experimental)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool ConfigProto_Experimental::IsInitialized() const {
+  return true;
+}
+
+void ConfigProto_Experimental::Swap(ConfigProto_Experimental* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    ConfigProto_Experimental* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void ConfigProto_Experimental::UnsafeArenaSwap(ConfigProto_Experimental* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void ConfigProto_Experimental::InternalSwap(ConfigProto_Experimental* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  collective_group_leader_.Swap(&other->collective_group_leader_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+}
+
+::google::protobuf::Metadata ConfigProto_Experimental::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+void ConfigProto::InitAsDefaultInstance() {
+  ::tensorflow::_ConfigProto_default_instance_._instance.get_mutable()->gpu_options_ = const_cast< ::tensorflow::GPUOptions*>(
+      ::tensorflow::GPUOptions::internal_default_instance());
+  ::tensorflow::_ConfigProto_default_instance_._instance.get_mutable()->graph_options_ = const_cast< ::tensorflow::GraphOptions*>(
+      ::tensorflow::GraphOptions::internal_default_instance());
+  ::tensorflow::_ConfigProto_default_instance_._instance.get_mutable()->rpc_options_ = const_cast< ::tensorflow::RPCOptions*>(
+      ::tensorflow::RPCOptions::internal_default_instance());
+  ::tensorflow::_ConfigProto_default_instance_._instance.get_mutable()->cluster_def_ = const_cast< ::tensorflow::ClusterDef*>(
+      ::tensorflow::ClusterDef::internal_default_instance());
+  ::tensorflow::_ConfigProto_default_instance_._instance.get_mutable()->experimental_ = const_cast< ::tensorflow::ConfigProto_Experimental*>(
+      ::tensorflow::ConfigProto_Experimental::internal_default_instance());
+}
+class ConfigProto::HasBitSetters {
+ public:
+  static const ::tensorflow::GPUOptions& gpu_options(const ConfigProto* msg);
+  static const ::tensorflow::GraphOptions& graph_options(const ConfigProto* msg);
+  static const ::tensorflow::RPCOptions& rpc_options(const ConfigProto* msg);
+  static const ::tensorflow::ClusterDef& cluster_def(const ConfigProto* msg);
+  static const ::tensorflow::ConfigProto_Experimental& experimental(const ConfigProto* msg);
+};
+
+const ::tensorflow::GPUOptions&
+ConfigProto::HasBitSetters::gpu_options(const ConfigProto* msg) {
+  return *msg->gpu_options_;
+}
+const ::tensorflow::GraphOptions&
+ConfigProto::HasBitSetters::graph_options(const ConfigProto* msg) {
+  return *msg->graph_options_;
+}
+const ::tensorflow::RPCOptions&
+ConfigProto::HasBitSetters::rpc_options(const ConfigProto* msg) {
+  return *msg->rpc_options_;
+}
+const ::tensorflow::ClusterDef&
+ConfigProto::HasBitSetters::cluster_def(const ConfigProto* msg) {
+  return *msg->cluster_def_;
+}
+const ::tensorflow::ConfigProto_Experimental&
+ConfigProto::HasBitSetters::experimental(const ConfigProto* msg) {
+  return *msg->experimental_;
+}
+void ConfigProto::unsafe_arena_set_allocated_gpu_options(
+    ::tensorflow::GPUOptions* gpu_options) {
+  if (GetArenaNoVirtual() == NULL) {
+    delete gpu_options_;
+  }
+  gpu_options_ = gpu_options;
+  if (gpu_options) {
+    
+  } else {
+    
+  }
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.ConfigProto.gpu_options)
+}
+void ConfigProto::unsafe_arena_set_allocated_graph_options(
+    ::tensorflow::GraphOptions* graph_options) {
+  if (GetArenaNoVirtual() == NULL) {
+    delete graph_options_;
+  }
+  graph_options_ = graph_options;
+  if (graph_options) {
+    
+  } else {
+    
+  }
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.ConfigProto.graph_options)
+}
+void ConfigProto::unsafe_arena_set_allocated_rpc_options(
+    ::tensorflow::RPCOptions* rpc_options) {
+  if (GetArenaNoVirtual() == NULL) {
+    delete rpc_options_;
+  }
+  rpc_options_ = rpc_options;
+  if (rpc_options) {
+    
+  } else {
+    
+  }
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.ConfigProto.rpc_options)
+}
+void ConfigProto::unsafe_arena_set_allocated_cluster_def(
+    ::tensorflow::ClusterDef* cluster_def) {
+  if (GetArenaNoVirtual() == NULL) {
+    delete cluster_def_;
+  }
+  cluster_def_ = cluster_def;
+  if (cluster_def) {
+    
+  } else {
+    
+  }
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.ConfigProto.cluster_def)
+}
+void ConfigProto::clear_cluster_def() {
+  if (GetArenaNoVirtual() == NULL && cluster_def_ != NULL) {
+    delete cluster_def_;
+  }
+  cluster_def_ = NULL;
+}
+void ConfigProto::unsafe_arena_set_allocated_experimental(
+    ::tensorflow::ConfigProto_Experimental* experimental) {
+  if (GetArenaNoVirtual() == NULL) {
+    delete experimental_;
+  }
+  experimental_ = experimental;
+  if (experimental) {
+    
+  } else {
+    
+  }
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.ConfigProto.experimental)
+}
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int ConfigProto::kDeviceCountFieldNumber;
+const int ConfigProto::kIntraOpParallelismThreadsFieldNumber;
+const int ConfigProto::kInterOpParallelismThreadsFieldNumber;
+const int ConfigProto::kUsePerSessionThreadsFieldNumber;
+const int ConfigProto::kSessionInterOpThreadPoolFieldNumber;
+const int ConfigProto::kPlacementPeriodFieldNumber;
+const int ConfigProto::kDeviceFiltersFieldNumber;
+const int ConfigProto::kGpuOptionsFieldNumber;
+const int ConfigProto::kAllowSoftPlacementFieldNumber;
+const int ConfigProto::kLogDevicePlacementFieldNumber;
+const int ConfigProto::kGraphOptionsFieldNumber;
+const int ConfigProto::kOperationTimeoutInMsFieldNumber;
+const int ConfigProto::kRpcOptionsFieldNumber;
+const int ConfigProto::kClusterDefFieldNumber;
+const int ConfigProto::kIsolateSessionStateFieldNumber;
+const int ConfigProto::kExperimentalFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+ConfigProto::ConfigProto()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.ConfigProto)
+}
+ConfigProto::ConfigProto(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena),
+  device_count_(arena),
+  device_filters_(arena),
+  session_inter_op_thread_pool_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.ConfigProto)
+}
+ConfigProto::ConfigProto(const ConfigProto& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL),
+      device_filters_(from.device_filters_),
+      session_inter_op_thread_pool_(from.session_inter_op_thread_pool_) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  device_count_.MergeFrom(from.device_count_);
+  if (from.has_gpu_options()) {
+    gpu_options_ = new ::tensorflow::GPUOptions(*from.gpu_options_);
+  } else {
+    gpu_options_ = NULL;
+  }
+  if (from.has_graph_options()) {
+    graph_options_ = new ::tensorflow::GraphOptions(*from.graph_options_);
+  } else {
+    graph_options_ = NULL;
+  }
+  if (from.has_rpc_options()) {
+    rpc_options_ = new ::tensorflow::RPCOptions(*from.rpc_options_);
+  } else {
+    rpc_options_ = NULL;
+  }
+  if (from.has_cluster_def()) {
+    cluster_def_ = new ::tensorflow::ClusterDef(*from.cluster_def_);
+  } else {
+    cluster_def_ = NULL;
+  }
+  if (from.has_experimental()) {
+    experimental_ = new ::tensorflow::ConfigProto_Experimental(*from.experimental_);
+  } else {
+    experimental_ = NULL;
+  }
+  ::memcpy(&intra_op_parallelism_threads_, &from.intra_op_parallelism_threads_,
+    static_cast<size_t>(reinterpret_cast<char*>(&operation_timeout_in_ms_) -
+    reinterpret_cast<char*>(&intra_op_parallelism_threads_)) + sizeof(operation_timeout_in_ms_));
+  // @@protoc_insertion_point(copy_constructor:tensorflow.ConfigProto)
+}
+
+void ConfigProto::SharedCtor() {
+  ::google::protobuf::internal::InitSCC(
+      &scc_info_ConfigProto_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto.base);
+  ::memset(&gpu_options_, 0, static_cast<size_t>(
+      reinterpret_cast<char*>(&operation_timeout_in_ms_) -
+      reinterpret_cast<char*>(&gpu_options_)) + sizeof(operation_timeout_in_ms_));
+}
+
+ConfigProto::~ConfigProto() {
+  // @@protoc_insertion_point(destructor:tensorflow.ConfigProto)
+  SharedDtor();
+}
+
+void ConfigProto::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+  if (this != internal_default_instance()) delete gpu_options_;
+  if (this != internal_default_instance()) delete graph_options_;
+  if (this != internal_default_instance()) delete rpc_options_;
+  if (this != internal_default_instance()) delete cluster_def_;
+  if (this != internal_default_instance()) delete experimental_;
+}
+
+void ConfigProto::ArenaDtor(void* object) {
+  ConfigProto* _this = reinterpret_cast< ConfigProto* >(object);
+  (void)_this;
+}
+void ConfigProto::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void ConfigProto::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const ConfigProto& ConfigProto::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_ConfigProto_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void ConfigProto::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.ConfigProto)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  device_count_.Clear();
+  device_filters_.Clear();
+  session_inter_op_thread_pool_.Clear();
+  if (GetArenaNoVirtual() == NULL && gpu_options_ != NULL) {
+    delete gpu_options_;
+  }
+  gpu_options_ = NULL;
+  if (GetArenaNoVirtual() == NULL && graph_options_ != NULL) {
+    delete graph_options_;
+  }
+  graph_options_ = NULL;
+  if (GetArenaNoVirtual() == NULL && rpc_options_ != NULL) {
+    delete rpc_options_;
+  }
+  rpc_options_ = NULL;
+  if (GetArenaNoVirtual() == NULL && cluster_def_ != NULL) {
+    delete cluster_def_;
+  }
+  cluster_def_ = NULL;
+  if (GetArenaNoVirtual() == NULL && experimental_ != NULL) {
+    delete experimental_;
+  }
+  experimental_ = NULL;
+  ::memset(&intra_op_parallelism_threads_, 0, static_cast<size_t>(
+      reinterpret_cast<char*>(&operation_timeout_in_ms_) -
+      reinterpret_cast<char*>(&intra_op_parallelism_threads_)) + sizeof(operation_timeout_in_ms_));
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* ConfigProto::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<ConfigProto*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // map<string, int32> device_count = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 10) goto handle_unusual;
+        do {
+          ptr = Varint::Parse32Inline(ptr, &size);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          parser_till_end = ::google::protobuf::internal::SlowMapEntryParser;
+          auto parse_map = ::tensorflow::ConfigProto_DeviceCountEntry_DoNotUse::_ParseMap;
+          ctx->extra_parse_data().payload.clear();
+          ctx->extra_parse_data().parse_map = parse_map;
+          object = &msg->device_count_;
+          if (size > end - ptr) goto len_delim_till_end;
+          auto newend = ptr + size;
+          GOOGLE_PROTOBUF_PARSER_ASSERT(parse_map(ptr, newend, object, ctx));
+          ptr = newend;
+          if (ptr >= end) break;
+        } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 10 && (ptr += 1));
+        break;
+      }
+      // int32 intra_op_parallelism_threads = 2;
+      case 2: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 16) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::google::protobuf::int32 value = val;
+        msg->set_intra_op_parallelism_threads(value);
+        break;
+      }
+      // int32 placement_period = 3;
+      case 3: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 24) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::google::protobuf::int32 value = val;
+        msg->set_placement_period(value);
+        break;
+      }
+      // repeated string device_filters = 4;
+      case 4: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 34) goto handle_unusual;
+        do {
+          ptr = Varint::Parse32Inline(ptr, &size);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          ctx->extra_parse_data().SetFieldName("tensorflow.ConfigProto.device_filters");
+          parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+          ::std::string* str = msg->add_device_filters();
+          str->clear();
+          object = str;
+          if (size > end - ptr) goto len_delim_till_end;
+          auto newend = ptr + size;
+          if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+          if (ptr >= end) break;
+        } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 34 && (ptr += 1));
+        break;
+      }
+      // int32 inter_op_parallelism_threads = 5;
+      case 5: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 40) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::google::protobuf::int32 value = val;
+        msg->set_inter_op_parallelism_threads(value);
+        break;
+      }
+      // .tensorflow.GPUOptions gpu_options = 6;
+      case 6: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 50) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        parser_till_end = ::tensorflow::GPUOptions::_InternalParse;
+        object = msg->mutable_gpu_options();
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                       ptr, newend);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+        ptr = newend;
+        break;
+      }
+      // bool allow_soft_placement = 7;
+      case 7: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 56) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        bool value = val;
+        msg->set_allow_soft_placement(value);
+        break;
+      }
+      // bool log_device_placement = 8;
+      case 8: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 64) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        bool value = val;
+        msg->set_log_device_placement(value);
+        break;
+      }
+      // bool use_per_session_threads = 9;
+      case 9: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 72) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        bool value = val;
+        msg->set_use_per_session_threads(value);
+        break;
+      }
+      // .tensorflow.GraphOptions graph_options = 10;
+      case 10: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 82) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        parser_till_end = ::tensorflow::GraphOptions::_InternalParse;
+        object = msg->mutable_graph_options();
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                       ptr, newend);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+        ptr = newend;
+        break;
+      }
+      // int64 operation_timeout_in_ms = 11;
+      case 11: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 88) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::google::protobuf::int64 value = val;
+        msg->set_operation_timeout_in_ms(value);
+        break;
+      }
+      // repeated .tensorflow.ThreadPoolOptionProto session_inter_op_thread_pool = 12;
+      case 12: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 98) goto handle_unusual;
+        do {
+          ptr = Varint::Parse32Inline(ptr, &size);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          parser_till_end = ::tensorflow::ThreadPoolOptionProto::_InternalParse;
+          object = msg->add_session_inter_op_thread_pool();
+          if (size > end - ptr) goto len_delim_till_end;
+          auto newend = ptr + size;
+          bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                         ptr, newend);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          ptr = newend;
+          if (ptr >= end) break;
+        } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 98 && (ptr += 1));
+        break;
+      }
+      // .tensorflow.RPCOptions rpc_options = 13;
+      case 13: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 106) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        parser_till_end = ::tensorflow::RPCOptions::_InternalParse;
+        object = msg->mutable_rpc_options();
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                       ptr, newend);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+        ptr = newend;
+        break;
+      }
+      // .tensorflow.ClusterDef cluster_def = 14;
+      case 14: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 114) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        parser_till_end = ::tensorflow::ClusterDef::_InternalParse;
+        object = msg->mutable_cluster_def();
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                       ptr, newend);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+        ptr = newend;
+        break;
+      }
+      // bool isolate_session_state = 15;
+      case 15: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 120) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        bool value = val;
+        msg->set_isolate_session_state(value);
+        break;
+      }
+      // .tensorflow.ConfigProto.Experimental experimental = 16;
+      case 16: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 130) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        parser_till_end = ::tensorflow::ConfigProto_Experimental::_InternalParse;
+        object = msg->mutable_experimental();
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                       ptr, newend);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+        ptr = newend;
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool ConfigProto::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.ConfigProto)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(16383u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // map<string, int32> device_count = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (10 & 0xFF)) {
+          ConfigProto_DeviceCountEntry_DoNotUse::Parser< ::google::protobuf::internal::MapField<
+              ConfigProto_DeviceCountEntry_DoNotUse,
+              ::std::string, ::google::protobuf::int32,
+              ::google::protobuf::internal::WireFormatLite::TYPE_STRING,
+              ::google::protobuf::internal::WireFormatLite::TYPE_INT32,
+              0 >,
+            ::google::protobuf::Map< ::std::string, ::google::protobuf::int32 > > parser(&device_count_);
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
+              input, &parser));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            parser.key().data(), static_cast<int>(parser.key().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.ConfigProto.DeviceCountEntry.key"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // int32 intra_op_parallelism_threads = 2;
+      case 2: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (16 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
+                 input, &intra_op_parallelism_threads_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // int32 placement_period = 3;
+      case 3: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (24 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
+                 input, &placement_period_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // repeated string device_filters = 4;
+      case 4: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (34 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->add_device_filters()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->device_filters(this->device_filters_size() - 1).data(),
+            static_cast<int>(this->device_filters(this->device_filters_size() - 1).length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.ConfigProto.device_filters"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // int32 inter_op_parallelism_threads = 5;
+      case 5: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (40 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
+                 input, &inter_op_parallelism_threads_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // .tensorflow.GPUOptions gpu_options = 6;
+      case 6: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (50 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+               input, mutable_gpu_options()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // bool allow_soft_placement = 7;
+      case 7: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (56 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
+                 input, &allow_soft_placement_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // bool log_device_placement = 8;
+      case 8: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (64 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
+                 input, &log_device_placement_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // bool use_per_session_threads = 9;
+      case 9: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (72 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
+                 input, &use_per_session_threads_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // .tensorflow.GraphOptions graph_options = 10;
+      case 10: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (82 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+               input, mutable_graph_options()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // int64 operation_timeout_in_ms = 11;
+      case 11: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (88 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>(
+                 input, &operation_timeout_in_ms_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // repeated .tensorflow.ThreadPoolOptionProto session_inter_op_thread_pool = 12;
+      case 12: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (98 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+                input, add_session_inter_op_thread_pool()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // .tensorflow.RPCOptions rpc_options = 13;
+      case 13: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (106 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+               input, mutable_rpc_options()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // .tensorflow.ClusterDef cluster_def = 14;
+      case 14: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (114 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+               input, mutable_cluster_def()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // bool isolate_session_state = 15;
+      case 15: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (120 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
+                 input, &isolate_session_state_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // .tensorflow.ConfigProto.Experimental experimental = 16;
+      case 16: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (130 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+               input, mutable_experimental()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.ConfigProto)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.ConfigProto)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void ConfigProto::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.ConfigProto)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // map<string, int32> device_count = 1;
+  if (!this->device_count().empty()) {
+    typedef ::google::protobuf::Map< ::std::string, ::google::protobuf::int32 >::const_pointer
+        ConstPtr;
+    typedef ConstPtr SortItem;
+    typedef ::google::protobuf::internal::CompareByDerefFirst<SortItem> Less;
+    struct Utf8Check {
+      static void Check(ConstPtr p) {
+        ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+          p->first.data(), static_cast<int>(p->first.length()),
+          ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+          "tensorflow.ConfigProto.DeviceCountEntry.key");
+      }
+    };
+
+    if (output->IsSerializationDeterministic() &&
+        this->device_count().size() > 1) {
+      ::std::unique_ptr<SortItem[]> items(
+          new SortItem[this->device_count().size()]);
+      typedef ::google::protobuf::Map< ::std::string, ::google::protobuf::int32 >::size_type size_type;
+      size_type n = 0;
+      for (::google::protobuf::Map< ::std::string, ::google::protobuf::int32 >::const_iterator
+          it = this->device_count().begin();
+          it != this->device_count().end(); ++it, ++n) {
+        items[static_cast<ptrdiff_t>(n)] = SortItem(&*it);
+      }
+      ::std::sort(&items[0], &items[static_cast<ptrdiff_t>(n)], Less());
+      ::std::unique_ptr<ConfigProto_DeviceCountEntry_DoNotUse> entry;
+      for (size_type i = 0; i < n; i++) {
+        entry.reset(device_count_.NewEntryWrapper(items[static_cast<ptrdiff_t>(i)]->first, items[static_cast<ptrdiff_t>(i)]->second));
+        ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(1, *entry, output);
+        if (entry->GetArena() != NULL) {
+          entry.release();
+        }
+        Utf8Check::Check(&(*items[static_cast<ptrdiff_t>(i)]));
+      }
+    } else {
+      ::std::unique_ptr<ConfigProto_DeviceCountEntry_DoNotUse> entry;
+      for (::google::protobuf::Map< ::std::string, ::google::protobuf::int32 >::const_iterator
+          it = this->device_count().begin();
+          it != this->device_count().end(); ++it) {
+        entry.reset(device_count_.NewEntryWrapper(it->first, it->second));
+        ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(1, *entry, output);
+        if (entry->GetArena() != NULL) {
+          entry.release();
+        }
+        Utf8Check::Check(&(*it));
+      }
+    }
+  }
+
+  // int32 intra_op_parallelism_threads = 2;
+  if (this->intra_op_parallelism_threads() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt32(2, this->intra_op_parallelism_threads(), output);
+  }
+
+  // int32 placement_period = 3;
+  if (this->placement_period() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt32(3, this->placement_period(), output);
+  }
+
+  // repeated string device_filters = 4;
+  for (int i = 0, n = this->device_filters_size(); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->device_filters(i).data(), static_cast<int>(this->device_filters(i).length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.ConfigProto.device_filters");
+    ::google::protobuf::internal::WireFormatLite::WriteString(
+      4, this->device_filters(i), output);
+  }
+
+  // int32 inter_op_parallelism_threads = 5;
+  if (this->inter_op_parallelism_threads() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt32(5, this->inter_op_parallelism_threads(), output);
+  }
+
+  // .tensorflow.GPUOptions gpu_options = 6;
+  if (this->has_gpu_options()) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      6, HasBitSetters::gpu_options(this), output);
+  }
+
+  // bool allow_soft_placement = 7;
+  if (this->allow_soft_placement() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteBool(7, this->allow_soft_placement(), output);
+  }
+
+  // bool log_device_placement = 8;
+  if (this->log_device_placement() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteBool(8, this->log_device_placement(), output);
+  }
+
+  // bool use_per_session_threads = 9;
+  if (this->use_per_session_threads() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteBool(9, this->use_per_session_threads(), output);
+  }
+
+  // .tensorflow.GraphOptions graph_options = 10;
+  if (this->has_graph_options()) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      10, HasBitSetters::graph_options(this), output);
+  }
+
+  // int64 operation_timeout_in_ms = 11;
+  if (this->operation_timeout_in_ms() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt64(11, this->operation_timeout_in_ms(), output);
+  }
+
+  // repeated .tensorflow.ThreadPoolOptionProto session_inter_op_thread_pool = 12;
+  for (unsigned int i = 0,
+      n = static_cast<unsigned int>(this->session_inter_op_thread_pool_size()); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      12,
+      this->session_inter_op_thread_pool(static_cast<int>(i)),
+      output);
+  }
+
+  // .tensorflow.RPCOptions rpc_options = 13;
+  if (this->has_rpc_options()) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      13, HasBitSetters::rpc_options(this), output);
+  }
+
+  // .tensorflow.ClusterDef cluster_def = 14;
+  if (this->has_cluster_def()) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      14, HasBitSetters::cluster_def(this), output);
+  }
+
+  // bool isolate_session_state = 15;
+  if (this->isolate_session_state() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteBool(15, this->isolate_session_state(), output);
+  }
+
+  // .tensorflow.ConfigProto.Experimental experimental = 16;
+  if (this->has_experimental()) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      16, HasBitSetters::experimental(this), output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.ConfigProto)
+}
+
+::google::protobuf::uint8* ConfigProto::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.ConfigProto)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // map<string, int32> device_count = 1;
+  if (!this->device_count().empty()) {
+    typedef ::google::protobuf::Map< ::std::string, ::google::protobuf::int32 >::const_pointer
+        ConstPtr;
+    typedef ConstPtr SortItem;
+    typedef ::google::protobuf::internal::CompareByDerefFirst<SortItem> Less;
+    struct Utf8Check {
+      static void Check(ConstPtr p) {
+        ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+          p->first.data(), static_cast<int>(p->first.length()),
+          ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+          "tensorflow.ConfigProto.DeviceCountEntry.key");
+      }
+    };
+
+    if (deterministic &&
+        this->device_count().size() > 1) {
+      ::std::unique_ptr<SortItem[]> items(
+          new SortItem[this->device_count().size()]);
+      typedef ::google::protobuf::Map< ::std::string, ::google::protobuf::int32 >::size_type size_type;
+      size_type n = 0;
+      for (::google::protobuf::Map< ::std::string, ::google::protobuf::int32 >::const_iterator
+          it = this->device_count().begin();
+          it != this->device_count().end(); ++it, ++n) {
+        items[static_cast<ptrdiff_t>(n)] = SortItem(&*it);
+      }
+      ::std::sort(&items[0], &items[static_cast<ptrdiff_t>(n)], Less());
+      ::std::unique_ptr<ConfigProto_DeviceCountEntry_DoNotUse> entry;
+      for (size_type i = 0; i < n; i++) {
+        entry.reset(device_count_.NewEntryWrapper(items[static_cast<ptrdiff_t>(i)]->first, items[static_cast<ptrdiff_t>(i)]->second));
+        target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessageNoVirtualToArray(1, *entry, deterministic, target);
+        if (entry->GetArena() != NULL) {
+          entry.release();
+        }
+        Utf8Check::Check(&(*items[static_cast<ptrdiff_t>(i)]));
+      }
+    } else {
+      ::std::unique_ptr<ConfigProto_DeviceCountEntry_DoNotUse> entry;
+      for (::google::protobuf::Map< ::std::string, ::google::protobuf::int32 >::const_iterator
+          it = this->device_count().begin();
+          it != this->device_count().end(); ++it) {
+        entry.reset(device_count_.NewEntryWrapper(it->first, it->second));
+        target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessageNoVirtualToArray(1, *entry, deterministic, target);
+        if (entry->GetArena() != NULL) {
+          entry.release();
+        }
+        Utf8Check::Check(&(*it));
+      }
+    }
+  }
+
+  // int32 intra_op_parallelism_threads = 2;
+  if (this->intra_op_parallelism_threads() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt32ToArray(2, this->intra_op_parallelism_threads(), target);
+  }
+
+  // int32 placement_period = 3;
+  if (this->placement_period() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt32ToArray(3, this->placement_period(), target);
+  }
+
+  // repeated string device_filters = 4;
+  for (int i = 0, n = this->device_filters_size(); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->device_filters(i).data(), static_cast<int>(this->device_filters(i).length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.ConfigProto.device_filters");
+    target = ::google::protobuf::internal::WireFormatLite::
+      WriteStringToArray(4, this->device_filters(i), target);
+  }
+
+  // int32 inter_op_parallelism_threads = 5;
+  if (this->inter_op_parallelism_threads() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt32ToArray(5, this->inter_op_parallelism_threads(), target);
+  }
+
+  // .tensorflow.GPUOptions gpu_options = 6;
+  if (this->has_gpu_options()) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        6, HasBitSetters::gpu_options(this), deterministic, target);
+  }
+
+  // bool allow_soft_placement = 7;
+  if (this->allow_soft_placement() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(7, this->allow_soft_placement(), target);
+  }
+
+  // bool log_device_placement = 8;
+  if (this->log_device_placement() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(8, this->log_device_placement(), target);
+  }
+
+  // bool use_per_session_threads = 9;
+  if (this->use_per_session_threads() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(9, this->use_per_session_threads(), target);
+  }
+
+  // .tensorflow.GraphOptions graph_options = 10;
+  if (this->has_graph_options()) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        10, HasBitSetters::graph_options(this), deterministic, target);
+  }
+
+  // int64 operation_timeout_in_ms = 11;
+  if (this->operation_timeout_in_ms() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt64ToArray(11, this->operation_timeout_in_ms(), target);
+  }
+
+  // repeated .tensorflow.ThreadPoolOptionProto session_inter_op_thread_pool = 12;
+  for (unsigned int i = 0,
+      n = static_cast<unsigned int>(this->session_inter_op_thread_pool_size()); i < n; i++) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        12, this->session_inter_op_thread_pool(static_cast<int>(i)), deterministic, target);
+  }
+
+  // .tensorflow.RPCOptions rpc_options = 13;
+  if (this->has_rpc_options()) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        13, HasBitSetters::rpc_options(this), deterministic, target);
+  }
+
+  // .tensorflow.ClusterDef cluster_def = 14;
+  if (this->has_cluster_def()) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        14, HasBitSetters::cluster_def(this), deterministic, target);
+  }
+
+  // bool isolate_session_state = 15;
+  if (this->isolate_session_state() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(15, this->isolate_session_state(), target);
+  }
+
+  // .tensorflow.ConfigProto.Experimental experimental = 16;
+  if (this->has_experimental()) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        16, HasBitSetters::experimental(this), deterministic, target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.ConfigProto)
+  return target;
+}
+
+size_t ConfigProto::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.ConfigProto)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // map<string, int32> device_count = 1;
+  total_size += 1 *
+      ::google::protobuf::internal::FromIntSize(this->device_count_size());
+  {
+    ::std::unique_ptr<ConfigProto_DeviceCountEntry_DoNotUse> entry;
+    for (::google::protobuf::Map< ::std::string, ::google::protobuf::int32 >::const_iterator
+        it = this->device_count().begin();
+        it != this->device_count().end(); ++it) {
+      if (entry.get() != NULL && entry->GetArena() != NULL) {
+        entry.release();
+      }
+      entry.reset(device_count_.NewEntryWrapper(it->first, it->second));
+      total_size += ::google::protobuf::internal::WireFormatLite::
+          MessageSizeNoVirtual(*entry);
+    }
+    if (entry.get() != NULL && entry->GetArena() != NULL) {
+      entry.release();
+    }
+  }
+
+  // repeated string device_filters = 4;
+  total_size += 1 *
+      ::google::protobuf::internal::FromIntSize(this->device_filters_size());
+  for (int i = 0, n = this->device_filters_size(); i < n; i++) {
+    total_size += ::google::protobuf::internal::WireFormatLite::StringSize(
+      this->device_filters(i));
+  }
+
+  // repeated .tensorflow.ThreadPoolOptionProto session_inter_op_thread_pool = 12;
+  {
+    unsigned int count = static_cast<unsigned int>(this->session_inter_op_thread_pool_size());
+    total_size += 1UL * count;
+    for (unsigned int i = 0; i < count; i++) {
+      total_size +=
+        ::google::protobuf::internal::WireFormatLite::MessageSize(
+          this->session_inter_op_thread_pool(static_cast<int>(i)));
+    }
+  }
+
+  // .tensorflow.GPUOptions gpu_options = 6;
+  if (this->has_gpu_options()) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::MessageSize(
+        *gpu_options_);
+  }
+
+  // .tensorflow.GraphOptions graph_options = 10;
+  if (this->has_graph_options()) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::MessageSize(
+        *graph_options_);
+  }
+
+  // .tensorflow.RPCOptions rpc_options = 13;
+  if (this->has_rpc_options()) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::MessageSize(
+        *rpc_options_);
+  }
+
+  // .tensorflow.ClusterDef cluster_def = 14;
+  if (this->has_cluster_def()) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::MessageSize(
+        *cluster_def_);
+  }
+
+  // .tensorflow.ConfigProto.Experimental experimental = 16;
+  if (this->has_experimental()) {
+    total_size += 2 +
+      ::google::protobuf::internal::WireFormatLite::MessageSize(
+        *experimental_);
+  }
+
+  // int32 intra_op_parallelism_threads = 2;
+  if (this->intra_op_parallelism_threads() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::Int32Size(
+        this->intra_op_parallelism_threads());
+  }
+
+  // int32 placement_period = 3;
+  if (this->placement_period() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::Int32Size(
+        this->placement_period());
+  }
+
+  // int32 inter_op_parallelism_threads = 5;
+  if (this->inter_op_parallelism_threads() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::Int32Size(
+        this->inter_op_parallelism_threads());
+  }
+
+  // bool use_per_session_threads = 9;
+  if (this->use_per_session_threads() != 0) {
+    total_size += 1 + 1;
+  }
+
+  // bool allow_soft_placement = 7;
+  if (this->allow_soft_placement() != 0) {
+    total_size += 1 + 1;
+  }
+
+  // bool log_device_placement = 8;
+  if (this->log_device_placement() != 0) {
+    total_size += 1 + 1;
+  }
+
+  // bool isolate_session_state = 15;
+  if (this->isolate_session_state() != 0) {
+    total_size += 1 + 1;
+  }
+
+  // int64 operation_timeout_in_ms = 11;
+  if (this->operation_timeout_in_ms() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::Int64Size(
+        this->operation_timeout_in_ms());
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void ConfigProto::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.ConfigProto)
+  GOOGLE_DCHECK_NE(&from, this);
+  const ConfigProto* source =
+      ::google::protobuf::DynamicCastToGenerated<ConfigProto>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.ConfigProto)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.ConfigProto)
+    MergeFrom(*source);
+  }
+}
+
+void ConfigProto::MergeFrom(const ConfigProto& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.ConfigProto)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  device_count_.MergeFrom(from.device_count_);
+  device_filters_.MergeFrom(from.device_filters_);
+  session_inter_op_thread_pool_.MergeFrom(from.session_inter_op_thread_pool_);
+  if (from.has_gpu_options()) {
+    mutable_gpu_options()->::tensorflow::GPUOptions::MergeFrom(from.gpu_options());
+  }
+  if (from.has_graph_options()) {
+    mutable_graph_options()->::tensorflow::GraphOptions::MergeFrom(from.graph_options());
+  }
+  if (from.has_rpc_options()) {
+    mutable_rpc_options()->::tensorflow::RPCOptions::MergeFrom(from.rpc_options());
+  }
+  if (from.has_cluster_def()) {
+    mutable_cluster_def()->::tensorflow::ClusterDef::MergeFrom(from.cluster_def());
+  }
+  if (from.has_experimental()) {
+    mutable_experimental()->::tensorflow::ConfigProto_Experimental::MergeFrom(from.experimental());
+  }
+  if (from.intra_op_parallelism_threads() != 0) {
+    set_intra_op_parallelism_threads(from.intra_op_parallelism_threads());
+  }
+  if (from.placement_period() != 0) {
+    set_placement_period(from.placement_period());
+  }
+  if (from.inter_op_parallelism_threads() != 0) {
+    set_inter_op_parallelism_threads(from.inter_op_parallelism_threads());
+  }
+  if (from.use_per_session_threads() != 0) {
+    set_use_per_session_threads(from.use_per_session_threads());
+  }
+  if (from.allow_soft_placement() != 0) {
+    set_allow_soft_placement(from.allow_soft_placement());
+  }
+  if (from.log_device_placement() != 0) {
+    set_log_device_placement(from.log_device_placement());
+  }
+  if (from.isolate_session_state() != 0) {
+    set_isolate_session_state(from.isolate_session_state());
+  }
+  if (from.operation_timeout_in_ms() != 0) {
+    set_operation_timeout_in_ms(from.operation_timeout_in_ms());
+  }
+}
+
+void ConfigProto::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.ConfigProto)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void ConfigProto::CopyFrom(const ConfigProto& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.ConfigProto)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool ConfigProto::IsInitialized() const {
+  return true;
+}
+
+void ConfigProto::Swap(ConfigProto* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    ConfigProto* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void ConfigProto::UnsafeArenaSwap(ConfigProto* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void ConfigProto::InternalSwap(ConfigProto* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  device_count_.Swap(&other->device_count_);
+  device_filters_.InternalSwap(CastToBase(&other->device_filters_));
+  CastToBase(&session_inter_op_thread_pool_)->InternalSwap(CastToBase(&other->session_inter_op_thread_pool_));
+  swap(gpu_options_, other->gpu_options_);
+  swap(graph_options_, other->graph_options_);
+  swap(rpc_options_, other->rpc_options_);
+  swap(cluster_def_, other->cluster_def_);
+  swap(experimental_, other->experimental_);
+  swap(intra_op_parallelism_threads_, other->intra_op_parallelism_threads_);
+  swap(placement_period_, other->placement_period_);
+  swap(inter_op_parallelism_threads_, other->inter_op_parallelism_threads_);
+  swap(use_per_session_threads_, other->use_per_session_threads_);
+  swap(allow_soft_placement_, other->allow_soft_placement_);
+  swap(log_device_placement_, other->log_device_placement_);
+  swap(isolate_session_state_, other->isolate_session_state_);
+  swap(operation_timeout_in_ms_, other->operation_timeout_in_ms_);
+}
+
+::google::protobuf::Metadata ConfigProto::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+void RunOptions_Experimental::InitAsDefaultInstance() {
+}
+class RunOptions_Experimental::HasBitSetters {
+ public:
+};
+
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int RunOptions_Experimental::kCollectiveGraphKeyFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+RunOptions_Experimental::RunOptions_Experimental()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.RunOptions.Experimental)
+}
+RunOptions_Experimental::RunOptions_Experimental(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.RunOptions.Experimental)
+}
+RunOptions_Experimental::RunOptions_Experimental(const RunOptions_Experimental& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  collective_graph_key_ = from.collective_graph_key_;
+  // @@protoc_insertion_point(copy_constructor:tensorflow.RunOptions.Experimental)
+}
+
+void RunOptions_Experimental::SharedCtor() {
+  collective_graph_key_ = PROTOBUF_LONGLONG(0);
+}
+
+RunOptions_Experimental::~RunOptions_Experimental() {
+  // @@protoc_insertion_point(destructor:tensorflow.RunOptions.Experimental)
+  SharedDtor();
+}
+
+void RunOptions_Experimental::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+}
+
+void RunOptions_Experimental::ArenaDtor(void* object) {
+  RunOptions_Experimental* _this = reinterpret_cast< RunOptions_Experimental* >(object);
+  (void)_this;
+}
+void RunOptions_Experimental::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void RunOptions_Experimental::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const RunOptions_Experimental& RunOptions_Experimental::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_RunOptions_Experimental_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void RunOptions_Experimental::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.RunOptions.Experimental)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  collective_graph_key_ = PROTOBUF_LONGLONG(0);
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* RunOptions_Experimental::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<RunOptions_Experimental*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // int64 collective_graph_key = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 8) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::google::protobuf::int64 value = val;
+        msg->set_collective_graph_key(value);
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool RunOptions_Experimental::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.RunOptions.Experimental)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // int64 collective_graph_key = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (8 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>(
+                 input, &collective_graph_key_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.RunOptions.Experimental)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.RunOptions.Experimental)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void RunOptions_Experimental::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.RunOptions.Experimental)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // int64 collective_graph_key = 1;
+  if (this->collective_graph_key() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt64(1, this->collective_graph_key(), output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.RunOptions.Experimental)
+}
+
+::google::protobuf::uint8* RunOptions_Experimental::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.RunOptions.Experimental)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // int64 collective_graph_key = 1;
+  if (this->collective_graph_key() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt64ToArray(1, this->collective_graph_key(), target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.RunOptions.Experimental)
+  return target;
+}
+
+size_t RunOptions_Experimental::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.RunOptions.Experimental)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // int64 collective_graph_key = 1;
+  if (this->collective_graph_key() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::Int64Size(
+        this->collective_graph_key());
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void RunOptions_Experimental::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.RunOptions.Experimental)
+  GOOGLE_DCHECK_NE(&from, this);
+  const RunOptions_Experimental* source =
+      ::google::protobuf::DynamicCastToGenerated<RunOptions_Experimental>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.RunOptions.Experimental)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.RunOptions.Experimental)
+    MergeFrom(*source);
+  }
+}
+
+void RunOptions_Experimental::MergeFrom(const RunOptions_Experimental& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.RunOptions.Experimental)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  if (from.collective_graph_key() != 0) {
+    set_collective_graph_key(from.collective_graph_key());
+  }
+}
+
+void RunOptions_Experimental::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.RunOptions.Experimental)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void RunOptions_Experimental::CopyFrom(const RunOptions_Experimental& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.RunOptions.Experimental)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool RunOptions_Experimental::IsInitialized() const {
+  return true;
+}
+
+void RunOptions_Experimental::Swap(RunOptions_Experimental* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    RunOptions_Experimental* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void RunOptions_Experimental::UnsafeArenaSwap(RunOptions_Experimental* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void RunOptions_Experimental::InternalSwap(RunOptions_Experimental* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  swap(collective_graph_key_, other->collective_graph_key_);
+}
+
+::google::protobuf::Metadata RunOptions_Experimental::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+void RunOptions::InitAsDefaultInstance() {
+  ::tensorflow::_RunOptions_default_instance_._instance.get_mutable()->debug_options_ = const_cast< ::tensorflow::DebugOptions*>(
+      ::tensorflow::DebugOptions::internal_default_instance());
+  ::tensorflow::_RunOptions_default_instance_._instance.get_mutable()->experimental_ = const_cast< ::tensorflow::RunOptions_Experimental*>(
+      ::tensorflow::RunOptions_Experimental::internal_default_instance());
+}
+class RunOptions::HasBitSetters {
+ public:
+  static const ::tensorflow::DebugOptions& debug_options(const RunOptions* msg);
+  static const ::tensorflow::RunOptions_Experimental& experimental(const RunOptions* msg);
+};
+
+const ::tensorflow::DebugOptions&
+RunOptions::HasBitSetters::debug_options(const RunOptions* msg) {
+  return *msg->debug_options_;
+}
+const ::tensorflow::RunOptions_Experimental&
+RunOptions::HasBitSetters::experimental(const RunOptions* msg) {
+  return *msg->experimental_;
+}
+void RunOptions::unsafe_arena_set_allocated_debug_options(
+    ::tensorflow::DebugOptions* debug_options) {
+  if (GetArenaNoVirtual() == NULL) {
+    delete debug_options_;
+  }
+  debug_options_ = debug_options;
+  if (debug_options) {
+    
+  } else {
+    
+  }
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.RunOptions.debug_options)
+}
+void RunOptions::clear_debug_options() {
+  if (GetArenaNoVirtual() == NULL && debug_options_ != NULL) {
+    delete debug_options_;
+  }
+  debug_options_ = NULL;
+}
+void RunOptions::unsafe_arena_set_allocated_experimental(
+    ::tensorflow::RunOptions_Experimental* experimental) {
+  if (GetArenaNoVirtual() == NULL) {
+    delete experimental_;
+  }
+  experimental_ = experimental;
+  if (experimental) {
+    
+  } else {
+    
+  }
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.RunOptions.experimental)
+}
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int RunOptions::kTraceLevelFieldNumber;
+const int RunOptions::kTimeoutInMsFieldNumber;
+const int RunOptions::kInterOpThreadPoolFieldNumber;
+const int RunOptions::kOutputPartitionGraphsFieldNumber;
+const int RunOptions::kDebugOptionsFieldNumber;
+const int RunOptions::kReportTensorAllocationsUponOomFieldNumber;
+const int RunOptions::kExperimentalFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+RunOptions::RunOptions()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.RunOptions)
+}
+RunOptions::RunOptions(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.RunOptions)
+}
+RunOptions::RunOptions(const RunOptions& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  if (from.has_debug_options()) {
+    debug_options_ = new ::tensorflow::DebugOptions(*from.debug_options_);
+  } else {
+    debug_options_ = NULL;
+  }
+  if (from.has_experimental()) {
+    experimental_ = new ::tensorflow::RunOptions_Experimental(*from.experimental_);
+  } else {
+    experimental_ = NULL;
+  }
+  ::memcpy(&timeout_in_ms_, &from.timeout_in_ms_,
+    static_cast<size_t>(reinterpret_cast<char*>(&report_tensor_allocations_upon_oom_) -
+    reinterpret_cast<char*>(&timeout_in_ms_)) + sizeof(report_tensor_allocations_upon_oom_));
+  // @@protoc_insertion_point(copy_constructor:tensorflow.RunOptions)
+}
+
+void RunOptions::SharedCtor() {
+  ::google::protobuf::internal::InitSCC(
+      &scc_info_RunOptions_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto.base);
+  ::memset(&debug_options_, 0, static_cast<size_t>(
+      reinterpret_cast<char*>(&report_tensor_allocations_upon_oom_) -
+      reinterpret_cast<char*>(&debug_options_)) + sizeof(report_tensor_allocations_upon_oom_));
+}
+
+RunOptions::~RunOptions() {
+  // @@protoc_insertion_point(destructor:tensorflow.RunOptions)
+  SharedDtor();
+}
+
+void RunOptions::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+  if (this != internal_default_instance()) delete debug_options_;
+  if (this != internal_default_instance()) delete experimental_;
+}
+
+void RunOptions::ArenaDtor(void* object) {
+  RunOptions* _this = reinterpret_cast< RunOptions* >(object);
+  (void)_this;
+}
+void RunOptions::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void RunOptions::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const RunOptions& RunOptions::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_RunOptions_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void RunOptions::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.RunOptions)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  if (GetArenaNoVirtual() == NULL && debug_options_ != NULL) {
+    delete debug_options_;
+  }
+  debug_options_ = NULL;
+  if (GetArenaNoVirtual() == NULL && experimental_ != NULL) {
+    delete experimental_;
+  }
+  experimental_ = NULL;
+  ::memset(&timeout_in_ms_, 0, static_cast<size_t>(
+      reinterpret_cast<char*>(&report_tensor_allocations_upon_oom_) -
+      reinterpret_cast<char*>(&timeout_in_ms_)) + sizeof(report_tensor_allocations_upon_oom_));
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* RunOptions::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<RunOptions*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // .tensorflow.RunOptions.TraceLevel trace_level = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 8) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::tensorflow::RunOptions_TraceLevel value = static_cast<::tensorflow::RunOptions_TraceLevel>(val);
+        msg->set_trace_level(value);
+        break;
+      }
+      // int64 timeout_in_ms = 2;
+      case 2: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 16) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::google::protobuf::int64 value = val;
+        msg->set_timeout_in_ms(value);
+        break;
+      }
+      // int32 inter_op_thread_pool = 3;
+      case 3: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 24) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::google::protobuf::int32 value = val;
+        msg->set_inter_op_thread_pool(value);
+        break;
+      }
+      // bool output_partition_graphs = 5;
+      case 5: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 40) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        bool value = val;
+        msg->set_output_partition_graphs(value);
+        break;
+      }
+      // .tensorflow.DebugOptions debug_options = 6;
+      case 6: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 50) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        parser_till_end = ::tensorflow::DebugOptions::_InternalParse;
+        object = msg->mutable_debug_options();
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                       ptr, newend);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+        ptr = newend;
+        break;
+      }
+      // bool report_tensor_allocations_upon_oom = 7;
+      case 7: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 56) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        bool value = val;
+        msg->set_report_tensor_allocations_upon_oom(value);
+        break;
+      }
+      // .tensorflow.RunOptions.Experimental experimental = 8;
+      case 8: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 66) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        parser_till_end = ::tensorflow::RunOptions_Experimental::_InternalParse;
+        object = msg->mutable_experimental();
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                       ptr, newend);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+        ptr = newend;
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool RunOptions::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.RunOptions)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // .tensorflow.RunOptions.TraceLevel trace_level = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (8 & 0xFF)) {
+          int value = 0;
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>(
+                 input, &value)));
+          set_trace_level(static_cast< ::tensorflow::RunOptions_TraceLevel >(value));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // int64 timeout_in_ms = 2;
+      case 2: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (16 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>(
+                 input, &timeout_in_ms_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // int32 inter_op_thread_pool = 3;
+      case 3: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (24 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
+                 input, &inter_op_thread_pool_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // bool output_partition_graphs = 5;
+      case 5: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (40 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
+                 input, &output_partition_graphs_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // .tensorflow.DebugOptions debug_options = 6;
+      case 6: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (50 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+               input, mutable_debug_options()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // bool report_tensor_allocations_upon_oom = 7;
+      case 7: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (56 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
+                 input, &report_tensor_allocations_upon_oom_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // .tensorflow.RunOptions.Experimental experimental = 8;
+      case 8: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (66 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+               input, mutable_experimental()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.RunOptions)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.RunOptions)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void RunOptions::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.RunOptions)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // .tensorflow.RunOptions.TraceLevel trace_level = 1;
+  if (this->trace_level() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteEnum(
+      1, this->trace_level(), output);
+  }
+
+  // int64 timeout_in_ms = 2;
+  if (this->timeout_in_ms() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt64(2, this->timeout_in_ms(), output);
+  }
+
+  // int32 inter_op_thread_pool = 3;
+  if (this->inter_op_thread_pool() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt32(3, this->inter_op_thread_pool(), output);
+  }
+
+  // bool output_partition_graphs = 5;
+  if (this->output_partition_graphs() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteBool(5, this->output_partition_graphs(), output);
+  }
+
+  // .tensorflow.DebugOptions debug_options = 6;
+  if (this->has_debug_options()) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      6, HasBitSetters::debug_options(this), output);
+  }
+
+  // bool report_tensor_allocations_upon_oom = 7;
+  if (this->report_tensor_allocations_upon_oom() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteBool(7, this->report_tensor_allocations_upon_oom(), output);
+  }
+
+  // .tensorflow.RunOptions.Experimental experimental = 8;
+  if (this->has_experimental()) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      8, HasBitSetters::experimental(this), output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.RunOptions)
+}
+
+::google::protobuf::uint8* RunOptions::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.RunOptions)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // .tensorflow.RunOptions.TraceLevel trace_level = 1;
+  if (this->trace_level() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteEnumToArray(
+      1, this->trace_level(), target);
+  }
+
+  // int64 timeout_in_ms = 2;
+  if (this->timeout_in_ms() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt64ToArray(2, this->timeout_in_ms(), target);
+  }
+
+  // int32 inter_op_thread_pool = 3;
+  if (this->inter_op_thread_pool() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt32ToArray(3, this->inter_op_thread_pool(), target);
+  }
+
+  // bool output_partition_graphs = 5;
+  if (this->output_partition_graphs() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(5, this->output_partition_graphs(), target);
+  }
+
+  // .tensorflow.DebugOptions debug_options = 6;
+  if (this->has_debug_options()) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        6, HasBitSetters::debug_options(this), deterministic, target);
+  }
+
+  // bool report_tensor_allocations_upon_oom = 7;
+  if (this->report_tensor_allocations_upon_oom() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(7, this->report_tensor_allocations_upon_oom(), target);
+  }
+
+  // .tensorflow.RunOptions.Experimental experimental = 8;
+  if (this->has_experimental()) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        8, HasBitSetters::experimental(this), deterministic, target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.RunOptions)
+  return target;
+}
+
+size_t RunOptions::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.RunOptions)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // .tensorflow.DebugOptions debug_options = 6;
+  if (this->has_debug_options()) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::MessageSize(
+        *debug_options_);
+  }
+
+  // .tensorflow.RunOptions.Experimental experimental = 8;
+  if (this->has_experimental()) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::MessageSize(
+        *experimental_);
+  }
+
+  // int64 timeout_in_ms = 2;
+  if (this->timeout_in_ms() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::Int64Size(
+        this->timeout_in_ms());
+  }
+
+  // .tensorflow.RunOptions.TraceLevel trace_level = 1;
+  if (this->trace_level() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::EnumSize(this->trace_level());
+  }
+
+  // int32 inter_op_thread_pool = 3;
+  if (this->inter_op_thread_pool() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::Int32Size(
+        this->inter_op_thread_pool());
+  }
+
+  // bool output_partition_graphs = 5;
+  if (this->output_partition_graphs() != 0) {
+    total_size += 1 + 1;
+  }
+
+  // bool report_tensor_allocations_upon_oom = 7;
+  if (this->report_tensor_allocations_upon_oom() != 0) {
+    total_size += 1 + 1;
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void RunOptions::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.RunOptions)
+  GOOGLE_DCHECK_NE(&from, this);
+  const RunOptions* source =
+      ::google::protobuf::DynamicCastToGenerated<RunOptions>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.RunOptions)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.RunOptions)
+    MergeFrom(*source);
+  }
+}
+
+void RunOptions::MergeFrom(const RunOptions& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.RunOptions)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  if (from.has_debug_options()) {
+    mutable_debug_options()->::tensorflow::DebugOptions::MergeFrom(from.debug_options());
+  }
+  if (from.has_experimental()) {
+    mutable_experimental()->::tensorflow::RunOptions_Experimental::MergeFrom(from.experimental());
+  }
+  if (from.timeout_in_ms() != 0) {
+    set_timeout_in_ms(from.timeout_in_ms());
+  }
+  if (from.trace_level() != 0) {
+    set_trace_level(from.trace_level());
+  }
+  if (from.inter_op_thread_pool() != 0) {
+    set_inter_op_thread_pool(from.inter_op_thread_pool());
+  }
+  if (from.output_partition_graphs() != 0) {
+    set_output_partition_graphs(from.output_partition_graphs());
+  }
+  if (from.report_tensor_allocations_upon_oom() != 0) {
+    set_report_tensor_allocations_upon_oom(from.report_tensor_allocations_upon_oom());
+  }
+}
+
+void RunOptions::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.RunOptions)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void RunOptions::CopyFrom(const RunOptions& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.RunOptions)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool RunOptions::IsInitialized() const {
+  return true;
+}
+
+void RunOptions::Swap(RunOptions* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    RunOptions* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void RunOptions::UnsafeArenaSwap(RunOptions* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void RunOptions::InternalSwap(RunOptions* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  swap(debug_options_, other->debug_options_);
+  swap(experimental_, other->experimental_);
+  swap(timeout_in_ms_, other->timeout_in_ms_);
+  swap(trace_level_, other->trace_level_);
+  swap(inter_op_thread_pool_, other->inter_op_thread_pool_);
+  swap(output_partition_graphs_, other->output_partition_graphs_);
+  swap(report_tensor_allocations_upon_oom_, other->report_tensor_allocations_upon_oom_);
+}
+
+::google::protobuf::Metadata RunOptions::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+void RunMetadata::InitAsDefaultInstance() {
+  ::tensorflow::_RunMetadata_default_instance_._instance.get_mutable()->step_stats_ = const_cast< ::tensorflow::StepStats*>(
+      ::tensorflow::StepStats::internal_default_instance());
+  ::tensorflow::_RunMetadata_default_instance_._instance.get_mutable()->cost_graph_ = const_cast< ::tensorflow::CostGraphDef*>(
+      ::tensorflow::CostGraphDef::internal_default_instance());
+}
+class RunMetadata::HasBitSetters {
+ public:
+  static const ::tensorflow::StepStats& step_stats(const RunMetadata* msg);
+  static const ::tensorflow::CostGraphDef& cost_graph(const RunMetadata* msg);
+};
+
+const ::tensorflow::StepStats&
+RunMetadata::HasBitSetters::step_stats(const RunMetadata* msg) {
+  return *msg->step_stats_;
+}
+const ::tensorflow::CostGraphDef&
+RunMetadata::HasBitSetters::cost_graph(const RunMetadata* msg) {
+  return *msg->cost_graph_;
+}
+void RunMetadata::unsafe_arena_set_allocated_step_stats(
+    ::tensorflow::StepStats* step_stats) {
+  if (GetArenaNoVirtual() == NULL) {
+    delete step_stats_;
+  }
+  step_stats_ = step_stats;
+  if (step_stats) {
+    
+  } else {
+    
+  }
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.RunMetadata.step_stats)
+}
+void RunMetadata::clear_step_stats() {
+  if (GetArenaNoVirtual() == NULL && step_stats_ != NULL) {
+    delete step_stats_;
+  }
+  step_stats_ = NULL;
+}
+void RunMetadata::unsafe_arena_set_allocated_cost_graph(
+    ::tensorflow::CostGraphDef* cost_graph) {
+  if (GetArenaNoVirtual() == NULL) {
+    delete cost_graph_;
+  }
+  cost_graph_ = cost_graph;
+  if (cost_graph) {
+    
+  } else {
+    
+  }
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.RunMetadata.cost_graph)
+}
+void RunMetadata::clear_cost_graph() {
+  if (GetArenaNoVirtual() == NULL && cost_graph_ != NULL) {
+    delete cost_graph_;
+  }
+  cost_graph_ = NULL;
+}
+void RunMetadata::clear_partition_graphs() {
+  partition_graphs_.Clear();
+}
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int RunMetadata::kStepStatsFieldNumber;
+const int RunMetadata::kCostGraphFieldNumber;
+const int RunMetadata::kPartitionGraphsFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+RunMetadata::RunMetadata()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.RunMetadata)
+}
+RunMetadata::RunMetadata(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena),
+  partition_graphs_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.RunMetadata)
+}
+RunMetadata::RunMetadata(const RunMetadata& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL),
+      partition_graphs_(from.partition_graphs_) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  if (from.has_step_stats()) {
+    step_stats_ = new ::tensorflow::StepStats(*from.step_stats_);
+  } else {
+    step_stats_ = NULL;
+  }
+  if (from.has_cost_graph()) {
+    cost_graph_ = new ::tensorflow::CostGraphDef(*from.cost_graph_);
+  } else {
+    cost_graph_ = NULL;
+  }
+  // @@protoc_insertion_point(copy_constructor:tensorflow.RunMetadata)
+}
+
+void RunMetadata::SharedCtor() {
+  ::google::protobuf::internal::InitSCC(
+      &scc_info_RunMetadata_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto.base);
+  ::memset(&step_stats_, 0, static_cast<size_t>(
+      reinterpret_cast<char*>(&cost_graph_) -
+      reinterpret_cast<char*>(&step_stats_)) + sizeof(cost_graph_));
+}
+
+RunMetadata::~RunMetadata() {
+  // @@protoc_insertion_point(destructor:tensorflow.RunMetadata)
+  SharedDtor();
+}
+
+void RunMetadata::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+  if (this != internal_default_instance()) delete step_stats_;
+  if (this != internal_default_instance()) delete cost_graph_;
+}
+
+void RunMetadata::ArenaDtor(void* object) {
+  RunMetadata* _this = reinterpret_cast< RunMetadata* >(object);
+  (void)_this;
+}
+void RunMetadata::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void RunMetadata::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const RunMetadata& RunMetadata::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_RunMetadata_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void RunMetadata::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.RunMetadata)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  partition_graphs_.Clear();
+  if (GetArenaNoVirtual() == NULL && step_stats_ != NULL) {
+    delete step_stats_;
+  }
+  step_stats_ = NULL;
+  if (GetArenaNoVirtual() == NULL && cost_graph_ != NULL) {
+    delete cost_graph_;
+  }
+  cost_graph_ = NULL;
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* RunMetadata::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<RunMetadata*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // .tensorflow.StepStats step_stats = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 10) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        parser_till_end = ::tensorflow::StepStats::_InternalParse;
+        object = msg->mutable_step_stats();
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                       ptr, newend);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+        ptr = newend;
+        break;
+      }
+      // .tensorflow.CostGraphDef cost_graph = 2;
+      case 2: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 18) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        parser_till_end = ::tensorflow::CostGraphDef::_InternalParse;
+        object = msg->mutable_cost_graph();
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                       ptr, newend);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+        ptr = newend;
+        break;
+      }
+      // repeated .tensorflow.GraphDef partition_graphs = 3;
+      case 3: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 26) goto handle_unusual;
+        do {
+          ptr = Varint::Parse32Inline(ptr, &size);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          parser_till_end = ::tensorflow::GraphDef::_InternalParse;
+          object = msg->add_partition_graphs();
+          if (size > end - ptr) goto len_delim_till_end;
+          auto newend = ptr + size;
+          bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                         ptr, newend);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          ptr = newend;
+          if (ptr >= end) break;
+        } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 26 && (ptr += 1));
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool RunMetadata::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.RunMetadata)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // .tensorflow.StepStats step_stats = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (10 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+               input, mutable_step_stats()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // .tensorflow.CostGraphDef cost_graph = 2;
+      case 2: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (18 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+               input, mutable_cost_graph()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // repeated .tensorflow.GraphDef partition_graphs = 3;
+      case 3: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (26 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+                input, add_partition_graphs()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.RunMetadata)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.RunMetadata)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void RunMetadata::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.RunMetadata)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // .tensorflow.StepStats step_stats = 1;
+  if (this->has_step_stats()) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      1, HasBitSetters::step_stats(this), output);
+  }
+
+  // .tensorflow.CostGraphDef cost_graph = 2;
+  if (this->has_cost_graph()) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      2, HasBitSetters::cost_graph(this), output);
+  }
+
+  // repeated .tensorflow.GraphDef partition_graphs = 3;
+  for (unsigned int i = 0,
+      n = static_cast<unsigned int>(this->partition_graphs_size()); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      3,
+      this->partition_graphs(static_cast<int>(i)),
+      output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.RunMetadata)
+}
+
+::google::protobuf::uint8* RunMetadata::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.RunMetadata)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // .tensorflow.StepStats step_stats = 1;
+  if (this->has_step_stats()) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        1, HasBitSetters::step_stats(this), deterministic, target);
+  }
+
+  // .tensorflow.CostGraphDef cost_graph = 2;
+  if (this->has_cost_graph()) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        2, HasBitSetters::cost_graph(this), deterministic, target);
+  }
+
+  // repeated .tensorflow.GraphDef partition_graphs = 3;
+  for (unsigned int i = 0,
+      n = static_cast<unsigned int>(this->partition_graphs_size()); i < n; i++) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        3, this->partition_graphs(static_cast<int>(i)), deterministic, target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.RunMetadata)
+  return target;
+}
+
+size_t RunMetadata::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.RunMetadata)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // repeated .tensorflow.GraphDef partition_graphs = 3;
+  {
+    unsigned int count = static_cast<unsigned int>(this->partition_graphs_size());
+    total_size += 1UL * count;
+    for (unsigned int i = 0; i < count; i++) {
+      total_size +=
+        ::google::protobuf::internal::WireFormatLite::MessageSize(
+          this->partition_graphs(static_cast<int>(i)));
+    }
+  }
+
+  // .tensorflow.StepStats step_stats = 1;
+  if (this->has_step_stats()) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::MessageSize(
+        *step_stats_);
+  }
+
+  // .tensorflow.CostGraphDef cost_graph = 2;
+  if (this->has_cost_graph()) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::MessageSize(
+        *cost_graph_);
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void RunMetadata::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.RunMetadata)
+  GOOGLE_DCHECK_NE(&from, this);
+  const RunMetadata* source =
+      ::google::protobuf::DynamicCastToGenerated<RunMetadata>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.RunMetadata)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.RunMetadata)
+    MergeFrom(*source);
+  }
+}
+
+void RunMetadata::MergeFrom(const RunMetadata& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.RunMetadata)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  partition_graphs_.MergeFrom(from.partition_graphs_);
+  if (from.has_step_stats()) {
+    mutable_step_stats()->::tensorflow::StepStats::MergeFrom(from.step_stats());
+  }
+  if (from.has_cost_graph()) {
+    mutable_cost_graph()->::tensorflow::CostGraphDef::MergeFrom(from.cost_graph());
+  }
+}
+
+void RunMetadata::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.RunMetadata)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void RunMetadata::CopyFrom(const RunMetadata& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.RunMetadata)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool RunMetadata::IsInitialized() const {
+  return true;
+}
+
+void RunMetadata::Swap(RunMetadata* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    RunMetadata* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void RunMetadata::UnsafeArenaSwap(RunMetadata* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void RunMetadata::InternalSwap(RunMetadata* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  CastToBase(&partition_graphs_)->InternalSwap(CastToBase(&other->partition_graphs_));
+  swap(step_stats_, other->step_stats_);
+  swap(cost_graph_, other->cost_graph_);
+}
+
+::google::protobuf::Metadata RunMetadata::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+void TensorConnection::InitAsDefaultInstance() {
+}
+class TensorConnection::HasBitSetters {
+ public:
+};
+
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int TensorConnection::kFromTensorFieldNumber;
+const int TensorConnection::kToTensorFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+TensorConnection::TensorConnection()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.TensorConnection)
+}
+TensorConnection::TensorConnection(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.TensorConnection)
+}
+TensorConnection::TensorConnection(const TensorConnection& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  from_tensor_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.from_tensor().size() > 0) {
+    from_tensor_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.from_tensor(),
+      GetArenaNoVirtual());
+  }
+  to_tensor_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.to_tensor().size() > 0) {
+    to_tensor_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.to_tensor(),
+      GetArenaNoVirtual());
+  }
+  // @@protoc_insertion_point(copy_constructor:tensorflow.TensorConnection)
+}
+
+void TensorConnection::SharedCtor() {
+  ::google::protobuf::internal::InitSCC(
+      &scc_info_TensorConnection_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto.base);
+  from_tensor_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  to_tensor_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+
+TensorConnection::~TensorConnection() {
+  // @@protoc_insertion_point(destructor:tensorflow.TensorConnection)
+  SharedDtor();
+}
+
+void TensorConnection::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+  from_tensor_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  to_tensor_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+
+void TensorConnection::ArenaDtor(void* object) {
+  TensorConnection* _this = reinterpret_cast< TensorConnection* >(object);
+  (void)_this;
+}
+void TensorConnection::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void TensorConnection::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const TensorConnection& TensorConnection::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_TensorConnection_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void TensorConnection::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.TensorConnection)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  from_tensor_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+  to_tensor_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* TensorConnection::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<TensorConnection*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // string from_tensor = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 10) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("tensorflow.TensorConnection.from_tensor");
+        parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+        ::std::string* str = msg->mutable_from_tensor();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+        break;
+      }
+      // string to_tensor = 2;
+      case 2: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 18) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("tensorflow.TensorConnection.to_tensor");
+        parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+        ::std::string* str = msg->mutable_to_tensor();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool TensorConnection::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.TensorConnection)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // string from_tensor = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (10 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_from_tensor()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->from_tensor().data(), static_cast<int>(this->from_tensor().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.TensorConnection.from_tensor"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // string to_tensor = 2;
+      case 2: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (18 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_to_tensor()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->to_tensor().data(), static_cast<int>(this->to_tensor().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.TensorConnection.to_tensor"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.TensorConnection)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.TensorConnection)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void TensorConnection::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.TensorConnection)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // string from_tensor = 1;
+  if (this->from_tensor().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->from_tensor().data(), static_cast<int>(this->from_tensor().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.TensorConnection.from_tensor");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      1, this->from_tensor(), output);
+  }
+
+  // string to_tensor = 2;
+  if (this->to_tensor().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->to_tensor().data(), static_cast<int>(this->to_tensor().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.TensorConnection.to_tensor");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      2, this->to_tensor(), output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.TensorConnection)
+}
+
+::google::protobuf::uint8* TensorConnection::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.TensorConnection)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // string from_tensor = 1;
+  if (this->from_tensor().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->from_tensor().data(), static_cast<int>(this->from_tensor().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.TensorConnection.from_tensor");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        1, this->from_tensor(), target);
+  }
+
+  // string to_tensor = 2;
+  if (this->to_tensor().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->to_tensor().data(), static_cast<int>(this->to_tensor().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.TensorConnection.to_tensor");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        2, this->to_tensor(), target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.TensorConnection)
+  return target;
+}
+
+size_t TensorConnection::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.TensorConnection)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // string from_tensor = 1;
+  if (this->from_tensor().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->from_tensor());
+  }
+
+  // string to_tensor = 2;
+  if (this->to_tensor().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->to_tensor());
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void TensorConnection::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.TensorConnection)
+  GOOGLE_DCHECK_NE(&from, this);
+  const TensorConnection* source =
+      ::google::protobuf::DynamicCastToGenerated<TensorConnection>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.TensorConnection)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.TensorConnection)
+    MergeFrom(*source);
+  }
+}
+
+void TensorConnection::MergeFrom(const TensorConnection& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.TensorConnection)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  if (from.from_tensor().size() > 0) {
+    set_from_tensor(from.from_tensor());
+  }
+  if (from.to_tensor().size() > 0) {
+    set_to_tensor(from.to_tensor());
+  }
+}
+
+void TensorConnection::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.TensorConnection)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void TensorConnection::CopyFrom(const TensorConnection& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.TensorConnection)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool TensorConnection::IsInitialized() const {
+  return true;
+}
+
+void TensorConnection::Swap(TensorConnection* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    TensorConnection* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void TensorConnection::UnsafeArenaSwap(TensorConnection* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void TensorConnection::InternalSwap(TensorConnection* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  from_tensor_.Swap(&other->from_tensor_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+  to_tensor_.Swap(&other->to_tensor_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+}
+
+::google::protobuf::Metadata TensorConnection::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+void CallableOptions::InitAsDefaultInstance() {
+  ::tensorflow::_CallableOptions_default_instance_._instance.get_mutable()->run_options_ = const_cast< ::tensorflow::RunOptions*>(
+      ::tensorflow::RunOptions::internal_default_instance());
+}
+class CallableOptions::HasBitSetters {
+ public:
+  static const ::tensorflow::RunOptions& run_options(const CallableOptions* msg);
+};
+
+const ::tensorflow::RunOptions&
+CallableOptions::HasBitSetters::run_options(const CallableOptions* msg) {
+  return *msg->run_options_;
+}
+void CallableOptions::unsafe_arena_set_allocated_run_options(
+    ::tensorflow::RunOptions* run_options) {
+  if (GetArenaNoVirtual() == NULL) {
+    delete run_options_;
+  }
+  run_options_ = run_options;
+  if (run_options) {
+    
+  } else {
+    
+  }
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.CallableOptions.run_options)
+}
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int CallableOptions::kFeedFieldNumber;
+const int CallableOptions::kFetchFieldNumber;
+const int CallableOptions::kTargetFieldNumber;
+const int CallableOptions::kRunOptionsFieldNumber;
+const int CallableOptions::kTensorConnectionFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+CallableOptions::CallableOptions()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.CallableOptions)
+}
+CallableOptions::CallableOptions(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena),
+  feed_(arena),
+  fetch_(arena),
+  target_(arena),
+  tensor_connection_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.CallableOptions)
+}
+CallableOptions::CallableOptions(const CallableOptions& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL),
+      feed_(from.feed_),
+      fetch_(from.fetch_),
+      target_(from.target_),
+      tensor_connection_(from.tensor_connection_) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  if (from.has_run_options()) {
+    run_options_ = new ::tensorflow::RunOptions(*from.run_options_);
+  } else {
+    run_options_ = NULL;
+  }
+  // @@protoc_insertion_point(copy_constructor:tensorflow.CallableOptions)
+}
+
+void CallableOptions::SharedCtor() {
+  ::google::protobuf::internal::InitSCC(
+      &scc_info_CallableOptions_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto.base);
+  run_options_ = NULL;
+}
+
+CallableOptions::~CallableOptions() {
+  // @@protoc_insertion_point(destructor:tensorflow.CallableOptions)
+  SharedDtor();
+}
+
+void CallableOptions::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+  if (this != internal_default_instance()) delete run_options_;
+}
+
+void CallableOptions::ArenaDtor(void* object) {
+  CallableOptions* _this = reinterpret_cast< CallableOptions* >(object);
+  (void)_this;
+}
+void CallableOptions::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void CallableOptions::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const CallableOptions& CallableOptions::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_CallableOptions_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void CallableOptions::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.CallableOptions)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  feed_.Clear();
+  fetch_.Clear();
+  target_.Clear();
+  tensor_connection_.Clear();
+  if (GetArenaNoVirtual() == NULL && run_options_ != NULL) {
+    delete run_options_;
+  }
+  run_options_ = NULL;
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* CallableOptions::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<CallableOptions*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // repeated string feed = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 10) goto handle_unusual;
+        do {
+          ptr = Varint::Parse32Inline(ptr, &size);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          ctx->extra_parse_data().SetFieldName("tensorflow.CallableOptions.feed");
+          parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+          ::std::string* str = msg->add_feed();
+          str->clear();
+          object = str;
+          if (size > end - ptr) goto len_delim_till_end;
+          auto newend = ptr + size;
+          if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+          if (ptr >= end) break;
+        } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 10 && (ptr += 1));
+        break;
+      }
+      // repeated string fetch = 2;
+      case 2: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 18) goto handle_unusual;
+        do {
+          ptr = Varint::Parse32Inline(ptr, &size);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          ctx->extra_parse_data().SetFieldName("tensorflow.CallableOptions.fetch");
+          parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+          ::std::string* str = msg->add_fetch();
+          str->clear();
+          object = str;
+          if (size > end - ptr) goto len_delim_till_end;
+          auto newend = ptr + size;
+          if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+          if (ptr >= end) break;
+        } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 18 && (ptr += 1));
+        break;
+      }
+      // repeated string target = 3;
+      case 3: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 26) goto handle_unusual;
+        do {
+          ptr = Varint::Parse32Inline(ptr, &size);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          ctx->extra_parse_data().SetFieldName("tensorflow.CallableOptions.target");
+          parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+          ::std::string* str = msg->add_target();
+          str->clear();
+          object = str;
+          if (size > end - ptr) goto len_delim_till_end;
+          auto newend = ptr + size;
+          if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+          if (ptr >= end) break;
+        } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 26 && (ptr += 1));
+        break;
+      }
+      // .tensorflow.RunOptions run_options = 4;
+      case 4: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 34) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        parser_till_end = ::tensorflow::RunOptions::_InternalParse;
+        object = msg->mutable_run_options();
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                       ptr, newend);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+        ptr = newend;
+        break;
+      }
+      // repeated .tensorflow.TensorConnection tensor_connection = 5;
+      case 5: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 42) goto handle_unusual;
+        do {
+          ptr = Varint::Parse32Inline(ptr, &size);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          parser_till_end = ::tensorflow::TensorConnection::_InternalParse;
+          object = msg->add_tensor_connection();
+          if (size > end - ptr) goto len_delim_till_end;
+          auto newend = ptr + size;
+          bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                         ptr, newend);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          ptr = newend;
+          if (ptr >= end) break;
+        } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 42 && (ptr += 1));
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool CallableOptions::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.CallableOptions)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // repeated string feed = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (10 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->add_feed()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->feed(this->feed_size() - 1).data(),
+            static_cast<int>(this->feed(this->feed_size() - 1).length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.CallableOptions.feed"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // repeated string fetch = 2;
+      case 2: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (18 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->add_fetch()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->fetch(this->fetch_size() - 1).data(),
+            static_cast<int>(this->fetch(this->fetch_size() - 1).length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.CallableOptions.fetch"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // repeated string target = 3;
+      case 3: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (26 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->add_target()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->target(this->target_size() - 1).data(),
+            static_cast<int>(this->target(this->target_size() - 1).length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.CallableOptions.target"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // .tensorflow.RunOptions run_options = 4;
+      case 4: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (34 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+               input, mutable_run_options()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // repeated .tensorflow.TensorConnection tensor_connection = 5;
+      case 5: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (42 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+                input, add_tensor_connection()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.CallableOptions)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.CallableOptions)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void CallableOptions::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.CallableOptions)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // repeated string feed = 1;
+  for (int i = 0, n = this->feed_size(); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->feed(i).data(), static_cast<int>(this->feed(i).length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.CallableOptions.feed");
+    ::google::protobuf::internal::WireFormatLite::WriteString(
+      1, this->feed(i), output);
+  }
+
+  // repeated string fetch = 2;
+  for (int i = 0, n = this->fetch_size(); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->fetch(i).data(), static_cast<int>(this->fetch(i).length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.CallableOptions.fetch");
+    ::google::protobuf::internal::WireFormatLite::WriteString(
+      2, this->fetch(i), output);
+  }
+
+  // repeated string target = 3;
+  for (int i = 0, n = this->target_size(); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->target(i).data(), static_cast<int>(this->target(i).length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.CallableOptions.target");
+    ::google::protobuf::internal::WireFormatLite::WriteString(
+      3, this->target(i), output);
+  }
+
+  // .tensorflow.RunOptions run_options = 4;
+  if (this->has_run_options()) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      4, HasBitSetters::run_options(this), output);
+  }
+
+  // repeated .tensorflow.TensorConnection tensor_connection = 5;
+  for (unsigned int i = 0,
+      n = static_cast<unsigned int>(this->tensor_connection_size()); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      5,
+      this->tensor_connection(static_cast<int>(i)),
+      output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.CallableOptions)
+}
+
+::google::protobuf::uint8* CallableOptions::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.CallableOptions)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // repeated string feed = 1;
+  for (int i = 0, n = this->feed_size(); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->feed(i).data(), static_cast<int>(this->feed(i).length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.CallableOptions.feed");
+    target = ::google::protobuf::internal::WireFormatLite::
+      WriteStringToArray(1, this->feed(i), target);
+  }
+
+  // repeated string fetch = 2;
+  for (int i = 0, n = this->fetch_size(); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->fetch(i).data(), static_cast<int>(this->fetch(i).length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.CallableOptions.fetch");
+    target = ::google::protobuf::internal::WireFormatLite::
+      WriteStringToArray(2, this->fetch(i), target);
+  }
+
+  // repeated string target = 3;
+  for (int i = 0, n = this->target_size(); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->target(i).data(), static_cast<int>(this->target(i).length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.CallableOptions.target");
+    target = ::google::protobuf::internal::WireFormatLite::
+      WriteStringToArray(3, this->target(i), target);
+  }
+
+  // .tensorflow.RunOptions run_options = 4;
+  if (this->has_run_options()) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        4, HasBitSetters::run_options(this), deterministic, target);
+  }
+
+  // repeated .tensorflow.TensorConnection tensor_connection = 5;
+  for (unsigned int i = 0,
+      n = static_cast<unsigned int>(this->tensor_connection_size()); i < n; i++) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        5, this->tensor_connection(static_cast<int>(i)), deterministic, target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.CallableOptions)
+  return target;
+}
+
+size_t CallableOptions::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.CallableOptions)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // repeated string feed = 1;
+  total_size += 1 *
+      ::google::protobuf::internal::FromIntSize(this->feed_size());
+  for (int i = 0, n = this->feed_size(); i < n; i++) {
+    total_size += ::google::protobuf::internal::WireFormatLite::StringSize(
+      this->feed(i));
+  }
+
+  // repeated string fetch = 2;
+  total_size += 1 *
+      ::google::protobuf::internal::FromIntSize(this->fetch_size());
+  for (int i = 0, n = this->fetch_size(); i < n; i++) {
+    total_size += ::google::protobuf::internal::WireFormatLite::StringSize(
+      this->fetch(i));
+  }
+
+  // repeated string target = 3;
+  total_size += 1 *
+      ::google::protobuf::internal::FromIntSize(this->target_size());
+  for (int i = 0, n = this->target_size(); i < n; i++) {
+    total_size += ::google::protobuf::internal::WireFormatLite::StringSize(
+      this->target(i));
+  }
+
+  // repeated .tensorflow.TensorConnection tensor_connection = 5;
+  {
+    unsigned int count = static_cast<unsigned int>(this->tensor_connection_size());
+    total_size += 1UL * count;
+    for (unsigned int i = 0; i < count; i++) {
+      total_size +=
+        ::google::protobuf::internal::WireFormatLite::MessageSize(
+          this->tensor_connection(static_cast<int>(i)));
+    }
+  }
+
+  // .tensorflow.RunOptions run_options = 4;
+  if (this->has_run_options()) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::MessageSize(
+        *run_options_);
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void CallableOptions::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.CallableOptions)
+  GOOGLE_DCHECK_NE(&from, this);
+  const CallableOptions* source =
+      ::google::protobuf::DynamicCastToGenerated<CallableOptions>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.CallableOptions)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.CallableOptions)
+    MergeFrom(*source);
+  }
+}
+
+void CallableOptions::MergeFrom(const CallableOptions& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.CallableOptions)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  feed_.MergeFrom(from.feed_);
+  fetch_.MergeFrom(from.fetch_);
+  target_.MergeFrom(from.target_);
+  tensor_connection_.MergeFrom(from.tensor_connection_);
+  if (from.has_run_options()) {
+    mutable_run_options()->::tensorflow::RunOptions::MergeFrom(from.run_options());
+  }
+}
+
+void CallableOptions::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.CallableOptions)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void CallableOptions::CopyFrom(const CallableOptions& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.CallableOptions)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool CallableOptions::IsInitialized() const {
+  return true;
+}
+
+void CallableOptions::Swap(CallableOptions* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    CallableOptions* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void CallableOptions::UnsafeArenaSwap(CallableOptions* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void CallableOptions::InternalSwap(CallableOptions* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  feed_.InternalSwap(CastToBase(&other->feed_));
+  fetch_.InternalSwap(CastToBase(&other->fetch_));
+  target_.InternalSwap(CastToBase(&other->target_));
+  CastToBase(&tensor_connection_)->InternalSwap(CastToBase(&other->tensor_connection_));
+  swap(run_options_, other->run_options_);
+}
+
+::google::protobuf::Metadata CallableOptions::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto[kIndexInFileMessages];
+}
+
+
+// @@protoc_insertion_point(namespace_scope)
+}  // namespace tensorflow
+namespace google {
+namespace protobuf {
+template<> PROTOBUF_NOINLINE ::tensorflow::GPUOptions_Experimental_VirtualDevices* Arena::CreateMaybeMessage< ::tensorflow::GPUOptions_Experimental_VirtualDevices >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::GPUOptions_Experimental_VirtualDevices >(arena);
+}
+template<> PROTOBUF_NOINLINE ::tensorflow::GPUOptions_Experimental* Arena::CreateMaybeMessage< ::tensorflow::GPUOptions_Experimental >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::GPUOptions_Experimental >(arena);
+}
+template<> PROTOBUF_NOINLINE ::tensorflow::GPUOptions* Arena::CreateMaybeMessage< ::tensorflow::GPUOptions >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::GPUOptions >(arena);
+}
+template<> PROTOBUF_NOINLINE ::tensorflow::OptimizerOptions* Arena::CreateMaybeMessage< ::tensorflow::OptimizerOptions >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::OptimizerOptions >(arena);
+}
+template<> PROTOBUF_NOINLINE ::tensorflow::GraphOptions* Arena::CreateMaybeMessage< ::tensorflow::GraphOptions >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::GraphOptions >(arena);
+}
+template<> PROTOBUF_NOINLINE ::tensorflow::ThreadPoolOptionProto* Arena::CreateMaybeMessage< ::tensorflow::ThreadPoolOptionProto >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::ThreadPoolOptionProto >(arena);
+}
+template<> PROTOBUF_NOINLINE ::tensorflow::RPCOptions* Arena::CreateMaybeMessage< ::tensorflow::RPCOptions >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::RPCOptions >(arena);
+}
+template<> PROTOBUF_NOINLINE ::tensorflow::ConfigProto_DeviceCountEntry_DoNotUse* Arena::CreateMaybeMessage< ::tensorflow::ConfigProto_DeviceCountEntry_DoNotUse >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::ConfigProto_DeviceCountEntry_DoNotUse >(arena);
+}
+template<> PROTOBUF_NOINLINE ::tensorflow::ConfigProto_Experimental* Arena::CreateMaybeMessage< ::tensorflow::ConfigProto_Experimental >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::ConfigProto_Experimental >(arena);
+}
+template<> PROTOBUF_NOINLINE ::tensorflow::ConfigProto* Arena::CreateMaybeMessage< ::tensorflow::ConfigProto >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::ConfigProto >(arena);
+}
+template<> PROTOBUF_NOINLINE ::tensorflow::RunOptions_Experimental* Arena::CreateMaybeMessage< ::tensorflow::RunOptions_Experimental >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::RunOptions_Experimental >(arena);
+}
+template<> PROTOBUF_NOINLINE ::tensorflow::RunOptions* Arena::CreateMaybeMessage< ::tensorflow::RunOptions >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::RunOptions >(arena);
+}
+template<> PROTOBUF_NOINLINE ::tensorflow::RunMetadata* Arena::CreateMaybeMessage< ::tensorflow::RunMetadata >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::RunMetadata >(arena);
+}
+template<> PROTOBUF_NOINLINE ::tensorflow::TensorConnection* Arena::CreateMaybeMessage< ::tensorflow::TensorConnection >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::TensorConnection >(arena);
+}
+template<> PROTOBUF_NOINLINE ::tensorflow::CallableOptions* Arena::CreateMaybeMessage< ::tensorflow::CallableOptions >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::CallableOptions >(arena);
+}
+}  // namespace protobuf
+}  // namespace google
+
+// @@protoc_insertion_point(global_scope)
+#include <google/protobuf/port_undef.inc>
diff --git a/tensorflow/core/protobuf/config.pb.h b/tensorflow/core/protobuf/config.pb.h
new file mode 100644 (file)
index 0000000..9e4edd9
--- /dev/null
@@ -0,0 +1,5015 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: tensorflow/core/protobuf/config.proto
+
+#ifndef PROTOBUF_INCLUDED_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto
+#define PROTOBUF_INCLUDED_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto
+
+#include <limits>
+#include <string>
+
+#include <google/protobuf/port_def.inc>
+#if PROTOBUF_VERSION < 3006001
+#error This file was generated by a newer version of protoc which is
+#error incompatible with your Protocol Buffer headers. Please update
+#error your headers.
+#endif
+#if 3006001 < PROTOBUF_MIN_PROTOC_VERSION
+#error This file was generated by an older version of protoc which is
+#error incompatible with your Protocol Buffer headers. Please
+#error regenerate this file with a newer version of protoc.
+#endif
+
+#include <google/protobuf/port_undef.inc>
+#include <google/protobuf/io/coded_stream.h>
+#include <google/protobuf/arena.h>
+#include <google/protobuf/arenastring.h>
+#include <google/protobuf/generated_message_table_driven.h>
+#include <google/protobuf/generated_message_util.h>
+#include <google/protobuf/inlined_string_field.h>
+#include <google/protobuf/metadata.h>
+#include <google/protobuf/message.h>
+#include <google/protobuf/repeated_field.h>  // IWYU pragma: export
+#include <google/protobuf/extension_set.h>  // IWYU pragma: export
+#include <google/protobuf/map.h>  // IWYU pragma: export
+#include <google/protobuf/map_entry.h>
+#include <google/protobuf/map_field_inl.h>
+#include <google/protobuf/generated_enum_reflection.h>
+#include <google/protobuf/unknown_field_set.h>
+#include "tensorflow/core/framework/cost_graph.pb.h"
+#include "tensorflow/core/framework/graph.pb.h"
+#include "tensorflow/core/framework/step_stats.pb.h"
+#include "tensorflow/core/protobuf/debug.pb.h"
+#include "tensorflow/core/protobuf/cluster.pb.h"
+#include "tensorflow/core/protobuf/rewriter_config.pb.h"
+// @@protoc_insertion_point(includes)
+#include <google/protobuf/port_def.inc>
+#define PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto
+
+// Internal implementation detail -- do not use these members.
+struct TableStruct_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto {
+  static const ::google::protobuf::internal::ParseTableField entries[]
+    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
+  static const ::google::protobuf::internal::AuxillaryParseTableField aux[]
+    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
+  static const ::google::protobuf::internal::ParseTable schema[15]
+    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
+  static const ::google::protobuf::internal::FieldMetadata field_metadata[];
+  static const ::google::protobuf::internal::SerializationTable serialization_table[];
+  static const ::google::protobuf::uint32 offsets[];
+};
+void AddDescriptors_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto();
+namespace tensorflow {
+class CallableOptions;
+class CallableOptionsDefaultTypeInternal;
+extern CallableOptionsDefaultTypeInternal _CallableOptions_default_instance_;
+class ConfigProto;
+class ConfigProtoDefaultTypeInternal;
+extern ConfigProtoDefaultTypeInternal _ConfigProto_default_instance_;
+class ConfigProto_DeviceCountEntry_DoNotUse;
+class ConfigProto_DeviceCountEntry_DoNotUseDefaultTypeInternal;
+extern ConfigProto_DeviceCountEntry_DoNotUseDefaultTypeInternal _ConfigProto_DeviceCountEntry_DoNotUse_default_instance_;
+class ConfigProto_Experimental;
+class ConfigProto_ExperimentalDefaultTypeInternal;
+extern ConfigProto_ExperimentalDefaultTypeInternal _ConfigProto_Experimental_default_instance_;
+class GPUOptions;
+class GPUOptionsDefaultTypeInternal;
+extern GPUOptionsDefaultTypeInternal _GPUOptions_default_instance_;
+class GPUOptions_Experimental;
+class GPUOptions_ExperimentalDefaultTypeInternal;
+extern GPUOptions_ExperimentalDefaultTypeInternal _GPUOptions_Experimental_default_instance_;
+class GPUOptions_Experimental_VirtualDevices;
+class GPUOptions_Experimental_VirtualDevicesDefaultTypeInternal;
+extern GPUOptions_Experimental_VirtualDevicesDefaultTypeInternal _GPUOptions_Experimental_VirtualDevices_default_instance_;
+class GraphOptions;
+class GraphOptionsDefaultTypeInternal;
+extern GraphOptionsDefaultTypeInternal _GraphOptions_default_instance_;
+class OptimizerOptions;
+class OptimizerOptionsDefaultTypeInternal;
+extern OptimizerOptionsDefaultTypeInternal _OptimizerOptions_default_instance_;
+class RPCOptions;
+class RPCOptionsDefaultTypeInternal;
+extern RPCOptionsDefaultTypeInternal _RPCOptions_default_instance_;
+class RunMetadata;
+class RunMetadataDefaultTypeInternal;
+extern RunMetadataDefaultTypeInternal _RunMetadata_default_instance_;
+class RunOptions;
+class RunOptionsDefaultTypeInternal;
+extern RunOptionsDefaultTypeInternal _RunOptions_default_instance_;
+class RunOptions_Experimental;
+class RunOptions_ExperimentalDefaultTypeInternal;
+extern RunOptions_ExperimentalDefaultTypeInternal _RunOptions_Experimental_default_instance_;
+class TensorConnection;
+class TensorConnectionDefaultTypeInternal;
+extern TensorConnectionDefaultTypeInternal _TensorConnection_default_instance_;
+class ThreadPoolOptionProto;
+class ThreadPoolOptionProtoDefaultTypeInternal;
+extern ThreadPoolOptionProtoDefaultTypeInternal _ThreadPoolOptionProto_default_instance_;
+}  // namespace tensorflow
+namespace google {
+namespace protobuf {
+template<> ::tensorflow::CallableOptions* Arena::CreateMaybeMessage<::tensorflow::CallableOptions>(Arena*);
+template<> ::tensorflow::ConfigProto* Arena::CreateMaybeMessage<::tensorflow::ConfigProto>(Arena*);
+template<> ::tensorflow::ConfigProto_DeviceCountEntry_DoNotUse* Arena::CreateMaybeMessage<::tensorflow::ConfigProto_DeviceCountEntry_DoNotUse>(Arena*);
+template<> ::tensorflow::ConfigProto_Experimental* Arena::CreateMaybeMessage<::tensorflow::ConfigProto_Experimental>(Arena*);
+template<> ::tensorflow::GPUOptions* Arena::CreateMaybeMessage<::tensorflow::GPUOptions>(Arena*);
+template<> ::tensorflow::GPUOptions_Experimental* Arena::CreateMaybeMessage<::tensorflow::GPUOptions_Experimental>(Arena*);
+template<> ::tensorflow::GPUOptions_Experimental_VirtualDevices* Arena::CreateMaybeMessage<::tensorflow::GPUOptions_Experimental_VirtualDevices>(Arena*);
+template<> ::tensorflow::GraphOptions* Arena::CreateMaybeMessage<::tensorflow::GraphOptions>(Arena*);
+template<> ::tensorflow::OptimizerOptions* Arena::CreateMaybeMessage<::tensorflow::OptimizerOptions>(Arena*);
+template<> ::tensorflow::RPCOptions* Arena::CreateMaybeMessage<::tensorflow::RPCOptions>(Arena*);
+template<> ::tensorflow::RunMetadata* Arena::CreateMaybeMessage<::tensorflow::RunMetadata>(Arena*);
+template<> ::tensorflow::RunOptions* Arena::CreateMaybeMessage<::tensorflow::RunOptions>(Arena*);
+template<> ::tensorflow::RunOptions_Experimental* Arena::CreateMaybeMessage<::tensorflow::RunOptions_Experimental>(Arena*);
+template<> ::tensorflow::TensorConnection* Arena::CreateMaybeMessage<::tensorflow::TensorConnection>(Arena*);
+template<> ::tensorflow::ThreadPoolOptionProto* Arena::CreateMaybeMessage<::tensorflow::ThreadPoolOptionProto>(Arena*);
+}  // namespace protobuf
+}  // namespace google
+namespace tensorflow {
+
+enum OptimizerOptions_Level {
+  OptimizerOptions_Level_L1 = 0,
+  OptimizerOptions_Level_L0 = -1,
+  OptimizerOptions_Level_OptimizerOptions_Level_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::google::protobuf::int32>::min(),
+  OptimizerOptions_Level_OptimizerOptions_Level_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::google::protobuf::int32>::max()
+};
+bool OptimizerOptions_Level_IsValid(int value);
+const OptimizerOptions_Level OptimizerOptions_Level_Level_MIN = OptimizerOptions_Level_L0;
+const OptimizerOptions_Level OptimizerOptions_Level_Level_MAX = OptimizerOptions_Level_L1;
+const int OptimizerOptions_Level_Level_ARRAYSIZE = OptimizerOptions_Level_Level_MAX + 1;
+
+const ::google::protobuf::EnumDescriptor* OptimizerOptions_Level_descriptor();
+inline const ::std::string& OptimizerOptions_Level_Name(OptimizerOptions_Level value) {
+  return ::google::protobuf::internal::NameOfEnum(
+    OptimizerOptions_Level_descriptor(), value);
+}
+inline bool OptimizerOptions_Level_Parse(
+    const ::std::string& name, OptimizerOptions_Level* value) {
+  return ::google::protobuf::internal::ParseNamedEnum<OptimizerOptions_Level>(
+    OptimizerOptions_Level_descriptor(), name, value);
+}
+enum OptimizerOptions_GlobalJitLevel {
+  OptimizerOptions_GlobalJitLevel_DEFAULT = 0,
+  OptimizerOptions_GlobalJitLevel_OFF = -1,
+  OptimizerOptions_GlobalJitLevel_ON_1 = 1,
+  OptimizerOptions_GlobalJitLevel_ON_2 = 2,
+  OptimizerOptions_GlobalJitLevel_OptimizerOptions_GlobalJitLevel_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::google::protobuf::int32>::min(),
+  OptimizerOptions_GlobalJitLevel_OptimizerOptions_GlobalJitLevel_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::google::protobuf::int32>::max()
+};
+bool OptimizerOptions_GlobalJitLevel_IsValid(int value);
+const OptimizerOptions_GlobalJitLevel OptimizerOptions_GlobalJitLevel_GlobalJitLevel_MIN = OptimizerOptions_GlobalJitLevel_OFF;
+const OptimizerOptions_GlobalJitLevel OptimizerOptions_GlobalJitLevel_GlobalJitLevel_MAX = OptimizerOptions_GlobalJitLevel_ON_2;
+const int OptimizerOptions_GlobalJitLevel_GlobalJitLevel_ARRAYSIZE = OptimizerOptions_GlobalJitLevel_GlobalJitLevel_MAX + 1;
+
+const ::google::protobuf::EnumDescriptor* OptimizerOptions_GlobalJitLevel_descriptor();
+inline const ::std::string& OptimizerOptions_GlobalJitLevel_Name(OptimizerOptions_GlobalJitLevel value) {
+  return ::google::protobuf::internal::NameOfEnum(
+    OptimizerOptions_GlobalJitLevel_descriptor(), value);
+}
+inline bool OptimizerOptions_GlobalJitLevel_Parse(
+    const ::std::string& name, OptimizerOptions_GlobalJitLevel* value) {
+  return ::google::protobuf::internal::ParseNamedEnum<OptimizerOptions_GlobalJitLevel>(
+    OptimizerOptions_GlobalJitLevel_descriptor(), name, value);
+}
+enum RunOptions_TraceLevel {
+  RunOptions_TraceLevel_NO_TRACE = 0,
+  RunOptions_TraceLevel_SOFTWARE_TRACE = 1,
+  RunOptions_TraceLevel_HARDWARE_TRACE = 2,
+  RunOptions_TraceLevel_FULL_TRACE = 3,
+  RunOptions_TraceLevel_RunOptions_TraceLevel_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::google::protobuf::int32>::min(),
+  RunOptions_TraceLevel_RunOptions_TraceLevel_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::google::protobuf::int32>::max()
+};
+bool RunOptions_TraceLevel_IsValid(int value);
+const RunOptions_TraceLevel RunOptions_TraceLevel_TraceLevel_MIN = RunOptions_TraceLevel_NO_TRACE;
+const RunOptions_TraceLevel RunOptions_TraceLevel_TraceLevel_MAX = RunOptions_TraceLevel_FULL_TRACE;
+const int RunOptions_TraceLevel_TraceLevel_ARRAYSIZE = RunOptions_TraceLevel_TraceLevel_MAX + 1;
+
+const ::google::protobuf::EnumDescriptor* RunOptions_TraceLevel_descriptor();
+inline const ::std::string& RunOptions_TraceLevel_Name(RunOptions_TraceLevel value) {
+  return ::google::protobuf::internal::NameOfEnum(
+    RunOptions_TraceLevel_descriptor(), value);
+}
+inline bool RunOptions_TraceLevel_Parse(
+    const ::std::string& name, RunOptions_TraceLevel* value) {
+  return ::google::protobuf::internal::ParseNamedEnum<RunOptions_TraceLevel>(
+    RunOptions_TraceLevel_descriptor(), name, value);
+}
+// ===================================================================
+
+class GPUOptions_Experimental_VirtualDevices : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.GPUOptions.Experimental.VirtualDevices) */ {
+ public:
+  GPUOptions_Experimental_VirtualDevices();
+  virtual ~GPUOptions_Experimental_VirtualDevices();
+
+  GPUOptions_Experimental_VirtualDevices(const GPUOptions_Experimental_VirtualDevices& from);
+
+  inline GPUOptions_Experimental_VirtualDevices& operator=(const GPUOptions_Experimental_VirtualDevices& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  GPUOptions_Experimental_VirtualDevices(GPUOptions_Experimental_VirtualDevices&& from) noexcept
+    : GPUOptions_Experimental_VirtualDevices() {
+    *this = ::std::move(from);
+  }
+
+  inline GPUOptions_Experimental_VirtualDevices& operator=(GPUOptions_Experimental_VirtualDevices&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const GPUOptions_Experimental_VirtualDevices& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const GPUOptions_Experimental_VirtualDevices* internal_default_instance() {
+    return reinterpret_cast<const GPUOptions_Experimental_VirtualDevices*>(
+               &_GPUOptions_Experimental_VirtualDevices_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    0;
+
+  void UnsafeArenaSwap(GPUOptions_Experimental_VirtualDevices* other);
+  void Swap(GPUOptions_Experimental_VirtualDevices* other);
+  friend void swap(GPUOptions_Experimental_VirtualDevices& a, GPUOptions_Experimental_VirtualDevices& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline GPUOptions_Experimental_VirtualDevices* New() const final {
+    return CreateMaybeMessage<GPUOptions_Experimental_VirtualDevices>(NULL);
+  }
+
+  GPUOptions_Experimental_VirtualDevices* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<GPUOptions_Experimental_VirtualDevices>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const GPUOptions_Experimental_VirtualDevices& from);
+  void MergeFrom(const GPUOptions_Experimental_VirtualDevices& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(GPUOptions_Experimental_VirtualDevices* other);
+  protected:
+  explicit GPUOptions_Experimental_VirtualDevices(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // repeated float memory_limit_mb = 1;
+  int memory_limit_mb_size() const;
+  void clear_memory_limit_mb();
+  static const int kMemoryLimitMbFieldNumber = 1;
+  float memory_limit_mb(int index) const;
+  void set_memory_limit_mb(int index, float value);
+  void add_memory_limit_mb(float value);
+  const ::google::protobuf::RepeatedField< float >&
+      memory_limit_mb() const;
+  ::google::protobuf::RepeatedField< float >*
+      mutable_memory_limit_mb();
+
+  // @@protoc_insertion_point(class_scope:tensorflow.GPUOptions.Experimental.VirtualDevices)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  ::google::protobuf::RepeatedField< float > memory_limit_mb_;
+  mutable std::atomic<int> _memory_limit_mb_cached_byte_size_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto;
+};
+// -------------------------------------------------------------------
+
+class GPUOptions_Experimental : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.GPUOptions.Experimental) */ {
+ public:
+  GPUOptions_Experimental();
+  virtual ~GPUOptions_Experimental();
+
+  GPUOptions_Experimental(const GPUOptions_Experimental& from);
+
+  inline GPUOptions_Experimental& operator=(const GPUOptions_Experimental& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  GPUOptions_Experimental(GPUOptions_Experimental&& from) noexcept
+    : GPUOptions_Experimental() {
+    *this = ::std::move(from);
+  }
+
+  inline GPUOptions_Experimental& operator=(GPUOptions_Experimental&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const GPUOptions_Experimental& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const GPUOptions_Experimental* internal_default_instance() {
+    return reinterpret_cast<const GPUOptions_Experimental*>(
+               &_GPUOptions_Experimental_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    1;
+
+  void UnsafeArenaSwap(GPUOptions_Experimental* other);
+  void Swap(GPUOptions_Experimental* other);
+  friend void swap(GPUOptions_Experimental& a, GPUOptions_Experimental& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline GPUOptions_Experimental* New() const final {
+    return CreateMaybeMessage<GPUOptions_Experimental>(NULL);
+  }
+
+  GPUOptions_Experimental* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<GPUOptions_Experimental>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const GPUOptions_Experimental& from);
+  void MergeFrom(const GPUOptions_Experimental& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(GPUOptions_Experimental* other);
+  protected:
+  explicit GPUOptions_Experimental(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  typedef GPUOptions_Experimental_VirtualDevices VirtualDevices;
+
+  // accessors -------------------------------------------------------
+
+  // repeated .tensorflow.GPUOptions.Experimental.VirtualDevices virtual_devices = 1;
+  int virtual_devices_size() const;
+  void clear_virtual_devices();
+  static const int kVirtualDevicesFieldNumber = 1;
+  ::tensorflow::GPUOptions_Experimental_VirtualDevices* mutable_virtual_devices(int index);
+  ::google::protobuf::RepeatedPtrField< ::tensorflow::GPUOptions_Experimental_VirtualDevices >*
+      mutable_virtual_devices();
+  const ::tensorflow::GPUOptions_Experimental_VirtualDevices& virtual_devices(int index) const;
+  ::tensorflow::GPUOptions_Experimental_VirtualDevices* add_virtual_devices();
+  const ::google::protobuf::RepeatedPtrField< ::tensorflow::GPUOptions_Experimental_VirtualDevices >&
+      virtual_devices() const;
+
+  // bool use_unified_memory = 2;
+  void clear_use_unified_memory();
+  static const int kUseUnifiedMemoryFieldNumber = 2;
+  bool use_unified_memory() const;
+  void set_use_unified_memory(bool value);
+
+  // @@protoc_insertion_point(class_scope:tensorflow.GPUOptions.Experimental)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  ::google::protobuf::RepeatedPtrField< ::tensorflow::GPUOptions_Experimental_VirtualDevices > virtual_devices_;
+  bool use_unified_memory_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto;
+};
+// -------------------------------------------------------------------
+
+class GPUOptions : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.GPUOptions) */ {
+ public:
+  GPUOptions();
+  virtual ~GPUOptions();
+
+  GPUOptions(const GPUOptions& from);
+
+  inline GPUOptions& operator=(const GPUOptions& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  GPUOptions(GPUOptions&& from) noexcept
+    : GPUOptions() {
+    *this = ::std::move(from);
+  }
+
+  inline GPUOptions& operator=(GPUOptions&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const GPUOptions& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const GPUOptions* internal_default_instance() {
+    return reinterpret_cast<const GPUOptions*>(
+               &_GPUOptions_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    2;
+
+  void UnsafeArenaSwap(GPUOptions* other);
+  void Swap(GPUOptions* other);
+  friend void swap(GPUOptions& a, GPUOptions& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline GPUOptions* New() const final {
+    return CreateMaybeMessage<GPUOptions>(NULL);
+  }
+
+  GPUOptions* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<GPUOptions>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const GPUOptions& from);
+  void MergeFrom(const GPUOptions& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(GPUOptions* other);
+  protected:
+  explicit GPUOptions(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  typedef GPUOptions_Experimental Experimental;
+
+  // accessors -------------------------------------------------------
+
+  // string allocator_type = 2;
+  void clear_allocator_type();
+  static const int kAllocatorTypeFieldNumber = 2;
+  const ::std::string& allocator_type() const;
+  void set_allocator_type(const ::std::string& value);
+  #if LANG_CXX11
+  void set_allocator_type(::std::string&& value);
+  #endif
+  void set_allocator_type(const char* value);
+  void set_allocator_type(const char* value, size_t size);
+  ::std::string* mutable_allocator_type();
+  ::std::string* release_allocator_type();
+  void set_allocated_allocator_type(::std::string* allocator_type);
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  ::std::string* unsafe_arena_release_allocator_type();
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  void unsafe_arena_set_allocated_allocator_type(
+      ::std::string* allocator_type);
+
+  // string visible_device_list = 5;
+  void clear_visible_device_list();
+  static const int kVisibleDeviceListFieldNumber = 5;
+  const ::std::string& visible_device_list() const;
+  void set_visible_device_list(const ::std::string& value);
+  #if LANG_CXX11
+  void set_visible_device_list(::std::string&& value);
+  #endif
+  void set_visible_device_list(const char* value);
+  void set_visible_device_list(const char* value, size_t size);
+  ::std::string* mutable_visible_device_list();
+  ::std::string* release_visible_device_list();
+  void set_allocated_visible_device_list(::std::string* visible_device_list);
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  ::std::string* unsafe_arena_release_visible_device_list();
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  void unsafe_arena_set_allocated_visible_device_list(
+      ::std::string* visible_device_list);
+
+  // .tensorflow.GPUOptions.Experimental experimental = 9;
+  bool has_experimental() const;
+  void clear_experimental();
+  static const int kExperimentalFieldNumber = 9;
+  const ::tensorflow::GPUOptions_Experimental& experimental() const;
+  ::tensorflow::GPUOptions_Experimental* release_experimental();
+  ::tensorflow::GPUOptions_Experimental* mutable_experimental();
+  void set_allocated_experimental(::tensorflow::GPUOptions_Experimental* experimental);
+  void unsafe_arena_set_allocated_experimental(
+      ::tensorflow::GPUOptions_Experimental* experimental);
+  ::tensorflow::GPUOptions_Experimental* unsafe_arena_release_experimental();
+
+  // double per_process_gpu_memory_fraction = 1;
+  void clear_per_process_gpu_memory_fraction();
+  static const int kPerProcessGpuMemoryFractionFieldNumber = 1;
+  double per_process_gpu_memory_fraction() const;
+  void set_per_process_gpu_memory_fraction(double value);
+
+  // int64 deferred_deletion_bytes = 3;
+  void clear_deferred_deletion_bytes();
+  static const int kDeferredDeletionBytesFieldNumber = 3;
+  ::google::protobuf::int64 deferred_deletion_bytes() const;
+  void set_deferred_deletion_bytes(::google::protobuf::int64 value);
+
+  // int32 polling_active_delay_usecs = 6;
+  void clear_polling_active_delay_usecs();
+  static const int kPollingActiveDelayUsecsFieldNumber = 6;
+  ::google::protobuf::int32 polling_active_delay_usecs() const;
+  void set_polling_active_delay_usecs(::google::protobuf::int32 value);
+
+  // bool allow_growth = 4;
+  void clear_allow_growth();
+  static const int kAllowGrowthFieldNumber = 4;
+  bool allow_growth() const;
+  void set_allow_growth(bool value);
+
+  // bool force_gpu_compatible = 8;
+  void clear_force_gpu_compatible();
+  static const int kForceGpuCompatibleFieldNumber = 8;
+  bool force_gpu_compatible() const;
+  void set_force_gpu_compatible(bool value);
+
+  // int32 polling_inactive_delay_msecs = 7;
+  void clear_polling_inactive_delay_msecs();
+  static const int kPollingInactiveDelayMsecsFieldNumber = 7;
+  ::google::protobuf::int32 polling_inactive_delay_msecs() const;
+  void set_polling_inactive_delay_msecs(::google::protobuf::int32 value);
+
+  // @@protoc_insertion_point(class_scope:tensorflow.GPUOptions)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  ::google::protobuf::internal::ArenaStringPtr allocator_type_;
+  ::google::protobuf::internal::ArenaStringPtr visible_device_list_;
+  ::tensorflow::GPUOptions_Experimental* experimental_;
+  double per_process_gpu_memory_fraction_;
+  ::google::protobuf::int64 deferred_deletion_bytes_;
+  ::google::protobuf::int32 polling_active_delay_usecs_;
+  bool allow_growth_;
+  bool force_gpu_compatible_;
+  ::google::protobuf::int32 polling_inactive_delay_msecs_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto;
+};
+// -------------------------------------------------------------------
+
+class OptimizerOptions : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.OptimizerOptions) */ {
+ public:
+  OptimizerOptions();
+  virtual ~OptimizerOptions();
+
+  OptimizerOptions(const OptimizerOptions& from);
+
+  inline OptimizerOptions& operator=(const OptimizerOptions& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  OptimizerOptions(OptimizerOptions&& from) noexcept
+    : OptimizerOptions() {
+    *this = ::std::move(from);
+  }
+
+  inline OptimizerOptions& operator=(OptimizerOptions&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const OptimizerOptions& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const OptimizerOptions* internal_default_instance() {
+    return reinterpret_cast<const OptimizerOptions*>(
+               &_OptimizerOptions_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    3;
+
+  void UnsafeArenaSwap(OptimizerOptions* other);
+  void Swap(OptimizerOptions* other);
+  friend void swap(OptimizerOptions& a, OptimizerOptions& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline OptimizerOptions* New() const final {
+    return CreateMaybeMessage<OptimizerOptions>(NULL);
+  }
+
+  OptimizerOptions* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<OptimizerOptions>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const OptimizerOptions& from);
+  void MergeFrom(const OptimizerOptions& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(OptimizerOptions* other);
+  protected:
+  explicit OptimizerOptions(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  typedef OptimizerOptions_Level Level;
+  static const Level L1 =
+    OptimizerOptions_Level_L1;
+  static const Level L0 =
+    OptimizerOptions_Level_L0;
+  static inline bool Level_IsValid(int value) {
+    return OptimizerOptions_Level_IsValid(value);
+  }
+  static const Level Level_MIN =
+    OptimizerOptions_Level_Level_MIN;
+  static const Level Level_MAX =
+    OptimizerOptions_Level_Level_MAX;
+  static const int Level_ARRAYSIZE =
+    OptimizerOptions_Level_Level_ARRAYSIZE;
+  static inline const ::google::protobuf::EnumDescriptor*
+  Level_descriptor() {
+    return OptimizerOptions_Level_descriptor();
+  }
+  static inline const ::std::string& Level_Name(Level value) {
+    return OptimizerOptions_Level_Name(value);
+  }
+  static inline bool Level_Parse(const ::std::string& name,
+      Level* value) {
+    return OptimizerOptions_Level_Parse(name, value);
+  }
+
+  typedef OptimizerOptions_GlobalJitLevel GlobalJitLevel;
+  static const GlobalJitLevel DEFAULT =
+    OptimizerOptions_GlobalJitLevel_DEFAULT;
+  static const GlobalJitLevel OFF =
+    OptimizerOptions_GlobalJitLevel_OFF;
+  static const GlobalJitLevel ON_1 =
+    OptimizerOptions_GlobalJitLevel_ON_1;
+  static const GlobalJitLevel ON_2 =
+    OptimizerOptions_GlobalJitLevel_ON_2;
+  static inline bool GlobalJitLevel_IsValid(int value) {
+    return OptimizerOptions_GlobalJitLevel_IsValid(value);
+  }
+  static const GlobalJitLevel GlobalJitLevel_MIN =
+    OptimizerOptions_GlobalJitLevel_GlobalJitLevel_MIN;
+  static const GlobalJitLevel GlobalJitLevel_MAX =
+    OptimizerOptions_GlobalJitLevel_GlobalJitLevel_MAX;
+  static const int GlobalJitLevel_ARRAYSIZE =
+    OptimizerOptions_GlobalJitLevel_GlobalJitLevel_ARRAYSIZE;
+  static inline const ::google::protobuf::EnumDescriptor*
+  GlobalJitLevel_descriptor() {
+    return OptimizerOptions_GlobalJitLevel_descriptor();
+  }
+  static inline const ::std::string& GlobalJitLevel_Name(GlobalJitLevel value) {
+    return OptimizerOptions_GlobalJitLevel_Name(value);
+  }
+  static inline bool GlobalJitLevel_Parse(const ::std::string& name,
+      GlobalJitLevel* value) {
+    return OptimizerOptions_GlobalJitLevel_Parse(name, value);
+  }
+
+  // accessors -------------------------------------------------------
+
+  // bool do_common_subexpression_elimination = 1;
+  void clear_do_common_subexpression_elimination();
+  static const int kDoCommonSubexpressionEliminationFieldNumber = 1;
+  bool do_common_subexpression_elimination() const;
+  void set_do_common_subexpression_elimination(bool value);
+
+  // bool do_constant_folding = 2;
+  void clear_do_constant_folding();
+  static const int kDoConstantFoldingFieldNumber = 2;
+  bool do_constant_folding() const;
+  void set_do_constant_folding(bool value);
+
+  // bool do_function_inlining = 4;
+  void clear_do_function_inlining();
+  static const int kDoFunctionInliningFieldNumber = 4;
+  bool do_function_inlining() const;
+  void set_do_function_inlining(bool value);
+
+  // .tensorflow.OptimizerOptions.Level opt_level = 3;
+  void clear_opt_level();
+  static const int kOptLevelFieldNumber = 3;
+  ::tensorflow::OptimizerOptions_Level opt_level() const;
+  void set_opt_level(::tensorflow::OptimizerOptions_Level value);
+
+  // int64 max_folded_constant_in_bytes = 6;
+  void clear_max_folded_constant_in_bytes();
+  static const int kMaxFoldedConstantInBytesFieldNumber = 6;
+  ::google::protobuf::int64 max_folded_constant_in_bytes() const;
+  void set_max_folded_constant_in_bytes(::google::protobuf::int64 value);
+
+  // .tensorflow.OptimizerOptions.GlobalJitLevel global_jit_level = 5;
+  void clear_global_jit_level();
+  static const int kGlobalJitLevelFieldNumber = 5;
+  ::tensorflow::OptimizerOptions_GlobalJitLevel global_jit_level() const;
+  void set_global_jit_level(::tensorflow::OptimizerOptions_GlobalJitLevel value);
+
+  // @@protoc_insertion_point(class_scope:tensorflow.OptimizerOptions)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  bool do_common_subexpression_elimination_;
+  bool do_constant_folding_;
+  bool do_function_inlining_;
+  int opt_level_;
+  ::google::protobuf::int64 max_folded_constant_in_bytes_;
+  int global_jit_level_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto;
+};
+// -------------------------------------------------------------------
+
+class GraphOptions : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.GraphOptions) */ {
+ public:
+  GraphOptions();
+  virtual ~GraphOptions();
+
+  GraphOptions(const GraphOptions& from);
+
+  inline GraphOptions& operator=(const GraphOptions& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  GraphOptions(GraphOptions&& from) noexcept
+    : GraphOptions() {
+    *this = ::std::move(from);
+  }
+
+  inline GraphOptions& operator=(GraphOptions&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const GraphOptions& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const GraphOptions* internal_default_instance() {
+    return reinterpret_cast<const GraphOptions*>(
+               &_GraphOptions_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    4;
+
+  void UnsafeArenaSwap(GraphOptions* other);
+  void Swap(GraphOptions* other);
+  friend void swap(GraphOptions& a, GraphOptions& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline GraphOptions* New() const final {
+    return CreateMaybeMessage<GraphOptions>(NULL);
+  }
+
+  GraphOptions* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<GraphOptions>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const GraphOptions& from);
+  void MergeFrom(const GraphOptions& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(GraphOptions* other);
+  protected:
+  explicit GraphOptions(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // .tensorflow.OptimizerOptions optimizer_options = 3;
+  bool has_optimizer_options() const;
+  void clear_optimizer_options();
+  static const int kOptimizerOptionsFieldNumber = 3;
+  const ::tensorflow::OptimizerOptions& optimizer_options() const;
+  ::tensorflow::OptimizerOptions* release_optimizer_options();
+  ::tensorflow::OptimizerOptions* mutable_optimizer_options();
+  void set_allocated_optimizer_options(::tensorflow::OptimizerOptions* optimizer_options);
+  void unsafe_arena_set_allocated_optimizer_options(
+      ::tensorflow::OptimizerOptions* optimizer_options);
+  ::tensorflow::OptimizerOptions* unsafe_arena_release_optimizer_options();
+
+  // .tensorflow.RewriterConfig rewrite_options = 10;
+  bool has_rewrite_options() const;
+  void clear_rewrite_options();
+  static const int kRewriteOptionsFieldNumber = 10;
+  const ::tensorflow::RewriterConfig& rewrite_options() const;
+  ::tensorflow::RewriterConfig* release_rewrite_options();
+  ::tensorflow::RewriterConfig* mutable_rewrite_options();
+  void set_allocated_rewrite_options(::tensorflow::RewriterConfig* rewrite_options);
+  void unsafe_arena_set_allocated_rewrite_options(
+      ::tensorflow::RewriterConfig* rewrite_options);
+  ::tensorflow::RewriterConfig* unsafe_arena_release_rewrite_options();
+
+  // int64 build_cost_model = 4;
+  void clear_build_cost_model();
+  static const int kBuildCostModelFieldNumber = 4;
+  ::google::protobuf::int64 build_cost_model() const;
+  void set_build_cost_model(::google::protobuf::int64 value);
+
+  // bool enable_recv_scheduling = 2;
+  void clear_enable_recv_scheduling();
+  static const int kEnableRecvSchedulingFieldNumber = 2;
+  bool enable_recv_scheduling() const;
+  void set_enable_recv_scheduling(bool value);
+
+  // bool infer_shapes = 5;
+  void clear_infer_shapes();
+  static const int kInferShapesFieldNumber = 5;
+  bool infer_shapes() const;
+  void set_infer_shapes(bool value);
+
+  // bool place_pruned_graph = 6;
+  void clear_place_pruned_graph();
+  static const int kPlacePrunedGraphFieldNumber = 6;
+  bool place_pruned_graph() const;
+  void set_place_pruned_graph(bool value);
+
+  // bool enable_bfloat16_sendrecv = 7;
+  void clear_enable_bfloat16_sendrecv();
+  static const int kEnableBfloat16SendrecvFieldNumber = 7;
+  bool enable_bfloat16_sendrecv() const;
+  void set_enable_bfloat16_sendrecv(bool value);
+
+  // int32 timeline_step = 8;
+  void clear_timeline_step();
+  static const int kTimelineStepFieldNumber = 8;
+  ::google::protobuf::int32 timeline_step() const;
+  void set_timeline_step(::google::protobuf::int32 value);
+
+  // int64 build_cost_model_after = 9;
+  void clear_build_cost_model_after();
+  static const int kBuildCostModelAfterFieldNumber = 9;
+  ::google::protobuf::int64 build_cost_model_after() const;
+  void set_build_cost_model_after(::google::protobuf::int64 value);
+
+  // @@protoc_insertion_point(class_scope:tensorflow.GraphOptions)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  ::tensorflow::OptimizerOptions* optimizer_options_;
+  ::tensorflow::RewriterConfig* rewrite_options_;
+  ::google::protobuf::int64 build_cost_model_;
+  bool enable_recv_scheduling_;
+  bool infer_shapes_;
+  bool place_pruned_graph_;
+  bool enable_bfloat16_sendrecv_;
+  ::google::protobuf::int32 timeline_step_;
+  ::google::protobuf::int64 build_cost_model_after_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto;
+};
+// -------------------------------------------------------------------
+
+class ThreadPoolOptionProto : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.ThreadPoolOptionProto) */ {
+ public:
+  ThreadPoolOptionProto();
+  virtual ~ThreadPoolOptionProto();
+
+  ThreadPoolOptionProto(const ThreadPoolOptionProto& from);
+
+  inline ThreadPoolOptionProto& operator=(const ThreadPoolOptionProto& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  ThreadPoolOptionProto(ThreadPoolOptionProto&& from) noexcept
+    : ThreadPoolOptionProto() {
+    *this = ::std::move(from);
+  }
+
+  inline ThreadPoolOptionProto& operator=(ThreadPoolOptionProto&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const ThreadPoolOptionProto& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const ThreadPoolOptionProto* internal_default_instance() {
+    return reinterpret_cast<const ThreadPoolOptionProto*>(
+               &_ThreadPoolOptionProto_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    5;
+
+  void UnsafeArenaSwap(ThreadPoolOptionProto* other);
+  void Swap(ThreadPoolOptionProto* other);
+  friend void swap(ThreadPoolOptionProto& a, ThreadPoolOptionProto& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline ThreadPoolOptionProto* New() const final {
+    return CreateMaybeMessage<ThreadPoolOptionProto>(NULL);
+  }
+
+  ThreadPoolOptionProto* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<ThreadPoolOptionProto>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const ThreadPoolOptionProto& from);
+  void MergeFrom(const ThreadPoolOptionProto& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(ThreadPoolOptionProto* other);
+  protected:
+  explicit ThreadPoolOptionProto(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // string global_name = 2;
+  void clear_global_name();
+  static const int kGlobalNameFieldNumber = 2;
+  const ::std::string& global_name() const;
+  void set_global_name(const ::std::string& value);
+  #if LANG_CXX11
+  void set_global_name(::std::string&& value);
+  #endif
+  void set_global_name(const char* value);
+  void set_global_name(const char* value, size_t size);
+  ::std::string* mutable_global_name();
+  ::std::string* release_global_name();
+  void set_allocated_global_name(::std::string* global_name);
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  ::std::string* unsafe_arena_release_global_name();
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  void unsafe_arena_set_allocated_global_name(
+      ::std::string* global_name);
+
+  // int32 num_threads = 1;
+  void clear_num_threads();
+  static const int kNumThreadsFieldNumber = 1;
+  ::google::protobuf::int32 num_threads() const;
+  void set_num_threads(::google::protobuf::int32 value);
+
+  // @@protoc_insertion_point(class_scope:tensorflow.ThreadPoolOptionProto)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  ::google::protobuf::internal::ArenaStringPtr global_name_;
+  ::google::protobuf::int32 num_threads_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto;
+};
+// -------------------------------------------------------------------
+
+class RPCOptions : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.RPCOptions) */ {
+ public:
+  RPCOptions();
+  virtual ~RPCOptions();
+
+  RPCOptions(const RPCOptions& from);
+
+  inline RPCOptions& operator=(const RPCOptions& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  RPCOptions(RPCOptions&& from) noexcept
+    : RPCOptions() {
+    *this = ::std::move(from);
+  }
+
+  inline RPCOptions& operator=(RPCOptions&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const RPCOptions& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const RPCOptions* internal_default_instance() {
+    return reinterpret_cast<const RPCOptions*>(
+               &_RPCOptions_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    6;
+
+  void UnsafeArenaSwap(RPCOptions* other);
+  void Swap(RPCOptions* other);
+  friend void swap(RPCOptions& a, RPCOptions& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline RPCOptions* New() const final {
+    return CreateMaybeMessage<RPCOptions>(NULL);
+  }
+
+  RPCOptions* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<RPCOptions>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const RPCOptions& from);
+  void MergeFrom(const RPCOptions& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(RPCOptions* other);
+  protected:
+  explicit RPCOptions(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // bool use_rpc_for_inprocess_master = 1;
+  void clear_use_rpc_for_inprocess_master();
+  static const int kUseRpcForInprocessMasterFieldNumber = 1;
+  bool use_rpc_for_inprocess_master() const;
+  void set_use_rpc_for_inprocess_master(bool value);
+
+  // @@protoc_insertion_point(class_scope:tensorflow.RPCOptions)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  bool use_rpc_for_inprocess_master_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto;
+};
+// -------------------------------------------------------------------
+
+class ConfigProto_DeviceCountEntry_DoNotUse : public ::google::protobuf::internal::MapEntry<ConfigProto_DeviceCountEntry_DoNotUse, 
+    ::std::string, ::google::protobuf::int32,
+    ::google::protobuf::internal::WireFormatLite::TYPE_STRING,
+    ::google::protobuf::internal::WireFormatLite::TYPE_INT32,
+    0 > {
+public:
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+static bool _ParseMap(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  typedef ::google::protobuf::internal::MapEntry<ConfigProto_DeviceCountEntry_DoNotUse, 
+    ::std::string, ::google::protobuf::int32,
+    ::google::protobuf::internal::WireFormatLite::TYPE_STRING,
+    ::google::protobuf::internal::WireFormatLite::TYPE_INT32,
+    0 > SuperType;
+  ConfigProto_DeviceCountEntry_DoNotUse();
+  ConfigProto_DeviceCountEntry_DoNotUse(::google::protobuf::Arena* arena);
+  void MergeFrom(const ConfigProto_DeviceCountEntry_DoNotUse& other);
+  static const ConfigProto_DeviceCountEntry_DoNotUse* internal_default_instance() { return reinterpret_cast<const ConfigProto_DeviceCountEntry_DoNotUse*>(&_ConfigProto_DeviceCountEntry_DoNotUse_default_instance_); }
+  void MergeFrom(const ::google::protobuf::Message& other) final;
+  ::google::protobuf::Metadata GetMetadata() const;
+};
+
+// -------------------------------------------------------------------
+
+class ConfigProto_Experimental : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.ConfigProto.Experimental) */ {
+ public:
+  ConfigProto_Experimental();
+  virtual ~ConfigProto_Experimental();
+
+  ConfigProto_Experimental(const ConfigProto_Experimental& from);
+
+  inline ConfigProto_Experimental& operator=(const ConfigProto_Experimental& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  ConfigProto_Experimental(ConfigProto_Experimental&& from) noexcept
+    : ConfigProto_Experimental() {
+    *this = ::std::move(from);
+  }
+
+  inline ConfigProto_Experimental& operator=(ConfigProto_Experimental&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const ConfigProto_Experimental& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const ConfigProto_Experimental* internal_default_instance() {
+    return reinterpret_cast<const ConfigProto_Experimental*>(
+               &_ConfigProto_Experimental_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    8;
+
+  void UnsafeArenaSwap(ConfigProto_Experimental* other);
+  void Swap(ConfigProto_Experimental* other);
+  friend void swap(ConfigProto_Experimental& a, ConfigProto_Experimental& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline ConfigProto_Experimental* New() const final {
+    return CreateMaybeMessage<ConfigProto_Experimental>(NULL);
+  }
+
+  ConfigProto_Experimental* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<ConfigProto_Experimental>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const ConfigProto_Experimental& from);
+  void MergeFrom(const ConfigProto_Experimental& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(ConfigProto_Experimental* other);
+  protected:
+  explicit ConfigProto_Experimental(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // string collective_group_leader = 1;
+  void clear_collective_group_leader();
+  static const int kCollectiveGroupLeaderFieldNumber = 1;
+  const ::std::string& collective_group_leader() const;
+  void set_collective_group_leader(const ::std::string& value);
+  #if LANG_CXX11
+  void set_collective_group_leader(::std::string&& value);
+  #endif
+  void set_collective_group_leader(const char* value);
+  void set_collective_group_leader(const char* value, size_t size);
+  ::std::string* mutable_collective_group_leader();
+  ::std::string* release_collective_group_leader();
+  void set_allocated_collective_group_leader(::std::string* collective_group_leader);
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  ::std::string* unsafe_arena_release_collective_group_leader();
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  void unsafe_arena_set_allocated_collective_group_leader(
+      ::std::string* collective_group_leader);
+
+  // @@protoc_insertion_point(class_scope:tensorflow.ConfigProto.Experimental)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  ::google::protobuf::internal::ArenaStringPtr collective_group_leader_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto;
+};
+// -------------------------------------------------------------------
+
+class ConfigProto : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.ConfigProto) */ {
+ public:
+  ConfigProto();
+  virtual ~ConfigProto();
+
+  ConfigProto(const ConfigProto& from);
+
+  inline ConfigProto& operator=(const ConfigProto& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  ConfigProto(ConfigProto&& from) noexcept
+    : ConfigProto() {
+    *this = ::std::move(from);
+  }
+
+  inline ConfigProto& operator=(ConfigProto&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const ConfigProto& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const ConfigProto* internal_default_instance() {
+    return reinterpret_cast<const ConfigProto*>(
+               &_ConfigProto_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    9;
+
+  void UnsafeArenaSwap(ConfigProto* other);
+  void Swap(ConfigProto* other);
+  friend void swap(ConfigProto& a, ConfigProto& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline ConfigProto* New() const final {
+    return CreateMaybeMessage<ConfigProto>(NULL);
+  }
+
+  ConfigProto* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<ConfigProto>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const ConfigProto& from);
+  void MergeFrom(const ConfigProto& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(ConfigProto* other);
+  protected:
+  explicit ConfigProto(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  typedef ConfigProto_Experimental Experimental;
+
+  // accessors -------------------------------------------------------
+
+  // map<string, int32> device_count = 1;
+  int device_count_size() const;
+  void clear_device_count();
+  static const int kDeviceCountFieldNumber = 1;
+  const ::google::protobuf::Map< ::std::string, ::google::protobuf::int32 >&
+      device_count() const;
+  ::google::protobuf::Map< ::std::string, ::google::protobuf::int32 >*
+      mutable_device_count();
+
+  // repeated string device_filters = 4;
+  int device_filters_size() const;
+  void clear_device_filters();
+  static const int kDeviceFiltersFieldNumber = 4;
+  const ::std::string& device_filters(int index) const;
+  ::std::string* mutable_device_filters(int index);
+  void set_device_filters(int index, const ::std::string& value);
+  #if LANG_CXX11
+  void set_device_filters(int index, ::std::string&& value);
+  #endif
+  void set_device_filters(int index, const char* value);
+  void set_device_filters(int index, const char* value, size_t size);
+  ::std::string* add_device_filters();
+  void add_device_filters(const ::std::string& value);
+  #if LANG_CXX11
+  void add_device_filters(::std::string&& value);
+  #endif
+  void add_device_filters(const char* value);
+  void add_device_filters(const char* value, size_t size);
+  const ::google::protobuf::RepeatedPtrField<::std::string>& device_filters() const;
+  ::google::protobuf::RepeatedPtrField<::std::string>* mutable_device_filters();
+
+  // repeated .tensorflow.ThreadPoolOptionProto session_inter_op_thread_pool = 12;
+  int session_inter_op_thread_pool_size() const;
+  void clear_session_inter_op_thread_pool();
+  static const int kSessionInterOpThreadPoolFieldNumber = 12;
+  ::tensorflow::ThreadPoolOptionProto* mutable_session_inter_op_thread_pool(int index);
+  ::google::protobuf::RepeatedPtrField< ::tensorflow::ThreadPoolOptionProto >*
+      mutable_session_inter_op_thread_pool();
+  const ::tensorflow::ThreadPoolOptionProto& session_inter_op_thread_pool(int index) const;
+  ::tensorflow::ThreadPoolOptionProto* add_session_inter_op_thread_pool();
+  const ::google::protobuf::RepeatedPtrField< ::tensorflow::ThreadPoolOptionProto >&
+      session_inter_op_thread_pool() const;
+
+  // .tensorflow.GPUOptions gpu_options = 6;
+  bool has_gpu_options() const;
+  void clear_gpu_options();
+  static const int kGpuOptionsFieldNumber = 6;
+  const ::tensorflow::GPUOptions& gpu_options() const;
+  ::tensorflow::GPUOptions* release_gpu_options();
+  ::tensorflow::GPUOptions* mutable_gpu_options();
+  void set_allocated_gpu_options(::tensorflow::GPUOptions* gpu_options);
+  void unsafe_arena_set_allocated_gpu_options(
+      ::tensorflow::GPUOptions* gpu_options);
+  ::tensorflow::GPUOptions* unsafe_arena_release_gpu_options();
+
+  // .tensorflow.GraphOptions graph_options = 10;
+  bool has_graph_options() const;
+  void clear_graph_options();
+  static const int kGraphOptionsFieldNumber = 10;
+  const ::tensorflow::GraphOptions& graph_options() const;
+  ::tensorflow::GraphOptions* release_graph_options();
+  ::tensorflow::GraphOptions* mutable_graph_options();
+  void set_allocated_graph_options(::tensorflow::GraphOptions* graph_options);
+  void unsafe_arena_set_allocated_graph_options(
+      ::tensorflow::GraphOptions* graph_options);
+  ::tensorflow::GraphOptions* unsafe_arena_release_graph_options();
+
+  // .tensorflow.RPCOptions rpc_options = 13;
+  bool has_rpc_options() const;
+  void clear_rpc_options();
+  static const int kRpcOptionsFieldNumber = 13;
+  const ::tensorflow::RPCOptions& rpc_options() const;
+  ::tensorflow::RPCOptions* release_rpc_options();
+  ::tensorflow::RPCOptions* mutable_rpc_options();
+  void set_allocated_rpc_options(::tensorflow::RPCOptions* rpc_options);
+  void unsafe_arena_set_allocated_rpc_options(
+      ::tensorflow::RPCOptions* rpc_options);
+  ::tensorflow::RPCOptions* unsafe_arena_release_rpc_options();
+
+  // .tensorflow.ClusterDef cluster_def = 14;
+  bool has_cluster_def() const;
+  void clear_cluster_def();
+  static const int kClusterDefFieldNumber = 14;
+  const ::tensorflow::ClusterDef& cluster_def() const;
+  ::tensorflow::ClusterDef* release_cluster_def();
+  ::tensorflow::ClusterDef* mutable_cluster_def();
+  void set_allocated_cluster_def(::tensorflow::ClusterDef* cluster_def);
+  void unsafe_arena_set_allocated_cluster_def(
+      ::tensorflow::ClusterDef* cluster_def);
+  ::tensorflow::ClusterDef* unsafe_arena_release_cluster_def();
+
+  // .tensorflow.ConfigProto.Experimental experimental = 16;
+  bool has_experimental() const;
+  void clear_experimental();
+  static const int kExperimentalFieldNumber = 16;
+  const ::tensorflow::ConfigProto_Experimental& experimental() const;
+  ::tensorflow::ConfigProto_Experimental* release_experimental();
+  ::tensorflow::ConfigProto_Experimental* mutable_experimental();
+  void set_allocated_experimental(::tensorflow::ConfigProto_Experimental* experimental);
+  void unsafe_arena_set_allocated_experimental(
+      ::tensorflow::ConfigProto_Experimental* experimental);
+  ::tensorflow::ConfigProto_Experimental* unsafe_arena_release_experimental();
+
+  // int32 intra_op_parallelism_threads = 2;
+  void clear_intra_op_parallelism_threads();
+  static const int kIntraOpParallelismThreadsFieldNumber = 2;
+  ::google::protobuf::int32 intra_op_parallelism_threads() const;
+  void set_intra_op_parallelism_threads(::google::protobuf::int32 value);
+
+  // int32 placement_period = 3;
+  void clear_placement_period();
+  static const int kPlacementPeriodFieldNumber = 3;
+  ::google::protobuf::int32 placement_period() const;
+  void set_placement_period(::google::protobuf::int32 value);
+
+  // int32 inter_op_parallelism_threads = 5;
+  void clear_inter_op_parallelism_threads();
+  static const int kInterOpParallelismThreadsFieldNumber = 5;
+  ::google::protobuf::int32 inter_op_parallelism_threads() const;
+  void set_inter_op_parallelism_threads(::google::protobuf::int32 value);
+
+  // bool use_per_session_threads = 9;
+  void clear_use_per_session_threads();
+  static const int kUsePerSessionThreadsFieldNumber = 9;
+  bool use_per_session_threads() const;
+  void set_use_per_session_threads(bool value);
+
+  // bool allow_soft_placement = 7;
+  void clear_allow_soft_placement();
+  static const int kAllowSoftPlacementFieldNumber = 7;
+  bool allow_soft_placement() const;
+  void set_allow_soft_placement(bool value);
+
+  // bool log_device_placement = 8;
+  void clear_log_device_placement();
+  static const int kLogDevicePlacementFieldNumber = 8;
+  bool log_device_placement() const;
+  void set_log_device_placement(bool value);
+
+  // bool isolate_session_state = 15;
+  void clear_isolate_session_state();
+  static const int kIsolateSessionStateFieldNumber = 15;
+  bool isolate_session_state() const;
+  void set_isolate_session_state(bool value);
+
+  // int64 operation_timeout_in_ms = 11;
+  void clear_operation_timeout_in_ms();
+  static const int kOperationTimeoutInMsFieldNumber = 11;
+  ::google::protobuf::int64 operation_timeout_in_ms() const;
+  void set_operation_timeout_in_ms(::google::protobuf::int64 value);
+
+  // @@protoc_insertion_point(class_scope:tensorflow.ConfigProto)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  ::google::protobuf::internal::MapField<
+      ConfigProto_DeviceCountEntry_DoNotUse,
+      ::std::string, ::google::protobuf::int32,
+      ::google::protobuf::internal::WireFormatLite::TYPE_STRING,
+      ::google::protobuf::internal::WireFormatLite::TYPE_INT32,
+      0 > device_count_;
+  ::google::protobuf::RepeatedPtrField<::std::string> device_filters_;
+  ::google::protobuf::RepeatedPtrField< ::tensorflow::ThreadPoolOptionProto > session_inter_op_thread_pool_;
+  ::tensorflow::GPUOptions* gpu_options_;
+  ::tensorflow::GraphOptions* graph_options_;
+  ::tensorflow::RPCOptions* rpc_options_;
+  ::tensorflow::ClusterDef* cluster_def_;
+  ::tensorflow::ConfigProto_Experimental* experimental_;
+  ::google::protobuf::int32 intra_op_parallelism_threads_;
+  ::google::protobuf::int32 placement_period_;
+  ::google::protobuf::int32 inter_op_parallelism_threads_;
+  bool use_per_session_threads_;
+  bool allow_soft_placement_;
+  bool log_device_placement_;
+  bool isolate_session_state_;
+  ::google::protobuf::int64 operation_timeout_in_ms_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto;
+};
+// -------------------------------------------------------------------
+
+class RunOptions_Experimental : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.RunOptions.Experimental) */ {
+ public:
+  RunOptions_Experimental();
+  virtual ~RunOptions_Experimental();
+
+  RunOptions_Experimental(const RunOptions_Experimental& from);
+
+  inline RunOptions_Experimental& operator=(const RunOptions_Experimental& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  RunOptions_Experimental(RunOptions_Experimental&& from) noexcept
+    : RunOptions_Experimental() {
+    *this = ::std::move(from);
+  }
+
+  inline RunOptions_Experimental& operator=(RunOptions_Experimental&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const RunOptions_Experimental& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const RunOptions_Experimental* internal_default_instance() {
+    return reinterpret_cast<const RunOptions_Experimental*>(
+               &_RunOptions_Experimental_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    10;
+
+  void UnsafeArenaSwap(RunOptions_Experimental* other);
+  void Swap(RunOptions_Experimental* other);
+  friend void swap(RunOptions_Experimental& a, RunOptions_Experimental& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline RunOptions_Experimental* New() const final {
+    return CreateMaybeMessage<RunOptions_Experimental>(NULL);
+  }
+
+  RunOptions_Experimental* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<RunOptions_Experimental>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const RunOptions_Experimental& from);
+  void MergeFrom(const RunOptions_Experimental& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(RunOptions_Experimental* other);
+  protected:
+  explicit RunOptions_Experimental(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // int64 collective_graph_key = 1;
+  void clear_collective_graph_key();
+  static const int kCollectiveGraphKeyFieldNumber = 1;
+  ::google::protobuf::int64 collective_graph_key() const;
+  void set_collective_graph_key(::google::protobuf::int64 value);
+
+  // @@protoc_insertion_point(class_scope:tensorflow.RunOptions.Experimental)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  ::google::protobuf::int64 collective_graph_key_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto;
+};
+// -------------------------------------------------------------------
+
+class RunOptions : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.RunOptions) */ {
+ public:
+  RunOptions();
+  virtual ~RunOptions();
+
+  RunOptions(const RunOptions& from);
+
+  inline RunOptions& operator=(const RunOptions& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  RunOptions(RunOptions&& from) noexcept
+    : RunOptions() {
+    *this = ::std::move(from);
+  }
+
+  inline RunOptions& operator=(RunOptions&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const RunOptions& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const RunOptions* internal_default_instance() {
+    return reinterpret_cast<const RunOptions*>(
+               &_RunOptions_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    11;
+
+  void UnsafeArenaSwap(RunOptions* other);
+  void Swap(RunOptions* other);
+  friend void swap(RunOptions& a, RunOptions& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline RunOptions* New() const final {
+    return CreateMaybeMessage<RunOptions>(NULL);
+  }
+
+  RunOptions* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<RunOptions>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const RunOptions& from);
+  void MergeFrom(const RunOptions& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(RunOptions* other);
+  protected:
+  explicit RunOptions(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  typedef RunOptions_Experimental Experimental;
+
+  typedef RunOptions_TraceLevel TraceLevel;
+  static const TraceLevel NO_TRACE =
+    RunOptions_TraceLevel_NO_TRACE;
+  static const TraceLevel SOFTWARE_TRACE =
+    RunOptions_TraceLevel_SOFTWARE_TRACE;
+  static const TraceLevel HARDWARE_TRACE =
+    RunOptions_TraceLevel_HARDWARE_TRACE;
+  static const TraceLevel FULL_TRACE =
+    RunOptions_TraceLevel_FULL_TRACE;
+  static inline bool TraceLevel_IsValid(int value) {
+    return RunOptions_TraceLevel_IsValid(value);
+  }
+  static const TraceLevel TraceLevel_MIN =
+    RunOptions_TraceLevel_TraceLevel_MIN;
+  static const TraceLevel TraceLevel_MAX =
+    RunOptions_TraceLevel_TraceLevel_MAX;
+  static const int TraceLevel_ARRAYSIZE =
+    RunOptions_TraceLevel_TraceLevel_ARRAYSIZE;
+  static inline const ::google::protobuf::EnumDescriptor*
+  TraceLevel_descriptor() {
+    return RunOptions_TraceLevel_descriptor();
+  }
+  static inline const ::std::string& TraceLevel_Name(TraceLevel value) {
+    return RunOptions_TraceLevel_Name(value);
+  }
+  static inline bool TraceLevel_Parse(const ::std::string& name,
+      TraceLevel* value) {
+    return RunOptions_TraceLevel_Parse(name, value);
+  }
+
+  // accessors -------------------------------------------------------
+
+  // .tensorflow.DebugOptions debug_options = 6;
+  bool has_debug_options() const;
+  void clear_debug_options();
+  static const int kDebugOptionsFieldNumber = 6;
+  const ::tensorflow::DebugOptions& debug_options() const;
+  ::tensorflow::DebugOptions* release_debug_options();
+  ::tensorflow::DebugOptions* mutable_debug_options();
+  void set_allocated_debug_options(::tensorflow::DebugOptions* debug_options);
+  void unsafe_arena_set_allocated_debug_options(
+      ::tensorflow::DebugOptions* debug_options);
+  ::tensorflow::DebugOptions* unsafe_arena_release_debug_options();
+
+  // .tensorflow.RunOptions.Experimental experimental = 8;
+  bool has_experimental() const;
+  void clear_experimental();
+  static const int kExperimentalFieldNumber = 8;
+  const ::tensorflow::RunOptions_Experimental& experimental() const;
+  ::tensorflow::RunOptions_Experimental* release_experimental();
+  ::tensorflow::RunOptions_Experimental* mutable_experimental();
+  void set_allocated_experimental(::tensorflow::RunOptions_Experimental* experimental);
+  void unsafe_arena_set_allocated_experimental(
+      ::tensorflow::RunOptions_Experimental* experimental);
+  ::tensorflow::RunOptions_Experimental* unsafe_arena_release_experimental();
+
+  // int64 timeout_in_ms = 2;
+  void clear_timeout_in_ms();
+  static const int kTimeoutInMsFieldNumber = 2;
+  ::google::protobuf::int64 timeout_in_ms() const;
+  void set_timeout_in_ms(::google::protobuf::int64 value);
+
+  // .tensorflow.RunOptions.TraceLevel trace_level = 1;
+  void clear_trace_level();
+  static const int kTraceLevelFieldNumber = 1;
+  ::tensorflow::RunOptions_TraceLevel trace_level() const;
+  void set_trace_level(::tensorflow::RunOptions_TraceLevel value);
+
+  // int32 inter_op_thread_pool = 3;
+  void clear_inter_op_thread_pool();
+  static const int kInterOpThreadPoolFieldNumber = 3;
+  ::google::protobuf::int32 inter_op_thread_pool() const;
+  void set_inter_op_thread_pool(::google::protobuf::int32 value);
+
+  // bool output_partition_graphs = 5;
+  void clear_output_partition_graphs();
+  static const int kOutputPartitionGraphsFieldNumber = 5;
+  bool output_partition_graphs() const;
+  void set_output_partition_graphs(bool value);
+
+  // bool report_tensor_allocations_upon_oom = 7;
+  void clear_report_tensor_allocations_upon_oom();
+  static const int kReportTensorAllocationsUponOomFieldNumber = 7;
+  bool report_tensor_allocations_upon_oom() const;
+  void set_report_tensor_allocations_upon_oom(bool value);
+
+  // @@protoc_insertion_point(class_scope:tensorflow.RunOptions)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  ::tensorflow::DebugOptions* debug_options_;
+  ::tensorflow::RunOptions_Experimental* experimental_;
+  ::google::protobuf::int64 timeout_in_ms_;
+  int trace_level_;
+  ::google::protobuf::int32 inter_op_thread_pool_;
+  bool output_partition_graphs_;
+  bool report_tensor_allocations_upon_oom_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto;
+};
+// -------------------------------------------------------------------
+
+class RunMetadata : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.RunMetadata) */ {
+ public:
+  RunMetadata();
+  virtual ~RunMetadata();
+
+  RunMetadata(const RunMetadata& from);
+
+  inline RunMetadata& operator=(const RunMetadata& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  RunMetadata(RunMetadata&& from) noexcept
+    : RunMetadata() {
+    *this = ::std::move(from);
+  }
+
+  inline RunMetadata& operator=(RunMetadata&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const RunMetadata& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const RunMetadata* internal_default_instance() {
+    return reinterpret_cast<const RunMetadata*>(
+               &_RunMetadata_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    12;
+
+  void UnsafeArenaSwap(RunMetadata* other);
+  void Swap(RunMetadata* other);
+  friend void swap(RunMetadata& a, RunMetadata& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline RunMetadata* New() const final {
+    return CreateMaybeMessage<RunMetadata>(NULL);
+  }
+
+  RunMetadata* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<RunMetadata>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const RunMetadata& from);
+  void MergeFrom(const RunMetadata& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(RunMetadata* other);
+  protected:
+  explicit RunMetadata(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // repeated .tensorflow.GraphDef partition_graphs = 3;
+  int partition_graphs_size() const;
+  void clear_partition_graphs();
+  static const int kPartitionGraphsFieldNumber = 3;
+  ::tensorflow::GraphDef* mutable_partition_graphs(int index);
+  ::google::protobuf::RepeatedPtrField< ::tensorflow::GraphDef >*
+      mutable_partition_graphs();
+  const ::tensorflow::GraphDef& partition_graphs(int index) const;
+  ::tensorflow::GraphDef* add_partition_graphs();
+  const ::google::protobuf::RepeatedPtrField< ::tensorflow::GraphDef >&
+      partition_graphs() const;
+
+  // .tensorflow.StepStats step_stats = 1;
+  bool has_step_stats() const;
+  void clear_step_stats();
+  static const int kStepStatsFieldNumber = 1;
+  const ::tensorflow::StepStats& step_stats() const;
+  ::tensorflow::StepStats* release_step_stats();
+  ::tensorflow::StepStats* mutable_step_stats();
+  void set_allocated_step_stats(::tensorflow::StepStats* step_stats);
+  void unsafe_arena_set_allocated_step_stats(
+      ::tensorflow::StepStats* step_stats);
+  ::tensorflow::StepStats* unsafe_arena_release_step_stats();
+
+  // .tensorflow.CostGraphDef cost_graph = 2;
+  bool has_cost_graph() const;
+  void clear_cost_graph();
+  static const int kCostGraphFieldNumber = 2;
+  const ::tensorflow::CostGraphDef& cost_graph() const;
+  ::tensorflow::CostGraphDef* release_cost_graph();
+  ::tensorflow::CostGraphDef* mutable_cost_graph();
+  void set_allocated_cost_graph(::tensorflow::CostGraphDef* cost_graph);
+  void unsafe_arena_set_allocated_cost_graph(
+      ::tensorflow::CostGraphDef* cost_graph);
+  ::tensorflow::CostGraphDef* unsafe_arena_release_cost_graph();
+
+  // @@protoc_insertion_point(class_scope:tensorflow.RunMetadata)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  ::google::protobuf::RepeatedPtrField< ::tensorflow::GraphDef > partition_graphs_;
+  ::tensorflow::StepStats* step_stats_;
+  ::tensorflow::CostGraphDef* cost_graph_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto;
+};
+// -------------------------------------------------------------------
+
+class TensorConnection : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.TensorConnection) */ {
+ public:
+  TensorConnection();
+  virtual ~TensorConnection();
+
+  TensorConnection(const TensorConnection& from);
+
+  inline TensorConnection& operator=(const TensorConnection& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  TensorConnection(TensorConnection&& from) noexcept
+    : TensorConnection() {
+    *this = ::std::move(from);
+  }
+
+  inline TensorConnection& operator=(TensorConnection&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const TensorConnection& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const TensorConnection* internal_default_instance() {
+    return reinterpret_cast<const TensorConnection*>(
+               &_TensorConnection_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    13;
+
+  void UnsafeArenaSwap(TensorConnection* other);
+  void Swap(TensorConnection* other);
+  friend void swap(TensorConnection& a, TensorConnection& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline TensorConnection* New() const final {
+    return CreateMaybeMessage<TensorConnection>(NULL);
+  }
+
+  TensorConnection* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<TensorConnection>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const TensorConnection& from);
+  void MergeFrom(const TensorConnection& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(TensorConnection* other);
+  protected:
+  explicit TensorConnection(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // string from_tensor = 1;
+  void clear_from_tensor();
+  static const int kFromTensorFieldNumber = 1;
+  const ::std::string& from_tensor() const;
+  void set_from_tensor(const ::std::string& value);
+  #if LANG_CXX11
+  void set_from_tensor(::std::string&& value);
+  #endif
+  void set_from_tensor(const char* value);
+  void set_from_tensor(const char* value, size_t size);
+  ::std::string* mutable_from_tensor();
+  ::std::string* release_from_tensor();
+  void set_allocated_from_tensor(::std::string* from_tensor);
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  ::std::string* unsafe_arena_release_from_tensor();
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  void unsafe_arena_set_allocated_from_tensor(
+      ::std::string* from_tensor);
+
+  // string to_tensor = 2;
+  void clear_to_tensor();
+  static const int kToTensorFieldNumber = 2;
+  const ::std::string& to_tensor() const;
+  void set_to_tensor(const ::std::string& value);
+  #if LANG_CXX11
+  void set_to_tensor(::std::string&& value);
+  #endif
+  void set_to_tensor(const char* value);
+  void set_to_tensor(const char* value, size_t size);
+  ::std::string* mutable_to_tensor();
+  ::std::string* release_to_tensor();
+  void set_allocated_to_tensor(::std::string* to_tensor);
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  ::std::string* unsafe_arena_release_to_tensor();
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  void unsafe_arena_set_allocated_to_tensor(
+      ::std::string* to_tensor);
+
+  // @@protoc_insertion_point(class_scope:tensorflow.TensorConnection)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  ::google::protobuf::internal::ArenaStringPtr from_tensor_;
+  ::google::protobuf::internal::ArenaStringPtr to_tensor_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto;
+};
+// -------------------------------------------------------------------
+
+class CallableOptions : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.CallableOptions) */ {
+ public:
+  CallableOptions();
+  virtual ~CallableOptions();
+
+  CallableOptions(const CallableOptions& from);
+
+  inline CallableOptions& operator=(const CallableOptions& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  CallableOptions(CallableOptions&& from) noexcept
+    : CallableOptions() {
+    *this = ::std::move(from);
+  }
+
+  inline CallableOptions& operator=(CallableOptions&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const CallableOptions& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const CallableOptions* internal_default_instance() {
+    return reinterpret_cast<const CallableOptions*>(
+               &_CallableOptions_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    14;
+
+  void UnsafeArenaSwap(CallableOptions* other);
+  void Swap(CallableOptions* other);
+  friend void swap(CallableOptions& a, CallableOptions& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline CallableOptions* New() const final {
+    return CreateMaybeMessage<CallableOptions>(NULL);
+  }
+
+  CallableOptions* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<CallableOptions>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const CallableOptions& from);
+  void MergeFrom(const CallableOptions& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(CallableOptions* other);
+  protected:
+  explicit CallableOptions(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // repeated string feed = 1;
+  int feed_size() const;
+  void clear_feed();
+  static const int kFeedFieldNumber = 1;
+  const ::std::string& feed(int index) const;
+  ::std::string* mutable_feed(int index);
+  void set_feed(int index, const ::std::string& value);
+  #if LANG_CXX11
+  void set_feed(int index, ::std::string&& value);
+  #endif
+  void set_feed(int index, const char* value);
+  void set_feed(int index, const char* value, size_t size);
+  ::std::string* add_feed();
+  void add_feed(const ::std::string& value);
+  #if LANG_CXX11
+  void add_feed(::std::string&& value);
+  #endif
+  void add_feed(const char* value);
+  void add_feed(const char* value, size_t size);
+  const ::google::protobuf::RepeatedPtrField<::std::string>& feed() const;
+  ::google::protobuf::RepeatedPtrField<::std::string>* mutable_feed();
+
+  // repeated string fetch = 2;
+  int fetch_size() const;
+  void clear_fetch();
+  static const int kFetchFieldNumber = 2;
+  const ::std::string& fetch(int index) const;
+  ::std::string* mutable_fetch(int index);
+  void set_fetch(int index, const ::std::string& value);
+  #if LANG_CXX11
+  void set_fetch(int index, ::std::string&& value);
+  #endif
+  void set_fetch(int index, const char* value);
+  void set_fetch(int index, const char* value, size_t size);
+  ::std::string* add_fetch();
+  void add_fetch(const ::std::string& value);
+  #if LANG_CXX11
+  void add_fetch(::std::string&& value);
+  #endif
+  void add_fetch(const char* value);
+  void add_fetch(const char* value, size_t size);
+  const ::google::protobuf::RepeatedPtrField<::std::string>& fetch() const;
+  ::google::protobuf::RepeatedPtrField<::std::string>* mutable_fetch();
+
+  // repeated string target = 3;
+  int target_size() const;
+  void clear_target();
+  static const int kTargetFieldNumber = 3;
+  const ::std::string& target(int index) const;
+  ::std::string* mutable_target(int index);
+  void set_target(int index, const ::std::string& value);
+  #if LANG_CXX11
+  void set_target(int index, ::std::string&& value);
+  #endif
+  void set_target(int index, const char* value);
+  void set_target(int index, const char* value, size_t size);
+  ::std::string* add_target();
+  void add_target(const ::std::string& value);
+  #if LANG_CXX11
+  void add_target(::std::string&& value);
+  #endif
+  void add_target(const char* value);
+  void add_target(const char* value, size_t size);
+  const ::google::protobuf::RepeatedPtrField<::std::string>& target() const;
+  ::google::protobuf::RepeatedPtrField<::std::string>* mutable_target();
+
+  // repeated .tensorflow.TensorConnection tensor_connection = 5;
+  int tensor_connection_size() const;
+  void clear_tensor_connection();
+  static const int kTensorConnectionFieldNumber = 5;
+  ::tensorflow::TensorConnection* mutable_tensor_connection(int index);
+  ::google::protobuf::RepeatedPtrField< ::tensorflow::TensorConnection >*
+      mutable_tensor_connection();
+  const ::tensorflow::TensorConnection& tensor_connection(int index) const;
+  ::tensorflow::TensorConnection* add_tensor_connection();
+  const ::google::protobuf::RepeatedPtrField< ::tensorflow::TensorConnection >&
+      tensor_connection() const;
+
+  // .tensorflow.RunOptions run_options = 4;
+  bool has_run_options() const;
+  void clear_run_options();
+  static const int kRunOptionsFieldNumber = 4;
+  const ::tensorflow::RunOptions& run_options() const;
+  ::tensorflow::RunOptions* release_run_options();
+  ::tensorflow::RunOptions* mutable_run_options();
+  void set_allocated_run_options(::tensorflow::RunOptions* run_options);
+  void unsafe_arena_set_allocated_run_options(
+      ::tensorflow::RunOptions* run_options);
+  ::tensorflow::RunOptions* unsafe_arena_release_run_options();
+
+  // @@protoc_insertion_point(class_scope:tensorflow.CallableOptions)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  ::google::protobuf::RepeatedPtrField<::std::string> feed_;
+  ::google::protobuf::RepeatedPtrField<::std::string> fetch_;
+  ::google::protobuf::RepeatedPtrField<::std::string> target_;
+  ::google::protobuf::RepeatedPtrField< ::tensorflow::TensorConnection > tensor_connection_;
+  ::tensorflow::RunOptions* run_options_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto;
+};
+// ===================================================================
+
+
+// ===================================================================
+
+#ifdef __GNUC__
+  #pragma GCC diagnostic push
+  #pragma GCC diagnostic ignored "-Wstrict-aliasing"
+#endif  // __GNUC__
+// GPUOptions_Experimental_VirtualDevices
+
+// repeated float memory_limit_mb = 1;
+inline int GPUOptions_Experimental_VirtualDevices::memory_limit_mb_size() const {
+  return memory_limit_mb_.size();
+}
+inline void GPUOptions_Experimental_VirtualDevices::clear_memory_limit_mb() {
+  memory_limit_mb_.Clear();
+}
+inline float GPUOptions_Experimental_VirtualDevices::memory_limit_mb(int index) const {
+  // @@protoc_insertion_point(field_get:tensorflow.GPUOptions.Experimental.VirtualDevices.memory_limit_mb)
+  return memory_limit_mb_.Get(index);
+}
+inline void GPUOptions_Experimental_VirtualDevices::set_memory_limit_mb(int index, float value) {
+  memory_limit_mb_.Set(index, value);
+  // @@protoc_insertion_point(field_set:tensorflow.GPUOptions.Experimental.VirtualDevices.memory_limit_mb)
+}
+inline void GPUOptions_Experimental_VirtualDevices::add_memory_limit_mb(float value) {
+  memory_limit_mb_.Add(value);
+  // @@protoc_insertion_point(field_add:tensorflow.GPUOptions.Experimental.VirtualDevices.memory_limit_mb)
+}
+inline const ::google::protobuf::RepeatedField< float >&
+GPUOptions_Experimental_VirtualDevices::memory_limit_mb() const {
+  // @@protoc_insertion_point(field_list:tensorflow.GPUOptions.Experimental.VirtualDevices.memory_limit_mb)
+  return memory_limit_mb_;
+}
+inline ::google::protobuf::RepeatedField< float >*
+GPUOptions_Experimental_VirtualDevices::mutable_memory_limit_mb() {
+  // @@protoc_insertion_point(field_mutable_list:tensorflow.GPUOptions.Experimental.VirtualDevices.memory_limit_mb)
+  return &memory_limit_mb_;
+}
+
+// -------------------------------------------------------------------
+
+// GPUOptions_Experimental
+
+// repeated .tensorflow.GPUOptions.Experimental.VirtualDevices virtual_devices = 1;
+inline int GPUOptions_Experimental::virtual_devices_size() const {
+  return virtual_devices_.size();
+}
+inline void GPUOptions_Experimental::clear_virtual_devices() {
+  virtual_devices_.Clear();
+}
+inline ::tensorflow::GPUOptions_Experimental_VirtualDevices* GPUOptions_Experimental::mutable_virtual_devices(int index) {
+  // @@protoc_insertion_point(field_mutable:tensorflow.GPUOptions.Experimental.virtual_devices)
+  return virtual_devices_.Mutable(index);
+}
+inline ::google::protobuf::RepeatedPtrField< ::tensorflow::GPUOptions_Experimental_VirtualDevices >*
+GPUOptions_Experimental::mutable_virtual_devices() {
+  // @@protoc_insertion_point(field_mutable_list:tensorflow.GPUOptions.Experimental.virtual_devices)
+  return &virtual_devices_;
+}
+inline const ::tensorflow::GPUOptions_Experimental_VirtualDevices& GPUOptions_Experimental::virtual_devices(int index) const {
+  // @@protoc_insertion_point(field_get:tensorflow.GPUOptions.Experimental.virtual_devices)
+  return virtual_devices_.Get(index);
+}
+inline ::tensorflow::GPUOptions_Experimental_VirtualDevices* GPUOptions_Experimental::add_virtual_devices() {
+  // @@protoc_insertion_point(field_add:tensorflow.GPUOptions.Experimental.virtual_devices)
+  return virtual_devices_.Add();
+}
+inline const ::google::protobuf::RepeatedPtrField< ::tensorflow::GPUOptions_Experimental_VirtualDevices >&
+GPUOptions_Experimental::virtual_devices() const {
+  // @@protoc_insertion_point(field_list:tensorflow.GPUOptions.Experimental.virtual_devices)
+  return virtual_devices_;
+}
+
+// bool use_unified_memory = 2;
+inline void GPUOptions_Experimental::clear_use_unified_memory() {
+  use_unified_memory_ = false;
+}
+inline bool GPUOptions_Experimental::use_unified_memory() const {
+  // @@protoc_insertion_point(field_get:tensorflow.GPUOptions.Experimental.use_unified_memory)
+  return use_unified_memory_;
+}
+inline void GPUOptions_Experimental::set_use_unified_memory(bool value) {
+  
+  use_unified_memory_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.GPUOptions.Experimental.use_unified_memory)
+}
+
+// -------------------------------------------------------------------
+
+// GPUOptions
+
+// double per_process_gpu_memory_fraction = 1;
+inline void GPUOptions::clear_per_process_gpu_memory_fraction() {
+  per_process_gpu_memory_fraction_ = 0;
+}
+inline double GPUOptions::per_process_gpu_memory_fraction() const {
+  // @@protoc_insertion_point(field_get:tensorflow.GPUOptions.per_process_gpu_memory_fraction)
+  return per_process_gpu_memory_fraction_;
+}
+inline void GPUOptions::set_per_process_gpu_memory_fraction(double value) {
+  
+  per_process_gpu_memory_fraction_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.GPUOptions.per_process_gpu_memory_fraction)
+}
+
+// bool allow_growth = 4;
+inline void GPUOptions::clear_allow_growth() {
+  allow_growth_ = false;
+}
+inline bool GPUOptions::allow_growth() const {
+  // @@protoc_insertion_point(field_get:tensorflow.GPUOptions.allow_growth)
+  return allow_growth_;
+}
+inline void GPUOptions::set_allow_growth(bool value) {
+  
+  allow_growth_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.GPUOptions.allow_growth)
+}
+
+// string allocator_type = 2;
+inline void GPUOptions::clear_allocator_type() {
+  allocator_type_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline const ::std::string& GPUOptions::allocator_type() const {
+  // @@protoc_insertion_point(field_get:tensorflow.GPUOptions.allocator_type)
+  return allocator_type_.Get();
+}
+inline void GPUOptions::set_allocator_type(const ::std::string& value) {
+  
+  allocator_type_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set:tensorflow.GPUOptions.allocator_type)
+}
+#if LANG_CXX11
+inline void GPUOptions::set_allocator_type(::std::string&& value) {
+  
+  allocator_type_.Set(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.GPUOptions.allocator_type)
+}
+#endif
+inline void GPUOptions::set_allocator_type(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  allocator_type_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
+              GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_char:tensorflow.GPUOptions.allocator_type)
+}
+inline void GPUOptions::set_allocator_type(const char* value,
+    size_t size) {
+  
+  allocator_type_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
+      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.GPUOptions.allocator_type)
+}
+inline ::std::string* GPUOptions::mutable_allocator_type() {
+  
+  // @@protoc_insertion_point(field_mutable:tensorflow.GPUOptions.allocator_type)
+  return allocator_type_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline ::std::string* GPUOptions::release_allocator_type() {
+  // @@protoc_insertion_point(field_release:tensorflow.GPUOptions.allocator_type)
+  
+  return allocator_type_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline void GPUOptions::set_allocated_allocator_type(::std::string* allocator_type) {
+  if (allocator_type != NULL) {
+    
+  } else {
+    
+  }
+  allocator_type_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), allocator_type,
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.GPUOptions.allocator_type)
+}
+inline ::std::string* GPUOptions::unsafe_arena_release_allocator_type() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.GPUOptions.allocator_type)
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  
+  return allocator_type_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      GetArenaNoVirtual());
+}
+inline void GPUOptions::unsafe_arena_set_allocated_allocator_type(
+    ::std::string* allocator_type) {
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (allocator_type != NULL) {
+    
+  } else {
+    
+  }
+  allocator_type_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      allocator_type, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.GPUOptions.allocator_type)
+}
+
+// int64 deferred_deletion_bytes = 3;
+inline void GPUOptions::clear_deferred_deletion_bytes() {
+  deferred_deletion_bytes_ = PROTOBUF_LONGLONG(0);
+}
+inline ::google::protobuf::int64 GPUOptions::deferred_deletion_bytes() const {
+  // @@protoc_insertion_point(field_get:tensorflow.GPUOptions.deferred_deletion_bytes)
+  return deferred_deletion_bytes_;
+}
+inline void GPUOptions::set_deferred_deletion_bytes(::google::protobuf::int64 value) {
+  
+  deferred_deletion_bytes_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.GPUOptions.deferred_deletion_bytes)
+}
+
+// string visible_device_list = 5;
+inline void GPUOptions::clear_visible_device_list() {
+  visible_device_list_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline const ::std::string& GPUOptions::visible_device_list() const {
+  // @@protoc_insertion_point(field_get:tensorflow.GPUOptions.visible_device_list)
+  return visible_device_list_.Get();
+}
+inline void GPUOptions::set_visible_device_list(const ::std::string& value) {
+  
+  visible_device_list_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set:tensorflow.GPUOptions.visible_device_list)
+}
+#if LANG_CXX11
+inline void GPUOptions::set_visible_device_list(::std::string&& value) {
+  
+  visible_device_list_.Set(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.GPUOptions.visible_device_list)
+}
+#endif
+inline void GPUOptions::set_visible_device_list(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  visible_device_list_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
+              GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_char:tensorflow.GPUOptions.visible_device_list)
+}
+inline void GPUOptions::set_visible_device_list(const char* value,
+    size_t size) {
+  
+  visible_device_list_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
+      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.GPUOptions.visible_device_list)
+}
+inline ::std::string* GPUOptions::mutable_visible_device_list() {
+  
+  // @@protoc_insertion_point(field_mutable:tensorflow.GPUOptions.visible_device_list)
+  return visible_device_list_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline ::std::string* GPUOptions::release_visible_device_list() {
+  // @@protoc_insertion_point(field_release:tensorflow.GPUOptions.visible_device_list)
+  
+  return visible_device_list_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline void GPUOptions::set_allocated_visible_device_list(::std::string* visible_device_list) {
+  if (visible_device_list != NULL) {
+    
+  } else {
+    
+  }
+  visible_device_list_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), visible_device_list,
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.GPUOptions.visible_device_list)
+}
+inline ::std::string* GPUOptions::unsafe_arena_release_visible_device_list() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.GPUOptions.visible_device_list)
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  
+  return visible_device_list_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      GetArenaNoVirtual());
+}
+inline void GPUOptions::unsafe_arena_set_allocated_visible_device_list(
+    ::std::string* visible_device_list) {
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (visible_device_list != NULL) {
+    
+  } else {
+    
+  }
+  visible_device_list_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      visible_device_list, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.GPUOptions.visible_device_list)
+}
+
+// int32 polling_active_delay_usecs = 6;
+inline void GPUOptions::clear_polling_active_delay_usecs() {
+  polling_active_delay_usecs_ = 0;
+}
+inline ::google::protobuf::int32 GPUOptions::polling_active_delay_usecs() const {
+  // @@protoc_insertion_point(field_get:tensorflow.GPUOptions.polling_active_delay_usecs)
+  return polling_active_delay_usecs_;
+}
+inline void GPUOptions::set_polling_active_delay_usecs(::google::protobuf::int32 value) {
+  
+  polling_active_delay_usecs_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.GPUOptions.polling_active_delay_usecs)
+}
+
+// int32 polling_inactive_delay_msecs = 7;
+inline void GPUOptions::clear_polling_inactive_delay_msecs() {
+  polling_inactive_delay_msecs_ = 0;
+}
+inline ::google::protobuf::int32 GPUOptions::polling_inactive_delay_msecs() const {
+  // @@protoc_insertion_point(field_get:tensorflow.GPUOptions.polling_inactive_delay_msecs)
+  return polling_inactive_delay_msecs_;
+}
+inline void GPUOptions::set_polling_inactive_delay_msecs(::google::protobuf::int32 value) {
+  
+  polling_inactive_delay_msecs_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.GPUOptions.polling_inactive_delay_msecs)
+}
+
+// bool force_gpu_compatible = 8;
+inline void GPUOptions::clear_force_gpu_compatible() {
+  force_gpu_compatible_ = false;
+}
+inline bool GPUOptions::force_gpu_compatible() const {
+  // @@protoc_insertion_point(field_get:tensorflow.GPUOptions.force_gpu_compatible)
+  return force_gpu_compatible_;
+}
+inline void GPUOptions::set_force_gpu_compatible(bool value) {
+  
+  force_gpu_compatible_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.GPUOptions.force_gpu_compatible)
+}
+
+// .tensorflow.GPUOptions.Experimental experimental = 9;
+inline bool GPUOptions::has_experimental() const {
+  return this != internal_default_instance() && experimental_ != NULL;
+}
+inline void GPUOptions::clear_experimental() {
+  if (GetArenaNoVirtual() == NULL && experimental_ != NULL) {
+    delete experimental_;
+  }
+  experimental_ = NULL;
+}
+inline const ::tensorflow::GPUOptions_Experimental& GPUOptions::experimental() const {
+  const ::tensorflow::GPUOptions_Experimental* p = experimental_;
+  // @@protoc_insertion_point(field_get:tensorflow.GPUOptions.experimental)
+  return p != NULL ? *p : *reinterpret_cast<const ::tensorflow::GPUOptions_Experimental*>(
+      &::tensorflow::_GPUOptions_Experimental_default_instance_);
+}
+inline ::tensorflow::GPUOptions_Experimental* GPUOptions::release_experimental() {
+  // @@protoc_insertion_point(field_release:tensorflow.GPUOptions.experimental)
+  
+  ::tensorflow::GPUOptions_Experimental* temp = experimental_;
+  if (GetArenaNoVirtual() != NULL) {
+    temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
+  }
+  experimental_ = NULL;
+  return temp;
+}
+inline ::tensorflow::GPUOptions_Experimental* GPUOptions::unsafe_arena_release_experimental() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.GPUOptions.experimental)
+  
+  ::tensorflow::GPUOptions_Experimental* temp = experimental_;
+  experimental_ = NULL;
+  return temp;
+}
+inline ::tensorflow::GPUOptions_Experimental* GPUOptions::mutable_experimental() {
+  
+  if (experimental_ == NULL) {
+    auto* p = CreateMaybeMessage<::tensorflow::GPUOptions_Experimental>(GetArenaNoVirtual());
+    experimental_ = p;
+  }
+  // @@protoc_insertion_point(field_mutable:tensorflow.GPUOptions.experimental)
+  return experimental_;
+}
+inline void GPUOptions::set_allocated_experimental(::tensorflow::GPUOptions_Experimental* experimental) {
+  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
+  if (message_arena == NULL) {
+    delete experimental_;
+  }
+  if (experimental) {
+    ::google::protobuf::Arena* submessage_arena =
+      ::google::protobuf::Arena::GetArena(experimental);
+    if (message_arena != submessage_arena) {
+      experimental = ::google::protobuf::internal::GetOwnedMessage(
+          message_arena, experimental, submessage_arena);
+    }
+    
+  } else {
+    
+  }
+  experimental_ = experimental;
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.GPUOptions.experimental)
+}
+
+// -------------------------------------------------------------------
+
+// OptimizerOptions
+
+// bool do_common_subexpression_elimination = 1;
+inline void OptimizerOptions::clear_do_common_subexpression_elimination() {
+  do_common_subexpression_elimination_ = false;
+}
+inline bool OptimizerOptions::do_common_subexpression_elimination() const {
+  // @@protoc_insertion_point(field_get:tensorflow.OptimizerOptions.do_common_subexpression_elimination)
+  return do_common_subexpression_elimination_;
+}
+inline void OptimizerOptions::set_do_common_subexpression_elimination(bool value) {
+  
+  do_common_subexpression_elimination_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.OptimizerOptions.do_common_subexpression_elimination)
+}
+
+// bool do_constant_folding = 2;
+inline void OptimizerOptions::clear_do_constant_folding() {
+  do_constant_folding_ = false;
+}
+inline bool OptimizerOptions::do_constant_folding() const {
+  // @@protoc_insertion_point(field_get:tensorflow.OptimizerOptions.do_constant_folding)
+  return do_constant_folding_;
+}
+inline void OptimizerOptions::set_do_constant_folding(bool value) {
+  
+  do_constant_folding_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.OptimizerOptions.do_constant_folding)
+}
+
+// int64 max_folded_constant_in_bytes = 6;
+inline void OptimizerOptions::clear_max_folded_constant_in_bytes() {
+  max_folded_constant_in_bytes_ = PROTOBUF_LONGLONG(0);
+}
+inline ::google::protobuf::int64 OptimizerOptions::max_folded_constant_in_bytes() const {
+  // @@protoc_insertion_point(field_get:tensorflow.OptimizerOptions.max_folded_constant_in_bytes)
+  return max_folded_constant_in_bytes_;
+}
+inline void OptimizerOptions::set_max_folded_constant_in_bytes(::google::protobuf::int64 value) {
+  
+  max_folded_constant_in_bytes_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.OptimizerOptions.max_folded_constant_in_bytes)
+}
+
+// bool do_function_inlining = 4;
+inline void OptimizerOptions::clear_do_function_inlining() {
+  do_function_inlining_ = false;
+}
+inline bool OptimizerOptions::do_function_inlining() const {
+  // @@protoc_insertion_point(field_get:tensorflow.OptimizerOptions.do_function_inlining)
+  return do_function_inlining_;
+}
+inline void OptimizerOptions::set_do_function_inlining(bool value) {
+  
+  do_function_inlining_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.OptimizerOptions.do_function_inlining)
+}
+
+// .tensorflow.OptimizerOptions.Level opt_level = 3;
+inline void OptimizerOptions::clear_opt_level() {
+  opt_level_ = 0;
+}
+inline ::tensorflow::OptimizerOptions_Level OptimizerOptions::opt_level() const {
+  // @@protoc_insertion_point(field_get:tensorflow.OptimizerOptions.opt_level)
+  return static_cast< ::tensorflow::OptimizerOptions_Level >(opt_level_);
+}
+inline void OptimizerOptions::set_opt_level(::tensorflow::OptimizerOptions_Level value) {
+  
+  opt_level_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.OptimizerOptions.opt_level)
+}
+
+// .tensorflow.OptimizerOptions.GlobalJitLevel global_jit_level = 5;
+inline void OptimizerOptions::clear_global_jit_level() {
+  global_jit_level_ = 0;
+}
+inline ::tensorflow::OptimizerOptions_GlobalJitLevel OptimizerOptions::global_jit_level() const {
+  // @@protoc_insertion_point(field_get:tensorflow.OptimizerOptions.global_jit_level)
+  return static_cast< ::tensorflow::OptimizerOptions_GlobalJitLevel >(global_jit_level_);
+}
+inline void OptimizerOptions::set_global_jit_level(::tensorflow::OptimizerOptions_GlobalJitLevel value) {
+  
+  global_jit_level_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.OptimizerOptions.global_jit_level)
+}
+
+// -------------------------------------------------------------------
+
+// GraphOptions
+
+// bool enable_recv_scheduling = 2;
+inline void GraphOptions::clear_enable_recv_scheduling() {
+  enable_recv_scheduling_ = false;
+}
+inline bool GraphOptions::enable_recv_scheduling() const {
+  // @@protoc_insertion_point(field_get:tensorflow.GraphOptions.enable_recv_scheduling)
+  return enable_recv_scheduling_;
+}
+inline void GraphOptions::set_enable_recv_scheduling(bool value) {
+  
+  enable_recv_scheduling_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.GraphOptions.enable_recv_scheduling)
+}
+
+// .tensorflow.OptimizerOptions optimizer_options = 3;
+inline bool GraphOptions::has_optimizer_options() const {
+  return this != internal_default_instance() && optimizer_options_ != NULL;
+}
+inline void GraphOptions::clear_optimizer_options() {
+  if (GetArenaNoVirtual() == NULL && optimizer_options_ != NULL) {
+    delete optimizer_options_;
+  }
+  optimizer_options_ = NULL;
+}
+inline const ::tensorflow::OptimizerOptions& GraphOptions::optimizer_options() const {
+  const ::tensorflow::OptimizerOptions* p = optimizer_options_;
+  // @@protoc_insertion_point(field_get:tensorflow.GraphOptions.optimizer_options)
+  return p != NULL ? *p : *reinterpret_cast<const ::tensorflow::OptimizerOptions*>(
+      &::tensorflow::_OptimizerOptions_default_instance_);
+}
+inline ::tensorflow::OptimizerOptions* GraphOptions::release_optimizer_options() {
+  // @@protoc_insertion_point(field_release:tensorflow.GraphOptions.optimizer_options)
+  
+  ::tensorflow::OptimizerOptions* temp = optimizer_options_;
+  if (GetArenaNoVirtual() != NULL) {
+    temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
+  }
+  optimizer_options_ = NULL;
+  return temp;
+}
+inline ::tensorflow::OptimizerOptions* GraphOptions::unsafe_arena_release_optimizer_options() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.GraphOptions.optimizer_options)
+  
+  ::tensorflow::OptimizerOptions* temp = optimizer_options_;
+  optimizer_options_ = NULL;
+  return temp;
+}
+inline ::tensorflow::OptimizerOptions* GraphOptions::mutable_optimizer_options() {
+  
+  if (optimizer_options_ == NULL) {
+    auto* p = CreateMaybeMessage<::tensorflow::OptimizerOptions>(GetArenaNoVirtual());
+    optimizer_options_ = p;
+  }
+  // @@protoc_insertion_point(field_mutable:tensorflow.GraphOptions.optimizer_options)
+  return optimizer_options_;
+}
+inline void GraphOptions::set_allocated_optimizer_options(::tensorflow::OptimizerOptions* optimizer_options) {
+  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
+  if (message_arena == NULL) {
+    delete optimizer_options_;
+  }
+  if (optimizer_options) {
+    ::google::protobuf::Arena* submessage_arena =
+      ::google::protobuf::Arena::GetArena(optimizer_options);
+    if (message_arena != submessage_arena) {
+      optimizer_options = ::google::protobuf::internal::GetOwnedMessage(
+          message_arena, optimizer_options, submessage_arena);
+    }
+    
+  } else {
+    
+  }
+  optimizer_options_ = optimizer_options;
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.GraphOptions.optimizer_options)
+}
+
+// int64 build_cost_model = 4;
+inline void GraphOptions::clear_build_cost_model() {
+  build_cost_model_ = PROTOBUF_LONGLONG(0);
+}
+inline ::google::protobuf::int64 GraphOptions::build_cost_model() const {
+  // @@protoc_insertion_point(field_get:tensorflow.GraphOptions.build_cost_model)
+  return build_cost_model_;
+}
+inline void GraphOptions::set_build_cost_model(::google::protobuf::int64 value) {
+  
+  build_cost_model_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.GraphOptions.build_cost_model)
+}
+
+// int64 build_cost_model_after = 9;
+inline void GraphOptions::clear_build_cost_model_after() {
+  build_cost_model_after_ = PROTOBUF_LONGLONG(0);
+}
+inline ::google::protobuf::int64 GraphOptions::build_cost_model_after() const {
+  // @@protoc_insertion_point(field_get:tensorflow.GraphOptions.build_cost_model_after)
+  return build_cost_model_after_;
+}
+inline void GraphOptions::set_build_cost_model_after(::google::protobuf::int64 value) {
+  
+  build_cost_model_after_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.GraphOptions.build_cost_model_after)
+}
+
+// bool infer_shapes = 5;
+inline void GraphOptions::clear_infer_shapes() {
+  infer_shapes_ = false;
+}
+inline bool GraphOptions::infer_shapes() const {
+  // @@protoc_insertion_point(field_get:tensorflow.GraphOptions.infer_shapes)
+  return infer_shapes_;
+}
+inline void GraphOptions::set_infer_shapes(bool value) {
+  
+  infer_shapes_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.GraphOptions.infer_shapes)
+}
+
+// bool place_pruned_graph = 6;
+inline void GraphOptions::clear_place_pruned_graph() {
+  place_pruned_graph_ = false;
+}
+inline bool GraphOptions::place_pruned_graph() const {
+  // @@protoc_insertion_point(field_get:tensorflow.GraphOptions.place_pruned_graph)
+  return place_pruned_graph_;
+}
+inline void GraphOptions::set_place_pruned_graph(bool value) {
+  
+  place_pruned_graph_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.GraphOptions.place_pruned_graph)
+}
+
+// bool enable_bfloat16_sendrecv = 7;
+inline void GraphOptions::clear_enable_bfloat16_sendrecv() {
+  enable_bfloat16_sendrecv_ = false;
+}
+inline bool GraphOptions::enable_bfloat16_sendrecv() const {
+  // @@protoc_insertion_point(field_get:tensorflow.GraphOptions.enable_bfloat16_sendrecv)
+  return enable_bfloat16_sendrecv_;
+}
+inline void GraphOptions::set_enable_bfloat16_sendrecv(bool value) {
+  
+  enable_bfloat16_sendrecv_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.GraphOptions.enable_bfloat16_sendrecv)
+}
+
+// int32 timeline_step = 8;
+inline void GraphOptions::clear_timeline_step() {
+  timeline_step_ = 0;
+}
+inline ::google::protobuf::int32 GraphOptions::timeline_step() const {
+  // @@protoc_insertion_point(field_get:tensorflow.GraphOptions.timeline_step)
+  return timeline_step_;
+}
+inline void GraphOptions::set_timeline_step(::google::protobuf::int32 value) {
+  
+  timeline_step_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.GraphOptions.timeline_step)
+}
+
+// .tensorflow.RewriterConfig rewrite_options = 10;
+inline bool GraphOptions::has_rewrite_options() const {
+  return this != internal_default_instance() && rewrite_options_ != NULL;
+}
+inline const ::tensorflow::RewriterConfig& GraphOptions::rewrite_options() const {
+  const ::tensorflow::RewriterConfig* p = rewrite_options_;
+  // @@protoc_insertion_point(field_get:tensorflow.GraphOptions.rewrite_options)
+  return p != NULL ? *p : *reinterpret_cast<const ::tensorflow::RewriterConfig*>(
+      &::tensorflow::_RewriterConfig_default_instance_);
+}
+inline ::tensorflow::RewriterConfig* GraphOptions::release_rewrite_options() {
+  // @@protoc_insertion_point(field_release:tensorflow.GraphOptions.rewrite_options)
+  
+  ::tensorflow::RewriterConfig* temp = rewrite_options_;
+  if (GetArenaNoVirtual() != NULL) {
+    temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
+  }
+  rewrite_options_ = NULL;
+  return temp;
+}
+inline ::tensorflow::RewriterConfig* GraphOptions::unsafe_arena_release_rewrite_options() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.GraphOptions.rewrite_options)
+  
+  ::tensorflow::RewriterConfig* temp = rewrite_options_;
+  rewrite_options_ = NULL;
+  return temp;
+}
+inline ::tensorflow::RewriterConfig* GraphOptions::mutable_rewrite_options() {
+  
+  if (rewrite_options_ == NULL) {
+    auto* p = CreateMaybeMessage<::tensorflow::RewriterConfig>(GetArenaNoVirtual());
+    rewrite_options_ = p;
+  }
+  // @@protoc_insertion_point(field_mutable:tensorflow.GraphOptions.rewrite_options)
+  return rewrite_options_;
+}
+inline void GraphOptions::set_allocated_rewrite_options(::tensorflow::RewriterConfig* rewrite_options) {
+  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
+  if (message_arena == NULL) {
+    delete reinterpret_cast< ::google::protobuf::MessageLite*>(rewrite_options_);
+  }
+  if (rewrite_options) {
+    ::google::protobuf::Arena* submessage_arena =
+      reinterpret_cast<::google::protobuf::MessageLite*>(rewrite_options)->GetArena();
+    if (message_arena != submessage_arena) {
+      rewrite_options = ::google::protobuf::internal::GetOwnedMessage(
+          message_arena, rewrite_options, submessage_arena);
+    }
+    
+  } else {
+    
+  }
+  rewrite_options_ = rewrite_options;
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.GraphOptions.rewrite_options)
+}
+
+// -------------------------------------------------------------------
+
+// ThreadPoolOptionProto
+
+// int32 num_threads = 1;
+inline void ThreadPoolOptionProto::clear_num_threads() {
+  num_threads_ = 0;
+}
+inline ::google::protobuf::int32 ThreadPoolOptionProto::num_threads() const {
+  // @@protoc_insertion_point(field_get:tensorflow.ThreadPoolOptionProto.num_threads)
+  return num_threads_;
+}
+inline void ThreadPoolOptionProto::set_num_threads(::google::protobuf::int32 value) {
+  
+  num_threads_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.ThreadPoolOptionProto.num_threads)
+}
+
+// string global_name = 2;
+inline void ThreadPoolOptionProto::clear_global_name() {
+  global_name_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline const ::std::string& ThreadPoolOptionProto::global_name() const {
+  // @@protoc_insertion_point(field_get:tensorflow.ThreadPoolOptionProto.global_name)
+  return global_name_.Get();
+}
+inline void ThreadPoolOptionProto::set_global_name(const ::std::string& value) {
+  
+  global_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set:tensorflow.ThreadPoolOptionProto.global_name)
+}
+#if LANG_CXX11
+inline void ThreadPoolOptionProto::set_global_name(::std::string&& value) {
+  
+  global_name_.Set(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.ThreadPoolOptionProto.global_name)
+}
+#endif
+inline void ThreadPoolOptionProto::set_global_name(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  global_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
+              GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_char:tensorflow.ThreadPoolOptionProto.global_name)
+}
+inline void ThreadPoolOptionProto::set_global_name(const char* value,
+    size_t size) {
+  
+  global_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
+      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.ThreadPoolOptionProto.global_name)
+}
+inline ::std::string* ThreadPoolOptionProto::mutable_global_name() {
+  
+  // @@protoc_insertion_point(field_mutable:tensorflow.ThreadPoolOptionProto.global_name)
+  return global_name_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline ::std::string* ThreadPoolOptionProto::release_global_name() {
+  // @@protoc_insertion_point(field_release:tensorflow.ThreadPoolOptionProto.global_name)
+  
+  return global_name_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline void ThreadPoolOptionProto::set_allocated_global_name(::std::string* global_name) {
+  if (global_name != NULL) {
+    
+  } else {
+    
+  }
+  global_name_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), global_name,
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.ThreadPoolOptionProto.global_name)
+}
+inline ::std::string* ThreadPoolOptionProto::unsafe_arena_release_global_name() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.ThreadPoolOptionProto.global_name)
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  
+  return global_name_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      GetArenaNoVirtual());
+}
+inline void ThreadPoolOptionProto::unsafe_arena_set_allocated_global_name(
+    ::std::string* global_name) {
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (global_name != NULL) {
+    
+  } else {
+    
+  }
+  global_name_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      global_name, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.ThreadPoolOptionProto.global_name)
+}
+
+// -------------------------------------------------------------------
+
+// RPCOptions
+
+// bool use_rpc_for_inprocess_master = 1;
+inline void RPCOptions::clear_use_rpc_for_inprocess_master() {
+  use_rpc_for_inprocess_master_ = false;
+}
+inline bool RPCOptions::use_rpc_for_inprocess_master() const {
+  // @@protoc_insertion_point(field_get:tensorflow.RPCOptions.use_rpc_for_inprocess_master)
+  return use_rpc_for_inprocess_master_;
+}
+inline void RPCOptions::set_use_rpc_for_inprocess_master(bool value) {
+  
+  use_rpc_for_inprocess_master_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.RPCOptions.use_rpc_for_inprocess_master)
+}
+
+// -------------------------------------------------------------------
+
+// -------------------------------------------------------------------
+
+// ConfigProto_Experimental
+
+// string collective_group_leader = 1;
+inline void ConfigProto_Experimental::clear_collective_group_leader() {
+  collective_group_leader_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline const ::std::string& ConfigProto_Experimental::collective_group_leader() const {
+  // @@protoc_insertion_point(field_get:tensorflow.ConfigProto.Experimental.collective_group_leader)
+  return collective_group_leader_.Get();
+}
+inline void ConfigProto_Experimental::set_collective_group_leader(const ::std::string& value) {
+  
+  collective_group_leader_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set:tensorflow.ConfigProto.Experimental.collective_group_leader)
+}
+#if LANG_CXX11
+inline void ConfigProto_Experimental::set_collective_group_leader(::std::string&& value) {
+  
+  collective_group_leader_.Set(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.ConfigProto.Experimental.collective_group_leader)
+}
+#endif
+inline void ConfigProto_Experimental::set_collective_group_leader(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  collective_group_leader_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
+              GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_char:tensorflow.ConfigProto.Experimental.collective_group_leader)
+}
+inline void ConfigProto_Experimental::set_collective_group_leader(const char* value,
+    size_t size) {
+  
+  collective_group_leader_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
+      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.ConfigProto.Experimental.collective_group_leader)
+}
+inline ::std::string* ConfigProto_Experimental::mutable_collective_group_leader() {
+  
+  // @@protoc_insertion_point(field_mutable:tensorflow.ConfigProto.Experimental.collective_group_leader)
+  return collective_group_leader_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline ::std::string* ConfigProto_Experimental::release_collective_group_leader() {
+  // @@protoc_insertion_point(field_release:tensorflow.ConfigProto.Experimental.collective_group_leader)
+  
+  return collective_group_leader_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline void ConfigProto_Experimental::set_allocated_collective_group_leader(::std::string* collective_group_leader) {
+  if (collective_group_leader != NULL) {
+    
+  } else {
+    
+  }
+  collective_group_leader_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), collective_group_leader,
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.ConfigProto.Experimental.collective_group_leader)
+}
+inline ::std::string* ConfigProto_Experimental::unsafe_arena_release_collective_group_leader() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.ConfigProto.Experimental.collective_group_leader)
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  
+  return collective_group_leader_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      GetArenaNoVirtual());
+}
+inline void ConfigProto_Experimental::unsafe_arena_set_allocated_collective_group_leader(
+    ::std::string* collective_group_leader) {
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (collective_group_leader != NULL) {
+    
+  } else {
+    
+  }
+  collective_group_leader_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      collective_group_leader, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.ConfigProto.Experimental.collective_group_leader)
+}
+
+// -------------------------------------------------------------------
+
+// ConfigProto
+
+// map<string, int32> device_count = 1;
+inline int ConfigProto::device_count_size() const {
+  return device_count_.size();
+}
+inline void ConfigProto::clear_device_count() {
+  device_count_.Clear();
+}
+inline const ::google::protobuf::Map< ::std::string, ::google::protobuf::int32 >&
+ConfigProto::device_count() const {
+  // @@protoc_insertion_point(field_map:tensorflow.ConfigProto.device_count)
+  return device_count_.GetMap();
+}
+inline ::google::protobuf::Map< ::std::string, ::google::protobuf::int32 >*
+ConfigProto::mutable_device_count() {
+  // @@protoc_insertion_point(field_mutable_map:tensorflow.ConfigProto.device_count)
+  return device_count_.MutableMap();
+}
+
+// int32 intra_op_parallelism_threads = 2;
+inline void ConfigProto::clear_intra_op_parallelism_threads() {
+  intra_op_parallelism_threads_ = 0;
+}
+inline ::google::protobuf::int32 ConfigProto::intra_op_parallelism_threads() const {
+  // @@protoc_insertion_point(field_get:tensorflow.ConfigProto.intra_op_parallelism_threads)
+  return intra_op_parallelism_threads_;
+}
+inline void ConfigProto::set_intra_op_parallelism_threads(::google::protobuf::int32 value) {
+  
+  intra_op_parallelism_threads_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.ConfigProto.intra_op_parallelism_threads)
+}
+
+// int32 inter_op_parallelism_threads = 5;
+inline void ConfigProto::clear_inter_op_parallelism_threads() {
+  inter_op_parallelism_threads_ = 0;
+}
+inline ::google::protobuf::int32 ConfigProto::inter_op_parallelism_threads() const {
+  // @@protoc_insertion_point(field_get:tensorflow.ConfigProto.inter_op_parallelism_threads)
+  return inter_op_parallelism_threads_;
+}
+inline void ConfigProto::set_inter_op_parallelism_threads(::google::protobuf::int32 value) {
+  
+  inter_op_parallelism_threads_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.ConfigProto.inter_op_parallelism_threads)
+}
+
+// bool use_per_session_threads = 9;
+inline void ConfigProto::clear_use_per_session_threads() {
+  use_per_session_threads_ = false;
+}
+inline bool ConfigProto::use_per_session_threads() const {
+  // @@protoc_insertion_point(field_get:tensorflow.ConfigProto.use_per_session_threads)
+  return use_per_session_threads_;
+}
+inline void ConfigProto::set_use_per_session_threads(bool value) {
+  
+  use_per_session_threads_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.ConfigProto.use_per_session_threads)
+}
+
+// repeated .tensorflow.ThreadPoolOptionProto session_inter_op_thread_pool = 12;
+inline int ConfigProto::session_inter_op_thread_pool_size() const {
+  return session_inter_op_thread_pool_.size();
+}
+inline void ConfigProto::clear_session_inter_op_thread_pool() {
+  session_inter_op_thread_pool_.Clear();
+}
+inline ::tensorflow::ThreadPoolOptionProto* ConfigProto::mutable_session_inter_op_thread_pool(int index) {
+  // @@protoc_insertion_point(field_mutable:tensorflow.ConfigProto.session_inter_op_thread_pool)
+  return session_inter_op_thread_pool_.Mutable(index);
+}
+inline ::google::protobuf::RepeatedPtrField< ::tensorflow::ThreadPoolOptionProto >*
+ConfigProto::mutable_session_inter_op_thread_pool() {
+  // @@protoc_insertion_point(field_mutable_list:tensorflow.ConfigProto.session_inter_op_thread_pool)
+  return &session_inter_op_thread_pool_;
+}
+inline const ::tensorflow::ThreadPoolOptionProto& ConfigProto::session_inter_op_thread_pool(int index) const {
+  // @@protoc_insertion_point(field_get:tensorflow.ConfigProto.session_inter_op_thread_pool)
+  return session_inter_op_thread_pool_.Get(index);
+}
+inline ::tensorflow::ThreadPoolOptionProto* ConfigProto::add_session_inter_op_thread_pool() {
+  // @@protoc_insertion_point(field_add:tensorflow.ConfigProto.session_inter_op_thread_pool)
+  return session_inter_op_thread_pool_.Add();
+}
+inline const ::google::protobuf::RepeatedPtrField< ::tensorflow::ThreadPoolOptionProto >&
+ConfigProto::session_inter_op_thread_pool() const {
+  // @@protoc_insertion_point(field_list:tensorflow.ConfigProto.session_inter_op_thread_pool)
+  return session_inter_op_thread_pool_;
+}
+
+// int32 placement_period = 3;
+inline void ConfigProto::clear_placement_period() {
+  placement_period_ = 0;
+}
+inline ::google::protobuf::int32 ConfigProto::placement_period() const {
+  // @@protoc_insertion_point(field_get:tensorflow.ConfigProto.placement_period)
+  return placement_period_;
+}
+inline void ConfigProto::set_placement_period(::google::protobuf::int32 value) {
+  
+  placement_period_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.ConfigProto.placement_period)
+}
+
+// repeated string device_filters = 4;
+inline int ConfigProto::device_filters_size() const {
+  return device_filters_.size();
+}
+inline void ConfigProto::clear_device_filters() {
+  device_filters_.Clear();
+}
+inline const ::std::string& ConfigProto::device_filters(int index) const {
+  // @@protoc_insertion_point(field_get:tensorflow.ConfigProto.device_filters)
+  return device_filters_.Get(index);
+}
+inline ::std::string* ConfigProto::mutable_device_filters(int index) {
+  // @@protoc_insertion_point(field_mutable:tensorflow.ConfigProto.device_filters)
+  return device_filters_.Mutable(index);
+}
+inline void ConfigProto::set_device_filters(int index, const ::std::string& value) {
+  // @@protoc_insertion_point(field_set:tensorflow.ConfigProto.device_filters)
+  device_filters_.Mutable(index)->assign(value);
+}
+#if LANG_CXX11
+inline void ConfigProto::set_device_filters(int index, ::std::string&& value) {
+  // @@protoc_insertion_point(field_set:tensorflow.ConfigProto.device_filters)
+  device_filters_.Mutable(index)->assign(std::move(value));
+}
+#endif
+inline void ConfigProto::set_device_filters(int index, const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  device_filters_.Mutable(index)->assign(value);
+  // @@protoc_insertion_point(field_set_char:tensorflow.ConfigProto.device_filters)
+}
+inline void ConfigProto::set_device_filters(int index, const char* value, size_t size) {
+  device_filters_.Mutable(index)->assign(
+    reinterpret_cast<const char*>(value), size);
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.ConfigProto.device_filters)
+}
+inline ::std::string* ConfigProto::add_device_filters() {
+  // @@protoc_insertion_point(field_add_mutable:tensorflow.ConfigProto.device_filters)
+  return device_filters_.Add();
+}
+inline void ConfigProto::add_device_filters(const ::std::string& value) {
+  device_filters_.Add()->assign(value);
+  // @@protoc_insertion_point(field_add:tensorflow.ConfigProto.device_filters)
+}
+#if LANG_CXX11
+inline void ConfigProto::add_device_filters(::std::string&& value) {
+  device_filters_.Add(std::move(value));
+  // @@protoc_insertion_point(field_add:tensorflow.ConfigProto.device_filters)
+}
+#endif
+inline void ConfigProto::add_device_filters(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  device_filters_.Add()->assign(value);
+  // @@protoc_insertion_point(field_add_char:tensorflow.ConfigProto.device_filters)
+}
+inline void ConfigProto::add_device_filters(const char* value, size_t size) {
+  device_filters_.Add()->assign(reinterpret_cast<const char*>(value), size);
+  // @@protoc_insertion_point(field_add_pointer:tensorflow.ConfigProto.device_filters)
+}
+inline const ::google::protobuf::RepeatedPtrField<::std::string>&
+ConfigProto::device_filters() const {
+  // @@protoc_insertion_point(field_list:tensorflow.ConfigProto.device_filters)
+  return device_filters_;
+}
+inline ::google::protobuf::RepeatedPtrField<::std::string>*
+ConfigProto::mutable_device_filters() {
+  // @@protoc_insertion_point(field_mutable_list:tensorflow.ConfigProto.device_filters)
+  return &device_filters_;
+}
+
+// .tensorflow.GPUOptions gpu_options = 6;
+inline bool ConfigProto::has_gpu_options() const {
+  return this != internal_default_instance() && gpu_options_ != NULL;
+}
+inline void ConfigProto::clear_gpu_options() {
+  if (GetArenaNoVirtual() == NULL && gpu_options_ != NULL) {
+    delete gpu_options_;
+  }
+  gpu_options_ = NULL;
+}
+inline const ::tensorflow::GPUOptions& ConfigProto::gpu_options() const {
+  const ::tensorflow::GPUOptions* p = gpu_options_;
+  // @@protoc_insertion_point(field_get:tensorflow.ConfigProto.gpu_options)
+  return p != NULL ? *p : *reinterpret_cast<const ::tensorflow::GPUOptions*>(
+      &::tensorflow::_GPUOptions_default_instance_);
+}
+inline ::tensorflow::GPUOptions* ConfigProto::release_gpu_options() {
+  // @@protoc_insertion_point(field_release:tensorflow.ConfigProto.gpu_options)
+  
+  ::tensorflow::GPUOptions* temp = gpu_options_;
+  if (GetArenaNoVirtual() != NULL) {
+    temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
+  }
+  gpu_options_ = NULL;
+  return temp;
+}
+inline ::tensorflow::GPUOptions* ConfigProto::unsafe_arena_release_gpu_options() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.ConfigProto.gpu_options)
+  
+  ::tensorflow::GPUOptions* temp = gpu_options_;
+  gpu_options_ = NULL;
+  return temp;
+}
+inline ::tensorflow::GPUOptions* ConfigProto::mutable_gpu_options() {
+  
+  if (gpu_options_ == NULL) {
+    auto* p = CreateMaybeMessage<::tensorflow::GPUOptions>(GetArenaNoVirtual());
+    gpu_options_ = p;
+  }
+  // @@protoc_insertion_point(field_mutable:tensorflow.ConfigProto.gpu_options)
+  return gpu_options_;
+}
+inline void ConfigProto::set_allocated_gpu_options(::tensorflow::GPUOptions* gpu_options) {
+  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
+  if (message_arena == NULL) {
+    delete gpu_options_;
+  }
+  if (gpu_options) {
+    ::google::protobuf::Arena* submessage_arena =
+      ::google::protobuf::Arena::GetArena(gpu_options);
+    if (message_arena != submessage_arena) {
+      gpu_options = ::google::protobuf::internal::GetOwnedMessage(
+          message_arena, gpu_options, submessage_arena);
+    }
+    
+  } else {
+    
+  }
+  gpu_options_ = gpu_options;
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.ConfigProto.gpu_options)
+}
+
+// bool allow_soft_placement = 7;
+inline void ConfigProto::clear_allow_soft_placement() {
+  allow_soft_placement_ = false;
+}
+inline bool ConfigProto::allow_soft_placement() const {
+  // @@protoc_insertion_point(field_get:tensorflow.ConfigProto.allow_soft_placement)
+  return allow_soft_placement_;
+}
+inline void ConfigProto::set_allow_soft_placement(bool value) {
+  
+  allow_soft_placement_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.ConfigProto.allow_soft_placement)
+}
+
+// bool log_device_placement = 8;
+inline void ConfigProto::clear_log_device_placement() {
+  log_device_placement_ = false;
+}
+inline bool ConfigProto::log_device_placement() const {
+  // @@protoc_insertion_point(field_get:tensorflow.ConfigProto.log_device_placement)
+  return log_device_placement_;
+}
+inline void ConfigProto::set_log_device_placement(bool value) {
+  
+  log_device_placement_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.ConfigProto.log_device_placement)
+}
+
+// .tensorflow.GraphOptions graph_options = 10;
+inline bool ConfigProto::has_graph_options() const {
+  return this != internal_default_instance() && graph_options_ != NULL;
+}
+inline void ConfigProto::clear_graph_options() {
+  if (GetArenaNoVirtual() == NULL && graph_options_ != NULL) {
+    delete graph_options_;
+  }
+  graph_options_ = NULL;
+}
+inline const ::tensorflow::GraphOptions& ConfigProto::graph_options() const {
+  const ::tensorflow::GraphOptions* p = graph_options_;
+  // @@protoc_insertion_point(field_get:tensorflow.ConfigProto.graph_options)
+  return p != NULL ? *p : *reinterpret_cast<const ::tensorflow::GraphOptions*>(
+      &::tensorflow::_GraphOptions_default_instance_);
+}
+inline ::tensorflow::GraphOptions* ConfigProto::release_graph_options() {
+  // @@protoc_insertion_point(field_release:tensorflow.ConfigProto.graph_options)
+  
+  ::tensorflow::GraphOptions* temp = graph_options_;
+  if (GetArenaNoVirtual() != NULL) {
+    temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
+  }
+  graph_options_ = NULL;
+  return temp;
+}
+inline ::tensorflow::GraphOptions* ConfigProto::unsafe_arena_release_graph_options() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.ConfigProto.graph_options)
+  
+  ::tensorflow::GraphOptions* temp = graph_options_;
+  graph_options_ = NULL;
+  return temp;
+}
+inline ::tensorflow::GraphOptions* ConfigProto::mutable_graph_options() {
+  
+  if (graph_options_ == NULL) {
+    auto* p = CreateMaybeMessage<::tensorflow::GraphOptions>(GetArenaNoVirtual());
+    graph_options_ = p;
+  }
+  // @@protoc_insertion_point(field_mutable:tensorflow.ConfigProto.graph_options)
+  return graph_options_;
+}
+inline void ConfigProto::set_allocated_graph_options(::tensorflow::GraphOptions* graph_options) {
+  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
+  if (message_arena == NULL) {
+    delete graph_options_;
+  }
+  if (graph_options) {
+    ::google::protobuf::Arena* submessage_arena =
+      ::google::protobuf::Arena::GetArena(graph_options);
+    if (message_arena != submessage_arena) {
+      graph_options = ::google::protobuf::internal::GetOwnedMessage(
+          message_arena, graph_options, submessage_arena);
+    }
+    
+  } else {
+    
+  }
+  graph_options_ = graph_options;
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.ConfigProto.graph_options)
+}
+
+// int64 operation_timeout_in_ms = 11;
+inline void ConfigProto::clear_operation_timeout_in_ms() {
+  operation_timeout_in_ms_ = PROTOBUF_LONGLONG(0);
+}
+inline ::google::protobuf::int64 ConfigProto::operation_timeout_in_ms() const {
+  // @@protoc_insertion_point(field_get:tensorflow.ConfigProto.operation_timeout_in_ms)
+  return operation_timeout_in_ms_;
+}
+inline void ConfigProto::set_operation_timeout_in_ms(::google::protobuf::int64 value) {
+  
+  operation_timeout_in_ms_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.ConfigProto.operation_timeout_in_ms)
+}
+
+// .tensorflow.RPCOptions rpc_options = 13;
+inline bool ConfigProto::has_rpc_options() const {
+  return this != internal_default_instance() && rpc_options_ != NULL;
+}
+inline void ConfigProto::clear_rpc_options() {
+  if (GetArenaNoVirtual() == NULL && rpc_options_ != NULL) {
+    delete rpc_options_;
+  }
+  rpc_options_ = NULL;
+}
+inline const ::tensorflow::RPCOptions& ConfigProto::rpc_options() const {
+  const ::tensorflow::RPCOptions* p = rpc_options_;
+  // @@protoc_insertion_point(field_get:tensorflow.ConfigProto.rpc_options)
+  return p != NULL ? *p : *reinterpret_cast<const ::tensorflow::RPCOptions*>(
+      &::tensorflow::_RPCOptions_default_instance_);
+}
+inline ::tensorflow::RPCOptions* ConfigProto::release_rpc_options() {
+  // @@protoc_insertion_point(field_release:tensorflow.ConfigProto.rpc_options)
+  
+  ::tensorflow::RPCOptions* temp = rpc_options_;
+  if (GetArenaNoVirtual() != NULL) {
+    temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
+  }
+  rpc_options_ = NULL;
+  return temp;
+}
+inline ::tensorflow::RPCOptions* ConfigProto::unsafe_arena_release_rpc_options() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.ConfigProto.rpc_options)
+  
+  ::tensorflow::RPCOptions* temp = rpc_options_;
+  rpc_options_ = NULL;
+  return temp;
+}
+inline ::tensorflow::RPCOptions* ConfigProto::mutable_rpc_options() {
+  
+  if (rpc_options_ == NULL) {
+    auto* p = CreateMaybeMessage<::tensorflow::RPCOptions>(GetArenaNoVirtual());
+    rpc_options_ = p;
+  }
+  // @@protoc_insertion_point(field_mutable:tensorflow.ConfigProto.rpc_options)
+  return rpc_options_;
+}
+inline void ConfigProto::set_allocated_rpc_options(::tensorflow::RPCOptions* rpc_options) {
+  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
+  if (message_arena == NULL) {
+    delete rpc_options_;
+  }
+  if (rpc_options) {
+    ::google::protobuf::Arena* submessage_arena =
+      ::google::protobuf::Arena::GetArena(rpc_options);
+    if (message_arena != submessage_arena) {
+      rpc_options = ::google::protobuf::internal::GetOwnedMessage(
+          message_arena, rpc_options, submessage_arena);
+    }
+    
+  } else {
+    
+  }
+  rpc_options_ = rpc_options;
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.ConfigProto.rpc_options)
+}
+
+// .tensorflow.ClusterDef cluster_def = 14;
+inline bool ConfigProto::has_cluster_def() const {
+  return this != internal_default_instance() && cluster_def_ != NULL;
+}
+inline const ::tensorflow::ClusterDef& ConfigProto::cluster_def() const {
+  const ::tensorflow::ClusterDef* p = cluster_def_;
+  // @@protoc_insertion_point(field_get:tensorflow.ConfigProto.cluster_def)
+  return p != NULL ? *p : *reinterpret_cast<const ::tensorflow::ClusterDef*>(
+      &::tensorflow::_ClusterDef_default_instance_);
+}
+inline ::tensorflow::ClusterDef* ConfigProto::release_cluster_def() {
+  // @@protoc_insertion_point(field_release:tensorflow.ConfigProto.cluster_def)
+  
+  ::tensorflow::ClusterDef* temp = cluster_def_;
+  if (GetArenaNoVirtual() != NULL) {
+    temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
+  }
+  cluster_def_ = NULL;
+  return temp;
+}
+inline ::tensorflow::ClusterDef* ConfigProto::unsafe_arena_release_cluster_def() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.ConfigProto.cluster_def)
+  
+  ::tensorflow::ClusterDef* temp = cluster_def_;
+  cluster_def_ = NULL;
+  return temp;
+}
+inline ::tensorflow::ClusterDef* ConfigProto::mutable_cluster_def() {
+  
+  if (cluster_def_ == NULL) {
+    auto* p = CreateMaybeMessage<::tensorflow::ClusterDef>(GetArenaNoVirtual());
+    cluster_def_ = p;
+  }
+  // @@protoc_insertion_point(field_mutable:tensorflow.ConfigProto.cluster_def)
+  return cluster_def_;
+}
+inline void ConfigProto::set_allocated_cluster_def(::tensorflow::ClusterDef* cluster_def) {
+  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
+  if (message_arena == NULL) {
+    delete reinterpret_cast< ::google::protobuf::MessageLite*>(cluster_def_);
+  }
+  if (cluster_def) {
+    ::google::protobuf::Arena* submessage_arena =
+      reinterpret_cast<::google::protobuf::MessageLite*>(cluster_def)->GetArena();
+    if (message_arena != submessage_arena) {
+      cluster_def = ::google::protobuf::internal::GetOwnedMessage(
+          message_arena, cluster_def, submessage_arena);
+    }
+    
+  } else {
+    
+  }
+  cluster_def_ = cluster_def;
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.ConfigProto.cluster_def)
+}
+
+// bool isolate_session_state = 15;
+inline void ConfigProto::clear_isolate_session_state() {
+  isolate_session_state_ = false;
+}
+inline bool ConfigProto::isolate_session_state() const {
+  // @@protoc_insertion_point(field_get:tensorflow.ConfigProto.isolate_session_state)
+  return isolate_session_state_;
+}
+inline void ConfigProto::set_isolate_session_state(bool value) {
+  
+  isolate_session_state_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.ConfigProto.isolate_session_state)
+}
+
+// .tensorflow.ConfigProto.Experimental experimental = 16;
+inline bool ConfigProto::has_experimental() const {
+  return this != internal_default_instance() && experimental_ != NULL;
+}
+inline void ConfigProto::clear_experimental() {
+  if (GetArenaNoVirtual() == NULL && experimental_ != NULL) {
+    delete experimental_;
+  }
+  experimental_ = NULL;
+}
+inline const ::tensorflow::ConfigProto_Experimental& ConfigProto::experimental() const {
+  const ::tensorflow::ConfigProto_Experimental* p = experimental_;
+  // @@protoc_insertion_point(field_get:tensorflow.ConfigProto.experimental)
+  return p != NULL ? *p : *reinterpret_cast<const ::tensorflow::ConfigProto_Experimental*>(
+      &::tensorflow::_ConfigProto_Experimental_default_instance_);
+}
+inline ::tensorflow::ConfigProto_Experimental* ConfigProto::release_experimental() {
+  // @@protoc_insertion_point(field_release:tensorflow.ConfigProto.experimental)
+  
+  ::tensorflow::ConfigProto_Experimental* temp = experimental_;
+  if (GetArenaNoVirtual() != NULL) {
+    temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
+  }
+  experimental_ = NULL;
+  return temp;
+}
+inline ::tensorflow::ConfigProto_Experimental* ConfigProto::unsafe_arena_release_experimental() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.ConfigProto.experimental)
+  
+  ::tensorflow::ConfigProto_Experimental* temp = experimental_;
+  experimental_ = NULL;
+  return temp;
+}
+inline ::tensorflow::ConfigProto_Experimental* ConfigProto::mutable_experimental() {
+  
+  if (experimental_ == NULL) {
+    auto* p = CreateMaybeMessage<::tensorflow::ConfigProto_Experimental>(GetArenaNoVirtual());
+    experimental_ = p;
+  }
+  // @@protoc_insertion_point(field_mutable:tensorflow.ConfigProto.experimental)
+  return experimental_;
+}
+inline void ConfigProto::set_allocated_experimental(::tensorflow::ConfigProto_Experimental* experimental) {
+  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
+  if (message_arena == NULL) {
+    delete experimental_;
+  }
+  if (experimental) {
+    ::google::protobuf::Arena* submessage_arena =
+      ::google::protobuf::Arena::GetArena(experimental);
+    if (message_arena != submessage_arena) {
+      experimental = ::google::protobuf::internal::GetOwnedMessage(
+          message_arena, experimental, submessage_arena);
+    }
+    
+  } else {
+    
+  }
+  experimental_ = experimental;
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.ConfigProto.experimental)
+}
+
+// -------------------------------------------------------------------
+
+// RunOptions_Experimental
+
+// int64 collective_graph_key = 1;
+inline void RunOptions_Experimental::clear_collective_graph_key() {
+  collective_graph_key_ = PROTOBUF_LONGLONG(0);
+}
+inline ::google::protobuf::int64 RunOptions_Experimental::collective_graph_key() const {
+  // @@protoc_insertion_point(field_get:tensorflow.RunOptions.Experimental.collective_graph_key)
+  return collective_graph_key_;
+}
+inline void RunOptions_Experimental::set_collective_graph_key(::google::protobuf::int64 value) {
+  
+  collective_graph_key_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.RunOptions.Experimental.collective_graph_key)
+}
+
+// -------------------------------------------------------------------
+
+// RunOptions
+
+// .tensorflow.RunOptions.TraceLevel trace_level = 1;
+inline void RunOptions::clear_trace_level() {
+  trace_level_ = 0;
+}
+inline ::tensorflow::RunOptions_TraceLevel RunOptions::trace_level() const {
+  // @@protoc_insertion_point(field_get:tensorflow.RunOptions.trace_level)
+  return static_cast< ::tensorflow::RunOptions_TraceLevel >(trace_level_);
+}
+inline void RunOptions::set_trace_level(::tensorflow::RunOptions_TraceLevel value) {
+  
+  trace_level_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.RunOptions.trace_level)
+}
+
+// int64 timeout_in_ms = 2;
+inline void RunOptions::clear_timeout_in_ms() {
+  timeout_in_ms_ = PROTOBUF_LONGLONG(0);
+}
+inline ::google::protobuf::int64 RunOptions::timeout_in_ms() const {
+  // @@protoc_insertion_point(field_get:tensorflow.RunOptions.timeout_in_ms)
+  return timeout_in_ms_;
+}
+inline void RunOptions::set_timeout_in_ms(::google::protobuf::int64 value) {
+  
+  timeout_in_ms_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.RunOptions.timeout_in_ms)
+}
+
+// int32 inter_op_thread_pool = 3;
+inline void RunOptions::clear_inter_op_thread_pool() {
+  inter_op_thread_pool_ = 0;
+}
+inline ::google::protobuf::int32 RunOptions::inter_op_thread_pool() const {
+  // @@protoc_insertion_point(field_get:tensorflow.RunOptions.inter_op_thread_pool)
+  return inter_op_thread_pool_;
+}
+inline void RunOptions::set_inter_op_thread_pool(::google::protobuf::int32 value) {
+  
+  inter_op_thread_pool_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.RunOptions.inter_op_thread_pool)
+}
+
+// bool output_partition_graphs = 5;
+inline void RunOptions::clear_output_partition_graphs() {
+  output_partition_graphs_ = false;
+}
+inline bool RunOptions::output_partition_graphs() const {
+  // @@protoc_insertion_point(field_get:tensorflow.RunOptions.output_partition_graphs)
+  return output_partition_graphs_;
+}
+inline void RunOptions::set_output_partition_graphs(bool value) {
+  
+  output_partition_graphs_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.RunOptions.output_partition_graphs)
+}
+
+// .tensorflow.DebugOptions debug_options = 6;
+inline bool RunOptions::has_debug_options() const {
+  return this != internal_default_instance() && debug_options_ != NULL;
+}
+inline const ::tensorflow::DebugOptions& RunOptions::debug_options() const {
+  const ::tensorflow::DebugOptions* p = debug_options_;
+  // @@protoc_insertion_point(field_get:tensorflow.RunOptions.debug_options)
+  return p != NULL ? *p : *reinterpret_cast<const ::tensorflow::DebugOptions*>(
+      &::tensorflow::_DebugOptions_default_instance_);
+}
+inline ::tensorflow::DebugOptions* RunOptions::release_debug_options() {
+  // @@protoc_insertion_point(field_release:tensorflow.RunOptions.debug_options)
+  
+  ::tensorflow::DebugOptions* temp = debug_options_;
+  if (GetArenaNoVirtual() != NULL) {
+    temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
+  }
+  debug_options_ = NULL;
+  return temp;
+}
+inline ::tensorflow::DebugOptions* RunOptions::unsafe_arena_release_debug_options() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.RunOptions.debug_options)
+  
+  ::tensorflow::DebugOptions* temp = debug_options_;
+  debug_options_ = NULL;
+  return temp;
+}
+inline ::tensorflow::DebugOptions* RunOptions::mutable_debug_options() {
+  
+  if (debug_options_ == NULL) {
+    auto* p = CreateMaybeMessage<::tensorflow::DebugOptions>(GetArenaNoVirtual());
+    debug_options_ = p;
+  }
+  // @@protoc_insertion_point(field_mutable:tensorflow.RunOptions.debug_options)
+  return debug_options_;
+}
+inline void RunOptions::set_allocated_debug_options(::tensorflow::DebugOptions* debug_options) {
+  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
+  if (message_arena == NULL) {
+    delete reinterpret_cast< ::google::protobuf::MessageLite*>(debug_options_);
+  }
+  if (debug_options) {
+    ::google::protobuf::Arena* submessage_arena =
+      reinterpret_cast<::google::protobuf::MessageLite*>(debug_options)->GetArena();
+    if (message_arena != submessage_arena) {
+      debug_options = ::google::protobuf::internal::GetOwnedMessage(
+          message_arena, debug_options, submessage_arena);
+    }
+    
+  } else {
+    
+  }
+  debug_options_ = debug_options;
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.RunOptions.debug_options)
+}
+
+// bool report_tensor_allocations_upon_oom = 7;
+inline void RunOptions::clear_report_tensor_allocations_upon_oom() {
+  report_tensor_allocations_upon_oom_ = false;
+}
+inline bool RunOptions::report_tensor_allocations_upon_oom() const {
+  // @@protoc_insertion_point(field_get:tensorflow.RunOptions.report_tensor_allocations_upon_oom)
+  return report_tensor_allocations_upon_oom_;
+}
+inline void RunOptions::set_report_tensor_allocations_upon_oom(bool value) {
+  
+  report_tensor_allocations_upon_oom_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.RunOptions.report_tensor_allocations_upon_oom)
+}
+
+// .tensorflow.RunOptions.Experimental experimental = 8;
+inline bool RunOptions::has_experimental() const {
+  return this != internal_default_instance() && experimental_ != NULL;
+}
+inline void RunOptions::clear_experimental() {
+  if (GetArenaNoVirtual() == NULL && experimental_ != NULL) {
+    delete experimental_;
+  }
+  experimental_ = NULL;
+}
+inline const ::tensorflow::RunOptions_Experimental& RunOptions::experimental() const {
+  const ::tensorflow::RunOptions_Experimental* p = experimental_;
+  // @@protoc_insertion_point(field_get:tensorflow.RunOptions.experimental)
+  return p != NULL ? *p : *reinterpret_cast<const ::tensorflow::RunOptions_Experimental*>(
+      &::tensorflow::_RunOptions_Experimental_default_instance_);
+}
+inline ::tensorflow::RunOptions_Experimental* RunOptions::release_experimental() {
+  // @@protoc_insertion_point(field_release:tensorflow.RunOptions.experimental)
+  
+  ::tensorflow::RunOptions_Experimental* temp = experimental_;
+  if (GetArenaNoVirtual() != NULL) {
+    temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
+  }
+  experimental_ = NULL;
+  return temp;
+}
+inline ::tensorflow::RunOptions_Experimental* RunOptions::unsafe_arena_release_experimental() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.RunOptions.experimental)
+  
+  ::tensorflow::RunOptions_Experimental* temp = experimental_;
+  experimental_ = NULL;
+  return temp;
+}
+inline ::tensorflow::RunOptions_Experimental* RunOptions::mutable_experimental() {
+  
+  if (experimental_ == NULL) {
+    auto* p = CreateMaybeMessage<::tensorflow::RunOptions_Experimental>(GetArenaNoVirtual());
+    experimental_ = p;
+  }
+  // @@protoc_insertion_point(field_mutable:tensorflow.RunOptions.experimental)
+  return experimental_;
+}
+inline void RunOptions::set_allocated_experimental(::tensorflow::RunOptions_Experimental* experimental) {
+  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
+  if (message_arena == NULL) {
+    delete experimental_;
+  }
+  if (experimental) {
+    ::google::protobuf::Arena* submessage_arena =
+      ::google::protobuf::Arena::GetArena(experimental);
+    if (message_arena != submessage_arena) {
+      experimental = ::google::protobuf::internal::GetOwnedMessage(
+          message_arena, experimental, submessage_arena);
+    }
+    
+  } else {
+    
+  }
+  experimental_ = experimental;
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.RunOptions.experimental)
+}
+
+// -------------------------------------------------------------------
+
+// RunMetadata
+
+// .tensorflow.StepStats step_stats = 1;
+inline bool RunMetadata::has_step_stats() const {
+  return this != internal_default_instance() && step_stats_ != NULL;
+}
+inline const ::tensorflow::StepStats& RunMetadata::step_stats() const {
+  const ::tensorflow::StepStats* p = step_stats_;
+  // @@protoc_insertion_point(field_get:tensorflow.RunMetadata.step_stats)
+  return p != NULL ? *p : *reinterpret_cast<const ::tensorflow::StepStats*>(
+      &::tensorflow::_StepStats_default_instance_);
+}
+inline ::tensorflow::StepStats* RunMetadata::release_step_stats() {
+  // @@protoc_insertion_point(field_release:tensorflow.RunMetadata.step_stats)
+  
+  ::tensorflow::StepStats* temp = step_stats_;
+  if (GetArenaNoVirtual() != NULL) {
+    temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
+  }
+  step_stats_ = NULL;
+  return temp;
+}
+inline ::tensorflow::StepStats* RunMetadata::unsafe_arena_release_step_stats() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.RunMetadata.step_stats)
+  
+  ::tensorflow::StepStats* temp = step_stats_;
+  step_stats_ = NULL;
+  return temp;
+}
+inline ::tensorflow::StepStats* RunMetadata::mutable_step_stats() {
+  
+  if (step_stats_ == NULL) {
+    auto* p = CreateMaybeMessage<::tensorflow::StepStats>(GetArenaNoVirtual());
+    step_stats_ = p;
+  }
+  // @@protoc_insertion_point(field_mutable:tensorflow.RunMetadata.step_stats)
+  return step_stats_;
+}
+inline void RunMetadata::set_allocated_step_stats(::tensorflow::StepStats* step_stats) {
+  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
+  if (message_arena == NULL) {
+    delete reinterpret_cast< ::google::protobuf::MessageLite*>(step_stats_);
+  }
+  if (step_stats) {
+    ::google::protobuf::Arena* submessage_arena =
+      reinterpret_cast<::google::protobuf::MessageLite*>(step_stats)->GetArena();
+    if (message_arena != submessage_arena) {
+      step_stats = ::google::protobuf::internal::GetOwnedMessage(
+          message_arena, step_stats, submessage_arena);
+    }
+    
+  } else {
+    
+  }
+  step_stats_ = step_stats;
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.RunMetadata.step_stats)
+}
+
+// .tensorflow.CostGraphDef cost_graph = 2;
+inline bool RunMetadata::has_cost_graph() const {
+  return this != internal_default_instance() && cost_graph_ != NULL;
+}
+inline const ::tensorflow::CostGraphDef& RunMetadata::cost_graph() const {
+  const ::tensorflow::CostGraphDef* p = cost_graph_;
+  // @@protoc_insertion_point(field_get:tensorflow.RunMetadata.cost_graph)
+  return p != NULL ? *p : *reinterpret_cast<const ::tensorflow::CostGraphDef*>(
+      &::tensorflow::_CostGraphDef_default_instance_);
+}
+inline ::tensorflow::CostGraphDef* RunMetadata::release_cost_graph() {
+  // @@protoc_insertion_point(field_release:tensorflow.RunMetadata.cost_graph)
+  
+  ::tensorflow::CostGraphDef* temp = cost_graph_;
+  if (GetArenaNoVirtual() != NULL) {
+    temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
+  }
+  cost_graph_ = NULL;
+  return temp;
+}
+inline ::tensorflow::CostGraphDef* RunMetadata::unsafe_arena_release_cost_graph() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.RunMetadata.cost_graph)
+  
+  ::tensorflow::CostGraphDef* temp = cost_graph_;
+  cost_graph_ = NULL;
+  return temp;
+}
+inline ::tensorflow::CostGraphDef* RunMetadata::mutable_cost_graph() {
+  
+  if (cost_graph_ == NULL) {
+    auto* p = CreateMaybeMessage<::tensorflow::CostGraphDef>(GetArenaNoVirtual());
+    cost_graph_ = p;
+  }
+  // @@protoc_insertion_point(field_mutable:tensorflow.RunMetadata.cost_graph)
+  return cost_graph_;
+}
+inline void RunMetadata::set_allocated_cost_graph(::tensorflow::CostGraphDef* cost_graph) {
+  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
+  if (message_arena == NULL) {
+    delete reinterpret_cast< ::google::protobuf::MessageLite*>(cost_graph_);
+  }
+  if (cost_graph) {
+    ::google::protobuf::Arena* submessage_arena =
+      reinterpret_cast<::google::protobuf::MessageLite*>(cost_graph)->GetArena();
+    if (message_arena != submessage_arena) {
+      cost_graph = ::google::protobuf::internal::GetOwnedMessage(
+          message_arena, cost_graph, submessage_arena);
+    }
+    
+  } else {
+    
+  }
+  cost_graph_ = cost_graph;
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.RunMetadata.cost_graph)
+}
+
+// repeated .tensorflow.GraphDef partition_graphs = 3;
+inline int RunMetadata::partition_graphs_size() const {
+  return partition_graphs_.size();
+}
+inline ::tensorflow::GraphDef* RunMetadata::mutable_partition_graphs(int index) {
+  // @@protoc_insertion_point(field_mutable:tensorflow.RunMetadata.partition_graphs)
+  return partition_graphs_.Mutable(index);
+}
+inline ::google::protobuf::RepeatedPtrField< ::tensorflow::GraphDef >*
+RunMetadata::mutable_partition_graphs() {
+  // @@protoc_insertion_point(field_mutable_list:tensorflow.RunMetadata.partition_graphs)
+  return &partition_graphs_;
+}
+inline const ::tensorflow::GraphDef& RunMetadata::partition_graphs(int index) const {
+  // @@protoc_insertion_point(field_get:tensorflow.RunMetadata.partition_graphs)
+  return partition_graphs_.Get(index);
+}
+inline ::tensorflow::GraphDef* RunMetadata::add_partition_graphs() {
+  // @@protoc_insertion_point(field_add:tensorflow.RunMetadata.partition_graphs)
+  return partition_graphs_.Add();
+}
+inline const ::google::protobuf::RepeatedPtrField< ::tensorflow::GraphDef >&
+RunMetadata::partition_graphs() const {
+  // @@protoc_insertion_point(field_list:tensorflow.RunMetadata.partition_graphs)
+  return partition_graphs_;
+}
+
+// -------------------------------------------------------------------
+
+// TensorConnection
+
+// string from_tensor = 1;
+inline void TensorConnection::clear_from_tensor() {
+  from_tensor_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline const ::std::string& TensorConnection::from_tensor() const {
+  // @@protoc_insertion_point(field_get:tensorflow.TensorConnection.from_tensor)
+  return from_tensor_.Get();
+}
+inline void TensorConnection::set_from_tensor(const ::std::string& value) {
+  
+  from_tensor_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set:tensorflow.TensorConnection.from_tensor)
+}
+#if LANG_CXX11
+inline void TensorConnection::set_from_tensor(::std::string&& value) {
+  
+  from_tensor_.Set(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.TensorConnection.from_tensor)
+}
+#endif
+inline void TensorConnection::set_from_tensor(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  from_tensor_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
+              GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_char:tensorflow.TensorConnection.from_tensor)
+}
+inline void TensorConnection::set_from_tensor(const char* value,
+    size_t size) {
+  
+  from_tensor_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
+      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.TensorConnection.from_tensor)
+}
+inline ::std::string* TensorConnection::mutable_from_tensor() {
+  
+  // @@protoc_insertion_point(field_mutable:tensorflow.TensorConnection.from_tensor)
+  return from_tensor_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline ::std::string* TensorConnection::release_from_tensor() {
+  // @@protoc_insertion_point(field_release:tensorflow.TensorConnection.from_tensor)
+  
+  return from_tensor_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline void TensorConnection::set_allocated_from_tensor(::std::string* from_tensor) {
+  if (from_tensor != NULL) {
+    
+  } else {
+    
+  }
+  from_tensor_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from_tensor,
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.TensorConnection.from_tensor)
+}
+inline ::std::string* TensorConnection::unsafe_arena_release_from_tensor() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.TensorConnection.from_tensor)
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  
+  return from_tensor_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      GetArenaNoVirtual());
+}
+inline void TensorConnection::unsafe_arena_set_allocated_from_tensor(
+    ::std::string* from_tensor) {
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (from_tensor != NULL) {
+    
+  } else {
+    
+  }
+  from_tensor_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      from_tensor, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.TensorConnection.from_tensor)
+}
+
+// string to_tensor = 2;
+inline void TensorConnection::clear_to_tensor() {
+  to_tensor_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline const ::std::string& TensorConnection::to_tensor() const {
+  // @@protoc_insertion_point(field_get:tensorflow.TensorConnection.to_tensor)
+  return to_tensor_.Get();
+}
+inline void TensorConnection::set_to_tensor(const ::std::string& value) {
+  
+  to_tensor_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set:tensorflow.TensorConnection.to_tensor)
+}
+#if LANG_CXX11
+inline void TensorConnection::set_to_tensor(::std::string&& value) {
+  
+  to_tensor_.Set(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.TensorConnection.to_tensor)
+}
+#endif
+inline void TensorConnection::set_to_tensor(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  to_tensor_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
+              GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_char:tensorflow.TensorConnection.to_tensor)
+}
+inline void TensorConnection::set_to_tensor(const char* value,
+    size_t size) {
+  
+  to_tensor_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
+      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.TensorConnection.to_tensor)
+}
+inline ::std::string* TensorConnection::mutable_to_tensor() {
+  
+  // @@protoc_insertion_point(field_mutable:tensorflow.TensorConnection.to_tensor)
+  return to_tensor_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline ::std::string* TensorConnection::release_to_tensor() {
+  // @@protoc_insertion_point(field_release:tensorflow.TensorConnection.to_tensor)
+  
+  return to_tensor_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline void TensorConnection::set_allocated_to_tensor(::std::string* to_tensor) {
+  if (to_tensor != NULL) {
+    
+  } else {
+    
+  }
+  to_tensor_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), to_tensor,
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.TensorConnection.to_tensor)
+}
+inline ::std::string* TensorConnection::unsafe_arena_release_to_tensor() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.TensorConnection.to_tensor)
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  
+  return to_tensor_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      GetArenaNoVirtual());
+}
+inline void TensorConnection::unsafe_arena_set_allocated_to_tensor(
+    ::std::string* to_tensor) {
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (to_tensor != NULL) {
+    
+  } else {
+    
+  }
+  to_tensor_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      to_tensor, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.TensorConnection.to_tensor)
+}
+
+// -------------------------------------------------------------------
+
+// CallableOptions
+
+// repeated string feed = 1;
+inline int CallableOptions::feed_size() const {
+  return feed_.size();
+}
+inline void CallableOptions::clear_feed() {
+  feed_.Clear();
+}
+inline const ::std::string& CallableOptions::feed(int index) const {
+  // @@protoc_insertion_point(field_get:tensorflow.CallableOptions.feed)
+  return feed_.Get(index);
+}
+inline ::std::string* CallableOptions::mutable_feed(int index) {
+  // @@protoc_insertion_point(field_mutable:tensorflow.CallableOptions.feed)
+  return feed_.Mutable(index);
+}
+inline void CallableOptions::set_feed(int index, const ::std::string& value) {
+  // @@protoc_insertion_point(field_set:tensorflow.CallableOptions.feed)
+  feed_.Mutable(index)->assign(value);
+}
+#if LANG_CXX11
+inline void CallableOptions::set_feed(int index, ::std::string&& value) {
+  // @@protoc_insertion_point(field_set:tensorflow.CallableOptions.feed)
+  feed_.Mutable(index)->assign(std::move(value));
+}
+#endif
+inline void CallableOptions::set_feed(int index, const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  feed_.Mutable(index)->assign(value);
+  // @@protoc_insertion_point(field_set_char:tensorflow.CallableOptions.feed)
+}
+inline void CallableOptions::set_feed(int index, const char* value, size_t size) {
+  feed_.Mutable(index)->assign(
+    reinterpret_cast<const char*>(value), size);
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.CallableOptions.feed)
+}
+inline ::std::string* CallableOptions::add_feed() {
+  // @@protoc_insertion_point(field_add_mutable:tensorflow.CallableOptions.feed)
+  return feed_.Add();
+}
+inline void CallableOptions::add_feed(const ::std::string& value) {
+  feed_.Add()->assign(value);
+  // @@protoc_insertion_point(field_add:tensorflow.CallableOptions.feed)
+}
+#if LANG_CXX11
+inline void CallableOptions::add_feed(::std::string&& value) {
+  feed_.Add(std::move(value));
+  // @@protoc_insertion_point(field_add:tensorflow.CallableOptions.feed)
+}
+#endif
+inline void CallableOptions::add_feed(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  feed_.Add()->assign(value);
+  // @@protoc_insertion_point(field_add_char:tensorflow.CallableOptions.feed)
+}
+inline void CallableOptions::add_feed(const char* value, size_t size) {
+  feed_.Add()->assign(reinterpret_cast<const char*>(value), size);
+  // @@protoc_insertion_point(field_add_pointer:tensorflow.CallableOptions.feed)
+}
+inline const ::google::protobuf::RepeatedPtrField<::std::string>&
+CallableOptions::feed() const {
+  // @@protoc_insertion_point(field_list:tensorflow.CallableOptions.feed)
+  return feed_;
+}
+inline ::google::protobuf::RepeatedPtrField<::std::string>*
+CallableOptions::mutable_feed() {
+  // @@protoc_insertion_point(field_mutable_list:tensorflow.CallableOptions.feed)
+  return &feed_;
+}
+
+// repeated string fetch = 2;
+inline int CallableOptions::fetch_size() const {
+  return fetch_.size();
+}
+inline void CallableOptions::clear_fetch() {
+  fetch_.Clear();
+}
+inline const ::std::string& CallableOptions::fetch(int index) const {
+  // @@protoc_insertion_point(field_get:tensorflow.CallableOptions.fetch)
+  return fetch_.Get(index);
+}
+inline ::std::string* CallableOptions::mutable_fetch(int index) {
+  // @@protoc_insertion_point(field_mutable:tensorflow.CallableOptions.fetch)
+  return fetch_.Mutable(index);
+}
+inline void CallableOptions::set_fetch(int index, const ::std::string& value) {
+  // @@protoc_insertion_point(field_set:tensorflow.CallableOptions.fetch)
+  fetch_.Mutable(index)->assign(value);
+}
+#if LANG_CXX11
+inline void CallableOptions::set_fetch(int index, ::std::string&& value) {
+  // @@protoc_insertion_point(field_set:tensorflow.CallableOptions.fetch)
+  fetch_.Mutable(index)->assign(std::move(value));
+}
+#endif
+inline void CallableOptions::set_fetch(int index, const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  fetch_.Mutable(index)->assign(value);
+  // @@protoc_insertion_point(field_set_char:tensorflow.CallableOptions.fetch)
+}
+inline void CallableOptions::set_fetch(int index, const char* value, size_t size) {
+  fetch_.Mutable(index)->assign(
+    reinterpret_cast<const char*>(value), size);
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.CallableOptions.fetch)
+}
+inline ::std::string* CallableOptions::add_fetch() {
+  // @@protoc_insertion_point(field_add_mutable:tensorflow.CallableOptions.fetch)
+  return fetch_.Add();
+}
+inline void CallableOptions::add_fetch(const ::std::string& value) {
+  fetch_.Add()->assign(value);
+  // @@protoc_insertion_point(field_add:tensorflow.CallableOptions.fetch)
+}
+#if LANG_CXX11
+inline void CallableOptions::add_fetch(::std::string&& value) {
+  fetch_.Add(std::move(value));
+  // @@protoc_insertion_point(field_add:tensorflow.CallableOptions.fetch)
+}
+#endif
+inline void CallableOptions::add_fetch(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  fetch_.Add()->assign(value);
+  // @@protoc_insertion_point(field_add_char:tensorflow.CallableOptions.fetch)
+}
+inline void CallableOptions::add_fetch(const char* value, size_t size) {
+  fetch_.Add()->assign(reinterpret_cast<const char*>(value), size);
+  // @@protoc_insertion_point(field_add_pointer:tensorflow.CallableOptions.fetch)
+}
+inline const ::google::protobuf::RepeatedPtrField<::std::string>&
+CallableOptions::fetch() const {
+  // @@protoc_insertion_point(field_list:tensorflow.CallableOptions.fetch)
+  return fetch_;
+}
+inline ::google::protobuf::RepeatedPtrField<::std::string>*
+CallableOptions::mutable_fetch() {
+  // @@protoc_insertion_point(field_mutable_list:tensorflow.CallableOptions.fetch)
+  return &fetch_;
+}
+
+// repeated string target = 3;
+inline int CallableOptions::target_size() const {
+  return target_.size();
+}
+inline void CallableOptions::clear_target() {
+  target_.Clear();
+}
+inline const ::std::string& CallableOptions::target(int index) const {
+  // @@protoc_insertion_point(field_get:tensorflow.CallableOptions.target)
+  return target_.Get(index);
+}
+inline ::std::string* CallableOptions::mutable_target(int index) {
+  // @@protoc_insertion_point(field_mutable:tensorflow.CallableOptions.target)
+  return target_.Mutable(index);
+}
+inline void CallableOptions::set_target(int index, const ::std::string& value) {
+  // @@protoc_insertion_point(field_set:tensorflow.CallableOptions.target)
+  target_.Mutable(index)->assign(value);
+}
+#if LANG_CXX11
+inline void CallableOptions::set_target(int index, ::std::string&& value) {
+  // @@protoc_insertion_point(field_set:tensorflow.CallableOptions.target)
+  target_.Mutable(index)->assign(std::move(value));
+}
+#endif
+inline void CallableOptions::set_target(int index, const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  target_.Mutable(index)->assign(value);
+  // @@protoc_insertion_point(field_set_char:tensorflow.CallableOptions.target)
+}
+inline void CallableOptions::set_target(int index, const char* value, size_t size) {
+  target_.Mutable(index)->assign(
+    reinterpret_cast<const char*>(value), size);
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.CallableOptions.target)
+}
+inline ::std::string* CallableOptions::add_target() {
+  // @@protoc_insertion_point(field_add_mutable:tensorflow.CallableOptions.target)
+  return target_.Add();
+}
+inline void CallableOptions::add_target(const ::std::string& value) {
+  target_.Add()->assign(value);
+  // @@protoc_insertion_point(field_add:tensorflow.CallableOptions.target)
+}
+#if LANG_CXX11
+inline void CallableOptions::add_target(::std::string&& value) {
+  target_.Add(std::move(value));
+  // @@protoc_insertion_point(field_add:tensorflow.CallableOptions.target)
+}
+#endif
+inline void CallableOptions::add_target(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  target_.Add()->assign(value);
+  // @@protoc_insertion_point(field_add_char:tensorflow.CallableOptions.target)
+}
+inline void CallableOptions::add_target(const char* value, size_t size) {
+  target_.Add()->assign(reinterpret_cast<const char*>(value), size);
+  // @@protoc_insertion_point(field_add_pointer:tensorflow.CallableOptions.target)
+}
+inline const ::google::protobuf::RepeatedPtrField<::std::string>&
+CallableOptions::target() const {
+  // @@protoc_insertion_point(field_list:tensorflow.CallableOptions.target)
+  return target_;
+}
+inline ::google::protobuf::RepeatedPtrField<::std::string>*
+CallableOptions::mutable_target() {
+  // @@protoc_insertion_point(field_mutable_list:tensorflow.CallableOptions.target)
+  return &target_;
+}
+
+// .tensorflow.RunOptions run_options = 4;
+inline bool CallableOptions::has_run_options() const {
+  return this != internal_default_instance() && run_options_ != NULL;
+}
+inline void CallableOptions::clear_run_options() {
+  if (GetArenaNoVirtual() == NULL && run_options_ != NULL) {
+    delete run_options_;
+  }
+  run_options_ = NULL;
+}
+inline const ::tensorflow::RunOptions& CallableOptions::run_options() const {
+  const ::tensorflow::RunOptions* p = run_options_;
+  // @@protoc_insertion_point(field_get:tensorflow.CallableOptions.run_options)
+  return p != NULL ? *p : *reinterpret_cast<const ::tensorflow::RunOptions*>(
+      &::tensorflow::_RunOptions_default_instance_);
+}
+inline ::tensorflow::RunOptions* CallableOptions::release_run_options() {
+  // @@protoc_insertion_point(field_release:tensorflow.CallableOptions.run_options)
+  
+  ::tensorflow::RunOptions* temp = run_options_;
+  if (GetArenaNoVirtual() != NULL) {
+    temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
+  }
+  run_options_ = NULL;
+  return temp;
+}
+inline ::tensorflow::RunOptions* CallableOptions::unsafe_arena_release_run_options() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.CallableOptions.run_options)
+  
+  ::tensorflow::RunOptions* temp = run_options_;
+  run_options_ = NULL;
+  return temp;
+}
+inline ::tensorflow::RunOptions* CallableOptions::mutable_run_options() {
+  
+  if (run_options_ == NULL) {
+    auto* p = CreateMaybeMessage<::tensorflow::RunOptions>(GetArenaNoVirtual());
+    run_options_ = p;
+  }
+  // @@protoc_insertion_point(field_mutable:tensorflow.CallableOptions.run_options)
+  return run_options_;
+}
+inline void CallableOptions::set_allocated_run_options(::tensorflow::RunOptions* run_options) {
+  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
+  if (message_arena == NULL) {
+    delete run_options_;
+  }
+  if (run_options) {
+    ::google::protobuf::Arena* submessage_arena =
+      ::google::protobuf::Arena::GetArena(run_options);
+    if (message_arena != submessage_arena) {
+      run_options = ::google::protobuf::internal::GetOwnedMessage(
+          message_arena, run_options, submessage_arena);
+    }
+    
+  } else {
+    
+  }
+  run_options_ = run_options;
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.CallableOptions.run_options)
+}
+
+// repeated .tensorflow.TensorConnection tensor_connection = 5;
+inline int CallableOptions::tensor_connection_size() const {
+  return tensor_connection_.size();
+}
+inline void CallableOptions::clear_tensor_connection() {
+  tensor_connection_.Clear();
+}
+inline ::tensorflow::TensorConnection* CallableOptions::mutable_tensor_connection(int index) {
+  // @@protoc_insertion_point(field_mutable:tensorflow.CallableOptions.tensor_connection)
+  return tensor_connection_.Mutable(index);
+}
+inline ::google::protobuf::RepeatedPtrField< ::tensorflow::TensorConnection >*
+CallableOptions::mutable_tensor_connection() {
+  // @@protoc_insertion_point(field_mutable_list:tensorflow.CallableOptions.tensor_connection)
+  return &tensor_connection_;
+}
+inline const ::tensorflow::TensorConnection& CallableOptions::tensor_connection(int index) const {
+  // @@protoc_insertion_point(field_get:tensorflow.CallableOptions.tensor_connection)
+  return tensor_connection_.Get(index);
+}
+inline ::tensorflow::TensorConnection* CallableOptions::add_tensor_connection() {
+  // @@protoc_insertion_point(field_add:tensorflow.CallableOptions.tensor_connection)
+  return tensor_connection_.Add();
+}
+inline const ::google::protobuf::RepeatedPtrField< ::tensorflow::TensorConnection >&
+CallableOptions::tensor_connection() const {
+  // @@protoc_insertion_point(field_list:tensorflow.CallableOptions.tensor_connection)
+  return tensor_connection_;
+}
+
+#ifdef __GNUC__
+  #pragma GCC diagnostic pop
+#endif  // __GNUC__
+// -------------------------------------------------------------------
+
+// -------------------------------------------------------------------
+
+// -------------------------------------------------------------------
+
+// -------------------------------------------------------------------
+
+// -------------------------------------------------------------------
+
+// -------------------------------------------------------------------
+
+// -------------------------------------------------------------------
+
+// -------------------------------------------------------------------
+
+// -------------------------------------------------------------------
+
+// -------------------------------------------------------------------
+
+// -------------------------------------------------------------------
+
+// -------------------------------------------------------------------
+
+// -------------------------------------------------------------------
+
+// -------------------------------------------------------------------
+
+
+// @@protoc_insertion_point(namespace_scope)
+
+}  // namespace tensorflow
+
+namespace google {
+namespace protobuf {
+
+template <> struct is_proto_enum< ::tensorflow::OptimizerOptions_Level> : ::std::true_type {};
+template <>
+inline const EnumDescriptor* GetEnumDescriptor< ::tensorflow::OptimizerOptions_Level>() {
+  return ::tensorflow::OptimizerOptions_Level_descriptor();
+}
+template <> struct is_proto_enum< ::tensorflow::OptimizerOptions_GlobalJitLevel> : ::std::true_type {};
+template <>
+inline const EnumDescriptor* GetEnumDescriptor< ::tensorflow::OptimizerOptions_GlobalJitLevel>() {
+  return ::tensorflow::OptimizerOptions_GlobalJitLevel_descriptor();
+}
+template <> struct is_proto_enum< ::tensorflow::RunOptions_TraceLevel> : ::std::true_type {};
+template <>
+inline const EnumDescriptor* GetEnumDescriptor< ::tensorflow::RunOptions_TraceLevel>() {
+  return ::tensorflow::RunOptions_TraceLevel_descriptor();
+}
+
+}  // namespace protobuf
+}  // namespace google
+
+// @@protoc_insertion_point(global_scope)
+
+#include <google/protobuf/port_undef.inc>
+#endif  // PROTOBUF_INCLUDED_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto
diff --git a/tensorflow/core/protobuf/config.proto b/tensorflow/core/protobuf/config.proto
new file mode 100644 (file)
index 0000000..d83215d
--- /dev/null
@@ -0,0 +1,494 @@
+syntax = "proto3";
+
+package tensorflow;
+option cc_enable_arenas = true;
+option java_outer_classname = "ConfigProtos";
+option java_multiple_files = true;
+option java_package = "org.tensorflow.framework";
+option go_package = "github.com/tensorflow/tensorflow/tensorflow/go/core/protobuf";
+import "tensorflow/core/framework/cost_graph.proto";
+import "tensorflow/core/framework/graph.proto";
+import "tensorflow/core/framework/step_stats.proto";
+import "tensorflow/core/protobuf/debug.proto";
+import "tensorflow/core/protobuf/cluster.proto";
+import "tensorflow/core/protobuf/rewriter_config.proto";
+
+message GPUOptions {
+  // Fraction of the available GPU memory to allocate for each process.
+  // 1 means to allocate all of the GPU memory, 0.5 means the process
+  // allocates up to ~50% of the available GPU memory.
+  //
+  // GPU memory is pre-allocated unless the allow_growth option is enabled.
+  //
+  // If greater than 1.0, uses CUDA unified memory to potentially oversubscribe
+  // the amount of memory available on the GPU device by using host memory as a
+  // swap space. Accessing memory not available on the device will be
+  // significantly slower as that would require memory transfer between the host
+  // and the device. Options to reduce the memory requirement should be
+  // considered before enabling this option as this may come with a negative
+  // performance impact. Oversubscription using the unified memory requires
+  // Pascal class or newer GPUs and it is currently only supported on the Linux
+  // operating system. See
+  // https://docs.nvidia.com/cuda/cuda-c-programming-guide/index.html#um-requirements
+  // for the detailed requirements.
+  double per_process_gpu_memory_fraction = 1;
+
+  // If true, the allocator does not pre-allocate the entire specified
+  // GPU memory region, instead starting small and growing as needed.
+  bool allow_growth = 4;
+
+  // The type of GPU allocation strategy to use.
+  //
+  // Allowed values:
+  // "": The empty string (default) uses a system-chosen default
+  //     which may change over time.
+  //
+  // "BFC": A "Best-fit with coalescing" algorithm, simplified from a
+  //        version of dlmalloc.
+  string allocator_type = 2;
+
+  // Delay deletion of up to this many bytes to reduce the number of
+  // interactions with gpu driver code.  If 0, the system chooses
+  // a reasonable default (several MBs).
+  int64 deferred_deletion_bytes = 3;
+
+  // A comma-separated list of GPU ids that determines the 'visible'
+  // to 'virtual' mapping of GPU devices.  For example, if TensorFlow
+  // can see 8 GPU devices in the process, and one wanted to map
+  // visible GPU devices 5 and 3 as "/device:GPU:0", and "/device:GPU:1",
+  // then one would specify this field as "5,3".  This field is similar in
+  // spirit to the CUDA_VISIBLE_DEVICES environment variable, except
+  // it applies to the visible GPU devices in the process.
+  //
+  // NOTE:
+  // 1. The GPU driver provides the process with the visible GPUs
+  //    in an order which is not guaranteed to have any correlation to
+  //    the *physical* GPU id in the machine.  This field is used for
+  //    remapping "visible" to "virtual", which means this operates only
+  //    after the process starts.  Users are required to use vendor
+  //    specific mechanisms (e.g., CUDA_VISIBLE_DEVICES) to control the
+  //    physical to visible device mapping prior to invoking TensorFlow.
+  // 2. In the code, the ids in this list are also called "CUDA GPU id"s,
+  //    and the 'virtual' ids of GPU devices (i.e. the ids in the device
+  //    name "/device:GPU:<id>") are also called "TF GPU id"s. Please
+  //    refer to third_party/tensorflow/core/common_runtime/gpu/gpu_id.h
+  //    for more information.
+  string visible_device_list = 5;
+
+  // In the event polling loop sleep this many microseconds between
+  // PollEvents calls, when the queue is not empty.  If value is not
+  // set or set to 0, gets set to a non-zero default.
+  int32 polling_active_delay_usecs = 6;
+
+  // This field is deprecated and ignored.
+  int32 polling_inactive_delay_msecs = 7;
+
+  // Force all tensors to be gpu_compatible. On a GPU-enabled TensorFlow,
+  // enabling this option forces all CPU tensors to be allocated with Cuda
+  // pinned memory. Normally, TensorFlow will infer which tensors should be
+  // allocated as the pinned memory. But in case where the inference is
+  // incomplete, this option can significantly speed up the cross-device memory
+  // copy performance as long as it fits the memory.
+  // Note that this option is not something that should be
+  // enabled by default for unknown or very large models, since all Cuda pinned
+  // memory is unpageable, having too much pinned memory might negatively impact
+  // the overall host system performance.
+  bool force_gpu_compatible = 8;
+
+  message Experimental {
+    // Configuration for breaking down a visible GPU into multiple "virtual"
+    // devices.
+    message VirtualDevices {
+      // Per "virtual" device memory limit, in MB. The number of elements in
+      // the list is the number of virtual devices to create on the
+      // corresponding visible GPU (see "virtual_devices" below).
+      // If empty, it will create single virtual device taking all available
+      // memory from the device.
+      //
+      // For the concept of "visible" and "virtual" GPU, see the comments for
+      // "visible_device_list" above for more information.
+      repeated float memory_limit_mb = 1;
+    }
+
+    // The multi virtual device settings. If empty (not set), it will create
+    // single virtual device on each visible GPU, according to the settings
+    // in "visible_device_list" above. Otherwise, the number of elements in the
+    // list must be the same as the number of visible GPUs (after
+    // "visible_device_list" filtering if it is set), and the string represented
+    // device names (e.g. /device:GPU:<id>) will refer to the virtual
+    // devices and have the <id> field assigned sequentially starting from 0,
+    // according to the order they appear in this list and the "memory_limit"
+    // list inside each element. For example,
+    //   visible_device_list = "1,0"
+    //   virtual_devices { memory_limit: 1GB memory_limit: 2GB }
+    //   virtual_devices {}
+    // will create three virtual devices as:
+    //   /device:GPU:0 -> visible GPU 1 with 1GB memory
+    //   /device:GPU:1 -> visible GPU 1 with 2GB memory
+    //   /device:GPU:2 -> visible GPU 0 with all available memory
+    //
+    // NOTE:
+    // 1. It's invalid to set both this and "per_process_gpu_memory_fraction"
+    //    at the same time.
+    // 2. Currently this setting is per-process, not per-session. Using
+    //    different settings in different sessions within same process will
+    //    result in undefined behavior.
+    repeated VirtualDevices virtual_devices = 1;
+
+    // If true, uses CUDA unified memory for memory allocations. If
+    // per_process_gpu_memory_fraction option is greater than 1.0, then unified
+    // memory is used regardless of the value for this field. See comments for
+    // per_process_gpu_memory_fraction field for more details and requirements
+    // of the unified memory. This option is useful to oversubscribe memory if
+    // multiple processes are sharing a single GPU while individually using less
+    // than 1.0 per process memory fraction.
+    bool use_unified_memory = 2;
+  }
+
+  // Everything inside experimental is subject to change and is not subject
+  // to API stability guarantees in
+  // https://www.tensorflow.org/guide/version_compat.
+  Experimental experimental = 9;
+};
+
+// Options passed to the graph optimizer
+message OptimizerOptions {
+  // If true, optimize the graph using common subexpression elimination.
+  bool do_common_subexpression_elimination = 1;
+
+  // If true, perform constant folding optimization on the graph.
+  bool do_constant_folding = 2;
+
+  // Constant folding optimization replaces tensors whose values can be
+  // predetermined, with constant nodes. To avoid inserting too large constants,
+  // the size of each constant created can be limited. If this value is zero, a
+  // default limit of 10 MiB will be applied. If constant folding optimization
+  // is disabled, this value is ignored.
+  int64 max_folded_constant_in_bytes = 6;
+
+  // If true, perform function inlining on the graph.
+  bool do_function_inlining = 4;
+
+  // Optimization level
+  enum Level {
+    // L1 is the default level.
+    // Optimization performed at L1 :
+    // 1. Common subexpression elimination
+    // 2. Constant folding
+    L1 = 0;
+
+    // No optimizations
+    L0 = -1;
+  }
+
+  // Overall optimization level. The actual optimizations applied will be the
+  // logical OR of the flags that this level implies and any flags already set.
+  Level opt_level = 3;
+
+  // Control the use of the compiler/jit.  Experimental.
+  enum GlobalJitLevel {
+    DEFAULT = 0;  // Default setting ("off" now, but later expected to be "on")
+    OFF = -1;
+    // The following settings turn on compilation, with higher values being
+    // more aggressive.  Higher values may reduce opportunities for parallelism
+    // and may use more memory.  (At present, there is no distinction, but this
+    // is expected to change.)
+    ON_1 = 1;
+    ON_2 = 2;
+  }
+  GlobalJitLevel global_jit_level = 5;
+}
+
+message GraphOptions {
+  // Removed, use optimizer_options below.
+  reserved "skip_common_subexpression_elimination";
+  reserved 1;
+
+  // If true, use control flow to schedule the activation of Recv nodes.
+  // (Currently ignored.)
+  bool enable_recv_scheduling = 2;
+
+  // Options controlling how graph is optimized.
+  OptimizerOptions optimizer_options = 3;
+
+  // The number of steps to run before returning a cost model detailing
+  // the memory usage and performance of each node of the graph. 0 means
+  // no cost model.
+  int64 build_cost_model = 4;
+
+  // The number of steps to skip before collecting statistics for the
+  // cost model.
+  int64 build_cost_model_after = 9;
+
+  // Annotate each Node with Op output shape data, to the extent it can
+  // be statically inferred.
+  bool infer_shapes = 5;
+
+  // Only place the subgraphs that are run, rather than the entire graph.
+  //
+  // This is useful for interactive graph building, where one might
+  // produce graphs that cannot be placed during the debugging
+  // process.  In particular, it allows the client to continue work in
+  // a session after adding a node to a graph whose placement
+  // constraints are unsatisfiable.
+  bool place_pruned_graph = 6;
+
+  // If true, transfer float values between processes as bfloat16.
+  bool enable_bfloat16_sendrecv = 7;
+
+  // If > 0, record a timeline every this many steps.
+  // EXPERIMENTAL: This currently has no effect in MasterSession.
+  int32 timeline_step = 8;
+
+  // Options that control the type and amount of graph rewriting.
+  // Not currently configurable via the public Python API (i.e. there is no API
+  // stability guarantee if you import RewriterConfig explicitly).
+  RewriterConfig rewrite_options = 10;
+};
+
+message ThreadPoolOptionProto {
+  // The number of threads in the pool.
+  //
+  // 0 means the system picks a value based on where this option proto is used
+  // (see the declaration of the specific field for more info).
+  int32 num_threads = 1;
+
+  // The global name of the threadpool.
+  //
+  // If empty, then the threadpool is made and used according to the scope it's
+  // in - e.g., for a session threadpool, it is used by that session only.
+  //
+  // If non-empty, then:
+  // - a global threadpool associated with this name is looked
+  //   up or created. This allows, for example, sharing one threadpool across
+  //   many sessions (e.g., like the default behavior, if
+  //   inter_op_parallelism_threads is not configured), but still partitioning
+  //   into a large and small pool.
+  // - if the threadpool for this global_name already exists, then it is an
+  //   error if the existing pool was created using a different num_threads
+  //   value as is specified on this call.
+  // - threadpools created this way are never garbage collected.
+  string global_name = 2;
+};
+
+message RPCOptions {
+  // If true, always use RPC to contact the session target.
+  //
+  // If false (the default option), TensorFlow may use an optimized
+  // transport for client-master communication that avoids the RPC
+  // stack. This option is primarily for used testing the RPC stack.
+  bool use_rpc_for_inprocess_master = 1;
+};
+
+// Session configuration parameters.
+// The system picks appropriate values for fields that are not set.
+message ConfigProto {
+  // Map from device type name (e.g., "CPU" or "GPU" ) to maximum
+  // number of devices of that type to use.  If a particular device
+  // type is not found in the map, the system picks an appropriate
+  // number.
+  map<string, int32> device_count = 1;
+
+  // The execution of an individual op (for some op types) can be
+  // parallelized on a pool of intra_op_parallelism_threads.
+  // 0 means the system picks an appropriate number.
+  int32 intra_op_parallelism_threads = 2;
+
+  // Nodes that perform blocking operations are enqueued on a pool of
+  // inter_op_parallelism_threads available in each process.
+  //
+  // 0 means the system picks an appropriate number.
+  //
+  // Note that the first Session created in the process sets the
+  // number of threads for all future sessions unless use_per_session_threads is
+  // true or session_inter_op_thread_pool is configured.
+  int32 inter_op_parallelism_threads = 5;
+
+  // If true, use a new set of threads for this session rather than the global
+  // pool of threads. Only supported by direct sessions.
+  //
+  // If false, use the global threads created by the first session, or the
+  // per-session thread pools configured by session_inter_op_thread_pool.
+  //
+  // This option is deprecated. The same effect can be achieved by setting
+  // session_inter_op_thread_pool to have one element, whose num_threads equals
+  // inter_op_parallelism_threads.
+  bool use_per_session_threads = 9;
+
+  // This option is experimental - it may be replaced with a different mechanism
+  // in the future.
+  //
+  // Configures session thread pools. If this is configured, then RunOptions for
+  // a Run call can select the thread pool to use.
+  //
+  // The intended use is for when some session invocations need to run in a
+  // background pool limited to a small number of threads:
+  // - For example, a session may be configured to have one large pool (for
+  // regular compute) and one small pool (for periodic, low priority work);
+  // using the small pool is currently the mechanism for limiting the inter-op
+  // parallelism of the low priority work.  Note that it does not limit the
+  // parallelism of work spawned by a single op kernel implementation.
+  // - Using this setting is normally not needed in training, but may help some
+  // serving use cases.
+  // - It is also generally recommended to set the global_name field of this
+  // proto, to avoid creating multiple large pools. It is typically better to
+  // run the non-low-priority work, even across sessions, in a single large
+  // pool.
+  repeated ThreadPoolOptionProto session_inter_op_thread_pool = 12;
+
+  // Assignment of Nodes to Devices is recomputed every placement_period
+  // steps until the system warms up (at which point the recomputation
+  // typically slows down automatically).
+  int32 placement_period = 3;
+
+  // When any filters are present sessions will ignore all devices which do not
+  // match the filters. Each filter can be partially specified, e.g. "/job:ps"
+  // "/job:worker/replica:3", etc.
+  repeated string device_filters = 4;
+
+  // Options that apply to all GPUs.
+  GPUOptions gpu_options = 6;
+
+  // Whether soft placement is allowed. If allow_soft_placement is true,
+  // an op will be placed on CPU if
+  //   1. there's no GPU implementation for the OP
+  // or
+  //   2. no GPU devices are known or registered
+  // or
+  //   3. need to co-locate with reftype input(s) which are from CPU.
+  bool allow_soft_placement = 7;
+
+  // Whether device placements should be logged.
+  bool log_device_placement = 8;
+
+  // Options that apply to all graphs.
+  GraphOptions graph_options = 10;
+
+  // Global timeout for all blocking operations in this session.  If non-zero,
+  // and not overridden on a per-operation basis, this value will be used as the
+  // deadline for all blocking operations.
+  int64 operation_timeout_in_ms = 11;
+
+  // Options that apply when this session uses the distributed runtime.
+  RPCOptions rpc_options = 13;
+
+  // Optional list of all workers to use in this session.
+  ClusterDef cluster_def = 14;
+
+  // If true, any resources such as Variables used in the session will not be
+  // shared with other sessions.
+  bool isolate_session_state = 15;
+
+  // Everything inside Experimental is subject to change and is not subject
+  // to API stability guarantees in
+  // https://www.tensorflow.org/guide/version_compat.
+  message Experimental {
+    // Task name for group resolution.
+    string collective_group_leader = 1;
+  };
+
+  Experimental experimental = 16;
+
+  // Next: 17
+};
+
+// Options for a single Run() call.
+message RunOptions {
+  // TODO(pbar) Turn this into a TraceOptions proto which allows
+  // tracing to be controlled in a more orthogonal manner?
+  enum TraceLevel {
+    NO_TRACE = 0;
+    SOFTWARE_TRACE = 1;
+    HARDWARE_TRACE = 2;
+    FULL_TRACE = 3;
+  }
+  TraceLevel trace_level = 1;
+
+  // Time to wait for operation to complete in milliseconds.
+  int64 timeout_in_ms = 2;
+
+  // The thread pool to use, if session_inter_op_thread_pool is configured.
+  int32 inter_op_thread_pool = 3;
+
+  // Whether the partition graph(s) executed by the executor(s) should be
+  // outputted via RunMetadata.
+  bool output_partition_graphs = 5;
+
+  // EXPERIMENTAL.  Options used to initialize DebuggerState, if enabled.
+  DebugOptions debug_options = 6;
+
+  // When enabled, causes tensor allocation information to be included in
+  // the error message when the Run() call fails because the allocator ran
+  // out of memory (OOM).
+  //
+  // Enabling this option can slow down the Run() call.
+  bool report_tensor_allocations_upon_oom = 7;
+
+  // Everything inside Experimental is subject to change and is not subject
+  // to API stability guarantees in
+  // https://www.tensorflow.org/guide/version_compat.
+  message Experimental {
+    // If non-zero, declares that this graph is going to use collective
+    // ops and must synchronize step_ids with any other graph with this
+    // same group_key value (in a distributed computation where tasks
+    // run disjoint graphs).
+    int64 collective_graph_key = 1;
+  };
+
+  Experimental experimental = 8;
+
+  reserved 4;
+}
+
+// Metadata output (i.e., non-Tensor) for a single Run() call.
+message RunMetadata {
+  // Statistics traced for this step. Populated if tracing is turned on via the
+  // "RunOptions" proto.
+  // EXPERIMENTAL: The format and set of events may change in future versions.
+  StepStats step_stats = 1;
+
+  // The cost graph for the computation defined by the run call.
+  CostGraphDef cost_graph = 2;
+
+  // Graphs of the partitions executed by executors.
+  repeated GraphDef partition_graphs = 3;
+}
+
+// Defines a connection between two tensors in a `GraphDef`.
+message TensorConnection {
+  // A tensor name. The value of this tensor will be substituted for
+  // the tensor named in `to_tensor`.
+  string from_tensor = 1;
+
+  // A tensor name. The value of this tensor will be bound to the
+  // value of the tensor named in `from_tensor`.
+  string to_tensor = 2;
+}
+
+// Defines a subgraph in another `GraphDef` as a set of feed points and nodes
+// to be fetched or executed.
+//
+// Compare with the arguments to `Session::Run()`.
+message CallableOptions {
+  // Tensors to be fed in the callable. Each feed is the name of a tensor.
+  repeated string feed = 1;
+
+  // Fetches. A list of tensor names. The caller of the callable expects a
+  // tensor to be returned for each fetch[i] (see RunStepResponse.tensor). The
+  // order of specified fetches does not change the execution order.
+  repeated string fetch = 2;
+
+  // Target Nodes. A list of node names. The named nodes will be run by the
+  // callable but their outputs will not be returned.
+  repeated string target = 3;
+
+  // Options that will be applied to each run.
+  RunOptions run_options = 4;
+
+  // Tensors to be connected in the callable. Each TensorConnection denotes
+  // a pair of tensors in the graph, between which an edge will be created
+  // in the callable.
+  repeated TensorConnection tensor_connection = 5;
+
+  // Next: 6
+}
diff --git a/tensorflow/core/protobuf/control_flow.pb.cc b/tensorflow/core/protobuf/control_flow.pb.cc
new file mode 100644 (file)
index 0000000..de8e9ba
--- /dev/null
@@ -0,0 +1,2961 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: tensorflow/core/protobuf/control_flow.proto
+
+#include "tensorflow/core/protobuf/control_flow.pb.h"
+
+#include <algorithm>
+
+#include <google/protobuf/stubs/common.h>
+#include <google/protobuf/io/coded_stream.h>
+#include <google/protobuf/extension_set.h>
+#include <google/protobuf/wire_format_lite_inl.h>
+#include <google/protobuf/descriptor.h>
+#include <google/protobuf/generated_message_reflection.h>
+#include <google/protobuf/reflection_ops.h>
+#include <google/protobuf/wire_format.h>
+// @@protoc_insertion_point(includes)
+#include <google/protobuf/port_def.inc>
+
+extern PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fprotobuf_2fcontrol_5fflow_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_ValuesDef_ExternalValuesEntry_DoNotUse_tensorflow_2fcore_2fprotobuf_2fcontrol_5fflow_2eproto;
+extern PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fprotobuf_2fcontrol_5fflow_2eproto ::google::protobuf::internal::SCCInfo<1> scc_info_CondContextDef_tensorflow_2fcore_2fprotobuf_2fcontrol_5fflow_2eproto;
+extern PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fprotobuf_2fcontrol_5fflow_2eproto ::google::protobuf::internal::SCCInfo<1> scc_info_ValuesDef_tensorflow_2fcore_2fprotobuf_2fcontrol_5fflow_2eproto;
+namespace tensorflow {
+class ValuesDef_ExternalValuesEntry_DoNotUseDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<ValuesDef_ExternalValuesEntry_DoNotUse> _instance;
+} _ValuesDef_ExternalValuesEntry_DoNotUse_default_instance_;
+class ValuesDefDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<ValuesDef> _instance;
+} _ValuesDef_default_instance_;
+class ControlFlowContextDefDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<ControlFlowContextDef> _instance;
+  const ::tensorflow::CondContextDef* cond_ctxt_;
+  const ::tensorflow::WhileContextDef* while_ctxt_;
+} _ControlFlowContextDef_default_instance_;
+class CondContextDefDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<CondContextDef> _instance;
+} _CondContextDef_default_instance_;
+class WhileContextDefDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<WhileContextDef> _instance;
+} _WhileContextDef_default_instance_;
+}  // namespace tensorflow
+static void InitDefaultsValuesDef_ExternalValuesEntry_DoNotUse_tensorflow_2fcore_2fprotobuf_2fcontrol_5fflow_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_ValuesDef_ExternalValuesEntry_DoNotUse_default_instance_;
+    new (ptr) ::tensorflow::ValuesDef_ExternalValuesEntry_DoNotUse();
+  }
+  ::tensorflow::ValuesDef_ExternalValuesEntry_DoNotUse::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<0> scc_info_ValuesDef_ExternalValuesEntry_DoNotUse_tensorflow_2fcore_2fprotobuf_2fcontrol_5fflow_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsValuesDef_ExternalValuesEntry_DoNotUse_tensorflow_2fcore_2fprotobuf_2fcontrol_5fflow_2eproto}, {}};
+
+static void InitDefaultsValuesDef_tensorflow_2fcore_2fprotobuf_2fcontrol_5fflow_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_ValuesDef_default_instance_;
+    new (ptr) ::tensorflow::ValuesDef();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::ValuesDef::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<1> scc_info_ValuesDef_tensorflow_2fcore_2fprotobuf_2fcontrol_5fflow_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsValuesDef_tensorflow_2fcore_2fprotobuf_2fcontrol_5fflow_2eproto}, {
+      &scc_info_ValuesDef_ExternalValuesEntry_DoNotUse_tensorflow_2fcore_2fprotobuf_2fcontrol_5fflow_2eproto.base,}};
+
+static void InitDefaultsCondContextDef_tensorflow_2fcore_2fprotobuf_2fcontrol_5fflow_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_ControlFlowContextDef_default_instance_;
+    new (ptr) ::tensorflow::ControlFlowContextDef();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  {
+    void* ptr = &::tensorflow::_CondContextDef_default_instance_;
+    new (ptr) ::tensorflow::CondContextDef();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  {
+    void* ptr = &::tensorflow::_WhileContextDef_default_instance_;
+    new (ptr) ::tensorflow::WhileContextDef();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::ControlFlowContextDef::InitAsDefaultInstance();
+  ::tensorflow::CondContextDef::InitAsDefaultInstance();
+  ::tensorflow::WhileContextDef::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<1> scc_info_CondContextDef_tensorflow_2fcore_2fprotobuf_2fcontrol_5fflow_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsCondContextDef_tensorflow_2fcore_2fprotobuf_2fcontrol_5fflow_2eproto}, {
+      &scc_info_ValuesDef_tensorflow_2fcore_2fprotobuf_2fcontrol_5fflow_2eproto.base,}};
+
+void InitDefaults_tensorflow_2fcore_2fprotobuf_2fcontrol_5fflow_2eproto() {
+  ::google::protobuf::internal::InitSCC(&scc_info_ValuesDef_ExternalValuesEntry_DoNotUse_tensorflow_2fcore_2fprotobuf_2fcontrol_5fflow_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_ValuesDef_tensorflow_2fcore_2fprotobuf_2fcontrol_5fflow_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_CondContextDef_tensorflow_2fcore_2fprotobuf_2fcontrol_5fflow_2eproto.base);
+}
+
+::google::protobuf::Metadata file_level_metadata_tensorflow_2fcore_2fprotobuf_2fcontrol_5fflow_2eproto[5];
+constexpr ::google::protobuf::EnumDescriptor const** file_level_enum_descriptors_tensorflow_2fcore_2fprotobuf_2fcontrol_5fflow_2eproto = nullptr;
+constexpr ::google::protobuf::ServiceDescriptor const** file_level_service_descriptors_tensorflow_2fcore_2fprotobuf_2fcontrol_5fflow_2eproto = nullptr;
+
+const ::google::protobuf::uint32 TableStruct_tensorflow_2fcore_2fprotobuf_2fcontrol_5fflow_2eproto::offsets[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = {
+  PROTOBUF_FIELD_OFFSET(::tensorflow::ValuesDef_ExternalValuesEntry_DoNotUse, _has_bits_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::ValuesDef_ExternalValuesEntry_DoNotUse, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::ValuesDef_ExternalValuesEntry_DoNotUse, key_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::ValuesDef_ExternalValuesEntry_DoNotUse, value_),
+  0,
+  1,
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::ValuesDef, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::ValuesDef, values_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::ValuesDef, external_values_),
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::ControlFlowContextDef, _internal_metadata_),
+  ~0u,  // no _extensions_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::ControlFlowContextDef, _oneof_case_[0]),
+  ~0u,  // no _weak_field_map_
+  offsetof(::tensorflow::ControlFlowContextDefDefaultTypeInternal, cond_ctxt_),
+  offsetof(::tensorflow::ControlFlowContextDefDefaultTypeInternal, while_ctxt_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::ControlFlowContextDef, ctxt_),
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::CondContextDef, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::CondContextDef, context_name_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::CondContextDef, pred_name_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::CondContextDef, pivot_name_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::CondContextDef, branch_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::CondContextDef, values_def_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::CondContextDef, nested_contexts_),
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::WhileContextDef, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::WhileContextDef, context_name_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::WhileContextDef, parallel_iterations_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::WhileContextDef, back_prop_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::WhileContextDef, swap_memory_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::WhileContextDef, pivot_name_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::WhileContextDef, pivot_for_pred_name_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::WhileContextDef, pivot_for_body_name_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::WhileContextDef, loop_exit_names_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::WhileContextDef, loop_enter_names_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::WhileContextDef, values_def_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::WhileContextDef, maximum_iterations_name_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::WhileContextDef, nested_contexts_),
+};
+static const ::google::protobuf::internal::MigrationSchema schemas[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = {
+  { 0, 7, sizeof(::tensorflow::ValuesDef_ExternalValuesEntry_DoNotUse)},
+  { 9, -1, sizeof(::tensorflow::ValuesDef)},
+  { 16, -1, sizeof(::tensorflow::ControlFlowContextDef)},
+  { 24, -1, sizeof(::tensorflow::CondContextDef)},
+  { 35, -1, sizeof(::tensorflow::WhileContextDef)},
+};
+
+static ::google::protobuf::Message const * const file_default_instances[] = {
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_ValuesDef_ExternalValuesEntry_DoNotUse_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_ValuesDef_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_ControlFlowContextDef_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_CondContextDef_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_WhileContextDef_default_instance_),
+};
+
+::google::protobuf::internal::AssignDescriptorsTable assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2fcontrol_5fflow_2eproto = {
+  {}, AddDescriptors_tensorflow_2fcore_2fprotobuf_2fcontrol_5fflow_2eproto, "tensorflow/core/protobuf/control_flow.proto", schemas,
+  file_default_instances, TableStruct_tensorflow_2fcore_2fprotobuf_2fcontrol_5fflow_2eproto::offsets,
+  file_level_metadata_tensorflow_2fcore_2fprotobuf_2fcontrol_5fflow_2eproto, 5, file_level_enum_descriptors_tensorflow_2fcore_2fprotobuf_2fcontrol_5fflow_2eproto, file_level_service_descriptors_tensorflow_2fcore_2fprotobuf_2fcontrol_5fflow_2eproto,
+};
+
+::google::protobuf::internal::DescriptorTable descriptor_table_tensorflow_2fcore_2fprotobuf_2fcontrol_5fflow_2eproto = {
+  false, InitDefaults_tensorflow_2fcore_2fprotobuf_2fcontrol_5fflow_2eproto, 
+  "\n+tensorflow/core/protobuf/control_flow."
+  "proto\022\ntensorflow\"\226\001\n\tValuesDef\022\016\n\006value"
+  "s\030\001 \003(\t\022B\n\017external_values\030\002 \003(\0132).tenso"
+  "rflow.ValuesDef.ExternalValuesEntry\0325\n\023E"
+  "xternalValuesEntry\022\013\n\003key\030\001 \001(\t\022\r\n\005value"
+  "\030\002 \001(\t:\0028\001\"\203\001\n\025ControlFlowContextDef\022/\n\t"
+  "cond_ctxt\030\001 \001(\0132\032.tensorflow.CondContext"
+  "DefH\000\0221\n\nwhile_ctxt\030\002 \001(\0132\033.tensorflow.W"
+  "hileContextDefH\000B\006\n\004ctxt\"\304\001\n\016CondContext"
+  "Def\022\024\n\014context_name\030\001 \001(\t\022\021\n\tpred_name\030\002"
+  " \001(\t\022\022\n\npivot_name\030\003 \001(\t\022\016\n\006branch\030\004 \001(\005"
+  "\022)\n\nvalues_def\030\005 \001(\0132\025.tensorflow.Values"
+  "Def\022:\n\017nested_contexts\030\006 \003(\0132!.tensorflo"
+  "w.ControlFlowContextDef\"\365\002\n\017WhileContext"
+  "Def\022\024\n\014context_name\030\001 \001(\t\022\033\n\023parallel_it"
+  "erations\030\002 \001(\005\022\021\n\tback_prop\030\003 \001(\010\022\023\n\013swa"
+  "p_memory\030\004 \001(\010\022\022\n\npivot_name\030\005 \001(\t\022\033\n\023pi"
+  "vot_for_pred_name\030\006 \001(\t\022\033\n\023pivot_for_bod"
+  "y_name\030\007 \001(\t\022\027\n\017loop_exit_names\030\010 \003(\t\022\030\n"
+  "\020loop_enter_names\030\n \003(\t\022)\n\nvalues_def\030\t "
+  "\001(\0132\025.tensorflow.ValuesDef\022\037\n\027maximum_it"
+  "erations_name\030\013 \001(\t\022:\n\017nested_contexts\030\014"
+  " \003(\0132!.tensorflow.ControlFlowContextDefB"
+  "p\n\030org.tensorflow.frameworkB\021ControlFlow"
+  "ProtosP\001Z<github.com/tensorflow/tensorfl"
+  "ow/tensorflow/go/core/protobuf\370\001\001b\006proto"
+  "3"
+,
+  "tensorflow/core/protobuf/control_flow.proto", &assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2fcontrol_5fflow_2eproto, 1041,
+};
+
+void AddDescriptors_tensorflow_2fcore_2fprotobuf_2fcontrol_5fflow_2eproto() {
+  static constexpr ::google::protobuf::internal::InitFunc deps[1] =
+  {
+  };
+ ::google::protobuf::internal::AddDescriptors(&descriptor_table_tensorflow_2fcore_2fprotobuf_2fcontrol_5fflow_2eproto, deps, 0);
+}
+
+// Force running AddDescriptors() at dynamic initialization time.
+static bool dynamic_init_dummy_tensorflow_2fcore_2fprotobuf_2fcontrol_5fflow_2eproto = []() { AddDescriptors_tensorflow_2fcore_2fprotobuf_2fcontrol_5fflow_2eproto(); return true; }();
+namespace tensorflow {
+
+// ===================================================================
+
+ValuesDef_ExternalValuesEntry_DoNotUse::ValuesDef_ExternalValuesEntry_DoNotUse() {}
+ValuesDef_ExternalValuesEntry_DoNotUse::ValuesDef_ExternalValuesEntry_DoNotUse(::google::protobuf::Arena* arena)
+    : SuperType(arena) {}
+void ValuesDef_ExternalValuesEntry_DoNotUse::MergeFrom(const ValuesDef_ExternalValuesEntry_DoNotUse& other) {
+  MergeFromInternal(other);
+}
+::google::protobuf::Metadata ValuesDef_ExternalValuesEntry_DoNotUse::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2fcontrol_5fflow_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fprotobuf_2fcontrol_5fflow_2eproto[0];
+}
+void ValuesDef_ExternalValuesEntry_DoNotUse::MergeFrom(
+    const ::google::protobuf::Message& other) {
+  ::google::protobuf::Message::MergeFrom(other);
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool ValuesDef_ExternalValuesEntry_DoNotUse::_ParseMap(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx) {
+  using MF = ::google::protobuf::internal::MapField<
+      ValuesDef_ExternalValuesEntry_DoNotUse, EntryKeyType, EntryValueType,
+      kEntryKeyFieldType, kEntryValueFieldType,
+      kEntryDefaultEnumValue>;
+  auto mf = static_cast<MF*>(object);
+  Parser<MF, ::google::protobuf::Map<EntryKeyType, EntryValueType>> parser(mf);
+#define DO_(x) if (!(x)) return false
+  DO_(parser.ParseMap(begin, end));
+  DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+    parser.key().data(), static_cast<int>(parser.key().length()),
+    ::google::protobuf::internal::WireFormatLite::PARSE,
+    "tensorflow.ValuesDef.ExternalValuesEntry.key"));
+  DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+    parser.value().data(), static_cast<int>(parser.value().length()),
+    ::google::protobuf::internal::WireFormatLite::PARSE,
+    "tensorflow.ValuesDef.ExternalValuesEntry.value"));
+#undef DO_
+  return true;
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+
+// ===================================================================
+
+void ValuesDef::InitAsDefaultInstance() {
+}
+class ValuesDef::HasBitSetters {
+ public:
+};
+
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int ValuesDef::kValuesFieldNumber;
+const int ValuesDef::kExternalValuesFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+ValuesDef::ValuesDef()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.ValuesDef)
+}
+ValuesDef::ValuesDef(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena),
+  values_(arena),
+  external_values_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.ValuesDef)
+}
+ValuesDef::ValuesDef(const ValuesDef& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL),
+      values_(from.values_) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  external_values_.MergeFrom(from.external_values_);
+  // @@protoc_insertion_point(copy_constructor:tensorflow.ValuesDef)
+}
+
+void ValuesDef::SharedCtor() {
+  ::google::protobuf::internal::InitSCC(
+      &scc_info_ValuesDef_tensorflow_2fcore_2fprotobuf_2fcontrol_5fflow_2eproto.base);
+}
+
+ValuesDef::~ValuesDef() {
+  // @@protoc_insertion_point(destructor:tensorflow.ValuesDef)
+  SharedDtor();
+}
+
+void ValuesDef::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+}
+
+void ValuesDef::ArenaDtor(void* object) {
+  ValuesDef* _this = reinterpret_cast< ValuesDef* >(object);
+  (void)_this;
+}
+void ValuesDef::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void ValuesDef::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const ValuesDef& ValuesDef::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_ValuesDef_tensorflow_2fcore_2fprotobuf_2fcontrol_5fflow_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void ValuesDef::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.ValuesDef)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  values_.Clear();
+  external_values_.Clear();
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* ValuesDef::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<ValuesDef*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // repeated string values = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 10) goto handle_unusual;
+        do {
+          ptr = Varint::Parse32Inline(ptr, &size);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          ctx->extra_parse_data().SetFieldName("tensorflow.ValuesDef.values");
+          parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+          ::std::string* str = msg->add_values();
+          str->clear();
+          object = str;
+          if (size > end - ptr) goto len_delim_till_end;
+          auto newend = ptr + size;
+          if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+          if (ptr >= end) break;
+        } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 10 && (ptr += 1));
+        break;
+      }
+      // map<string, string> external_values = 2;
+      case 2: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 18) goto handle_unusual;
+        do {
+          ptr = Varint::Parse32Inline(ptr, &size);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          parser_till_end = ::google::protobuf::internal::SlowMapEntryParser;
+          auto parse_map = ::tensorflow::ValuesDef_ExternalValuesEntry_DoNotUse::_ParseMap;
+          ctx->extra_parse_data().payload.clear();
+          ctx->extra_parse_data().parse_map = parse_map;
+          object = &msg->external_values_;
+          if (size > end - ptr) goto len_delim_till_end;
+          auto newend = ptr + size;
+          GOOGLE_PROTOBUF_PARSER_ASSERT(parse_map(ptr, newend, object, ctx));
+          ptr = newend;
+          if (ptr >= end) break;
+        } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 18 && (ptr += 1));
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool ValuesDef::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.ValuesDef)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // repeated string values = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (10 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->add_values()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->values(this->values_size() - 1).data(),
+            static_cast<int>(this->values(this->values_size() - 1).length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.ValuesDef.values"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // map<string, string> external_values = 2;
+      case 2: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (18 & 0xFF)) {
+          ValuesDef_ExternalValuesEntry_DoNotUse::Parser< ::google::protobuf::internal::MapField<
+              ValuesDef_ExternalValuesEntry_DoNotUse,
+              ::std::string, ::std::string,
+              ::google::protobuf::internal::WireFormatLite::TYPE_STRING,
+              ::google::protobuf::internal::WireFormatLite::TYPE_STRING,
+              0 >,
+            ::google::protobuf::Map< ::std::string, ::std::string > > parser(&external_values_);
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
+              input, &parser));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            parser.key().data(), static_cast<int>(parser.key().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.ValuesDef.ExternalValuesEntry.key"));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            parser.value().data(), static_cast<int>(parser.value().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.ValuesDef.ExternalValuesEntry.value"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.ValuesDef)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.ValuesDef)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void ValuesDef::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.ValuesDef)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // repeated string values = 1;
+  for (int i = 0, n = this->values_size(); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->values(i).data(), static_cast<int>(this->values(i).length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.ValuesDef.values");
+    ::google::protobuf::internal::WireFormatLite::WriteString(
+      1, this->values(i), output);
+  }
+
+  // map<string, string> external_values = 2;
+  if (!this->external_values().empty()) {
+    typedef ::google::protobuf::Map< ::std::string, ::std::string >::const_pointer
+        ConstPtr;
+    typedef ConstPtr SortItem;
+    typedef ::google::protobuf::internal::CompareByDerefFirst<SortItem> Less;
+    struct Utf8Check {
+      static void Check(ConstPtr p) {
+        ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+          p->first.data(), static_cast<int>(p->first.length()),
+          ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+          "tensorflow.ValuesDef.ExternalValuesEntry.key");
+        ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+          p->second.data(), static_cast<int>(p->second.length()),
+          ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+          "tensorflow.ValuesDef.ExternalValuesEntry.value");
+      }
+    };
+
+    if (output->IsSerializationDeterministic() &&
+        this->external_values().size() > 1) {
+      ::std::unique_ptr<SortItem[]> items(
+          new SortItem[this->external_values().size()]);
+      typedef ::google::protobuf::Map< ::std::string, ::std::string >::size_type size_type;
+      size_type n = 0;
+      for (::google::protobuf::Map< ::std::string, ::std::string >::const_iterator
+          it = this->external_values().begin();
+          it != this->external_values().end(); ++it, ++n) {
+        items[static_cast<ptrdiff_t>(n)] = SortItem(&*it);
+      }
+      ::std::sort(&items[0], &items[static_cast<ptrdiff_t>(n)], Less());
+      ::std::unique_ptr<ValuesDef_ExternalValuesEntry_DoNotUse> entry;
+      for (size_type i = 0; i < n; i++) {
+        entry.reset(external_values_.NewEntryWrapper(items[static_cast<ptrdiff_t>(i)]->first, items[static_cast<ptrdiff_t>(i)]->second));
+        ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(2, *entry, output);
+        if (entry->GetArena() != NULL) {
+          entry.release();
+        }
+        Utf8Check::Check(&(*items[static_cast<ptrdiff_t>(i)]));
+      }
+    } else {
+      ::std::unique_ptr<ValuesDef_ExternalValuesEntry_DoNotUse> entry;
+      for (::google::protobuf::Map< ::std::string, ::std::string >::const_iterator
+          it = this->external_values().begin();
+          it != this->external_values().end(); ++it) {
+        entry.reset(external_values_.NewEntryWrapper(it->first, it->second));
+        ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(2, *entry, output);
+        if (entry->GetArena() != NULL) {
+          entry.release();
+        }
+        Utf8Check::Check(&(*it));
+      }
+    }
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.ValuesDef)
+}
+
+::google::protobuf::uint8* ValuesDef::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.ValuesDef)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // repeated string values = 1;
+  for (int i = 0, n = this->values_size(); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->values(i).data(), static_cast<int>(this->values(i).length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.ValuesDef.values");
+    target = ::google::protobuf::internal::WireFormatLite::
+      WriteStringToArray(1, this->values(i), target);
+  }
+
+  // map<string, string> external_values = 2;
+  if (!this->external_values().empty()) {
+    typedef ::google::protobuf::Map< ::std::string, ::std::string >::const_pointer
+        ConstPtr;
+    typedef ConstPtr SortItem;
+    typedef ::google::protobuf::internal::CompareByDerefFirst<SortItem> Less;
+    struct Utf8Check {
+      static void Check(ConstPtr p) {
+        ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+          p->first.data(), static_cast<int>(p->first.length()),
+          ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+          "tensorflow.ValuesDef.ExternalValuesEntry.key");
+        ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+          p->second.data(), static_cast<int>(p->second.length()),
+          ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+          "tensorflow.ValuesDef.ExternalValuesEntry.value");
+      }
+    };
+
+    if (deterministic &&
+        this->external_values().size() > 1) {
+      ::std::unique_ptr<SortItem[]> items(
+          new SortItem[this->external_values().size()]);
+      typedef ::google::protobuf::Map< ::std::string, ::std::string >::size_type size_type;
+      size_type n = 0;
+      for (::google::protobuf::Map< ::std::string, ::std::string >::const_iterator
+          it = this->external_values().begin();
+          it != this->external_values().end(); ++it, ++n) {
+        items[static_cast<ptrdiff_t>(n)] = SortItem(&*it);
+      }
+      ::std::sort(&items[0], &items[static_cast<ptrdiff_t>(n)], Less());
+      ::std::unique_ptr<ValuesDef_ExternalValuesEntry_DoNotUse> entry;
+      for (size_type i = 0; i < n; i++) {
+        entry.reset(external_values_.NewEntryWrapper(items[static_cast<ptrdiff_t>(i)]->first, items[static_cast<ptrdiff_t>(i)]->second));
+        target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessageNoVirtualToArray(2, *entry, deterministic, target);
+        if (entry->GetArena() != NULL) {
+          entry.release();
+        }
+        Utf8Check::Check(&(*items[static_cast<ptrdiff_t>(i)]));
+      }
+    } else {
+      ::std::unique_ptr<ValuesDef_ExternalValuesEntry_DoNotUse> entry;
+      for (::google::protobuf::Map< ::std::string, ::std::string >::const_iterator
+          it = this->external_values().begin();
+          it != this->external_values().end(); ++it) {
+        entry.reset(external_values_.NewEntryWrapper(it->first, it->second));
+        target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessageNoVirtualToArray(2, *entry, deterministic, target);
+        if (entry->GetArena() != NULL) {
+          entry.release();
+        }
+        Utf8Check::Check(&(*it));
+      }
+    }
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.ValuesDef)
+  return target;
+}
+
+size_t ValuesDef::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.ValuesDef)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // repeated string values = 1;
+  total_size += 1 *
+      ::google::protobuf::internal::FromIntSize(this->values_size());
+  for (int i = 0, n = this->values_size(); i < n; i++) {
+    total_size += ::google::protobuf::internal::WireFormatLite::StringSize(
+      this->values(i));
+  }
+
+  // map<string, string> external_values = 2;
+  total_size += 1 *
+      ::google::protobuf::internal::FromIntSize(this->external_values_size());
+  {
+    ::std::unique_ptr<ValuesDef_ExternalValuesEntry_DoNotUse> entry;
+    for (::google::protobuf::Map< ::std::string, ::std::string >::const_iterator
+        it = this->external_values().begin();
+        it != this->external_values().end(); ++it) {
+      if (entry.get() != NULL && entry->GetArena() != NULL) {
+        entry.release();
+      }
+      entry.reset(external_values_.NewEntryWrapper(it->first, it->second));
+      total_size += ::google::protobuf::internal::WireFormatLite::
+          MessageSizeNoVirtual(*entry);
+    }
+    if (entry.get() != NULL && entry->GetArena() != NULL) {
+      entry.release();
+    }
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void ValuesDef::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.ValuesDef)
+  GOOGLE_DCHECK_NE(&from, this);
+  const ValuesDef* source =
+      ::google::protobuf::DynamicCastToGenerated<ValuesDef>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.ValuesDef)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.ValuesDef)
+    MergeFrom(*source);
+  }
+}
+
+void ValuesDef::MergeFrom(const ValuesDef& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.ValuesDef)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  values_.MergeFrom(from.values_);
+  external_values_.MergeFrom(from.external_values_);
+}
+
+void ValuesDef::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.ValuesDef)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void ValuesDef::CopyFrom(const ValuesDef& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.ValuesDef)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool ValuesDef::IsInitialized() const {
+  return true;
+}
+
+void ValuesDef::Swap(ValuesDef* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    ValuesDef* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void ValuesDef::UnsafeArenaSwap(ValuesDef* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void ValuesDef::InternalSwap(ValuesDef* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  values_.InternalSwap(CastToBase(&other->values_));
+  external_values_.Swap(&other->external_values_);
+}
+
+::google::protobuf::Metadata ValuesDef::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2fcontrol_5fflow_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fprotobuf_2fcontrol_5fflow_2eproto[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+void ControlFlowContextDef::InitAsDefaultInstance() {
+  ::tensorflow::_ControlFlowContextDef_default_instance_.cond_ctxt_ = const_cast< ::tensorflow::CondContextDef*>(
+      ::tensorflow::CondContextDef::internal_default_instance());
+  ::tensorflow::_ControlFlowContextDef_default_instance_.while_ctxt_ = const_cast< ::tensorflow::WhileContextDef*>(
+      ::tensorflow::WhileContextDef::internal_default_instance());
+}
+class ControlFlowContextDef::HasBitSetters {
+ public:
+  static const ::tensorflow::CondContextDef& cond_ctxt(const ControlFlowContextDef* msg);
+  static const ::tensorflow::WhileContextDef& while_ctxt(const ControlFlowContextDef* msg);
+};
+
+const ::tensorflow::CondContextDef&
+ControlFlowContextDef::HasBitSetters::cond_ctxt(const ControlFlowContextDef* msg) {
+  return *msg->ctxt_.cond_ctxt_;
+}
+const ::tensorflow::WhileContextDef&
+ControlFlowContextDef::HasBitSetters::while_ctxt(const ControlFlowContextDef* msg) {
+  return *msg->ctxt_.while_ctxt_;
+}
+void ControlFlowContextDef::set_allocated_cond_ctxt(::tensorflow::CondContextDef* cond_ctxt) {
+  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
+  clear_ctxt();
+  if (cond_ctxt) {
+    ::google::protobuf::Arena* submessage_arena =
+      ::google::protobuf::Arena::GetArena(cond_ctxt);
+    if (message_arena != submessage_arena) {
+      cond_ctxt = ::google::protobuf::internal::GetOwnedMessage(
+          message_arena, cond_ctxt, submessage_arena);
+    }
+    set_has_cond_ctxt();
+    ctxt_.cond_ctxt_ = cond_ctxt;
+  }
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.ControlFlowContextDef.cond_ctxt)
+}
+void ControlFlowContextDef::set_allocated_while_ctxt(::tensorflow::WhileContextDef* while_ctxt) {
+  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
+  clear_ctxt();
+  if (while_ctxt) {
+    ::google::protobuf::Arena* submessage_arena =
+      ::google::protobuf::Arena::GetArena(while_ctxt);
+    if (message_arena != submessage_arena) {
+      while_ctxt = ::google::protobuf::internal::GetOwnedMessage(
+          message_arena, while_ctxt, submessage_arena);
+    }
+    set_has_while_ctxt();
+    ctxt_.while_ctxt_ = while_ctxt;
+  }
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.ControlFlowContextDef.while_ctxt)
+}
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int ControlFlowContextDef::kCondCtxtFieldNumber;
+const int ControlFlowContextDef::kWhileCtxtFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+ControlFlowContextDef::ControlFlowContextDef()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.ControlFlowContextDef)
+}
+ControlFlowContextDef::ControlFlowContextDef(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.ControlFlowContextDef)
+}
+ControlFlowContextDef::ControlFlowContextDef(const ControlFlowContextDef& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  clear_has_ctxt();
+  switch (from.ctxt_case()) {
+    case kCondCtxt: {
+      mutable_cond_ctxt()->::tensorflow::CondContextDef::MergeFrom(from.cond_ctxt());
+      break;
+    }
+    case kWhileCtxt: {
+      mutable_while_ctxt()->::tensorflow::WhileContextDef::MergeFrom(from.while_ctxt());
+      break;
+    }
+    case CTXT_NOT_SET: {
+      break;
+    }
+  }
+  // @@protoc_insertion_point(copy_constructor:tensorflow.ControlFlowContextDef)
+}
+
+void ControlFlowContextDef::SharedCtor() {
+  ::google::protobuf::internal::InitSCC(
+      &scc_info_CondContextDef_tensorflow_2fcore_2fprotobuf_2fcontrol_5fflow_2eproto.base);
+  clear_has_ctxt();
+}
+
+ControlFlowContextDef::~ControlFlowContextDef() {
+  // @@protoc_insertion_point(destructor:tensorflow.ControlFlowContextDef)
+  SharedDtor();
+}
+
+void ControlFlowContextDef::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+  if (has_ctxt()) {
+    clear_ctxt();
+  }
+}
+
+void ControlFlowContextDef::ArenaDtor(void* object) {
+  ControlFlowContextDef* _this = reinterpret_cast< ControlFlowContextDef* >(object);
+  (void)_this;
+}
+void ControlFlowContextDef::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void ControlFlowContextDef::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const ControlFlowContextDef& ControlFlowContextDef::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_CondContextDef_tensorflow_2fcore_2fprotobuf_2fcontrol_5fflow_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void ControlFlowContextDef::clear_ctxt() {
+// @@protoc_insertion_point(one_of_clear_start:tensorflow.ControlFlowContextDef)
+  switch (ctxt_case()) {
+    case kCondCtxt: {
+      if (GetArenaNoVirtual() == NULL) {
+        delete ctxt_.cond_ctxt_;
+      }
+      break;
+    }
+    case kWhileCtxt: {
+      if (GetArenaNoVirtual() == NULL) {
+        delete ctxt_.while_ctxt_;
+      }
+      break;
+    }
+    case CTXT_NOT_SET: {
+      break;
+    }
+  }
+  _oneof_case_[0] = CTXT_NOT_SET;
+}
+
+
+void ControlFlowContextDef::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.ControlFlowContextDef)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  clear_ctxt();
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* ControlFlowContextDef::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<ControlFlowContextDef*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // .tensorflow.CondContextDef cond_ctxt = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 10) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        parser_till_end = ::tensorflow::CondContextDef::_InternalParse;
+        object = msg->mutable_cond_ctxt();
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                       ptr, newend);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+        ptr = newend;
+        break;
+      }
+      // .tensorflow.WhileContextDef while_ctxt = 2;
+      case 2: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 18) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        parser_till_end = ::tensorflow::WhileContextDef::_InternalParse;
+        object = msg->mutable_while_ctxt();
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                       ptr, newend);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+        ptr = newend;
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool ControlFlowContextDef::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.ControlFlowContextDef)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // .tensorflow.CondContextDef cond_ctxt = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (10 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+               input, mutable_cond_ctxt()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // .tensorflow.WhileContextDef while_ctxt = 2;
+      case 2: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (18 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+               input, mutable_while_ctxt()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.ControlFlowContextDef)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.ControlFlowContextDef)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void ControlFlowContextDef::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.ControlFlowContextDef)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // .tensorflow.CondContextDef cond_ctxt = 1;
+  if (has_cond_ctxt()) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      1, HasBitSetters::cond_ctxt(this), output);
+  }
+
+  // .tensorflow.WhileContextDef while_ctxt = 2;
+  if (has_while_ctxt()) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      2, HasBitSetters::while_ctxt(this), output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.ControlFlowContextDef)
+}
+
+::google::protobuf::uint8* ControlFlowContextDef::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.ControlFlowContextDef)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // .tensorflow.CondContextDef cond_ctxt = 1;
+  if (has_cond_ctxt()) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        1, HasBitSetters::cond_ctxt(this), deterministic, target);
+  }
+
+  // .tensorflow.WhileContextDef while_ctxt = 2;
+  if (has_while_ctxt()) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        2, HasBitSetters::while_ctxt(this), deterministic, target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.ControlFlowContextDef)
+  return target;
+}
+
+size_t ControlFlowContextDef::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.ControlFlowContextDef)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  switch (ctxt_case()) {
+    // .tensorflow.CondContextDef cond_ctxt = 1;
+    case kCondCtxt: {
+      total_size += 1 +
+        ::google::protobuf::internal::WireFormatLite::MessageSize(
+          *ctxt_.cond_ctxt_);
+      break;
+    }
+    // .tensorflow.WhileContextDef while_ctxt = 2;
+    case kWhileCtxt: {
+      total_size += 1 +
+        ::google::protobuf::internal::WireFormatLite::MessageSize(
+          *ctxt_.while_ctxt_);
+      break;
+    }
+    case CTXT_NOT_SET: {
+      break;
+    }
+  }
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void ControlFlowContextDef::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.ControlFlowContextDef)
+  GOOGLE_DCHECK_NE(&from, this);
+  const ControlFlowContextDef* source =
+      ::google::protobuf::DynamicCastToGenerated<ControlFlowContextDef>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.ControlFlowContextDef)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.ControlFlowContextDef)
+    MergeFrom(*source);
+  }
+}
+
+void ControlFlowContextDef::MergeFrom(const ControlFlowContextDef& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.ControlFlowContextDef)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  switch (from.ctxt_case()) {
+    case kCondCtxt: {
+      mutable_cond_ctxt()->::tensorflow::CondContextDef::MergeFrom(from.cond_ctxt());
+      break;
+    }
+    case kWhileCtxt: {
+      mutable_while_ctxt()->::tensorflow::WhileContextDef::MergeFrom(from.while_ctxt());
+      break;
+    }
+    case CTXT_NOT_SET: {
+      break;
+    }
+  }
+}
+
+void ControlFlowContextDef::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.ControlFlowContextDef)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void ControlFlowContextDef::CopyFrom(const ControlFlowContextDef& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.ControlFlowContextDef)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool ControlFlowContextDef::IsInitialized() const {
+  return true;
+}
+
+void ControlFlowContextDef::Swap(ControlFlowContextDef* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    ControlFlowContextDef* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void ControlFlowContextDef::UnsafeArenaSwap(ControlFlowContextDef* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void ControlFlowContextDef::InternalSwap(ControlFlowContextDef* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  swap(ctxt_, other->ctxt_);
+  swap(_oneof_case_[0], other->_oneof_case_[0]);
+}
+
+::google::protobuf::Metadata ControlFlowContextDef::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2fcontrol_5fflow_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fprotobuf_2fcontrol_5fflow_2eproto[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+void CondContextDef::InitAsDefaultInstance() {
+  ::tensorflow::_CondContextDef_default_instance_._instance.get_mutable()->values_def_ = const_cast< ::tensorflow::ValuesDef*>(
+      ::tensorflow::ValuesDef::internal_default_instance());
+}
+class CondContextDef::HasBitSetters {
+ public:
+  static const ::tensorflow::ValuesDef& values_def(const CondContextDef* msg);
+};
+
+const ::tensorflow::ValuesDef&
+CondContextDef::HasBitSetters::values_def(const CondContextDef* msg) {
+  return *msg->values_def_;
+}
+void CondContextDef::unsafe_arena_set_allocated_values_def(
+    ::tensorflow::ValuesDef* values_def) {
+  if (GetArenaNoVirtual() == NULL) {
+    delete values_def_;
+  }
+  values_def_ = values_def;
+  if (values_def) {
+    
+  } else {
+    
+  }
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.CondContextDef.values_def)
+}
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int CondContextDef::kContextNameFieldNumber;
+const int CondContextDef::kPredNameFieldNumber;
+const int CondContextDef::kPivotNameFieldNumber;
+const int CondContextDef::kBranchFieldNumber;
+const int CondContextDef::kValuesDefFieldNumber;
+const int CondContextDef::kNestedContextsFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+CondContextDef::CondContextDef()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.CondContextDef)
+}
+CondContextDef::CondContextDef(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena),
+  nested_contexts_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.CondContextDef)
+}
+CondContextDef::CondContextDef(const CondContextDef& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL),
+      nested_contexts_(from.nested_contexts_) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  context_name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.context_name().size() > 0) {
+    context_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.context_name(),
+      GetArenaNoVirtual());
+  }
+  pred_name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.pred_name().size() > 0) {
+    pred_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.pred_name(),
+      GetArenaNoVirtual());
+  }
+  pivot_name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.pivot_name().size() > 0) {
+    pivot_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.pivot_name(),
+      GetArenaNoVirtual());
+  }
+  if (from.has_values_def()) {
+    values_def_ = new ::tensorflow::ValuesDef(*from.values_def_);
+  } else {
+    values_def_ = NULL;
+  }
+  branch_ = from.branch_;
+  // @@protoc_insertion_point(copy_constructor:tensorflow.CondContextDef)
+}
+
+void CondContextDef::SharedCtor() {
+  ::google::protobuf::internal::InitSCC(
+      &scc_info_CondContextDef_tensorflow_2fcore_2fprotobuf_2fcontrol_5fflow_2eproto.base);
+  context_name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  pred_name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  pivot_name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  ::memset(&values_def_, 0, static_cast<size_t>(
+      reinterpret_cast<char*>(&branch_) -
+      reinterpret_cast<char*>(&values_def_)) + sizeof(branch_));
+}
+
+CondContextDef::~CondContextDef() {
+  // @@protoc_insertion_point(destructor:tensorflow.CondContextDef)
+  SharedDtor();
+}
+
+void CondContextDef::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+  context_name_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  pred_name_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  pivot_name_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (this != internal_default_instance()) delete values_def_;
+}
+
+void CondContextDef::ArenaDtor(void* object) {
+  CondContextDef* _this = reinterpret_cast< CondContextDef* >(object);
+  (void)_this;
+}
+void CondContextDef::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void CondContextDef::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const CondContextDef& CondContextDef::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_CondContextDef_tensorflow_2fcore_2fprotobuf_2fcontrol_5fflow_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void CondContextDef::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.CondContextDef)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  nested_contexts_.Clear();
+  context_name_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+  pred_name_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+  pivot_name_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+  if (GetArenaNoVirtual() == NULL && values_def_ != NULL) {
+    delete values_def_;
+  }
+  values_def_ = NULL;
+  branch_ = 0;
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* CondContextDef::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<CondContextDef*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // string context_name = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 10) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("tensorflow.CondContextDef.context_name");
+        parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+        ::std::string* str = msg->mutable_context_name();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+        break;
+      }
+      // string pred_name = 2;
+      case 2: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 18) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("tensorflow.CondContextDef.pred_name");
+        parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+        ::std::string* str = msg->mutable_pred_name();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+        break;
+      }
+      // string pivot_name = 3;
+      case 3: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 26) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("tensorflow.CondContextDef.pivot_name");
+        parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+        ::std::string* str = msg->mutable_pivot_name();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+        break;
+      }
+      // int32 branch = 4;
+      case 4: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 32) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::google::protobuf::int32 value = val;
+        msg->set_branch(value);
+        break;
+      }
+      // .tensorflow.ValuesDef values_def = 5;
+      case 5: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 42) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        parser_till_end = ::tensorflow::ValuesDef::_InternalParse;
+        object = msg->mutable_values_def();
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                       ptr, newend);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+        ptr = newend;
+        break;
+      }
+      // repeated .tensorflow.ControlFlowContextDef nested_contexts = 6;
+      case 6: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 50) goto handle_unusual;
+        do {
+          ptr = Varint::Parse32Inline(ptr, &size);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          parser_till_end = ::tensorflow::ControlFlowContextDef::_InternalParse;
+          object = msg->add_nested_contexts();
+          if (size > end - ptr) goto len_delim_till_end;
+          auto newend = ptr + size;
+          bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                         ptr, newend);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          ptr = newend;
+          if (ptr >= end) break;
+        } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 50 && (ptr += 1));
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool CondContextDef::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.CondContextDef)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // string context_name = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (10 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_context_name()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->context_name().data(), static_cast<int>(this->context_name().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.CondContextDef.context_name"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // string pred_name = 2;
+      case 2: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (18 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_pred_name()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->pred_name().data(), static_cast<int>(this->pred_name().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.CondContextDef.pred_name"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // string pivot_name = 3;
+      case 3: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (26 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_pivot_name()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->pivot_name().data(), static_cast<int>(this->pivot_name().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.CondContextDef.pivot_name"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // int32 branch = 4;
+      case 4: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (32 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
+                 input, &branch_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // .tensorflow.ValuesDef values_def = 5;
+      case 5: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (42 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+               input, mutable_values_def()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // repeated .tensorflow.ControlFlowContextDef nested_contexts = 6;
+      case 6: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (50 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+                input, add_nested_contexts()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.CondContextDef)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.CondContextDef)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void CondContextDef::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.CondContextDef)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // string context_name = 1;
+  if (this->context_name().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->context_name().data(), static_cast<int>(this->context_name().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.CondContextDef.context_name");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      1, this->context_name(), output);
+  }
+
+  // string pred_name = 2;
+  if (this->pred_name().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->pred_name().data(), static_cast<int>(this->pred_name().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.CondContextDef.pred_name");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      2, this->pred_name(), output);
+  }
+
+  // string pivot_name = 3;
+  if (this->pivot_name().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->pivot_name().data(), static_cast<int>(this->pivot_name().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.CondContextDef.pivot_name");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      3, this->pivot_name(), output);
+  }
+
+  // int32 branch = 4;
+  if (this->branch() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt32(4, this->branch(), output);
+  }
+
+  // .tensorflow.ValuesDef values_def = 5;
+  if (this->has_values_def()) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      5, HasBitSetters::values_def(this), output);
+  }
+
+  // repeated .tensorflow.ControlFlowContextDef nested_contexts = 6;
+  for (unsigned int i = 0,
+      n = static_cast<unsigned int>(this->nested_contexts_size()); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      6,
+      this->nested_contexts(static_cast<int>(i)),
+      output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.CondContextDef)
+}
+
+::google::protobuf::uint8* CondContextDef::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.CondContextDef)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // string context_name = 1;
+  if (this->context_name().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->context_name().data(), static_cast<int>(this->context_name().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.CondContextDef.context_name");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        1, this->context_name(), target);
+  }
+
+  // string pred_name = 2;
+  if (this->pred_name().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->pred_name().data(), static_cast<int>(this->pred_name().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.CondContextDef.pred_name");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        2, this->pred_name(), target);
+  }
+
+  // string pivot_name = 3;
+  if (this->pivot_name().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->pivot_name().data(), static_cast<int>(this->pivot_name().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.CondContextDef.pivot_name");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        3, this->pivot_name(), target);
+  }
+
+  // int32 branch = 4;
+  if (this->branch() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt32ToArray(4, this->branch(), target);
+  }
+
+  // .tensorflow.ValuesDef values_def = 5;
+  if (this->has_values_def()) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        5, HasBitSetters::values_def(this), deterministic, target);
+  }
+
+  // repeated .tensorflow.ControlFlowContextDef nested_contexts = 6;
+  for (unsigned int i = 0,
+      n = static_cast<unsigned int>(this->nested_contexts_size()); i < n; i++) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        6, this->nested_contexts(static_cast<int>(i)), deterministic, target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.CondContextDef)
+  return target;
+}
+
+size_t CondContextDef::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.CondContextDef)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // repeated .tensorflow.ControlFlowContextDef nested_contexts = 6;
+  {
+    unsigned int count = static_cast<unsigned int>(this->nested_contexts_size());
+    total_size += 1UL * count;
+    for (unsigned int i = 0; i < count; i++) {
+      total_size +=
+        ::google::protobuf::internal::WireFormatLite::MessageSize(
+          this->nested_contexts(static_cast<int>(i)));
+    }
+  }
+
+  // string context_name = 1;
+  if (this->context_name().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->context_name());
+  }
+
+  // string pred_name = 2;
+  if (this->pred_name().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->pred_name());
+  }
+
+  // string pivot_name = 3;
+  if (this->pivot_name().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->pivot_name());
+  }
+
+  // .tensorflow.ValuesDef values_def = 5;
+  if (this->has_values_def()) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::MessageSize(
+        *values_def_);
+  }
+
+  // int32 branch = 4;
+  if (this->branch() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::Int32Size(
+        this->branch());
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void CondContextDef::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.CondContextDef)
+  GOOGLE_DCHECK_NE(&from, this);
+  const CondContextDef* source =
+      ::google::protobuf::DynamicCastToGenerated<CondContextDef>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.CondContextDef)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.CondContextDef)
+    MergeFrom(*source);
+  }
+}
+
+void CondContextDef::MergeFrom(const CondContextDef& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.CondContextDef)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  nested_contexts_.MergeFrom(from.nested_contexts_);
+  if (from.context_name().size() > 0) {
+    set_context_name(from.context_name());
+  }
+  if (from.pred_name().size() > 0) {
+    set_pred_name(from.pred_name());
+  }
+  if (from.pivot_name().size() > 0) {
+    set_pivot_name(from.pivot_name());
+  }
+  if (from.has_values_def()) {
+    mutable_values_def()->::tensorflow::ValuesDef::MergeFrom(from.values_def());
+  }
+  if (from.branch() != 0) {
+    set_branch(from.branch());
+  }
+}
+
+void CondContextDef::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.CondContextDef)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void CondContextDef::CopyFrom(const CondContextDef& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.CondContextDef)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool CondContextDef::IsInitialized() const {
+  return true;
+}
+
+void CondContextDef::Swap(CondContextDef* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    CondContextDef* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void CondContextDef::UnsafeArenaSwap(CondContextDef* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void CondContextDef::InternalSwap(CondContextDef* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  CastToBase(&nested_contexts_)->InternalSwap(CastToBase(&other->nested_contexts_));
+  context_name_.Swap(&other->context_name_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+  pred_name_.Swap(&other->pred_name_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+  pivot_name_.Swap(&other->pivot_name_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+  swap(values_def_, other->values_def_);
+  swap(branch_, other->branch_);
+}
+
+::google::protobuf::Metadata CondContextDef::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2fcontrol_5fflow_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fprotobuf_2fcontrol_5fflow_2eproto[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+void WhileContextDef::InitAsDefaultInstance() {
+  ::tensorflow::_WhileContextDef_default_instance_._instance.get_mutable()->values_def_ = const_cast< ::tensorflow::ValuesDef*>(
+      ::tensorflow::ValuesDef::internal_default_instance());
+}
+class WhileContextDef::HasBitSetters {
+ public:
+  static const ::tensorflow::ValuesDef& values_def(const WhileContextDef* msg);
+};
+
+const ::tensorflow::ValuesDef&
+WhileContextDef::HasBitSetters::values_def(const WhileContextDef* msg) {
+  return *msg->values_def_;
+}
+void WhileContextDef::unsafe_arena_set_allocated_values_def(
+    ::tensorflow::ValuesDef* values_def) {
+  if (GetArenaNoVirtual() == NULL) {
+    delete values_def_;
+  }
+  values_def_ = values_def;
+  if (values_def) {
+    
+  } else {
+    
+  }
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.WhileContextDef.values_def)
+}
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int WhileContextDef::kContextNameFieldNumber;
+const int WhileContextDef::kParallelIterationsFieldNumber;
+const int WhileContextDef::kBackPropFieldNumber;
+const int WhileContextDef::kSwapMemoryFieldNumber;
+const int WhileContextDef::kPivotNameFieldNumber;
+const int WhileContextDef::kPivotForPredNameFieldNumber;
+const int WhileContextDef::kPivotForBodyNameFieldNumber;
+const int WhileContextDef::kLoopExitNamesFieldNumber;
+const int WhileContextDef::kLoopEnterNamesFieldNumber;
+const int WhileContextDef::kValuesDefFieldNumber;
+const int WhileContextDef::kMaximumIterationsNameFieldNumber;
+const int WhileContextDef::kNestedContextsFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+WhileContextDef::WhileContextDef()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.WhileContextDef)
+}
+WhileContextDef::WhileContextDef(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena),
+  loop_exit_names_(arena),
+  loop_enter_names_(arena),
+  nested_contexts_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.WhileContextDef)
+}
+WhileContextDef::WhileContextDef(const WhileContextDef& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL),
+      loop_exit_names_(from.loop_exit_names_),
+      loop_enter_names_(from.loop_enter_names_),
+      nested_contexts_(from.nested_contexts_) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  context_name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.context_name().size() > 0) {
+    context_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.context_name(),
+      GetArenaNoVirtual());
+  }
+  pivot_name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.pivot_name().size() > 0) {
+    pivot_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.pivot_name(),
+      GetArenaNoVirtual());
+  }
+  pivot_for_pred_name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.pivot_for_pred_name().size() > 0) {
+    pivot_for_pred_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.pivot_for_pred_name(),
+      GetArenaNoVirtual());
+  }
+  pivot_for_body_name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.pivot_for_body_name().size() > 0) {
+    pivot_for_body_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.pivot_for_body_name(),
+      GetArenaNoVirtual());
+  }
+  maximum_iterations_name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.maximum_iterations_name().size() > 0) {
+    maximum_iterations_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.maximum_iterations_name(),
+      GetArenaNoVirtual());
+  }
+  if (from.has_values_def()) {
+    values_def_ = new ::tensorflow::ValuesDef(*from.values_def_);
+  } else {
+    values_def_ = NULL;
+  }
+  ::memcpy(&parallel_iterations_, &from.parallel_iterations_,
+    static_cast<size_t>(reinterpret_cast<char*>(&swap_memory_) -
+    reinterpret_cast<char*>(&parallel_iterations_)) + sizeof(swap_memory_));
+  // @@protoc_insertion_point(copy_constructor:tensorflow.WhileContextDef)
+}
+
+void WhileContextDef::SharedCtor() {
+  ::google::protobuf::internal::InitSCC(
+      &scc_info_CondContextDef_tensorflow_2fcore_2fprotobuf_2fcontrol_5fflow_2eproto.base);
+  context_name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  pivot_name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  pivot_for_pred_name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  pivot_for_body_name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  maximum_iterations_name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  ::memset(&values_def_, 0, static_cast<size_t>(
+      reinterpret_cast<char*>(&swap_memory_) -
+      reinterpret_cast<char*>(&values_def_)) + sizeof(swap_memory_));
+}
+
+WhileContextDef::~WhileContextDef() {
+  // @@protoc_insertion_point(destructor:tensorflow.WhileContextDef)
+  SharedDtor();
+}
+
+void WhileContextDef::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+  context_name_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  pivot_name_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  pivot_for_pred_name_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  pivot_for_body_name_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  maximum_iterations_name_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (this != internal_default_instance()) delete values_def_;
+}
+
+void WhileContextDef::ArenaDtor(void* object) {
+  WhileContextDef* _this = reinterpret_cast< WhileContextDef* >(object);
+  (void)_this;
+}
+void WhileContextDef::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void WhileContextDef::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const WhileContextDef& WhileContextDef::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_CondContextDef_tensorflow_2fcore_2fprotobuf_2fcontrol_5fflow_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void WhileContextDef::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.WhileContextDef)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  loop_exit_names_.Clear();
+  loop_enter_names_.Clear();
+  nested_contexts_.Clear();
+  context_name_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+  pivot_name_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+  pivot_for_pred_name_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+  pivot_for_body_name_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+  maximum_iterations_name_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+  if (GetArenaNoVirtual() == NULL && values_def_ != NULL) {
+    delete values_def_;
+  }
+  values_def_ = NULL;
+  ::memset(&parallel_iterations_, 0, static_cast<size_t>(
+      reinterpret_cast<char*>(&swap_memory_) -
+      reinterpret_cast<char*>(&parallel_iterations_)) + sizeof(swap_memory_));
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* WhileContextDef::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<WhileContextDef*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // string context_name = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 10) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("tensorflow.WhileContextDef.context_name");
+        parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+        ::std::string* str = msg->mutable_context_name();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+        break;
+      }
+      // int32 parallel_iterations = 2;
+      case 2: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 16) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::google::protobuf::int32 value = val;
+        msg->set_parallel_iterations(value);
+        break;
+      }
+      // bool back_prop = 3;
+      case 3: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 24) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        bool value = val;
+        msg->set_back_prop(value);
+        break;
+      }
+      // bool swap_memory = 4;
+      case 4: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 32) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        bool value = val;
+        msg->set_swap_memory(value);
+        break;
+      }
+      // string pivot_name = 5;
+      case 5: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 42) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("tensorflow.WhileContextDef.pivot_name");
+        parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+        ::std::string* str = msg->mutable_pivot_name();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+        break;
+      }
+      // string pivot_for_pred_name = 6;
+      case 6: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 50) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("tensorflow.WhileContextDef.pivot_for_pred_name");
+        parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+        ::std::string* str = msg->mutable_pivot_for_pred_name();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+        break;
+      }
+      // string pivot_for_body_name = 7;
+      case 7: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 58) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("tensorflow.WhileContextDef.pivot_for_body_name");
+        parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+        ::std::string* str = msg->mutable_pivot_for_body_name();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+        break;
+      }
+      // repeated string loop_exit_names = 8;
+      case 8: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 66) goto handle_unusual;
+        do {
+          ptr = Varint::Parse32Inline(ptr, &size);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          ctx->extra_parse_data().SetFieldName("tensorflow.WhileContextDef.loop_exit_names");
+          parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+          ::std::string* str = msg->add_loop_exit_names();
+          str->clear();
+          object = str;
+          if (size > end - ptr) goto len_delim_till_end;
+          auto newend = ptr + size;
+          if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+          if (ptr >= end) break;
+        } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 66 && (ptr += 1));
+        break;
+      }
+      // .tensorflow.ValuesDef values_def = 9;
+      case 9: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 74) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        parser_till_end = ::tensorflow::ValuesDef::_InternalParse;
+        object = msg->mutable_values_def();
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                       ptr, newend);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+        ptr = newend;
+        break;
+      }
+      // repeated string loop_enter_names = 10;
+      case 10: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 82) goto handle_unusual;
+        do {
+          ptr = Varint::Parse32Inline(ptr, &size);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          ctx->extra_parse_data().SetFieldName("tensorflow.WhileContextDef.loop_enter_names");
+          parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+          ::std::string* str = msg->add_loop_enter_names();
+          str->clear();
+          object = str;
+          if (size > end - ptr) goto len_delim_till_end;
+          auto newend = ptr + size;
+          if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+          if (ptr >= end) break;
+        } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 82 && (ptr += 1));
+        break;
+      }
+      // string maximum_iterations_name = 11;
+      case 11: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 90) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("tensorflow.WhileContextDef.maximum_iterations_name");
+        parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+        ::std::string* str = msg->mutable_maximum_iterations_name();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+        break;
+      }
+      // repeated .tensorflow.ControlFlowContextDef nested_contexts = 12;
+      case 12: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 98) goto handle_unusual;
+        do {
+          ptr = Varint::Parse32Inline(ptr, &size);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          parser_till_end = ::tensorflow::ControlFlowContextDef::_InternalParse;
+          object = msg->add_nested_contexts();
+          if (size > end - ptr) goto len_delim_till_end;
+          auto newend = ptr + size;
+          bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                         ptr, newend);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          ptr = newend;
+          if (ptr >= end) break;
+        } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 98 && (ptr += 1));
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool WhileContextDef::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.WhileContextDef)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // string context_name = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (10 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_context_name()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->context_name().data(), static_cast<int>(this->context_name().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.WhileContextDef.context_name"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // int32 parallel_iterations = 2;
+      case 2: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (16 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
+                 input, &parallel_iterations_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // bool back_prop = 3;
+      case 3: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (24 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
+                 input, &back_prop_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // bool swap_memory = 4;
+      case 4: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (32 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
+                 input, &swap_memory_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // string pivot_name = 5;
+      case 5: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (42 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_pivot_name()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->pivot_name().data(), static_cast<int>(this->pivot_name().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.WhileContextDef.pivot_name"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // string pivot_for_pred_name = 6;
+      case 6: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (50 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_pivot_for_pred_name()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->pivot_for_pred_name().data(), static_cast<int>(this->pivot_for_pred_name().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.WhileContextDef.pivot_for_pred_name"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // string pivot_for_body_name = 7;
+      case 7: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (58 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_pivot_for_body_name()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->pivot_for_body_name().data(), static_cast<int>(this->pivot_for_body_name().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.WhileContextDef.pivot_for_body_name"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // repeated string loop_exit_names = 8;
+      case 8: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (66 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->add_loop_exit_names()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->loop_exit_names(this->loop_exit_names_size() - 1).data(),
+            static_cast<int>(this->loop_exit_names(this->loop_exit_names_size() - 1).length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.WhileContextDef.loop_exit_names"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // .tensorflow.ValuesDef values_def = 9;
+      case 9: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (74 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+               input, mutable_values_def()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // repeated string loop_enter_names = 10;
+      case 10: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (82 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->add_loop_enter_names()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->loop_enter_names(this->loop_enter_names_size() - 1).data(),
+            static_cast<int>(this->loop_enter_names(this->loop_enter_names_size() - 1).length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.WhileContextDef.loop_enter_names"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // string maximum_iterations_name = 11;
+      case 11: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (90 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_maximum_iterations_name()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->maximum_iterations_name().data(), static_cast<int>(this->maximum_iterations_name().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.WhileContextDef.maximum_iterations_name"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // repeated .tensorflow.ControlFlowContextDef nested_contexts = 12;
+      case 12: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (98 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+                input, add_nested_contexts()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.WhileContextDef)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.WhileContextDef)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void WhileContextDef::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.WhileContextDef)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // string context_name = 1;
+  if (this->context_name().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->context_name().data(), static_cast<int>(this->context_name().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.WhileContextDef.context_name");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      1, this->context_name(), output);
+  }
+
+  // int32 parallel_iterations = 2;
+  if (this->parallel_iterations() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt32(2, this->parallel_iterations(), output);
+  }
+
+  // bool back_prop = 3;
+  if (this->back_prop() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteBool(3, this->back_prop(), output);
+  }
+
+  // bool swap_memory = 4;
+  if (this->swap_memory() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteBool(4, this->swap_memory(), output);
+  }
+
+  // string pivot_name = 5;
+  if (this->pivot_name().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->pivot_name().data(), static_cast<int>(this->pivot_name().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.WhileContextDef.pivot_name");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      5, this->pivot_name(), output);
+  }
+
+  // string pivot_for_pred_name = 6;
+  if (this->pivot_for_pred_name().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->pivot_for_pred_name().data(), static_cast<int>(this->pivot_for_pred_name().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.WhileContextDef.pivot_for_pred_name");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      6, this->pivot_for_pred_name(), output);
+  }
+
+  // string pivot_for_body_name = 7;
+  if (this->pivot_for_body_name().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->pivot_for_body_name().data(), static_cast<int>(this->pivot_for_body_name().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.WhileContextDef.pivot_for_body_name");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      7, this->pivot_for_body_name(), output);
+  }
+
+  // repeated string loop_exit_names = 8;
+  for (int i = 0, n = this->loop_exit_names_size(); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->loop_exit_names(i).data(), static_cast<int>(this->loop_exit_names(i).length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.WhileContextDef.loop_exit_names");
+    ::google::protobuf::internal::WireFormatLite::WriteString(
+      8, this->loop_exit_names(i), output);
+  }
+
+  // .tensorflow.ValuesDef values_def = 9;
+  if (this->has_values_def()) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      9, HasBitSetters::values_def(this), output);
+  }
+
+  // repeated string loop_enter_names = 10;
+  for (int i = 0, n = this->loop_enter_names_size(); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->loop_enter_names(i).data(), static_cast<int>(this->loop_enter_names(i).length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.WhileContextDef.loop_enter_names");
+    ::google::protobuf::internal::WireFormatLite::WriteString(
+      10, this->loop_enter_names(i), output);
+  }
+
+  // string maximum_iterations_name = 11;
+  if (this->maximum_iterations_name().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->maximum_iterations_name().data(), static_cast<int>(this->maximum_iterations_name().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.WhileContextDef.maximum_iterations_name");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      11, this->maximum_iterations_name(), output);
+  }
+
+  // repeated .tensorflow.ControlFlowContextDef nested_contexts = 12;
+  for (unsigned int i = 0,
+      n = static_cast<unsigned int>(this->nested_contexts_size()); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      12,
+      this->nested_contexts(static_cast<int>(i)),
+      output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.WhileContextDef)
+}
+
+::google::protobuf::uint8* WhileContextDef::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.WhileContextDef)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // string context_name = 1;
+  if (this->context_name().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->context_name().data(), static_cast<int>(this->context_name().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.WhileContextDef.context_name");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        1, this->context_name(), target);
+  }
+
+  // int32 parallel_iterations = 2;
+  if (this->parallel_iterations() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt32ToArray(2, this->parallel_iterations(), target);
+  }
+
+  // bool back_prop = 3;
+  if (this->back_prop() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(3, this->back_prop(), target);
+  }
+
+  // bool swap_memory = 4;
+  if (this->swap_memory() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(4, this->swap_memory(), target);
+  }
+
+  // string pivot_name = 5;
+  if (this->pivot_name().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->pivot_name().data(), static_cast<int>(this->pivot_name().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.WhileContextDef.pivot_name");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        5, this->pivot_name(), target);
+  }
+
+  // string pivot_for_pred_name = 6;
+  if (this->pivot_for_pred_name().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->pivot_for_pred_name().data(), static_cast<int>(this->pivot_for_pred_name().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.WhileContextDef.pivot_for_pred_name");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        6, this->pivot_for_pred_name(), target);
+  }
+
+  // string pivot_for_body_name = 7;
+  if (this->pivot_for_body_name().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->pivot_for_body_name().data(), static_cast<int>(this->pivot_for_body_name().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.WhileContextDef.pivot_for_body_name");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        7, this->pivot_for_body_name(), target);
+  }
+
+  // repeated string loop_exit_names = 8;
+  for (int i = 0, n = this->loop_exit_names_size(); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->loop_exit_names(i).data(), static_cast<int>(this->loop_exit_names(i).length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.WhileContextDef.loop_exit_names");
+    target = ::google::protobuf::internal::WireFormatLite::
+      WriteStringToArray(8, this->loop_exit_names(i), target);
+  }
+
+  // .tensorflow.ValuesDef values_def = 9;
+  if (this->has_values_def()) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        9, HasBitSetters::values_def(this), deterministic, target);
+  }
+
+  // repeated string loop_enter_names = 10;
+  for (int i = 0, n = this->loop_enter_names_size(); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->loop_enter_names(i).data(), static_cast<int>(this->loop_enter_names(i).length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.WhileContextDef.loop_enter_names");
+    target = ::google::protobuf::internal::WireFormatLite::
+      WriteStringToArray(10, this->loop_enter_names(i), target);
+  }
+
+  // string maximum_iterations_name = 11;
+  if (this->maximum_iterations_name().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->maximum_iterations_name().data(), static_cast<int>(this->maximum_iterations_name().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.WhileContextDef.maximum_iterations_name");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        11, this->maximum_iterations_name(), target);
+  }
+
+  // repeated .tensorflow.ControlFlowContextDef nested_contexts = 12;
+  for (unsigned int i = 0,
+      n = static_cast<unsigned int>(this->nested_contexts_size()); i < n; i++) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        12, this->nested_contexts(static_cast<int>(i)), deterministic, target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.WhileContextDef)
+  return target;
+}
+
+size_t WhileContextDef::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.WhileContextDef)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // repeated string loop_exit_names = 8;
+  total_size += 1 *
+      ::google::protobuf::internal::FromIntSize(this->loop_exit_names_size());
+  for (int i = 0, n = this->loop_exit_names_size(); i < n; i++) {
+    total_size += ::google::protobuf::internal::WireFormatLite::StringSize(
+      this->loop_exit_names(i));
+  }
+
+  // repeated string loop_enter_names = 10;
+  total_size += 1 *
+      ::google::protobuf::internal::FromIntSize(this->loop_enter_names_size());
+  for (int i = 0, n = this->loop_enter_names_size(); i < n; i++) {
+    total_size += ::google::protobuf::internal::WireFormatLite::StringSize(
+      this->loop_enter_names(i));
+  }
+
+  // repeated .tensorflow.ControlFlowContextDef nested_contexts = 12;
+  {
+    unsigned int count = static_cast<unsigned int>(this->nested_contexts_size());
+    total_size += 1UL * count;
+    for (unsigned int i = 0; i < count; i++) {
+      total_size +=
+        ::google::protobuf::internal::WireFormatLite::MessageSize(
+          this->nested_contexts(static_cast<int>(i)));
+    }
+  }
+
+  // string context_name = 1;
+  if (this->context_name().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->context_name());
+  }
+
+  // string pivot_name = 5;
+  if (this->pivot_name().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->pivot_name());
+  }
+
+  // string pivot_for_pred_name = 6;
+  if (this->pivot_for_pred_name().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->pivot_for_pred_name());
+  }
+
+  // string pivot_for_body_name = 7;
+  if (this->pivot_for_body_name().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->pivot_for_body_name());
+  }
+
+  // string maximum_iterations_name = 11;
+  if (this->maximum_iterations_name().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->maximum_iterations_name());
+  }
+
+  // .tensorflow.ValuesDef values_def = 9;
+  if (this->has_values_def()) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::MessageSize(
+        *values_def_);
+  }
+
+  // int32 parallel_iterations = 2;
+  if (this->parallel_iterations() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::Int32Size(
+        this->parallel_iterations());
+  }
+
+  // bool back_prop = 3;
+  if (this->back_prop() != 0) {
+    total_size += 1 + 1;
+  }
+
+  // bool swap_memory = 4;
+  if (this->swap_memory() != 0) {
+    total_size += 1 + 1;
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void WhileContextDef::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.WhileContextDef)
+  GOOGLE_DCHECK_NE(&from, this);
+  const WhileContextDef* source =
+      ::google::protobuf::DynamicCastToGenerated<WhileContextDef>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.WhileContextDef)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.WhileContextDef)
+    MergeFrom(*source);
+  }
+}
+
+void WhileContextDef::MergeFrom(const WhileContextDef& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.WhileContextDef)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  loop_exit_names_.MergeFrom(from.loop_exit_names_);
+  loop_enter_names_.MergeFrom(from.loop_enter_names_);
+  nested_contexts_.MergeFrom(from.nested_contexts_);
+  if (from.context_name().size() > 0) {
+    set_context_name(from.context_name());
+  }
+  if (from.pivot_name().size() > 0) {
+    set_pivot_name(from.pivot_name());
+  }
+  if (from.pivot_for_pred_name().size() > 0) {
+    set_pivot_for_pred_name(from.pivot_for_pred_name());
+  }
+  if (from.pivot_for_body_name().size() > 0) {
+    set_pivot_for_body_name(from.pivot_for_body_name());
+  }
+  if (from.maximum_iterations_name().size() > 0) {
+    set_maximum_iterations_name(from.maximum_iterations_name());
+  }
+  if (from.has_values_def()) {
+    mutable_values_def()->::tensorflow::ValuesDef::MergeFrom(from.values_def());
+  }
+  if (from.parallel_iterations() != 0) {
+    set_parallel_iterations(from.parallel_iterations());
+  }
+  if (from.back_prop() != 0) {
+    set_back_prop(from.back_prop());
+  }
+  if (from.swap_memory() != 0) {
+    set_swap_memory(from.swap_memory());
+  }
+}
+
+void WhileContextDef::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.WhileContextDef)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void WhileContextDef::CopyFrom(const WhileContextDef& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.WhileContextDef)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool WhileContextDef::IsInitialized() const {
+  return true;
+}
+
+void WhileContextDef::Swap(WhileContextDef* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    WhileContextDef* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void WhileContextDef::UnsafeArenaSwap(WhileContextDef* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void WhileContextDef::InternalSwap(WhileContextDef* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  loop_exit_names_.InternalSwap(CastToBase(&other->loop_exit_names_));
+  loop_enter_names_.InternalSwap(CastToBase(&other->loop_enter_names_));
+  CastToBase(&nested_contexts_)->InternalSwap(CastToBase(&other->nested_contexts_));
+  context_name_.Swap(&other->context_name_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+  pivot_name_.Swap(&other->pivot_name_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+  pivot_for_pred_name_.Swap(&other->pivot_for_pred_name_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+  pivot_for_body_name_.Swap(&other->pivot_for_body_name_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+  maximum_iterations_name_.Swap(&other->maximum_iterations_name_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+  swap(values_def_, other->values_def_);
+  swap(parallel_iterations_, other->parallel_iterations_);
+  swap(back_prop_, other->back_prop_);
+  swap(swap_memory_, other->swap_memory_);
+}
+
+::google::protobuf::Metadata WhileContextDef::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2fcontrol_5fflow_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fprotobuf_2fcontrol_5fflow_2eproto[kIndexInFileMessages];
+}
+
+
+// @@protoc_insertion_point(namespace_scope)
+}  // namespace tensorflow
+namespace google {
+namespace protobuf {
+template<> PROTOBUF_NOINLINE ::tensorflow::ValuesDef_ExternalValuesEntry_DoNotUse* Arena::CreateMaybeMessage< ::tensorflow::ValuesDef_ExternalValuesEntry_DoNotUse >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::ValuesDef_ExternalValuesEntry_DoNotUse >(arena);
+}
+template<> PROTOBUF_NOINLINE ::tensorflow::ValuesDef* Arena::CreateMaybeMessage< ::tensorflow::ValuesDef >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::ValuesDef >(arena);
+}
+template<> PROTOBUF_NOINLINE ::tensorflow::ControlFlowContextDef* Arena::CreateMaybeMessage< ::tensorflow::ControlFlowContextDef >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::ControlFlowContextDef >(arena);
+}
+template<> PROTOBUF_NOINLINE ::tensorflow::CondContextDef* Arena::CreateMaybeMessage< ::tensorflow::CondContextDef >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::CondContextDef >(arena);
+}
+template<> PROTOBUF_NOINLINE ::tensorflow::WhileContextDef* Arena::CreateMaybeMessage< ::tensorflow::WhileContextDef >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::WhileContextDef >(arena);
+}
+}  // namespace protobuf
+}  // namespace google
+
+// @@protoc_insertion_point(global_scope)
+#include <google/protobuf/port_undef.inc>
diff --git a/tensorflow/core/protobuf/control_flow.pb.h b/tensorflow/core/protobuf/control_flow.pb.h
new file mode 100644 (file)
index 0000000..c1d20e0
--- /dev/null
@@ -0,0 +1,2231 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: tensorflow/core/protobuf/control_flow.proto
+
+#ifndef PROTOBUF_INCLUDED_tensorflow_2fcore_2fprotobuf_2fcontrol_5fflow_2eproto
+#define PROTOBUF_INCLUDED_tensorflow_2fcore_2fprotobuf_2fcontrol_5fflow_2eproto
+
+#include <limits>
+#include <string>
+
+#include <google/protobuf/port_def.inc>
+#if PROTOBUF_VERSION < 3006001
+#error This file was generated by a newer version of protoc which is
+#error incompatible with your Protocol Buffer headers. Please update
+#error your headers.
+#endif
+#if 3006001 < PROTOBUF_MIN_PROTOC_VERSION
+#error This file was generated by an older version of protoc which is
+#error incompatible with your Protocol Buffer headers. Please
+#error regenerate this file with a newer version of protoc.
+#endif
+
+#include <google/protobuf/port_undef.inc>
+#include <google/protobuf/io/coded_stream.h>
+#include <google/protobuf/arena.h>
+#include <google/protobuf/arenastring.h>
+#include <google/protobuf/generated_message_table_driven.h>
+#include <google/protobuf/generated_message_util.h>
+#include <google/protobuf/inlined_string_field.h>
+#include <google/protobuf/metadata.h>
+#include <google/protobuf/message.h>
+#include <google/protobuf/repeated_field.h>  // IWYU pragma: export
+#include <google/protobuf/extension_set.h>  // IWYU pragma: export
+#include <google/protobuf/map.h>  // IWYU pragma: export
+#include <google/protobuf/map_entry.h>
+#include <google/protobuf/map_field_inl.h>
+#include <google/protobuf/unknown_field_set.h>
+// @@protoc_insertion_point(includes)
+#include <google/protobuf/port_def.inc>
+#define PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fprotobuf_2fcontrol_5fflow_2eproto
+
+// Internal implementation detail -- do not use these members.
+struct TableStruct_tensorflow_2fcore_2fprotobuf_2fcontrol_5fflow_2eproto {
+  static const ::google::protobuf::internal::ParseTableField entries[]
+    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
+  static const ::google::protobuf::internal::AuxillaryParseTableField aux[]
+    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
+  static const ::google::protobuf::internal::ParseTable schema[5]
+    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
+  static const ::google::protobuf::internal::FieldMetadata field_metadata[];
+  static const ::google::protobuf::internal::SerializationTable serialization_table[];
+  static const ::google::protobuf::uint32 offsets[];
+};
+void AddDescriptors_tensorflow_2fcore_2fprotobuf_2fcontrol_5fflow_2eproto();
+namespace tensorflow {
+class CondContextDef;
+class CondContextDefDefaultTypeInternal;
+extern CondContextDefDefaultTypeInternal _CondContextDef_default_instance_;
+class ControlFlowContextDef;
+class ControlFlowContextDefDefaultTypeInternal;
+extern ControlFlowContextDefDefaultTypeInternal _ControlFlowContextDef_default_instance_;
+class ValuesDef;
+class ValuesDefDefaultTypeInternal;
+extern ValuesDefDefaultTypeInternal _ValuesDef_default_instance_;
+class ValuesDef_ExternalValuesEntry_DoNotUse;
+class ValuesDef_ExternalValuesEntry_DoNotUseDefaultTypeInternal;
+extern ValuesDef_ExternalValuesEntry_DoNotUseDefaultTypeInternal _ValuesDef_ExternalValuesEntry_DoNotUse_default_instance_;
+class WhileContextDef;
+class WhileContextDefDefaultTypeInternal;
+extern WhileContextDefDefaultTypeInternal _WhileContextDef_default_instance_;
+}  // namespace tensorflow
+namespace google {
+namespace protobuf {
+template<> ::tensorflow::CondContextDef* Arena::CreateMaybeMessage<::tensorflow::CondContextDef>(Arena*);
+template<> ::tensorflow::ControlFlowContextDef* Arena::CreateMaybeMessage<::tensorflow::ControlFlowContextDef>(Arena*);
+template<> ::tensorflow::ValuesDef* Arena::CreateMaybeMessage<::tensorflow::ValuesDef>(Arena*);
+template<> ::tensorflow::ValuesDef_ExternalValuesEntry_DoNotUse* Arena::CreateMaybeMessage<::tensorflow::ValuesDef_ExternalValuesEntry_DoNotUse>(Arena*);
+template<> ::tensorflow::WhileContextDef* Arena::CreateMaybeMessage<::tensorflow::WhileContextDef>(Arena*);
+}  // namespace protobuf
+}  // namespace google
+namespace tensorflow {
+
+// ===================================================================
+
+class ValuesDef_ExternalValuesEntry_DoNotUse : public ::google::protobuf::internal::MapEntry<ValuesDef_ExternalValuesEntry_DoNotUse, 
+    ::std::string, ::std::string,
+    ::google::protobuf::internal::WireFormatLite::TYPE_STRING,
+    ::google::protobuf::internal::WireFormatLite::TYPE_STRING,
+    0 > {
+public:
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+static bool _ParseMap(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  typedef ::google::protobuf::internal::MapEntry<ValuesDef_ExternalValuesEntry_DoNotUse, 
+    ::std::string, ::std::string,
+    ::google::protobuf::internal::WireFormatLite::TYPE_STRING,
+    ::google::protobuf::internal::WireFormatLite::TYPE_STRING,
+    0 > SuperType;
+  ValuesDef_ExternalValuesEntry_DoNotUse();
+  ValuesDef_ExternalValuesEntry_DoNotUse(::google::protobuf::Arena* arena);
+  void MergeFrom(const ValuesDef_ExternalValuesEntry_DoNotUse& other);
+  static const ValuesDef_ExternalValuesEntry_DoNotUse* internal_default_instance() { return reinterpret_cast<const ValuesDef_ExternalValuesEntry_DoNotUse*>(&_ValuesDef_ExternalValuesEntry_DoNotUse_default_instance_); }
+  void MergeFrom(const ::google::protobuf::Message& other) final;
+  ::google::protobuf::Metadata GetMetadata() const;
+};
+
+// -------------------------------------------------------------------
+
+class ValuesDef : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.ValuesDef) */ {
+ public:
+  ValuesDef();
+  virtual ~ValuesDef();
+
+  ValuesDef(const ValuesDef& from);
+
+  inline ValuesDef& operator=(const ValuesDef& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  ValuesDef(ValuesDef&& from) noexcept
+    : ValuesDef() {
+    *this = ::std::move(from);
+  }
+
+  inline ValuesDef& operator=(ValuesDef&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const ValuesDef& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const ValuesDef* internal_default_instance() {
+    return reinterpret_cast<const ValuesDef*>(
+               &_ValuesDef_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    1;
+
+  void UnsafeArenaSwap(ValuesDef* other);
+  void Swap(ValuesDef* other);
+  friend void swap(ValuesDef& a, ValuesDef& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline ValuesDef* New() const final {
+    return CreateMaybeMessage<ValuesDef>(NULL);
+  }
+
+  ValuesDef* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<ValuesDef>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const ValuesDef& from);
+  void MergeFrom(const ValuesDef& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(ValuesDef* other);
+  protected:
+  explicit ValuesDef(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+
+  // accessors -------------------------------------------------------
+
+  // repeated string values = 1;
+  int values_size() const;
+  void clear_values();
+  static const int kValuesFieldNumber = 1;
+  const ::std::string& values(int index) const;
+  ::std::string* mutable_values(int index);
+  void set_values(int index, const ::std::string& value);
+  #if LANG_CXX11
+  void set_values(int index, ::std::string&& value);
+  #endif
+  void set_values(int index, const char* value);
+  void set_values(int index, const char* value, size_t size);
+  ::std::string* add_values();
+  void add_values(const ::std::string& value);
+  #if LANG_CXX11
+  void add_values(::std::string&& value);
+  #endif
+  void add_values(const char* value);
+  void add_values(const char* value, size_t size);
+  const ::google::protobuf::RepeatedPtrField<::std::string>& values() const;
+  ::google::protobuf::RepeatedPtrField<::std::string>* mutable_values();
+
+  // map<string, string> external_values = 2;
+  int external_values_size() const;
+  void clear_external_values();
+  static const int kExternalValuesFieldNumber = 2;
+  const ::google::protobuf::Map< ::std::string, ::std::string >&
+      external_values() const;
+  ::google::protobuf::Map< ::std::string, ::std::string >*
+      mutable_external_values();
+
+  // @@protoc_insertion_point(class_scope:tensorflow.ValuesDef)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  ::google::protobuf::RepeatedPtrField<::std::string> values_;
+  ::google::protobuf::internal::MapField<
+      ValuesDef_ExternalValuesEntry_DoNotUse,
+      ::std::string, ::std::string,
+      ::google::protobuf::internal::WireFormatLite::TYPE_STRING,
+      ::google::protobuf::internal::WireFormatLite::TYPE_STRING,
+      0 > external_values_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fprotobuf_2fcontrol_5fflow_2eproto;
+};
+// -------------------------------------------------------------------
+
+class ControlFlowContextDef : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.ControlFlowContextDef) */ {
+ public:
+  ControlFlowContextDef();
+  virtual ~ControlFlowContextDef();
+
+  ControlFlowContextDef(const ControlFlowContextDef& from);
+
+  inline ControlFlowContextDef& operator=(const ControlFlowContextDef& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  ControlFlowContextDef(ControlFlowContextDef&& from) noexcept
+    : ControlFlowContextDef() {
+    *this = ::std::move(from);
+  }
+
+  inline ControlFlowContextDef& operator=(ControlFlowContextDef&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const ControlFlowContextDef& default_instance();
+
+  enum CtxtCase {
+    kCondCtxt = 1,
+    kWhileCtxt = 2,
+    CTXT_NOT_SET = 0,
+  };
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const ControlFlowContextDef* internal_default_instance() {
+    return reinterpret_cast<const ControlFlowContextDef*>(
+               &_ControlFlowContextDef_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    2;
+
+  void UnsafeArenaSwap(ControlFlowContextDef* other);
+  void Swap(ControlFlowContextDef* other);
+  friend void swap(ControlFlowContextDef& a, ControlFlowContextDef& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline ControlFlowContextDef* New() const final {
+    return CreateMaybeMessage<ControlFlowContextDef>(NULL);
+  }
+
+  ControlFlowContextDef* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<ControlFlowContextDef>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const ControlFlowContextDef& from);
+  void MergeFrom(const ControlFlowContextDef& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(ControlFlowContextDef* other);
+  protected:
+  explicit ControlFlowContextDef(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // .tensorflow.CondContextDef cond_ctxt = 1;
+  bool has_cond_ctxt() const;
+  void clear_cond_ctxt();
+  static const int kCondCtxtFieldNumber = 1;
+  const ::tensorflow::CondContextDef& cond_ctxt() const;
+  ::tensorflow::CondContextDef* release_cond_ctxt();
+  ::tensorflow::CondContextDef* mutable_cond_ctxt();
+  void set_allocated_cond_ctxt(::tensorflow::CondContextDef* cond_ctxt);
+  void unsafe_arena_set_allocated_cond_ctxt(
+      ::tensorflow::CondContextDef* cond_ctxt);
+  ::tensorflow::CondContextDef* unsafe_arena_release_cond_ctxt();
+
+  // .tensorflow.WhileContextDef while_ctxt = 2;
+  bool has_while_ctxt() const;
+  void clear_while_ctxt();
+  static const int kWhileCtxtFieldNumber = 2;
+  const ::tensorflow::WhileContextDef& while_ctxt() const;
+  ::tensorflow::WhileContextDef* release_while_ctxt();
+  ::tensorflow::WhileContextDef* mutable_while_ctxt();
+  void set_allocated_while_ctxt(::tensorflow::WhileContextDef* while_ctxt);
+  void unsafe_arena_set_allocated_while_ctxt(
+      ::tensorflow::WhileContextDef* while_ctxt);
+  ::tensorflow::WhileContextDef* unsafe_arena_release_while_ctxt();
+
+  void clear_ctxt();
+  CtxtCase ctxt_case() const;
+  // @@protoc_insertion_point(class_scope:tensorflow.ControlFlowContextDef)
+ private:
+  class HasBitSetters;
+  void set_has_cond_ctxt();
+  void set_has_while_ctxt();
+
+  inline bool has_ctxt() const;
+  inline void clear_has_ctxt();
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  union CtxtUnion {
+    CtxtUnion() {}
+    ::tensorflow::CondContextDef* cond_ctxt_;
+    ::tensorflow::WhileContextDef* while_ctxt_;
+  } ctxt_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  ::google::protobuf::uint32 _oneof_case_[1];
+
+  friend struct ::TableStruct_tensorflow_2fcore_2fprotobuf_2fcontrol_5fflow_2eproto;
+};
+// -------------------------------------------------------------------
+
+class CondContextDef : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.CondContextDef) */ {
+ public:
+  CondContextDef();
+  virtual ~CondContextDef();
+
+  CondContextDef(const CondContextDef& from);
+
+  inline CondContextDef& operator=(const CondContextDef& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  CondContextDef(CondContextDef&& from) noexcept
+    : CondContextDef() {
+    *this = ::std::move(from);
+  }
+
+  inline CondContextDef& operator=(CondContextDef&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const CondContextDef& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const CondContextDef* internal_default_instance() {
+    return reinterpret_cast<const CondContextDef*>(
+               &_CondContextDef_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    3;
+
+  void UnsafeArenaSwap(CondContextDef* other);
+  void Swap(CondContextDef* other);
+  friend void swap(CondContextDef& a, CondContextDef& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline CondContextDef* New() const final {
+    return CreateMaybeMessage<CondContextDef>(NULL);
+  }
+
+  CondContextDef* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<CondContextDef>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const CondContextDef& from);
+  void MergeFrom(const CondContextDef& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(CondContextDef* other);
+  protected:
+  explicit CondContextDef(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // repeated .tensorflow.ControlFlowContextDef nested_contexts = 6;
+  int nested_contexts_size() const;
+  void clear_nested_contexts();
+  static const int kNestedContextsFieldNumber = 6;
+  ::tensorflow::ControlFlowContextDef* mutable_nested_contexts(int index);
+  ::google::protobuf::RepeatedPtrField< ::tensorflow::ControlFlowContextDef >*
+      mutable_nested_contexts();
+  const ::tensorflow::ControlFlowContextDef& nested_contexts(int index) const;
+  ::tensorflow::ControlFlowContextDef* add_nested_contexts();
+  const ::google::protobuf::RepeatedPtrField< ::tensorflow::ControlFlowContextDef >&
+      nested_contexts() const;
+
+  // string context_name = 1;
+  void clear_context_name();
+  static const int kContextNameFieldNumber = 1;
+  const ::std::string& context_name() const;
+  void set_context_name(const ::std::string& value);
+  #if LANG_CXX11
+  void set_context_name(::std::string&& value);
+  #endif
+  void set_context_name(const char* value);
+  void set_context_name(const char* value, size_t size);
+  ::std::string* mutable_context_name();
+  ::std::string* release_context_name();
+  void set_allocated_context_name(::std::string* context_name);
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  ::std::string* unsafe_arena_release_context_name();
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  void unsafe_arena_set_allocated_context_name(
+      ::std::string* context_name);
+
+  // string pred_name = 2;
+  void clear_pred_name();
+  static const int kPredNameFieldNumber = 2;
+  const ::std::string& pred_name() const;
+  void set_pred_name(const ::std::string& value);
+  #if LANG_CXX11
+  void set_pred_name(::std::string&& value);
+  #endif
+  void set_pred_name(const char* value);
+  void set_pred_name(const char* value, size_t size);
+  ::std::string* mutable_pred_name();
+  ::std::string* release_pred_name();
+  void set_allocated_pred_name(::std::string* pred_name);
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  ::std::string* unsafe_arena_release_pred_name();
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  void unsafe_arena_set_allocated_pred_name(
+      ::std::string* pred_name);
+
+  // string pivot_name = 3;
+  void clear_pivot_name();
+  static const int kPivotNameFieldNumber = 3;
+  const ::std::string& pivot_name() const;
+  void set_pivot_name(const ::std::string& value);
+  #if LANG_CXX11
+  void set_pivot_name(::std::string&& value);
+  #endif
+  void set_pivot_name(const char* value);
+  void set_pivot_name(const char* value, size_t size);
+  ::std::string* mutable_pivot_name();
+  ::std::string* release_pivot_name();
+  void set_allocated_pivot_name(::std::string* pivot_name);
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  ::std::string* unsafe_arena_release_pivot_name();
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  void unsafe_arena_set_allocated_pivot_name(
+      ::std::string* pivot_name);
+
+  // .tensorflow.ValuesDef values_def = 5;
+  bool has_values_def() const;
+  void clear_values_def();
+  static const int kValuesDefFieldNumber = 5;
+  const ::tensorflow::ValuesDef& values_def() const;
+  ::tensorflow::ValuesDef* release_values_def();
+  ::tensorflow::ValuesDef* mutable_values_def();
+  void set_allocated_values_def(::tensorflow::ValuesDef* values_def);
+  void unsafe_arena_set_allocated_values_def(
+      ::tensorflow::ValuesDef* values_def);
+  ::tensorflow::ValuesDef* unsafe_arena_release_values_def();
+
+  // int32 branch = 4;
+  void clear_branch();
+  static const int kBranchFieldNumber = 4;
+  ::google::protobuf::int32 branch() const;
+  void set_branch(::google::protobuf::int32 value);
+
+  // @@protoc_insertion_point(class_scope:tensorflow.CondContextDef)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  ::google::protobuf::RepeatedPtrField< ::tensorflow::ControlFlowContextDef > nested_contexts_;
+  ::google::protobuf::internal::ArenaStringPtr context_name_;
+  ::google::protobuf::internal::ArenaStringPtr pred_name_;
+  ::google::protobuf::internal::ArenaStringPtr pivot_name_;
+  ::tensorflow::ValuesDef* values_def_;
+  ::google::protobuf::int32 branch_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fprotobuf_2fcontrol_5fflow_2eproto;
+};
+// -------------------------------------------------------------------
+
+class WhileContextDef : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.WhileContextDef) */ {
+ public:
+  WhileContextDef();
+  virtual ~WhileContextDef();
+
+  WhileContextDef(const WhileContextDef& from);
+
+  inline WhileContextDef& operator=(const WhileContextDef& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  WhileContextDef(WhileContextDef&& from) noexcept
+    : WhileContextDef() {
+    *this = ::std::move(from);
+  }
+
+  inline WhileContextDef& operator=(WhileContextDef&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const WhileContextDef& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const WhileContextDef* internal_default_instance() {
+    return reinterpret_cast<const WhileContextDef*>(
+               &_WhileContextDef_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    4;
+
+  void UnsafeArenaSwap(WhileContextDef* other);
+  void Swap(WhileContextDef* other);
+  friend void swap(WhileContextDef& a, WhileContextDef& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline WhileContextDef* New() const final {
+    return CreateMaybeMessage<WhileContextDef>(NULL);
+  }
+
+  WhileContextDef* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<WhileContextDef>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const WhileContextDef& from);
+  void MergeFrom(const WhileContextDef& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(WhileContextDef* other);
+  protected:
+  explicit WhileContextDef(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // repeated string loop_exit_names = 8;
+  int loop_exit_names_size() const;
+  void clear_loop_exit_names();
+  static const int kLoopExitNamesFieldNumber = 8;
+  const ::std::string& loop_exit_names(int index) const;
+  ::std::string* mutable_loop_exit_names(int index);
+  void set_loop_exit_names(int index, const ::std::string& value);
+  #if LANG_CXX11
+  void set_loop_exit_names(int index, ::std::string&& value);
+  #endif
+  void set_loop_exit_names(int index, const char* value);
+  void set_loop_exit_names(int index, const char* value, size_t size);
+  ::std::string* add_loop_exit_names();
+  void add_loop_exit_names(const ::std::string& value);
+  #if LANG_CXX11
+  void add_loop_exit_names(::std::string&& value);
+  #endif
+  void add_loop_exit_names(const char* value);
+  void add_loop_exit_names(const char* value, size_t size);
+  const ::google::protobuf::RepeatedPtrField<::std::string>& loop_exit_names() const;
+  ::google::protobuf::RepeatedPtrField<::std::string>* mutable_loop_exit_names();
+
+  // repeated string loop_enter_names = 10;
+  int loop_enter_names_size() const;
+  void clear_loop_enter_names();
+  static const int kLoopEnterNamesFieldNumber = 10;
+  const ::std::string& loop_enter_names(int index) const;
+  ::std::string* mutable_loop_enter_names(int index);
+  void set_loop_enter_names(int index, const ::std::string& value);
+  #if LANG_CXX11
+  void set_loop_enter_names(int index, ::std::string&& value);
+  #endif
+  void set_loop_enter_names(int index, const char* value);
+  void set_loop_enter_names(int index, const char* value, size_t size);
+  ::std::string* add_loop_enter_names();
+  void add_loop_enter_names(const ::std::string& value);
+  #if LANG_CXX11
+  void add_loop_enter_names(::std::string&& value);
+  #endif
+  void add_loop_enter_names(const char* value);
+  void add_loop_enter_names(const char* value, size_t size);
+  const ::google::protobuf::RepeatedPtrField<::std::string>& loop_enter_names() const;
+  ::google::protobuf::RepeatedPtrField<::std::string>* mutable_loop_enter_names();
+
+  // repeated .tensorflow.ControlFlowContextDef nested_contexts = 12;
+  int nested_contexts_size() const;
+  void clear_nested_contexts();
+  static const int kNestedContextsFieldNumber = 12;
+  ::tensorflow::ControlFlowContextDef* mutable_nested_contexts(int index);
+  ::google::protobuf::RepeatedPtrField< ::tensorflow::ControlFlowContextDef >*
+      mutable_nested_contexts();
+  const ::tensorflow::ControlFlowContextDef& nested_contexts(int index) const;
+  ::tensorflow::ControlFlowContextDef* add_nested_contexts();
+  const ::google::protobuf::RepeatedPtrField< ::tensorflow::ControlFlowContextDef >&
+      nested_contexts() const;
+
+  // string context_name = 1;
+  void clear_context_name();
+  static const int kContextNameFieldNumber = 1;
+  const ::std::string& context_name() const;
+  void set_context_name(const ::std::string& value);
+  #if LANG_CXX11
+  void set_context_name(::std::string&& value);
+  #endif
+  void set_context_name(const char* value);
+  void set_context_name(const char* value, size_t size);
+  ::std::string* mutable_context_name();
+  ::std::string* release_context_name();
+  void set_allocated_context_name(::std::string* context_name);
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  ::std::string* unsafe_arena_release_context_name();
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  void unsafe_arena_set_allocated_context_name(
+      ::std::string* context_name);
+
+  // string pivot_name = 5;
+  void clear_pivot_name();
+  static const int kPivotNameFieldNumber = 5;
+  const ::std::string& pivot_name() const;
+  void set_pivot_name(const ::std::string& value);
+  #if LANG_CXX11
+  void set_pivot_name(::std::string&& value);
+  #endif
+  void set_pivot_name(const char* value);
+  void set_pivot_name(const char* value, size_t size);
+  ::std::string* mutable_pivot_name();
+  ::std::string* release_pivot_name();
+  void set_allocated_pivot_name(::std::string* pivot_name);
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  ::std::string* unsafe_arena_release_pivot_name();
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  void unsafe_arena_set_allocated_pivot_name(
+      ::std::string* pivot_name);
+
+  // string pivot_for_pred_name = 6;
+  void clear_pivot_for_pred_name();
+  static const int kPivotForPredNameFieldNumber = 6;
+  const ::std::string& pivot_for_pred_name() const;
+  void set_pivot_for_pred_name(const ::std::string& value);
+  #if LANG_CXX11
+  void set_pivot_for_pred_name(::std::string&& value);
+  #endif
+  void set_pivot_for_pred_name(const char* value);
+  void set_pivot_for_pred_name(const char* value, size_t size);
+  ::std::string* mutable_pivot_for_pred_name();
+  ::std::string* release_pivot_for_pred_name();
+  void set_allocated_pivot_for_pred_name(::std::string* pivot_for_pred_name);
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  ::std::string* unsafe_arena_release_pivot_for_pred_name();
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  void unsafe_arena_set_allocated_pivot_for_pred_name(
+      ::std::string* pivot_for_pred_name);
+
+  // string pivot_for_body_name = 7;
+  void clear_pivot_for_body_name();
+  static const int kPivotForBodyNameFieldNumber = 7;
+  const ::std::string& pivot_for_body_name() const;
+  void set_pivot_for_body_name(const ::std::string& value);
+  #if LANG_CXX11
+  void set_pivot_for_body_name(::std::string&& value);
+  #endif
+  void set_pivot_for_body_name(const char* value);
+  void set_pivot_for_body_name(const char* value, size_t size);
+  ::std::string* mutable_pivot_for_body_name();
+  ::std::string* release_pivot_for_body_name();
+  void set_allocated_pivot_for_body_name(::std::string* pivot_for_body_name);
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  ::std::string* unsafe_arena_release_pivot_for_body_name();
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  void unsafe_arena_set_allocated_pivot_for_body_name(
+      ::std::string* pivot_for_body_name);
+
+  // string maximum_iterations_name = 11;
+  void clear_maximum_iterations_name();
+  static const int kMaximumIterationsNameFieldNumber = 11;
+  const ::std::string& maximum_iterations_name() const;
+  void set_maximum_iterations_name(const ::std::string& value);
+  #if LANG_CXX11
+  void set_maximum_iterations_name(::std::string&& value);
+  #endif
+  void set_maximum_iterations_name(const char* value);
+  void set_maximum_iterations_name(const char* value, size_t size);
+  ::std::string* mutable_maximum_iterations_name();
+  ::std::string* release_maximum_iterations_name();
+  void set_allocated_maximum_iterations_name(::std::string* maximum_iterations_name);
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  ::std::string* unsafe_arena_release_maximum_iterations_name();
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  void unsafe_arena_set_allocated_maximum_iterations_name(
+      ::std::string* maximum_iterations_name);
+
+  // .tensorflow.ValuesDef values_def = 9;
+  bool has_values_def() const;
+  void clear_values_def();
+  static const int kValuesDefFieldNumber = 9;
+  const ::tensorflow::ValuesDef& values_def() const;
+  ::tensorflow::ValuesDef* release_values_def();
+  ::tensorflow::ValuesDef* mutable_values_def();
+  void set_allocated_values_def(::tensorflow::ValuesDef* values_def);
+  void unsafe_arena_set_allocated_values_def(
+      ::tensorflow::ValuesDef* values_def);
+  ::tensorflow::ValuesDef* unsafe_arena_release_values_def();
+
+  // int32 parallel_iterations = 2;
+  void clear_parallel_iterations();
+  static const int kParallelIterationsFieldNumber = 2;
+  ::google::protobuf::int32 parallel_iterations() const;
+  void set_parallel_iterations(::google::protobuf::int32 value);
+
+  // bool back_prop = 3;
+  void clear_back_prop();
+  static const int kBackPropFieldNumber = 3;
+  bool back_prop() const;
+  void set_back_prop(bool value);
+
+  // bool swap_memory = 4;
+  void clear_swap_memory();
+  static const int kSwapMemoryFieldNumber = 4;
+  bool swap_memory() const;
+  void set_swap_memory(bool value);
+
+  // @@protoc_insertion_point(class_scope:tensorflow.WhileContextDef)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  ::google::protobuf::RepeatedPtrField<::std::string> loop_exit_names_;
+  ::google::protobuf::RepeatedPtrField<::std::string> loop_enter_names_;
+  ::google::protobuf::RepeatedPtrField< ::tensorflow::ControlFlowContextDef > nested_contexts_;
+  ::google::protobuf::internal::ArenaStringPtr context_name_;
+  ::google::protobuf::internal::ArenaStringPtr pivot_name_;
+  ::google::protobuf::internal::ArenaStringPtr pivot_for_pred_name_;
+  ::google::protobuf::internal::ArenaStringPtr pivot_for_body_name_;
+  ::google::protobuf::internal::ArenaStringPtr maximum_iterations_name_;
+  ::tensorflow::ValuesDef* values_def_;
+  ::google::protobuf::int32 parallel_iterations_;
+  bool back_prop_;
+  bool swap_memory_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fprotobuf_2fcontrol_5fflow_2eproto;
+};
+// ===================================================================
+
+
+// ===================================================================
+
+#ifdef __GNUC__
+  #pragma GCC diagnostic push
+  #pragma GCC diagnostic ignored "-Wstrict-aliasing"
+#endif  // __GNUC__
+// -------------------------------------------------------------------
+
+// ValuesDef
+
+// repeated string values = 1;
+inline int ValuesDef::values_size() const {
+  return values_.size();
+}
+inline void ValuesDef::clear_values() {
+  values_.Clear();
+}
+inline const ::std::string& ValuesDef::values(int index) const {
+  // @@protoc_insertion_point(field_get:tensorflow.ValuesDef.values)
+  return values_.Get(index);
+}
+inline ::std::string* ValuesDef::mutable_values(int index) {
+  // @@protoc_insertion_point(field_mutable:tensorflow.ValuesDef.values)
+  return values_.Mutable(index);
+}
+inline void ValuesDef::set_values(int index, const ::std::string& value) {
+  // @@protoc_insertion_point(field_set:tensorflow.ValuesDef.values)
+  values_.Mutable(index)->assign(value);
+}
+#if LANG_CXX11
+inline void ValuesDef::set_values(int index, ::std::string&& value) {
+  // @@protoc_insertion_point(field_set:tensorflow.ValuesDef.values)
+  values_.Mutable(index)->assign(std::move(value));
+}
+#endif
+inline void ValuesDef::set_values(int index, const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  values_.Mutable(index)->assign(value);
+  // @@protoc_insertion_point(field_set_char:tensorflow.ValuesDef.values)
+}
+inline void ValuesDef::set_values(int index, const char* value, size_t size) {
+  values_.Mutable(index)->assign(
+    reinterpret_cast<const char*>(value), size);
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.ValuesDef.values)
+}
+inline ::std::string* ValuesDef::add_values() {
+  // @@protoc_insertion_point(field_add_mutable:tensorflow.ValuesDef.values)
+  return values_.Add();
+}
+inline void ValuesDef::add_values(const ::std::string& value) {
+  values_.Add()->assign(value);
+  // @@protoc_insertion_point(field_add:tensorflow.ValuesDef.values)
+}
+#if LANG_CXX11
+inline void ValuesDef::add_values(::std::string&& value) {
+  values_.Add(std::move(value));
+  // @@protoc_insertion_point(field_add:tensorflow.ValuesDef.values)
+}
+#endif
+inline void ValuesDef::add_values(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  values_.Add()->assign(value);
+  // @@protoc_insertion_point(field_add_char:tensorflow.ValuesDef.values)
+}
+inline void ValuesDef::add_values(const char* value, size_t size) {
+  values_.Add()->assign(reinterpret_cast<const char*>(value), size);
+  // @@protoc_insertion_point(field_add_pointer:tensorflow.ValuesDef.values)
+}
+inline const ::google::protobuf::RepeatedPtrField<::std::string>&
+ValuesDef::values() const {
+  // @@protoc_insertion_point(field_list:tensorflow.ValuesDef.values)
+  return values_;
+}
+inline ::google::protobuf::RepeatedPtrField<::std::string>*
+ValuesDef::mutable_values() {
+  // @@protoc_insertion_point(field_mutable_list:tensorflow.ValuesDef.values)
+  return &values_;
+}
+
+// map<string, string> external_values = 2;
+inline int ValuesDef::external_values_size() const {
+  return external_values_.size();
+}
+inline void ValuesDef::clear_external_values() {
+  external_values_.Clear();
+}
+inline const ::google::protobuf::Map< ::std::string, ::std::string >&
+ValuesDef::external_values() const {
+  // @@protoc_insertion_point(field_map:tensorflow.ValuesDef.external_values)
+  return external_values_.GetMap();
+}
+inline ::google::protobuf::Map< ::std::string, ::std::string >*
+ValuesDef::mutable_external_values() {
+  // @@protoc_insertion_point(field_mutable_map:tensorflow.ValuesDef.external_values)
+  return external_values_.MutableMap();
+}
+
+// -------------------------------------------------------------------
+
+// ControlFlowContextDef
+
+// .tensorflow.CondContextDef cond_ctxt = 1;
+inline bool ControlFlowContextDef::has_cond_ctxt() const {
+  return ctxt_case() == kCondCtxt;
+}
+inline void ControlFlowContextDef::set_has_cond_ctxt() {
+  _oneof_case_[0] = kCondCtxt;
+}
+inline void ControlFlowContextDef::clear_cond_ctxt() {
+  if (has_cond_ctxt()) {
+    if (GetArenaNoVirtual() == NULL) {
+      delete ctxt_.cond_ctxt_;
+    }
+    clear_has_ctxt();
+  }
+}
+inline ::tensorflow::CondContextDef* ControlFlowContextDef::release_cond_ctxt() {
+  // @@protoc_insertion_point(field_release:tensorflow.ControlFlowContextDef.cond_ctxt)
+  if (has_cond_ctxt()) {
+    clear_has_ctxt();
+      ::tensorflow::CondContextDef* temp = ctxt_.cond_ctxt_;
+    if (GetArenaNoVirtual() != NULL) {
+      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
+    }
+    ctxt_.cond_ctxt_ = NULL;
+    return temp;
+  } else {
+    return NULL;
+  }
+}
+inline const ::tensorflow::CondContextDef& ControlFlowContextDef::cond_ctxt() const {
+  // @@protoc_insertion_point(field_get:tensorflow.ControlFlowContextDef.cond_ctxt)
+  return has_cond_ctxt()
+      ? *ctxt_.cond_ctxt_
+      : *reinterpret_cast< ::tensorflow::CondContextDef*>(&::tensorflow::_CondContextDef_default_instance_);
+}
+inline ::tensorflow::CondContextDef* ControlFlowContextDef::unsafe_arena_release_cond_ctxt() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.ControlFlowContextDef.cond_ctxt)
+  if (has_cond_ctxt()) {
+    clear_has_ctxt();
+    ::tensorflow::CondContextDef* temp = ctxt_.cond_ctxt_;
+    ctxt_.cond_ctxt_ = NULL;
+    return temp;
+  } else {
+    return NULL;
+  }
+}
+inline void ControlFlowContextDef::unsafe_arena_set_allocated_cond_ctxt(::tensorflow::CondContextDef* cond_ctxt) {
+  clear_ctxt();
+  if (cond_ctxt) {
+    set_has_cond_ctxt();
+    ctxt_.cond_ctxt_ = cond_ctxt;
+  }
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.ControlFlowContextDef.cond_ctxt)
+}
+inline ::tensorflow::CondContextDef* ControlFlowContextDef::mutable_cond_ctxt() {
+  if (!has_cond_ctxt()) {
+    clear_ctxt();
+    set_has_cond_ctxt();
+    ctxt_.cond_ctxt_ = CreateMaybeMessage< ::tensorflow::CondContextDef >(
+        GetArenaNoVirtual());
+  }
+  // @@protoc_insertion_point(field_mutable:tensorflow.ControlFlowContextDef.cond_ctxt)
+  return ctxt_.cond_ctxt_;
+}
+
+// .tensorflow.WhileContextDef while_ctxt = 2;
+inline bool ControlFlowContextDef::has_while_ctxt() const {
+  return ctxt_case() == kWhileCtxt;
+}
+inline void ControlFlowContextDef::set_has_while_ctxt() {
+  _oneof_case_[0] = kWhileCtxt;
+}
+inline void ControlFlowContextDef::clear_while_ctxt() {
+  if (has_while_ctxt()) {
+    if (GetArenaNoVirtual() == NULL) {
+      delete ctxt_.while_ctxt_;
+    }
+    clear_has_ctxt();
+  }
+}
+inline ::tensorflow::WhileContextDef* ControlFlowContextDef::release_while_ctxt() {
+  // @@protoc_insertion_point(field_release:tensorflow.ControlFlowContextDef.while_ctxt)
+  if (has_while_ctxt()) {
+    clear_has_ctxt();
+      ::tensorflow::WhileContextDef* temp = ctxt_.while_ctxt_;
+    if (GetArenaNoVirtual() != NULL) {
+      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
+    }
+    ctxt_.while_ctxt_ = NULL;
+    return temp;
+  } else {
+    return NULL;
+  }
+}
+inline const ::tensorflow::WhileContextDef& ControlFlowContextDef::while_ctxt() const {
+  // @@protoc_insertion_point(field_get:tensorflow.ControlFlowContextDef.while_ctxt)
+  return has_while_ctxt()
+      ? *ctxt_.while_ctxt_
+      : *reinterpret_cast< ::tensorflow::WhileContextDef*>(&::tensorflow::_WhileContextDef_default_instance_);
+}
+inline ::tensorflow::WhileContextDef* ControlFlowContextDef::unsafe_arena_release_while_ctxt() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.ControlFlowContextDef.while_ctxt)
+  if (has_while_ctxt()) {
+    clear_has_ctxt();
+    ::tensorflow::WhileContextDef* temp = ctxt_.while_ctxt_;
+    ctxt_.while_ctxt_ = NULL;
+    return temp;
+  } else {
+    return NULL;
+  }
+}
+inline void ControlFlowContextDef::unsafe_arena_set_allocated_while_ctxt(::tensorflow::WhileContextDef* while_ctxt) {
+  clear_ctxt();
+  if (while_ctxt) {
+    set_has_while_ctxt();
+    ctxt_.while_ctxt_ = while_ctxt;
+  }
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.ControlFlowContextDef.while_ctxt)
+}
+inline ::tensorflow::WhileContextDef* ControlFlowContextDef::mutable_while_ctxt() {
+  if (!has_while_ctxt()) {
+    clear_ctxt();
+    set_has_while_ctxt();
+    ctxt_.while_ctxt_ = CreateMaybeMessage< ::tensorflow::WhileContextDef >(
+        GetArenaNoVirtual());
+  }
+  // @@protoc_insertion_point(field_mutable:tensorflow.ControlFlowContextDef.while_ctxt)
+  return ctxt_.while_ctxt_;
+}
+
+inline bool ControlFlowContextDef::has_ctxt() const {
+  return ctxt_case() != CTXT_NOT_SET;
+}
+inline void ControlFlowContextDef::clear_has_ctxt() {
+  _oneof_case_[0] = CTXT_NOT_SET;
+}
+inline ControlFlowContextDef::CtxtCase ControlFlowContextDef::ctxt_case() const {
+  return ControlFlowContextDef::CtxtCase(_oneof_case_[0]);
+}
+// -------------------------------------------------------------------
+
+// CondContextDef
+
+// string context_name = 1;
+inline void CondContextDef::clear_context_name() {
+  context_name_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline const ::std::string& CondContextDef::context_name() const {
+  // @@protoc_insertion_point(field_get:tensorflow.CondContextDef.context_name)
+  return context_name_.Get();
+}
+inline void CondContextDef::set_context_name(const ::std::string& value) {
+  
+  context_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set:tensorflow.CondContextDef.context_name)
+}
+#if LANG_CXX11
+inline void CondContextDef::set_context_name(::std::string&& value) {
+  
+  context_name_.Set(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.CondContextDef.context_name)
+}
+#endif
+inline void CondContextDef::set_context_name(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  context_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
+              GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_char:tensorflow.CondContextDef.context_name)
+}
+inline void CondContextDef::set_context_name(const char* value,
+    size_t size) {
+  
+  context_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
+      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.CondContextDef.context_name)
+}
+inline ::std::string* CondContextDef::mutable_context_name() {
+  
+  // @@protoc_insertion_point(field_mutable:tensorflow.CondContextDef.context_name)
+  return context_name_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline ::std::string* CondContextDef::release_context_name() {
+  // @@protoc_insertion_point(field_release:tensorflow.CondContextDef.context_name)
+  
+  return context_name_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline void CondContextDef::set_allocated_context_name(::std::string* context_name) {
+  if (context_name != NULL) {
+    
+  } else {
+    
+  }
+  context_name_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), context_name,
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.CondContextDef.context_name)
+}
+inline ::std::string* CondContextDef::unsafe_arena_release_context_name() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.CondContextDef.context_name)
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  
+  return context_name_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      GetArenaNoVirtual());
+}
+inline void CondContextDef::unsafe_arena_set_allocated_context_name(
+    ::std::string* context_name) {
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (context_name != NULL) {
+    
+  } else {
+    
+  }
+  context_name_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      context_name, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.CondContextDef.context_name)
+}
+
+// string pred_name = 2;
+inline void CondContextDef::clear_pred_name() {
+  pred_name_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline const ::std::string& CondContextDef::pred_name() const {
+  // @@protoc_insertion_point(field_get:tensorflow.CondContextDef.pred_name)
+  return pred_name_.Get();
+}
+inline void CondContextDef::set_pred_name(const ::std::string& value) {
+  
+  pred_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set:tensorflow.CondContextDef.pred_name)
+}
+#if LANG_CXX11
+inline void CondContextDef::set_pred_name(::std::string&& value) {
+  
+  pred_name_.Set(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.CondContextDef.pred_name)
+}
+#endif
+inline void CondContextDef::set_pred_name(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  pred_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
+              GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_char:tensorflow.CondContextDef.pred_name)
+}
+inline void CondContextDef::set_pred_name(const char* value,
+    size_t size) {
+  
+  pred_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
+      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.CondContextDef.pred_name)
+}
+inline ::std::string* CondContextDef::mutable_pred_name() {
+  
+  // @@protoc_insertion_point(field_mutable:tensorflow.CondContextDef.pred_name)
+  return pred_name_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline ::std::string* CondContextDef::release_pred_name() {
+  // @@protoc_insertion_point(field_release:tensorflow.CondContextDef.pred_name)
+  
+  return pred_name_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline void CondContextDef::set_allocated_pred_name(::std::string* pred_name) {
+  if (pred_name != NULL) {
+    
+  } else {
+    
+  }
+  pred_name_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), pred_name,
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.CondContextDef.pred_name)
+}
+inline ::std::string* CondContextDef::unsafe_arena_release_pred_name() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.CondContextDef.pred_name)
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  
+  return pred_name_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      GetArenaNoVirtual());
+}
+inline void CondContextDef::unsafe_arena_set_allocated_pred_name(
+    ::std::string* pred_name) {
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (pred_name != NULL) {
+    
+  } else {
+    
+  }
+  pred_name_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      pred_name, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.CondContextDef.pred_name)
+}
+
+// string pivot_name = 3;
+inline void CondContextDef::clear_pivot_name() {
+  pivot_name_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline const ::std::string& CondContextDef::pivot_name() const {
+  // @@protoc_insertion_point(field_get:tensorflow.CondContextDef.pivot_name)
+  return pivot_name_.Get();
+}
+inline void CondContextDef::set_pivot_name(const ::std::string& value) {
+  
+  pivot_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set:tensorflow.CondContextDef.pivot_name)
+}
+#if LANG_CXX11
+inline void CondContextDef::set_pivot_name(::std::string&& value) {
+  
+  pivot_name_.Set(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.CondContextDef.pivot_name)
+}
+#endif
+inline void CondContextDef::set_pivot_name(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  pivot_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
+              GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_char:tensorflow.CondContextDef.pivot_name)
+}
+inline void CondContextDef::set_pivot_name(const char* value,
+    size_t size) {
+  
+  pivot_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
+      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.CondContextDef.pivot_name)
+}
+inline ::std::string* CondContextDef::mutable_pivot_name() {
+  
+  // @@protoc_insertion_point(field_mutable:tensorflow.CondContextDef.pivot_name)
+  return pivot_name_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline ::std::string* CondContextDef::release_pivot_name() {
+  // @@protoc_insertion_point(field_release:tensorflow.CondContextDef.pivot_name)
+  
+  return pivot_name_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline void CondContextDef::set_allocated_pivot_name(::std::string* pivot_name) {
+  if (pivot_name != NULL) {
+    
+  } else {
+    
+  }
+  pivot_name_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), pivot_name,
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.CondContextDef.pivot_name)
+}
+inline ::std::string* CondContextDef::unsafe_arena_release_pivot_name() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.CondContextDef.pivot_name)
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  
+  return pivot_name_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      GetArenaNoVirtual());
+}
+inline void CondContextDef::unsafe_arena_set_allocated_pivot_name(
+    ::std::string* pivot_name) {
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (pivot_name != NULL) {
+    
+  } else {
+    
+  }
+  pivot_name_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      pivot_name, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.CondContextDef.pivot_name)
+}
+
+// int32 branch = 4;
+inline void CondContextDef::clear_branch() {
+  branch_ = 0;
+}
+inline ::google::protobuf::int32 CondContextDef::branch() const {
+  // @@protoc_insertion_point(field_get:tensorflow.CondContextDef.branch)
+  return branch_;
+}
+inline void CondContextDef::set_branch(::google::protobuf::int32 value) {
+  
+  branch_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.CondContextDef.branch)
+}
+
+// .tensorflow.ValuesDef values_def = 5;
+inline bool CondContextDef::has_values_def() const {
+  return this != internal_default_instance() && values_def_ != NULL;
+}
+inline void CondContextDef::clear_values_def() {
+  if (GetArenaNoVirtual() == NULL && values_def_ != NULL) {
+    delete values_def_;
+  }
+  values_def_ = NULL;
+}
+inline const ::tensorflow::ValuesDef& CondContextDef::values_def() const {
+  const ::tensorflow::ValuesDef* p = values_def_;
+  // @@protoc_insertion_point(field_get:tensorflow.CondContextDef.values_def)
+  return p != NULL ? *p : *reinterpret_cast<const ::tensorflow::ValuesDef*>(
+      &::tensorflow::_ValuesDef_default_instance_);
+}
+inline ::tensorflow::ValuesDef* CondContextDef::release_values_def() {
+  // @@protoc_insertion_point(field_release:tensorflow.CondContextDef.values_def)
+  
+  ::tensorflow::ValuesDef* temp = values_def_;
+  if (GetArenaNoVirtual() != NULL) {
+    temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
+  }
+  values_def_ = NULL;
+  return temp;
+}
+inline ::tensorflow::ValuesDef* CondContextDef::unsafe_arena_release_values_def() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.CondContextDef.values_def)
+  
+  ::tensorflow::ValuesDef* temp = values_def_;
+  values_def_ = NULL;
+  return temp;
+}
+inline ::tensorflow::ValuesDef* CondContextDef::mutable_values_def() {
+  
+  if (values_def_ == NULL) {
+    auto* p = CreateMaybeMessage<::tensorflow::ValuesDef>(GetArenaNoVirtual());
+    values_def_ = p;
+  }
+  // @@protoc_insertion_point(field_mutable:tensorflow.CondContextDef.values_def)
+  return values_def_;
+}
+inline void CondContextDef::set_allocated_values_def(::tensorflow::ValuesDef* values_def) {
+  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
+  if (message_arena == NULL) {
+    delete values_def_;
+  }
+  if (values_def) {
+    ::google::protobuf::Arena* submessage_arena =
+      ::google::protobuf::Arena::GetArena(values_def);
+    if (message_arena != submessage_arena) {
+      values_def = ::google::protobuf::internal::GetOwnedMessage(
+          message_arena, values_def, submessage_arena);
+    }
+    
+  } else {
+    
+  }
+  values_def_ = values_def;
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.CondContextDef.values_def)
+}
+
+// repeated .tensorflow.ControlFlowContextDef nested_contexts = 6;
+inline int CondContextDef::nested_contexts_size() const {
+  return nested_contexts_.size();
+}
+inline void CondContextDef::clear_nested_contexts() {
+  nested_contexts_.Clear();
+}
+inline ::tensorflow::ControlFlowContextDef* CondContextDef::mutable_nested_contexts(int index) {
+  // @@protoc_insertion_point(field_mutable:tensorflow.CondContextDef.nested_contexts)
+  return nested_contexts_.Mutable(index);
+}
+inline ::google::protobuf::RepeatedPtrField< ::tensorflow::ControlFlowContextDef >*
+CondContextDef::mutable_nested_contexts() {
+  // @@protoc_insertion_point(field_mutable_list:tensorflow.CondContextDef.nested_contexts)
+  return &nested_contexts_;
+}
+inline const ::tensorflow::ControlFlowContextDef& CondContextDef::nested_contexts(int index) const {
+  // @@protoc_insertion_point(field_get:tensorflow.CondContextDef.nested_contexts)
+  return nested_contexts_.Get(index);
+}
+inline ::tensorflow::ControlFlowContextDef* CondContextDef::add_nested_contexts() {
+  // @@protoc_insertion_point(field_add:tensorflow.CondContextDef.nested_contexts)
+  return nested_contexts_.Add();
+}
+inline const ::google::protobuf::RepeatedPtrField< ::tensorflow::ControlFlowContextDef >&
+CondContextDef::nested_contexts() const {
+  // @@protoc_insertion_point(field_list:tensorflow.CondContextDef.nested_contexts)
+  return nested_contexts_;
+}
+
+// -------------------------------------------------------------------
+
+// WhileContextDef
+
+// string context_name = 1;
+inline void WhileContextDef::clear_context_name() {
+  context_name_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline const ::std::string& WhileContextDef::context_name() const {
+  // @@protoc_insertion_point(field_get:tensorflow.WhileContextDef.context_name)
+  return context_name_.Get();
+}
+inline void WhileContextDef::set_context_name(const ::std::string& value) {
+  
+  context_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set:tensorflow.WhileContextDef.context_name)
+}
+#if LANG_CXX11
+inline void WhileContextDef::set_context_name(::std::string&& value) {
+  
+  context_name_.Set(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.WhileContextDef.context_name)
+}
+#endif
+inline void WhileContextDef::set_context_name(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  context_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
+              GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_char:tensorflow.WhileContextDef.context_name)
+}
+inline void WhileContextDef::set_context_name(const char* value,
+    size_t size) {
+  
+  context_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
+      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.WhileContextDef.context_name)
+}
+inline ::std::string* WhileContextDef::mutable_context_name() {
+  
+  // @@protoc_insertion_point(field_mutable:tensorflow.WhileContextDef.context_name)
+  return context_name_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline ::std::string* WhileContextDef::release_context_name() {
+  // @@protoc_insertion_point(field_release:tensorflow.WhileContextDef.context_name)
+  
+  return context_name_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline void WhileContextDef::set_allocated_context_name(::std::string* context_name) {
+  if (context_name != NULL) {
+    
+  } else {
+    
+  }
+  context_name_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), context_name,
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.WhileContextDef.context_name)
+}
+inline ::std::string* WhileContextDef::unsafe_arena_release_context_name() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.WhileContextDef.context_name)
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  
+  return context_name_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      GetArenaNoVirtual());
+}
+inline void WhileContextDef::unsafe_arena_set_allocated_context_name(
+    ::std::string* context_name) {
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (context_name != NULL) {
+    
+  } else {
+    
+  }
+  context_name_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      context_name, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.WhileContextDef.context_name)
+}
+
+// int32 parallel_iterations = 2;
+inline void WhileContextDef::clear_parallel_iterations() {
+  parallel_iterations_ = 0;
+}
+inline ::google::protobuf::int32 WhileContextDef::parallel_iterations() const {
+  // @@protoc_insertion_point(field_get:tensorflow.WhileContextDef.parallel_iterations)
+  return parallel_iterations_;
+}
+inline void WhileContextDef::set_parallel_iterations(::google::protobuf::int32 value) {
+  
+  parallel_iterations_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.WhileContextDef.parallel_iterations)
+}
+
+// bool back_prop = 3;
+inline void WhileContextDef::clear_back_prop() {
+  back_prop_ = false;
+}
+inline bool WhileContextDef::back_prop() const {
+  // @@protoc_insertion_point(field_get:tensorflow.WhileContextDef.back_prop)
+  return back_prop_;
+}
+inline void WhileContextDef::set_back_prop(bool value) {
+  
+  back_prop_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.WhileContextDef.back_prop)
+}
+
+// bool swap_memory = 4;
+inline void WhileContextDef::clear_swap_memory() {
+  swap_memory_ = false;
+}
+inline bool WhileContextDef::swap_memory() const {
+  // @@protoc_insertion_point(field_get:tensorflow.WhileContextDef.swap_memory)
+  return swap_memory_;
+}
+inline void WhileContextDef::set_swap_memory(bool value) {
+  
+  swap_memory_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.WhileContextDef.swap_memory)
+}
+
+// string pivot_name = 5;
+inline void WhileContextDef::clear_pivot_name() {
+  pivot_name_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline const ::std::string& WhileContextDef::pivot_name() const {
+  // @@protoc_insertion_point(field_get:tensorflow.WhileContextDef.pivot_name)
+  return pivot_name_.Get();
+}
+inline void WhileContextDef::set_pivot_name(const ::std::string& value) {
+  
+  pivot_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set:tensorflow.WhileContextDef.pivot_name)
+}
+#if LANG_CXX11
+inline void WhileContextDef::set_pivot_name(::std::string&& value) {
+  
+  pivot_name_.Set(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.WhileContextDef.pivot_name)
+}
+#endif
+inline void WhileContextDef::set_pivot_name(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  pivot_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
+              GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_char:tensorflow.WhileContextDef.pivot_name)
+}
+inline void WhileContextDef::set_pivot_name(const char* value,
+    size_t size) {
+  
+  pivot_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
+      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.WhileContextDef.pivot_name)
+}
+inline ::std::string* WhileContextDef::mutable_pivot_name() {
+  
+  // @@protoc_insertion_point(field_mutable:tensorflow.WhileContextDef.pivot_name)
+  return pivot_name_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline ::std::string* WhileContextDef::release_pivot_name() {
+  // @@protoc_insertion_point(field_release:tensorflow.WhileContextDef.pivot_name)
+  
+  return pivot_name_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline void WhileContextDef::set_allocated_pivot_name(::std::string* pivot_name) {
+  if (pivot_name != NULL) {
+    
+  } else {
+    
+  }
+  pivot_name_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), pivot_name,
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.WhileContextDef.pivot_name)
+}
+inline ::std::string* WhileContextDef::unsafe_arena_release_pivot_name() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.WhileContextDef.pivot_name)
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  
+  return pivot_name_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      GetArenaNoVirtual());
+}
+inline void WhileContextDef::unsafe_arena_set_allocated_pivot_name(
+    ::std::string* pivot_name) {
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (pivot_name != NULL) {
+    
+  } else {
+    
+  }
+  pivot_name_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      pivot_name, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.WhileContextDef.pivot_name)
+}
+
+// string pivot_for_pred_name = 6;
+inline void WhileContextDef::clear_pivot_for_pred_name() {
+  pivot_for_pred_name_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline const ::std::string& WhileContextDef::pivot_for_pred_name() const {
+  // @@protoc_insertion_point(field_get:tensorflow.WhileContextDef.pivot_for_pred_name)
+  return pivot_for_pred_name_.Get();
+}
+inline void WhileContextDef::set_pivot_for_pred_name(const ::std::string& value) {
+  
+  pivot_for_pred_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set:tensorflow.WhileContextDef.pivot_for_pred_name)
+}
+#if LANG_CXX11
+inline void WhileContextDef::set_pivot_for_pred_name(::std::string&& value) {
+  
+  pivot_for_pred_name_.Set(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.WhileContextDef.pivot_for_pred_name)
+}
+#endif
+inline void WhileContextDef::set_pivot_for_pred_name(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  pivot_for_pred_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
+              GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_char:tensorflow.WhileContextDef.pivot_for_pred_name)
+}
+inline void WhileContextDef::set_pivot_for_pred_name(const char* value,
+    size_t size) {
+  
+  pivot_for_pred_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
+      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.WhileContextDef.pivot_for_pred_name)
+}
+inline ::std::string* WhileContextDef::mutable_pivot_for_pred_name() {
+  
+  // @@protoc_insertion_point(field_mutable:tensorflow.WhileContextDef.pivot_for_pred_name)
+  return pivot_for_pred_name_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline ::std::string* WhileContextDef::release_pivot_for_pred_name() {
+  // @@protoc_insertion_point(field_release:tensorflow.WhileContextDef.pivot_for_pred_name)
+  
+  return pivot_for_pred_name_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline void WhileContextDef::set_allocated_pivot_for_pred_name(::std::string* pivot_for_pred_name) {
+  if (pivot_for_pred_name != NULL) {
+    
+  } else {
+    
+  }
+  pivot_for_pred_name_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), pivot_for_pred_name,
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.WhileContextDef.pivot_for_pred_name)
+}
+inline ::std::string* WhileContextDef::unsafe_arena_release_pivot_for_pred_name() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.WhileContextDef.pivot_for_pred_name)
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  
+  return pivot_for_pred_name_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      GetArenaNoVirtual());
+}
+inline void WhileContextDef::unsafe_arena_set_allocated_pivot_for_pred_name(
+    ::std::string* pivot_for_pred_name) {
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (pivot_for_pred_name != NULL) {
+    
+  } else {
+    
+  }
+  pivot_for_pred_name_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      pivot_for_pred_name, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.WhileContextDef.pivot_for_pred_name)
+}
+
+// string pivot_for_body_name = 7;
+inline void WhileContextDef::clear_pivot_for_body_name() {
+  pivot_for_body_name_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline const ::std::string& WhileContextDef::pivot_for_body_name() const {
+  // @@protoc_insertion_point(field_get:tensorflow.WhileContextDef.pivot_for_body_name)
+  return pivot_for_body_name_.Get();
+}
+inline void WhileContextDef::set_pivot_for_body_name(const ::std::string& value) {
+  
+  pivot_for_body_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set:tensorflow.WhileContextDef.pivot_for_body_name)
+}
+#if LANG_CXX11
+inline void WhileContextDef::set_pivot_for_body_name(::std::string&& value) {
+  
+  pivot_for_body_name_.Set(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.WhileContextDef.pivot_for_body_name)
+}
+#endif
+inline void WhileContextDef::set_pivot_for_body_name(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  pivot_for_body_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
+              GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_char:tensorflow.WhileContextDef.pivot_for_body_name)
+}
+inline void WhileContextDef::set_pivot_for_body_name(const char* value,
+    size_t size) {
+  
+  pivot_for_body_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
+      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.WhileContextDef.pivot_for_body_name)
+}
+inline ::std::string* WhileContextDef::mutable_pivot_for_body_name() {
+  
+  // @@protoc_insertion_point(field_mutable:tensorflow.WhileContextDef.pivot_for_body_name)
+  return pivot_for_body_name_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline ::std::string* WhileContextDef::release_pivot_for_body_name() {
+  // @@protoc_insertion_point(field_release:tensorflow.WhileContextDef.pivot_for_body_name)
+  
+  return pivot_for_body_name_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline void WhileContextDef::set_allocated_pivot_for_body_name(::std::string* pivot_for_body_name) {
+  if (pivot_for_body_name != NULL) {
+    
+  } else {
+    
+  }
+  pivot_for_body_name_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), pivot_for_body_name,
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.WhileContextDef.pivot_for_body_name)
+}
+inline ::std::string* WhileContextDef::unsafe_arena_release_pivot_for_body_name() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.WhileContextDef.pivot_for_body_name)
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  
+  return pivot_for_body_name_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      GetArenaNoVirtual());
+}
+inline void WhileContextDef::unsafe_arena_set_allocated_pivot_for_body_name(
+    ::std::string* pivot_for_body_name) {
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (pivot_for_body_name != NULL) {
+    
+  } else {
+    
+  }
+  pivot_for_body_name_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      pivot_for_body_name, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.WhileContextDef.pivot_for_body_name)
+}
+
+// repeated string loop_exit_names = 8;
+inline int WhileContextDef::loop_exit_names_size() const {
+  return loop_exit_names_.size();
+}
+inline void WhileContextDef::clear_loop_exit_names() {
+  loop_exit_names_.Clear();
+}
+inline const ::std::string& WhileContextDef::loop_exit_names(int index) const {
+  // @@protoc_insertion_point(field_get:tensorflow.WhileContextDef.loop_exit_names)
+  return loop_exit_names_.Get(index);
+}
+inline ::std::string* WhileContextDef::mutable_loop_exit_names(int index) {
+  // @@protoc_insertion_point(field_mutable:tensorflow.WhileContextDef.loop_exit_names)
+  return loop_exit_names_.Mutable(index);
+}
+inline void WhileContextDef::set_loop_exit_names(int index, const ::std::string& value) {
+  // @@protoc_insertion_point(field_set:tensorflow.WhileContextDef.loop_exit_names)
+  loop_exit_names_.Mutable(index)->assign(value);
+}
+#if LANG_CXX11
+inline void WhileContextDef::set_loop_exit_names(int index, ::std::string&& value) {
+  // @@protoc_insertion_point(field_set:tensorflow.WhileContextDef.loop_exit_names)
+  loop_exit_names_.Mutable(index)->assign(std::move(value));
+}
+#endif
+inline void WhileContextDef::set_loop_exit_names(int index, const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  loop_exit_names_.Mutable(index)->assign(value);
+  // @@protoc_insertion_point(field_set_char:tensorflow.WhileContextDef.loop_exit_names)
+}
+inline void WhileContextDef::set_loop_exit_names(int index, const char* value, size_t size) {
+  loop_exit_names_.Mutable(index)->assign(
+    reinterpret_cast<const char*>(value), size);
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.WhileContextDef.loop_exit_names)
+}
+inline ::std::string* WhileContextDef::add_loop_exit_names() {
+  // @@protoc_insertion_point(field_add_mutable:tensorflow.WhileContextDef.loop_exit_names)
+  return loop_exit_names_.Add();
+}
+inline void WhileContextDef::add_loop_exit_names(const ::std::string& value) {
+  loop_exit_names_.Add()->assign(value);
+  // @@protoc_insertion_point(field_add:tensorflow.WhileContextDef.loop_exit_names)
+}
+#if LANG_CXX11
+inline void WhileContextDef::add_loop_exit_names(::std::string&& value) {
+  loop_exit_names_.Add(std::move(value));
+  // @@protoc_insertion_point(field_add:tensorflow.WhileContextDef.loop_exit_names)
+}
+#endif
+inline void WhileContextDef::add_loop_exit_names(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  loop_exit_names_.Add()->assign(value);
+  // @@protoc_insertion_point(field_add_char:tensorflow.WhileContextDef.loop_exit_names)
+}
+inline void WhileContextDef::add_loop_exit_names(const char* value, size_t size) {
+  loop_exit_names_.Add()->assign(reinterpret_cast<const char*>(value), size);
+  // @@protoc_insertion_point(field_add_pointer:tensorflow.WhileContextDef.loop_exit_names)
+}
+inline const ::google::protobuf::RepeatedPtrField<::std::string>&
+WhileContextDef::loop_exit_names() const {
+  // @@protoc_insertion_point(field_list:tensorflow.WhileContextDef.loop_exit_names)
+  return loop_exit_names_;
+}
+inline ::google::protobuf::RepeatedPtrField<::std::string>*
+WhileContextDef::mutable_loop_exit_names() {
+  // @@protoc_insertion_point(field_mutable_list:tensorflow.WhileContextDef.loop_exit_names)
+  return &loop_exit_names_;
+}
+
+// repeated string loop_enter_names = 10;
+inline int WhileContextDef::loop_enter_names_size() const {
+  return loop_enter_names_.size();
+}
+inline void WhileContextDef::clear_loop_enter_names() {
+  loop_enter_names_.Clear();
+}
+inline const ::std::string& WhileContextDef::loop_enter_names(int index) const {
+  // @@protoc_insertion_point(field_get:tensorflow.WhileContextDef.loop_enter_names)
+  return loop_enter_names_.Get(index);
+}
+inline ::std::string* WhileContextDef::mutable_loop_enter_names(int index) {
+  // @@protoc_insertion_point(field_mutable:tensorflow.WhileContextDef.loop_enter_names)
+  return loop_enter_names_.Mutable(index);
+}
+inline void WhileContextDef::set_loop_enter_names(int index, const ::std::string& value) {
+  // @@protoc_insertion_point(field_set:tensorflow.WhileContextDef.loop_enter_names)
+  loop_enter_names_.Mutable(index)->assign(value);
+}
+#if LANG_CXX11
+inline void WhileContextDef::set_loop_enter_names(int index, ::std::string&& value) {
+  // @@protoc_insertion_point(field_set:tensorflow.WhileContextDef.loop_enter_names)
+  loop_enter_names_.Mutable(index)->assign(std::move(value));
+}
+#endif
+inline void WhileContextDef::set_loop_enter_names(int index, const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  loop_enter_names_.Mutable(index)->assign(value);
+  // @@protoc_insertion_point(field_set_char:tensorflow.WhileContextDef.loop_enter_names)
+}
+inline void WhileContextDef::set_loop_enter_names(int index, const char* value, size_t size) {
+  loop_enter_names_.Mutable(index)->assign(
+    reinterpret_cast<const char*>(value), size);
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.WhileContextDef.loop_enter_names)
+}
+inline ::std::string* WhileContextDef::add_loop_enter_names() {
+  // @@protoc_insertion_point(field_add_mutable:tensorflow.WhileContextDef.loop_enter_names)
+  return loop_enter_names_.Add();
+}
+inline void WhileContextDef::add_loop_enter_names(const ::std::string& value) {
+  loop_enter_names_.Add()->assign(value);
+  // @@protoc_insertion_point(field_add:tensorflow.WhileContextDef.loop_enter_names)
+}
+#if LANG_CXX11
+inline void WhileContextDef::add_loop_enter_names(::std::string&& value) {
+  loop_enter_names_.Add(std::move(value));
+  // @@protoc_insertion_point(field_add:tensorflow.WhileContextDef.loop_enter_names)
+}
+#endif
+inline void WhileContextDef::add_loop_enter_names(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  loop_enter_names_.Add()->assign(value);
+  // @@protoc_insertion_point(field_add_char:tensorflow.WhileContextDef.loop_enter_names)
+}
+inline void WhileContextDef::add_loop_enter_names(const char* value, size_t size) {
+  loop_enter_names_.Add()->assign(reinterpret_cast<const char*>(value), size);
+  // @@protoc_insertion_point(field_add_pointer:tensorflow.WhileContextDef.loop_enter_names)
+}
+inline const ::google::protobuf::RepeatedPtrField<::std::string>&
+WhileContextDef::loop_enter_names() const {
+  // @@protoc_insertion_point(field_list:tensorflow.WhileContextDef.loop_enter_names)
+  return loop_enter_names_;
+}
+inline ::google::protobuf::RepeatedPtrField<::std::string>*
+WhileContextDef::mutable_loop_enter_names() {
+  // @@protoc_insertion_point(field_mutable_list:tensorflow.WhileContextDef.loop_enter_names)
+  return &loop_enter_names_;
+}
+
+// .tensorflow.ValuesDef values_def = 9;
+inline bool WhileContextDef::has_values_def() const {
+  return this != internal_default_instance() && values_def_ != NULL;
+}
+inline void WhileContextDef::clear_values_def() {
+  if (GetArenaNoVirtual() == NULL && values_def_ != NULL) {
+    delete values_def_;
+  }
+  values_def_ = NULL;
+}
+inline const ::tensorflow::ValuesDef& WhileContextDef::values_def() const {
+  const ::tensorflow::ValuesDef* p = values_def_;
+  // @@protoc_insertion_point(field_get:tensorflow.WhileContextDef.values_def)
+  return p != NULL ? *p : *reinterpret_cast<const ::tensorflow::ValuesDef*>(
+      &::tensorflow::_ValuesDef_default_instance_);
+}
+inline ::tensorflow::ValuesDef* WhileContextDef::release_values_def() {
+  // @@protoc_insertion_point(field_release:tensorflow.WhileContextDef.values_def)
+  
+  ::tensorflow::ValuesDef* temp = values_def_;
+  if (GetArenaNoVirtual() != NULL) {
+    temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
+  }
+  values_def_ = NULL;
+  return temp;
+}
+inline ::tensorflow::ValuesDef* WhileContextDef::unsafe_arena_release_values_def() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.WhileContextDef.values_def)
+  
+  ::tensorflow::ValuesDef* temp = values_def_;
+  values_def_ = NULL;
+  return temp;
+}
+inline ::tensorflow::ValuesDef* WhileContextDef::mutable_values_def() {
+  
+  if (values_def_ == NULL) {
+    auto* p = CreateMaybeMessage<::tensorflow::ValuesDef>(GetArenaNoVirtual());
+    values_def_ = p;
+  }
+  // @@protoc_insertion_point(field_mutable:tensorflow.WhileContextDef.values_def)
+  return values_def_;
+}
+inline void WhileContextDef::set_allocated_values_def(::tensorflow::ValuesDef* values_def) {
+  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
+  if (message_arena == NULL) {
+    delete values_def_;
+  }
+  if (values_def) {
+    ::google::protobuf::Arena* submessage_arena =
+      ::google::protobuf::Arena::GetArena(values_def);
+    if (message_arena != submessage_arena) {
+      values_def = ::google::protobuf::internal::GetOwnedMessage(
+          message_arena, values_def, submessage_arena);
+    }
+    
+  } else {
+    
+  }
+  values_def_ = values_def;
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.WhileContextDef.values_def)
+}
+
+// string maximum_iterations_name = 11;
+inline void WhileContextDef::clear_maximum_iterations_name() {
+  maximum_iterations_name_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline const ::std::string& WhileContextDef::maximum_iterations_name() const {
+  // @@protoc_insertion_point(field_get:tensorflow.WhileContextDef.maximum_iterations_name)
+  return maximum_iterations_name_.Get();
+}
+inline void WhileContextDef::set_maximum_iterations_name(const ::std::string& value) {
+  
+  maximum_iterations_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set:tensorflow.WhileContextDef.maximum_iterations_name)
+}
+#if LANG_CXX11
+inline void WhileContextDef::set_maximum_iterations_name(::std::string&& value) {
+  
+  maximum_iterations_name_.Set(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.WhileContextDef.maximum_iterations_name)
+}
+#endif
+inline void WhileContextDef::set_maximum_iterations_name(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  maximum_iterations_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
+              GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_char:tensorflow.WhileContextDef.maximum_iterations_name)
+}
+inline void WhileContextDef::set_maximum_iterations_name(const char* value,
+    size_t size) {
+  
+  maximum_iterations_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
+      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.WhileContextDef.maximum_iterations_name)
+}
+inline ::std::string* WhileContextDef::mutable_maximum_iterations_name() {
+  
+  // @@protoc_insertion_point(field_mutable:tensorflow.WhileContextDef.maximum_iterations_name)
+  return maximum_iterations_name_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline ::std::string* WhileContextDef::release_maximum_iterations_name() {
+  // @@protoc_insertion_point(field_release:tensorflow.WhileContextDef.maximum_iterations_name)
+  
+  return maximum_iterations_name_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline void WhileContextDef::set_allocated_maximum_iterations_name(::std::string* maximum_iterations_name) {
+  if (maximum_iterations_name != NULL) {
+    
+  } else {
+    
+  }
+  maximum_iterations_name_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), maximum_iterations_name,
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.WhileContextDef.maximum_iterations_name)
+}
+inline ::std::string* WhileContextDef::unsafe_arena_release_maximum_iterations_name() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.WhileContextDef.maximum_iterations_name)
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  
+  return maximum_iterations_name_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      GetArenaNoVirtual());
+}
+inline void WhileContextDef::unsafe_arena_set_allocated_maximum_iterations_name(
+    ::std::string* maximum_iterations_name) {
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (maximum_iterations_name != NULL) {
+    
+  } else {
+    
+  }
+  maximum_iterations_name_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      maximum_iterations_name, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.WhileContextDef.maximum_iterations_name)
+}
+
+// repeated .tensorflow.ControlFlowContextDef nested_contexts = 12;
+inline int WhileContextDef::nested_contexts_size() const {
+  return nested_contexts_.size();
+}
+inline void WhileContextDef::clear_nested_contexts() {
+  nested_contexts_.Clear();
+}
+inline ::tensorflow::ControlFlowContextDef* WhileContextDef::mutable_nested_contexts(int index) {
+  // @@protoc_insertion_point(field_mutable:tensorflow.WhileContextDef.nested_contexts)
+  return nested_contexts_.Mutable(index);
+}
+inline ::google::protobuf::RepeatedPtrField< ::tensorflow::ControlFlowContextDef >*
+WhileContextDef::mutable_nested_contexts() {
+  // @@protoc_insertion_point(field_mutable_list:tensorflow.WhileContextDef.nested_contexts)
+  return &nested_contexts_;
+}
+inline const ::tensorflow::ControlFlowContextDef& WhileContextDef::nested_contexts(int index) const {
+  // @@protoc_insertion_point(field_get:tensorflow.WhileContextDef.nested_contexts)
+  return nested_contexts_.Get(index);
+}
+inline ::tensorflow::ControlFlowContextDef* WhileContextDef::add_nested_contexts() {
+  // @@protoc_insertion_point(field_add:tensorflow.WhileContextDef.nested_contexts)
+  return nested_contexts_.Add();
+}
+inline const ::google::protobuf::RepeatedPtrField< ::tensorflow::ControlFlowContextDef >&
+WhileContextDef::nested_contexts() const {
+  // @@protoc_insertion_point(field_list:tensorflow.WhileContextDef.nested_contexts)
+  return nested_contexts_;
+}
+
+#ifdef __GNUC__
+  #pragma GCC diagnostic pop
+#endif  // __GNUC__
+// -------------------------------------------------------------------
+
+// -------------------------------------------------------------------
+
+// -------------------------------------------------------------------
+
+// -------------------------------------------------------------------
+
+
+// @@protoc_insertion_point(namespace_scope)
+
+}  // namespace tensorflow
+
+// @@protoc_insertion_point(global_scope)
+
+#include <google/protobuf/port_undef.inc>
+#endif  // PROTOBUF_INCLUDED_tensorflow_2fcore_2fprotobuf_2fcontrol_5fflow_2eproto
diff --git a/tensorflow/core/protobuf/control_flow.proto b/tensorflow/core/protobuf/control_flow.proto
new file mode 100644 (file)
index 0000000..5f44878
--- /dev/null
@@ -0,0 +1,90 @@
+syntax = "proto3";
+
+package tensorflow;
+option cc_enable_arenas = true;
+option java_outer_classname = "ControlFlowProtos";
+option java_multiple_files = true;
+option java_package = "org.tensorflow.framework";
+option go_package = "github.com/tensorflow/tensorflow/tensorflow/go/core/protobuf";
+
+// Control flow context related protocol buffers.
+
+// Protocol buffer representing the values in ControlFlowContext.
+message ValuesDef {
+  // Value names that have been seen in this context.
+  repeated string values = 1;
+
+  // Value names referenced by but external to this context.
+  map<string, string> external_values = 2;
+}
+
+// Container for any kind of control flow context. Any other control flow
+// contexts that are added below should also be added here.
+message ControlFlowContextDef {
+  oneof ctxt {
+    CondContextDef cond_ctxt = 1;
+    WhileContextDef while_ctxt = 2;
+  }
+}
+
+// Protocol buffer representing a CondContext object.
+message CondContextDef {
+  // Name of the context.
+  string context_name = 1;
+
+  // Name of the pred tensor.
+  string pred_name = 2;
+
+  // Name of the pivot tensor.
+  string pivot_name = 3;
+
+  // Branch prediction. 0 or 1.
+  int32 branch = 4;
+
+  // Values and external values in control flow context.
+  ValuesDef values_def = 5;
+
+  // Contexts contained inside this context (e.g. nested conds).
+  repeated ControlFlowContextDef nested_contexts = 6;
+}
+
+// Protocol buffer representing a WhileContext object.
+message WhileContextDef {
+  // Name of the context.
+  string context_name = 1;
+
+  // The number of iterations allowed to run in parallel.
+  int32 parallel_iterations = 2;
+
+  // Whether backprop is enabled for this while loop.
+  bool back_prop = 3;
+
+  // Whether GPU-CPU memory swap is enabled for this loop.
+  bool swap_memory = 4;
+
+  // Name of the pivot tensor.
+  string pivot_name = 5;
+
+  // Name of the pivot_for_pred tensor.
+  string pivot_for_pred_name = 6;
+
+  // Name of the pivot_for_body tensor.
+  string pivot_for_body_name = 7;
+
+  // List of names for exit tensors.
+  repeated string loop_exit_names = 8;
+
+  // List of names for enter tensors.
+  repeated string loop_enter_names = 10;
+
+  // Values and external values in control flow context.
+  ValuesDef values_def = 9;
+
+  // Optional name of the maximum_iterations tensor.
+  string maximum_iterations_name = 11;
+
+  // Contexts contained inside this context (e.g. nested whiles).
+  repeated ControlFlowContextDef nested_contexts = 12;
+
+  // Next available id: 13.
+}
diff --git a/tensorflow/core/protobuf/critical_section.pb.cc b/tensorflow/core/protobuf/critical_section.pb.cc
new file mode 100644 (file)
index 0000000..2e053ea
--- /dev/null
@@ -0,0 +1,837 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: tensorflow/core/protobuf/critical_section.proto
+
+#include "tensorflow/core/protobuf/critical_section.pb.h"
+
+#include <algorithm>
+
+#include <google/protobuf/stubs/common.h>
+#include <google/protobuf/io/coded_stream.h>
+#include <google/protobuf/extension_set.h>
+#include <google/protobuf/wire_format_lite_inl.h>
+#include <google/protobuf/descriptor.h>
+#include <google/protobuf/generated_message_reflection.h>
+#include <google/protobuf/reflection_ops.h>
+#include <google/protobuf/wire_format.h>
+// @@protoc_insertion_point(includes)
+#include <google/protobuf/port_def.inc>
+
+namespace tensorflow {
+class CriticalSectionDefDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<CriticalSectionDef> _instance;
+} _CriticalSectionDef_default_instance_;
+class CriticalSectionExecutionDefDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<CriticalSectionExecutionDef> _instance;
+} _CriticalSectionExecutionDef_default_instance_;
+}  // namespace tensorflow
+static void InitDefaultsCriticalSectionDef_tensorflow_2fcore_2fprotobuf_2fcritical_5fsection_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_CriticalSectionDef_default_instance_;
+    new (ptr) ::tensorflow::CriticalSectionDef();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::CriticalSectionDef::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<0> scc_info_CriticalSectionDef_tensorflow_2fcore_2fprotobuf_2fcritical_5fsection_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsCriticalSectionDef_tensorflow_2fcore_2fprotobuf_2fcritical_5fsection_2eproto}, {}};
+
+static void InitDefaultsCriticalSectionExecutionDef_tensorflow_2fcore_2fprotobuf_2fcritical_5fsection_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_CriticalSectionExecutionDef_default_instance_;
+    new (ptr) ::tensorflow::CriticalSectionExecutionDef();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::CriticalSectionExecutionDef::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<0> scc_info_CriticalSectionExecutionDef_tensorflow_2fcore_2fprotobuf_2fcritical_5fsection_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsCriticalSectionExecutionDef_tensorflow_2fcore_2fprotobuf_2fcritical_5fsection_2eproto}, {}};
+
+void InitDefaults_tensorflow_2fcore_2fprotobuf_2fcritical_5fsection_2eproto() {
+  ::google::protobuf::internal::InitSCC(&scc_info_CriticalSectionDef_tensorflow_2fcore_2fprotobuf_2fcritical_5fsection_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_CriticalSectionExecutionDef_tensorflow_2fcore_2fprotobuf_2fcritical_5fsection_2eproto.base);
+}
+
+::google::protobuf::Metadata file_level_metadata_tensorflow_2fcore_2fprotobuf_2fcritical_5fsection_2eproto[2];
+constexpr ::google::protobuf::EnumDescriptor const** file_level_enum_descriptors_tensorflow_2fcore_2fprotobuf_2fcritical_5fsection_2eproto = nullptr;
+constexpr ::google::protobuf::ServiceDescriptor const** file_level_service_descriptors_tensorflow_2fcore_2fprotobuf_2fcritical_5fsection_2eproto = nullptr;
+
+const ::google::protobuf::uint32 TableStruct_tensorflow_2fcore_2fprotobuf_2fcritical_5fsection_2eproto::offsets[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = {
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::CriticalSectionDef, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::CriticalSectionDef, critical_section_name_),
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::CriticalSectionExecutionDef, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::CriticalSectionExecutionDef, execute_in_critical_section_name_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::CriticalSectionExecutionDef, exclusive_resource_access_),
+};
+static const ::google::protobuf::internal::MigrationSchema schemas[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = {
+  { 0, -1, sizeof(::tensorflow::CriticalSectionDef)},
+  { 6, -1, sizeof(::tensorflow::CriticalSectionExecutionDef)},
+};
+
+static ::google::protobuf::Message const * const file_default_instances[] = {
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_CriticalSectionDef_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_CriticalSectionExecutionDef_default_instance_),
+};
+
+::google::protobuf::internal::AssignDescriptorsTable assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2fcritical_5fsection_2eproto = {
+  {}, AddDescriptors_tensorflow_2fcore_2fprotobuf_2fcritical_5fsection_2eproto, "tensorflow/core/protobuf/critical_section.proto", schemas,
+  file_default_instances, TableStruct_tensorflow_2fcore_2fprotobuf_2fcritical_5fsection_2eproto::offsets,
+  file_level_metadata_tensorflow_2fcore_2fprotobuf_2fcritical_5fsection_2eproto, 2, file_level_enum_descriptors_tensorflow_2fcore_2fprotobuf_2fcritical_5fsection_2eproto, file_level_service_descriptors_tensorflow_2fcore_2fprotobuf_2fcritical_5fsection_2eproto,
+};
+
+::google::protobuf::internal::DescriptorTable descriptor_table_tensorflow_2fcore_2fprotobuf_2fcritical_5fsection_2eproto = {
+  false, InitDefaults_tensorflow_2fcore_2fprotobuf_2fcritical_5fsection_2eproto, 
+  "\n/tensorflow/core/protobuf/critical_sect"
+  "ion.proto\022\ntensorflow\"3\n\022CriticalSection"
+  "Def\022\035\n\025critical_section_name\030\001 \001(\t\"j\n\033Cr"
+  "iticalSectionExecutionDef\022(\n execute_in_"
+  "critical_section_name\030\001 \001(\t\022!\n\031exclusive"
+  "_resource_access\030\002 \001(\010Bt\n\030org.tensorflow"
+  ".frameworkB\025CriticalSectionProtosP\001Z<git"
+  "hub.com/tensorflow/tensorflow/tensorflow"
+  "/go/core/protobuf\370\001\001b\006proto3"
+,
+  "tensorflow/core/protobuf/critical_section.proto", &assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2fcritical_5fsection_2eproto, 348,
+};
+
+void AddDescriptors_tensorflow_2fcore_2fprotobuf_2fcritical_5fsection_2eproto() {
+  static constexpr ::google::protobuf::internal::InitFunc deps[1] =
+  {
+  };
+ ::google::protobuf::internal::AddDescriptors(&descriptor_table_tensorflow_2fcore_2fprotobuf_2fcritical_5fsection_2eproto, deps, 0);
+}
+
+// Force running AddDescriptors() at dynamic initialization time.
+static bool dynamic_init_dummy_tensorflow_2fcore_2fprotobuf_2fcritical_5fsection_2eproto = []() { AddDescriptors_tensorflow_2fcore_2fprotobuf_2fcritical_5fsection_2eproto(); return true; }();
+namespace tensorflow {
+
+// ===================================================================
+
+void CriticalSectionDef::InitAsDefaultInstance() {
+}
+class CriticalSectionDef::HasBitSetters {
+ public:
+};
+
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int CriticalSectionDef::kCriticalSectionNameFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+CriticalSectionDef::CriticalSectionDef()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.CriticalSectionDef)
+}
+CriticalSectionDef::CriticalSectionDef(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.CriticalSectionDef)
+}
+CriticalSectionDef::CriticalSectionDef(const CriticalSectionDef& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  critical_section_name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.critical_section_name().size() > 0) {
+    critical_section_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.critical_section_name(),
+      GetArenaNoVirtual());
+  }
+  // @@protoc_insertion_point(copy_constructor:tensorflow.CriticalSectionDef)
+}
+
+void CriticalSectionDef::SharedCtor() {
+  ::google::protobuf::internal::InitSCC(
+      &scc_info_CriticalSectionDef_tensorflow_2fcore_2fprotobuf_2fcritical_5fsection_2eproto.base);
+  critical_section_name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+
+CriticalSectionDef::~CriticalSectionDef() {
+  // @@protoc_insertion_point(destructor:tensorflow.CriticalSectionDef)
+  SharedDtor();
+}
+
+void CriticalSectionDef::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+  critical_section_name_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+
+void CriticalSectionDef::ArenaDtor(void* object) {
+  CriticalSectionDef* _this = reinterpret_cast< CriticalSectionDef* >(object);
+  (void)_this;
+}
+void CriticalSectionDef::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void CriticalSectionDef::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const CriticalSectionDef& CriticalSectionDef::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_CriticalSectionDef_tensorflow_2fcore_2fprotobuf_2fcritical_5fsection_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void CriticalSectionDef::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.CriticalSectionDef)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  critical_section_name_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* CriticalSectionDef::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<CriticalSectionDef*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // string critical_section_name = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 10) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("tensorflow.CriticalSectionDef.critical_section_name");
+        parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+        ::std::string* str = msg->mutable_critical_section_name();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool CriticalSectionDef::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.CriticalSectionDef)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // string critical_section_name = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (10 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_critical_section_name()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->critical_section_name().data(), static_cast<int>(this->critical_section_name().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.CriticalSectionDef.critical_section_name"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.CriticalSectionDef)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.CriticalSectionDef)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void CriticalSectionDef::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.CriticalSectionDef)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // string critical_section_name = 1;
+  if (this->critical_section_name().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->critical_section_name().data(), static_cast<int>(this->critical_section_name().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.CriticalSectionDef.critical_section_name");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      1, this->critical_section_name(), output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.CriticalSectionDef)
+}
+
+::google::protobuf::uint8* CriticalSectionDef::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.CriticalSectionDef)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // string critical_section_name = 1;
+  if (this->critical_section_name().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->critical_section_name().data(), static_cast<int>(this->critical_section_name().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.CriticalSectionDef.critical_section_name");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        1, this->critical_section_name(), target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.CriticalSectionDef)
+  return target;
+}
+
+size_t CriticalSectionDef::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.CriticalSectionDef)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // string critical_section_name = 1;
+  if (this->critical_section_name().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->critical_section_name());
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void CriticalSectionDef::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.CriticalSectionDef)
+  GOOGLE_DCHECK_NE(&from, this);
+  const CriticalSectionDef* source =
+      ::google::protobuf::DynamicCastToGenerated<CriticalSectionDef>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.CriticalSectionDef)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.CriticalSectionDef)
+    MergeFrom(*source);
+  }
+}
+
+void CriticalSectionDef::MergeFrom(const CriticalSectionDef& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.CriticalSectionDef)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  if (from.critical_section_name().size() > 0) {
+    set_critical_section_name(from.critical_section_name());
+  }
+}
+
+void CriticalSectionDef::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.CriticalSectionDef)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void CriticalSectionDef::CopyFrom(const CriticalSectionDef& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.CriticalSectionDef)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool CriticalSectionDef::IsInitialized() const {
+  return true;
+}
+
+void CriticalSectionDef::Swap(CriticalSectionDef* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    CriticalSectionDef* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void CriticalSectionDef::UnsafeArenaSwap(CriticalSectionDef* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void CriticalSectionDef::InternalSwap(CriticalSectionDef* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  critical_section_name_.Swap(&other->critical_section_name_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+}
+
+::google::protobuf::Metadata CriticalSectionDef::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2fcritical_5fsection_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fprotobuf_2fcritical_5fsection_2eproto[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+void CriticalSectionExecutionDef::InitAsDefaultInstance() {
+}
+class CriticalSectionExecutionDef::HasBitSetters {
+ public:
+};
+
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int CriticalSectionExecutionDef::kExecuteInCriticalSectionNameFieldNumber;
+const int CriticalSectionExecutionDef::kExclusiveResourceAccessFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+CriticalSectionExecutionDef::CriticalSectionExecutionDef()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.CriticalSectionExecutionDef)
+}
+CriticalSectionExecutionDef::CriticalSectionExecutionDef(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.CriticalSectionExecutionDef)
+}
+CriticalSectionExecutionDef::CriticalSectionExecutionDef(const CriticalSectionExecutionDef& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  execute_in_critical_section_name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.execute_in_critical_section_name().size() > 0) {
+    execute_in_critical_section_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.execute_in_critical_section_name(),
+      GetArenaNoVirtual());
+  }
+  exclusive_resource_access_ = from.exclusive_resource_access_;
+  // @@protoc_insertion_point(copy_constructor:tensorflow.CriticalSectionExecutionDef)
+}
+
+void CriticalSectionExecutionDef::SharedCtor() {
+  ::google::protobuf::internal::InitSCC(
+      &scc_info_CriticalSectionExecutionDef_tensorflow_2fcore_2fprotobuf_2fcritical_5fsection_2eproto.base);
+  execute_in_critical_section_name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  exclusive_resource_access_ = false;
+}
+
+CriticalSectionExecutionDef::~CriticalSectionExecutionDef() {
+  // @@protoc_insertion_point(destructor:tensorflow.CriticalSectionExecutionDef)
+  SharedDtor();
+}
+
+void CriticalSectionExecutionDef::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+  execute_in_critical_section_name_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+
+void CriticalSectionExecutionDef::ArenaDtor(void* object) {
+  CriticalSectionExecutionDef* _this = reinterpret_cast< CriticalSectionExecutionDef* >(object);
+  (void)_this;
+}
+void CriticalSectionExecutionDef::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void CriticalSectionExecutionDef::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const CriticalSectionExecutionDef& CriticalSectionExecutionDef::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_CriticalSectionExecutionDef_tensorflow_2fcore_2fprotobuf_2fcritical_5fsection_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void CriticalSectionExecutionDef::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.CriticalSectionExecutionDef)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  execute_in_critical_section_name_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+  exclusive_resource_access_ = false;
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* CriticalSectionExecutionDef::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<CriticalSectionExecutionDef*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // string execute_in_critical_section_name = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 10) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("tensorflow.CriticalSectionExecutionDef.execute_in_critical_section_name");
+        parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+        ::std::string* str = msg->mutable_execute_in_critical_section_name();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+        break;
+      }
+      // bool exclusive_resource_access = 2;
+      case 2: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 16) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        bool value = val;
+        msg->set_exclusive_resource_access(value);
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool CriticalSectionExecutionDef::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.CriticalSectionExecutionDef)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // string execute_in_critical_section_name = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (10 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_execute_in_critical_section_name()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->execute_in_critical_section_name().data(), static_cast<int>(this->execute_in_critical_section_name().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.CriticalSectionExecutionDef.execute_in_critical_section_name"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // bool exclusive_resource_access = 2;
+      case 2: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (16 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
+                 input, &exclusive_resource_access_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.CriticalSectionExecutionDef)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.CriticalSectionExecutionDef)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void CriticalSectionExecutionDef::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.CriticalSectionExecutionDef)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // string execute_in_critical_section_name = 1;
+  if (this->execute_in_critical_section_name().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->execute_in_critical_section_name().data(), static_cast<int>(this->execute_in_critical_section_name().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.CriticalSectionExecutionDef.execute_in_critical_section_name");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      1, this->execute_in_critical_section_name(), output);
+  }
+
+  // bool exclusive_resource_access = 2;
+  if (this->exclusive_resource_access() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteBool(2, this->exclusive_resource_access(), output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.CriticalSectionExecutionDef)
+}
+
+::google::protobuf::uint8* CriticalSectionExecutionDef::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.CriticalSectionExecutionDef)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // string execute_in_critical_section_name = 1;
+  if (this->execute_in_critical_section_name().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->execute_in_critical_section_name().data(), static_cast<int>(this->execute_in_critical_section_name().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.CriticalSectionExecutionDef.execute_in_critical_section_name");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        1, this->execute_in_critical_section_name(), target);
+  }
+
+  // bool exclusive_resource_access = 2;
+  if (this->exclusive_resource_access() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(2, this->exclusive_resource_access(), target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.CriticalSectionExecutionDef)
+  return target;
+}
+
+size_t CriticalSectionExecutionDef::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.CriticalSectionExecutionDef)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // string execute_in_critical_section_name = 1;
+  if (this->execute_in_critical_section_name().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->execute_in_critical_section_name());
+  }
+
+  // bool exclusive_resource_access = 2;
+  if (this->exclusive_resource_access() != 0) {
+    total_size += 1 + 1;
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void CriticalSectionExecutionDef::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.CriticalSectionExecutionDef)
+  GOOGLE_DCHECK_NE(&from, this);
+  const CriticalSectionExecutionDef* source =
+      ::google::protobuf::DynamicCastToGenerated<CriticalSectionExecutionDef>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.CriticalSectionExecutionDef)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.CriticalSectionExecutionDef)
+    MergeFrom(*source);
+  }
+}
+
+void CriticalSectionExecutionDef::MergeFrom(const CriticalSectionExecutionDef& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.CriticalSectionExecutionDef)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  if (from.execute_in_critical_section_name().size() > 0) {
+    set_execute_in_critical_section_name(from.execute_in_critical_section_name());
+  }
+  if (from.exclusive_resource_access() != 0) {
+    set_exclusive_resource_access(from.exclusive_resource_access());
+  }
+}
+
+void CriticalSectionExecutionDef::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.CriticalSectionExecutionDef)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void CriticalSectionExecutionDef::CopyFrom(const CriticalSectionExecutionDef& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.CriticalSectionExecutionDef)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool CriticalSectionExecutionDef::IsInitialized() const {
+  return true;
+}
+
+void CriticalSectionExecutionDef::Swap(CriticalSectionExecutionDef* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    CriticalSectionExecutionDef* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void CriticalSectionExecutionDef::UnsafeArenaSwap(CriticalSectionExecutionDef* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void CriticalSectionExecutionDef::InternalSwap(CriticalSectionExecutionDef* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  execute_in_critical_section_name_.Swap(&other->execute_in_critical_section_name_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+  swap(exclusive_resource_access_, other->exclusive_resource_access_);
+}
+
+::google::protobuf::Metadata CriticalSectionExecutionDef::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2fcritical_5fsection_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fprotobuf_2fcritical_5fsection_2eproto[kIndexInFileMessages];
+}
+
+
+// @@protoc_insertion_point(namespace_scope)
+}  // namespace tensorflow
+namespace google {
+namespace protobuf {
+template<> PROTOBUF_NOINLINE ::tensorflow::CriticalSectionDef* Arena::CreateMaybeMessage< ::tensorflow::CriticalSectionDef >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::CriticalSectionDef >(arena);
+}
+template<> PROTOBUF_NOINLINE ::tensorflow::CriticalSectionExecutionDef* Arena::CreateMaybeMessage< ::tensorflow::CriticalSectionExecutionDef >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::CriticalSectionExecutionDef >(arena);
+}
+}  // namespace protobuf
+}  // namespace google
+
+// @@protoc_insertion_point(global_scope)
+#include <google/protobuf/port_undef.inc>
diff --git a/tensorflow/core/protobuf/critical_section.pb.h b/tensorflow/core/protobuf/critical_section.pb.h
new file mode 100644 (file)
index 0000000..f8dbf17
--- /dev/null
@@ -0,0 +1,552 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: tensorflow/core/protobuf/critical_section.proto
+
+#ifndef PROTOBUF_INCLUDED_tensorflow_2fcore_2fprotobuf_2fcritical_5fsection_2eproto
+#define PROTOBUF_INCLUDED_tensorflow_2fcore_2fprotobuf_2fcritical_5fsection_2eproto
+
+#include <limits>
+#include <string>
+
+#include <google/protobuf/port_def.inc>
+#if PROTOBUF_VERSION < 3006001
+#error This file was generated by a newer version of protoc which is
+#error incompatible with your Protocol Buffer headers. Please update
+#error your headers.
+#endif
+#if 3006001 < PROTOBUF_MIN_PROTOC_VERSION
+#error This file was generated by an older version of protoc which is
+#error incompatible with your Protocol Buffer headers. Please
+#error regenerate this file with a newer version of protoc.
+#endif
+
+#include <google/protobuf/port_undef.inc>
+#include <google/protobuf/io/coded_stream.h>
+#include <google/protobuf/arena.h>
+#include <google/protobuf/arenastring.h>
+#include <google/protobuf/generated_message_table_driven.h>
+#include <google/protobuf/generated_message_util.h>
+#include <google/protobuf/inlined_string_field.h>
+#include <google/protobuf/metadata.h>
+#include <google/protobuf/message.h>
+#include <google/protobuf/repeated_field.h>  // IWYU pragma: export
+#include <google/protobuf/extension_set.h>  // IWYU pragma: export
+#include <google/protobuf/unknown_field_set.h>
+// @@protoc_insertion_point(includes)
+#include <google/protobuf/port_def.inc>
+#define PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fprotobuf_2fcritical_5fsection_2eproto
+
+// Internal implementation detail -- do not use these members.
+struct TableStruct_tensorflow_2fcore_2fprotobuf_2fcritical_5fsection_2eproto {
+  static const ::google::protobuf::internal::ParseTableField entries[]
+    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
+  static const ::google::protobuf::internal::AuxillaryParseTableField aux[]
+    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
+  static const ::google::protobuf::internal::ParseTable schema[2]
+    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
+  static const ::google::protobuf::internal::FieldMetadata field_metadata[];
+  static const ::google::protobuf::internal::SerializationTable serialization_table[];
+  static const ::google::protobuf::uint32 offsets[];
+};
+void AddDescriptors_tensorflow_2fcore_2fprotobuf_2fcritical_5fsection_2eproto();
+namespace tensorflow {
+class CriticalSectionDef;
+class CriticalSectionDefDefaultTypeInternal;
+extern CriticalSectionDefDefaultTypeInternal _CriticalSectionDef_default_instance_;
+class CriticalSectionExecutionDef;
+class CriticalSectionExecutionDefDefaultTypeInternal;
+extern CriticalSectionExecutionDefDefaultTypeInternal _CriticalSectionExecutionDef_default_instance_;
+}  // namespace tensorflow
+namespace google {
+namespace protobuf {
+template<> ::tensorflow::CriticalSectionDef* Arena::CreateMaybeMessage<::tensorflow::CriticalSectionDef>(Arena*);
+template<> ::tensorflow::CriticalSectionExecutionDef* Arena::CreateMaybeMessage<::tensorflow::CriticalSectionExecutionDef>(Arena*);
+}  // namespace protobuf
+}  // namespace google
+namespace tensorflow {
+
+// ===================================================================
+
+class CriticalSectionDef : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.CriticalSectionDef) */ {
+ public:
+  CriticalSectionDef();
+  virtual ~CriticalSectionDef();
+
+  CriticalSectionDef(const CriticalSectionDef& from);
+
+  inline CriticalSectionDef& operator=(const CriticalSectionDef& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  CriticalSectionDef(CriticalSectionDef&& from) noexcept
+    : CriticalSectionDef() {
+    *this = ::std::move(from);
+  }
+
+  inline CriticalSectionDef& operator=(CriticalSectionDef&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const CriticalSectionDef& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const CriticalSectionDef* internal_default_instance() {
+    return reinterpret_cast<const CriticalSectionDef*>(
+               &_CriticalSectionDef_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    0;
+
+  void UnsafeArenaSwap(CriticalSectionDef* other);
+  void Swap(CriticalSectionDef* other);
+  friend void swap(CriticalSectionDef& a, CriticalSectionDef& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline CriticalSectionDef* New() const final {
+    return CreateMaybeMessage<CriticalSectionDef>(NULL);
+  }
+
+  CriticalSectionDef* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<CriticalSectionDef>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const CriticalSectionDef& from);
+  void MergeFrom(const CriticalSectionDef& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(CriticalSectionDef* other);
+  protected:
+  explicit CriticalSectionDef(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // string critical_section_name = 1;
+  void clear_critical_section_name();
+  static const int kCriticalSectionNameFieldNumber = 1;
+  const ::std::string& critical_section_name() const;
+  void set_critical_section_name(const ::std::string& value);
+  #if LANG_CXX11
+  void set_critical_section_name(::std::string&& value);
+  #endif
+  void set_critical_section_name(const char* value);
+  void set_critical_section_name(const char* value, size_t size);
+  ::std::string* mutable_critical_section_name();
+  ::std::string* release_critical_section_name();
+  void set_allocated_critical_section_name(::std::string* critical_section_name);
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  ::std::string* unsafe_arena_release_critical_section_name();
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  void unsafe_arena_set_allocated_critical_section_name(
+      ::std::string* critical_section_name);
+
+  // @@protoc_insertion_point(class_scope:tensorflow.CriticalSectionDef)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  ::google::protobuf::internal::ArenaStringPtr critical_section_name_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fprotobuf_2fcritical_5fsection_2eproto;
+};
+// -------------------------------------------------------------------
+
+class CriticalSectionExecutionDef : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.CriticalSectionExecutionDef) */ {
+ public:
+  CriticalSectionExecutionDef();
+  virtual ~CriticalSectionExecutionDef();
+
+  CriticalSectionExecutionDef(const CriticalSectionExecutionDef& from);
+
+  inline CriticalSectionExecutionDef& operator=(const CriticalSectionExecutionDef& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  CriticalSectionExecutionDef(CriticalSectionExecutionDef&& from) noexcept
+    : CriticalSectionExecutionDef() {
+    *this = ::std::move(from);
+  }
+
+  inline CriticalSectionExecutionDef& operator=(CriticalSectionExecutionDef&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const CriticalSectionExecutionDef& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const CriticalSectionExecutionDef* internal_default_instance() {
+    return reinterpret_cast<const CriticalSectionExecutionDef*>(
+               &_CriticalSectionExecutionDef_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    1;
+
+  void UnsafeArenaSwap(CriticalSectionExecutionDef* other);
+  void Swap(CriticalSectionExecutionDef* other);
+  friend void swap(CriticalSectionExecutionDef& a, CriticalSectionExecutionDef& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline CriticalSectionExecutionDef* New() const final {
+    return CreateMaybeMessage<CriticalSectionExecutionDef>(NULL);
+  }
+
+  CriticalSectionExecutionDef* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<CriticalSectionExecutionDef>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const CriticalSectionExecutionDef& from);
+  void MergeFrom(const CriticalSectionExecutionDef& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(CriticalSectionExecutionDef* other);
+  protected:
+  explicit CriticalSectionExecutionDef(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // string execute_in_critical_section_name = 1;
+  void clear_execute_in_critical_section_name();
+  static const int kExecuteInCriticalSectionNameFieldNumber = 1;
+  const ::std::string& execute_in_critical_section_name() const;
+  void set_execute_in_critical_section_name(const ::std::string& value);
+  #if LANG_CXX11
+  void set_execute_in_critical_section_name(::std::string&& value);
+  #endif
+  void set_execute_in_critical_section_name(const char* value);
+  void set_execute_in_critical_section_name(const char* value, size_t size);
+  ::std::string* mutable_execute_in_critical_section_name();
+  ::std::string* release_execute_in_critical_section_name();
+  void set_allocated_execute_in_critical_section_name(::std::string* execute_in_critical_section_name);
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  ::std::string* unsafe_arena_release_execute_in_critical_section_name();
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  void unsafe_arena_set_allocated_execute_in_critical_section_name(
+      ::std::string* execute_in_critical_section_name);
+
+  // bool exclusive_resource_access = 2;
+  void clear_exclusive_resource_access();
+  static const int kExclusiveResourceAccessFieldNumber = 2;
+  bool exclusive_resource_access() const;
+  void set_exclusive_resource_access(bool value);
+
+  // @@protoc_insertion_point(class_scope:tensorflow.CriticalSectionExecutionDef)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  ::google::protobuf::internal::ArenaStringPtr execute_in_critical_section_name_;
+  bool exclusive_resource_access_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fprotobuf_2fcritical_5fsection_2eproto;
+};
+// ===================================================================
+
+
+// ===================================================================
+
+#ifdef __GNUC__
+  #pragma GCC diagnostic push
+  #pragma GCC diagnostic ignored "-Wstrict-aliasing"
+#endif  // __GNUC__
+// CriticalSectionDef
+
+// string critical_section_name = 1;
+inline void CriticalSectionDef::clear_critical_section_name() {
+  critical_section_name_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline const ::std::string& CriticalSectionDef::critical_section_name() const {
+  // @@protoc_insertion_point(field_get:tensorflow.CriticalSectionDef.critical_section_name)
+  return critical_section_name_.Get();
+}
+inline void CriticalSectionDef::set_critical_section_name(const ::std::string& value) {
+  
+  critical_section_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set:tensorflow.CriticalSectionDef.critical_section_name)
+}
+#if LANG_CXX11
+inline void CriticalSectionDef::set_critical_section_name(::std::string&& value) {
+  
+  critical_section_name_.Set(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.CriticalSectionDef.critical_section_name)
+}
+#endif
+inline void CriticalSectionDef::set_critical_section_name(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  critical_section_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
+              GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_char:tensorflow.CriticalSectionDef.critical_section_name)
+}
+inline void CriticalSectionDef::set_critical_section_name(const char* value,
+    size_t size) {
+  
+  critical_section_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
+      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.CriticalSectionDef.critical_section_name)
+}
+inline ::std::string* CriticalSectionDef::mutable_critical_section_name() {
+  
+  // @@protoc_insertion_point(field_mutable:tensorflow.CriticalSectionDef.critical_section_name)
+  return critical_section_name_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline ::std::string* CriticalSectionDef::release_critical_section_name() {
+  // @@protoc_insertion_point(field_release:tensorflow.CriticalSectionDef.critical_section_name)
+  
+  return critical_section_name_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline void CriticalSectionDef::set_allocated_critical_section_name(::std::string* critical_section_name) {
+  if (critical_section_name != NULL) {
+    
+  } else {
+    
+  }
+  critical_section_name_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), critical_section_name,
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.CriticalSectionDef.critical_section_name)
+}
+inline ::std::string* CriticalSectionDef::unsafe_arena_release_critical_section_name() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.CriticalSectionDef.critical_section_name)
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  
+  return critical_section_name_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      GetArenaNoVirtual());
+}
+inline void CriticalSectionDef::unsafe_arena_set_allocated_critical_section_name(
+    ::std::string* critical_section_name) {
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (critical_section_name != NULL) {
+    
+  } else {
+    
+  }
+  critical_section_name_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      critical_section_name, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.CriticalSectionDef.critical_section_name)
+}
+
+// -------------------------------------------------------------------
+
+// CriticalSectionExecutionDef
+
+// string execute_in_critical_section_name = 1;
+inline void CriticalSectionExecutionDef::clear_execute_in_critical_section_name() {
+  execute_in_critical_section_name_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline const ::std::string& CriticalSectionExecutionDef::execute_in_critical_section_name() const {
+  // @@protoc_insertion_point(field_get:tensorflow.CriticalSectionExecutionDef.execute_in_critical_section_name)
+  return execute_in_critical_section_name_.Get();
+}
+inline void CriticalSectionExecutionDef::set_execute_in_critical_section_name(const ::std::string& value) {
+  
+  execute_in_critical_section_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set:tensorflow.CriticalSectionExecutionDef.execute_in_critical_section_name)
+}
+#if LANG_CXX11
+inline void CriticalSectionExecutionDef::set_execute_in_critical_section_name(::std::string&& value) {
+  
+  execute_in_critical_section_name_.Set(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.CriticalSectionExecutionDef.execute_in_critical_section_name)
+}
+#endif
+inline void CriticalSectionExecutionDef::set_execute_in_critical_section_name(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  execute_in_critical_section_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
+              GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_char:tensorflow.CriticalSectionExecutionDef.execute_in_critical_section_name)
+}
+inline void CriticalSectionExecutionDef::set_execute_in_critical_section_name(const char* value,
+    size_t size) {
+  
+  execute_in_critical_section_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
+      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.CriticalSectionExecutionDef.execute_in_critical_section_name)
+}
+inline ::std::string* CriticalSectionExecutionDef::mutable_execute_in_critical_section_name() {
+  
+  // @@protoc_insertion_point(field_mutable:tensorflow.CriticalSectionExecutionDef.execute_in_critical_section_name)
+  return execute_in_critical_section_name_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline ::std::string* CriticalSectionExecutionDef::release_execute_in_critical_section_name() {
+  // @@protoc_insertion_point(field_release:tensorflow.CriticalSectionExecutionDef.execute_in_critical_section_name)
+  
+  return execute_in_critical_section_name_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline void CriticalSectionExecutionDef::set_allocated_execute_in_critical_section_name(::std::string* execute_in_critical_section_name) {
+  if (execute_in_critical_section_name != NULL) {
+    
+  } else {
+    
+  }
+  execute_in_critical_section_name_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), execute_in_critical_section_name,
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.CriticalSectionExecutionDef.execute_in_critical_section_name)
+}
+inline ::std::string* CriticalSectionExecutionDef::unsafe_arena_release_execute_in_critical_section_name() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.CriticalSectionExecutionDef.execute_in_critical_section_name)
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  
+  return execute_in_critical_section_name_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      GetArenaNoVirtual());
+}
+inline void CriticalSectionExecutionDef::unsafe_arena_set_allocated_execute_in_critical_section_name(
+    ::std::string* execute_in_critical_section_name) {
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (execute_in_critical_section_name != NULL) {
+    
+  } else {
+    
+  }
+  execute_in_critical_section_name_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      execute_in_critical_section_name, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.CriticalSectionExecutionDef.execute_in_critical_section_name)
+}
+
+// bool exclusive_resource_access = 2;
+inline void CriticalSectionExecutionDef::clear_exclusive_resource_access() {
+  exclusive_resource_access_ = false;
+}
+inline bool CriticalSectionExecutionDef::exclusive_resource_access() const {
+  // @@protoc_insertion_point(field_get:tensorflow.CriticalSectionExecutionDef.exclusive_resource_access)
+  return exclusive_resource_access_;
+}
+inline void CriticalSectionExecutionDef::set_exclusive_resource_access(bool value) {
+  
+  exclusive_resource_access_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.CriticalSectionExecutionDef.exclusive_resource_access)
+}
+
+#ifdef __GNUC__
+  #pragma GCC diagnostic pop
+#endif  // __GNUC__
+// -------------------------------------------------------------------
+
+
+// @@protoc_insertion_point(namespace_scope)
+
+}  // namespace tensorflow
+
+// @@protoc_insertion_point(global_scope)
+
+#include <google/protobuf/port_undef.inc>
+#endif  // PROTOBUF_INCLUDED_tensorflow_2fcore_2fprotobuf_2fcritical_5fsection_2eproto
diff --git a/tensorflow/core/protobuf/critical_section.proto b/tensorflow/core/protobuf/critical_section.proto
new file mode 100644 (file)
index 0000000..7954e7b
--- /dev/null
@@ -0,0 +1,23 @@
+syntax = "proto3";
+
+package tensorflow;
+option cc_enable_arenas = true;
+option java_outer_classname = "CriticalSectionProtos";
+option java_multiple_files = true;
+option java_package = "org.tensorflow.framework";
+option go_package = "github.com/tensorflow/tensorflow/tensorflow/go/core/protobuf";
+
+// Protocol buffer representing a CriticalSection.
+message CriticalSectionDef {
+  // Name of the critical section handle.
+  string critical_section_name = 1;
+}
+
+// Protocol buffer representing a CriticalSection execution.
+message CriticalSectionExecutionDef {
+  // Name of the critical section handle.
+  string execute_in_critical_section_name = 1;
+  // Whether this operation requires exclusive access to its resources,
+  // (i.e., no other CriticalSections may request the same resources).
+  bool exclusive_resource_access = 2;
+}
diff --git a/tensorflow/core/protobuf/debug.pb.cc b/tensorflow/core/protobuf/debug.pb.cc
new file mode 100644 (file)
index 0000000..2bc3db0
--- /dev/null
@@ -0,0 +1,2027 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: tensorflow/core/protobuf/debug.proto
+
+#include "tensorflow/core/protobuf/debug.pb.h"
+
+#include <algorithm>
+
+#include <google/protobuf/stubs/common.h>
+#include <google/protobuf/io/coded_stream.h>
+#include <google/protobuf/extension_set.h>
+#include <google/protobuf/wire_format_lite_inl.h>
+#include <google/protobuf/descriptor.h>
+#include <google/protobuf/generated_message_reflection.h>
+#include <google/protobuf/reflection_ops.h>
+#include <google/protobuf/wire_format.h>
+// @@protoc_insertion_point(includes)
+#include <google/protobuf/port_def.inc>
+
+extern PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fprotobuf_2fdebug_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_DebugTensorWatch_tensorflow_2fcore_2fprotobuf_2fdebug_2eproto;
+extern PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fprotobuf_2fdebug_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_DebuggedSourceFile_tensorflow_2fcore_2fprotobuf_2fdebug_2eproto;
+namespace tensorflow {
+class DebugTensorWatchDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<DebugTensorWatch> _instance;
+} _DebugTensorWatch_default_instance_;
+class DebugOptionsDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<DebugOptions> _instance;
+} _DebugOptions_default_instance_;
+class DebuggedSourceFileDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<DebuggedSourceFile> _instance;
+} _DebuggedSourceFile_default_instance_;
+class DebuggedSourceFilesDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<DebuggedSourceFiles> _instance;
+} _DebuggedSourceFiles_default_instance_;
+}  // namespace tensorflow
+static void InitDefaultsDebugTensorWatch_tensorflow_2fcore_2fprotobuf_2fdebug_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_DebugTensorWatch_default_instance_;
+    new (ptr) ::tensorflow::DebugTensorWatch();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::DebugTensorWatch::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<0> scc_info_DebugTensorWatch_tensorflow_2fcore_2fprotobuf_2fdebug_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsDebugTensorWatch_tensorflow_2fcore_2fprotobuf_2fdebug_2eproto}, {}};
+
+static void InitDefaultsDebugOptions_tensorflow_2fcore_2fprotobuf_2fdebug_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_DebugOptions_default_instance_;
+    new (ptr) ::tensorflow::DebugOptions();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::DebugOptions::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<1> scc_info_DebugOptions_tensorflow_2fcore_2fprotobuf_2fdebug_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsDebugOptions_tensorflow_2fcore_2fprotobuf_2fdebug_2eproto}, {
+      &scc_info_DebugTensorWatch_tensorflow_2fcore_2fprotobuf_2fdebug_2eproto.base,}};
+
+static void InitDefaultsDebuggedSourceFile_tensorflow_2fcore_2fprotobuf_2fdebug_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_DebuggedSourceFile_default_instance_;
+    new (ptr) ::tensorflow::DebuggedSourceFile();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::DebuggedSourceFile::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<0> scc_info_DebuggedSourceFile_tensorflow_2fcore_2fprotobuf_2fdebug_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsDebuggedSourceFile_tensorflow_2fcore_2fprotobuf_2fdebug_2eproto}, {}};
+
+static void InitDefaultsDebuggedSourceFiles_tensorflow_2fcore_2fprotobuf_2fdebug_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_DebuggedSourceFiles_default_instance_;
+    new (ptr) ::tensorflow::DebuggedSourceFiles();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::DebuggedSourceFiles::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<1> scc_info_DebuggedSourceFiles_tensorflow_2fcore_2fprotobuf_2fdebug_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsDebuggedSourceFiles_tensorflow_2fcore_2fprotobuf_2fdebug_2eproto}, {
+      &scc_info_DebuggedSourceFile_tensorflow_2fcore_2fprotobuf_2fdebug_2eproto.base,}};
+
+void InitDefaults_tensorflow_2fcore_2fprotobuf_2fdebug_2eproto() {
+  ::google::protobuf::internal::InitSCC(&scc_info_DebugTensorWatch_tensorflow_2fcore_2fprotobuf_2fdebug_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_DebugOptions_tensorflow_2fcore_2fprotobuf_2fdebug_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_DebuggedSourceFile_tensorflow_2fcore_2fprotobuf_2fdebug_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_DebuggedSourceFiles_tensorflow_2fcore_2fprotobuf_2fdebug_2eproto.base);
+}
+
+::google::protobuf::Metadata file_level_metadata_tensorflow_2fcore_2fprotobuf_2fdebug_2eproto[4];
+constexpr ::google::protobuf::EnumDescriptor const** file_level_enum_descriptors_tensorflow_2fcore_2fprotobuf_2fdebug_2eproto = nullptr;
+constexpr ::google::protobuf::ServiceDescriptor const** file_level_service_descriptors_tensorflow_2fcore_2fprotobuf_2fdebug_2eproto = nullptr;
+
+const ::google::protobuf::uint32 TableStruct_tensorflow_2fcore_2fprotobuf_2fdebug_2eproto::offsets[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = {
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::DebugTensorWatch, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::DebugTensorWatch, node_name_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::DebugTensorWatch, output_slot_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::DebugTensorWatch, debug_ops_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::DebugTensorWatch, debug_urls_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::DebugTensorWatch, tolerate_debug_op_creation_failures_),
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::DebugOptions, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::DebugOptions, debug_tensor_watch_opts_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::DebugOptions, global_step_),
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::DebuggedSourceFile, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::DebuggedSourceFile, host_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::DebuggedSourceFile, file_path_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::DebuggedSourceFile, last_modified_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::DebuggedSourceFile, bytes_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::DebuggedSourceFile, lines_),
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::DebuggedSourceFiles, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::DebuggedSourceFiles, source_files_),
+};
+static const ::google::protobuf::internal::MigrationSchema schemas[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = {
+  { 0, -1, sizeof(::tensorflow::DebugTensorWatch)},
+  { 10, -1, sizeof(::tensorflow::DebugOptions)},
+  { 17, -1, sizeof(::tensorflow::DebuggedSourceFile)},
+  { 27, -1, sizeof(::tensorflow::DebuggedSourceFiles)},
+};
+
+static ::google::protobuf::Message const * const file_default_instances[] = {
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_DebugTensorWatch_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_DebugOptions_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_DebuggedSourceFile_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_DebuggedSourceFiles_default_instance_),
+};
+
+::google::protobuf::internal::AssignDescriptorsTable assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2fdebug_2eproto = {
+  {}, AddDescriptors_tensorflow_2fcore_2fprotobuf_2fdebug_2eproto, "tensorflow/core/protobuf/debug.proto", schemas,
+  file_default_instances, TableStruct_tensorflow_2fcore_2fprotobuf_2fdebug_2eproto::offsets,
+  file_level_metadata_tensorflow_2fcore_2fprotobuf_2fdebug_2eproto, 4, file_level_enum_descriptors_tensorflow_2fcore_2fprotobuf_2fdebug_2eproto, file_level_service_descriptors_tensorflow_2fcore_2fprotobuf_2fdebug_2eproto,
+};
+
+::google::protobuf::internal::DescriptorTable descriptor_table_tensorflow_2fcore_2fprotobuf_2fdebug_2eproto = {
+  false, InitDefaults_tensorflow_2fcore_2fprotobuf_2fdebug_2eproto, 
+  "\n$tensorflow/core/protobuf/debug.proto\022\n"
+  "tensorflow\"\216\001\n\020DebugTensorWatch\022\021\n\tnode_"
+  "name\030\001 \001(\t\022\023\n\013output_slot\030\002 \001(\005\022\021\n\tdebug"
+  "_ops\030\003 \003(\t\022\022\n\ndebug_urls\030\004 \003(\t\022+\n#tolera"
+  "te_debug_op_creation_failures\030\005 \001(\010\"b\n\014D"
+  "ebugOptions\022=\n\027debug_tensor_watch_opts\030\004"
+  " \003(\0132\034.tensorflow.DebugTensorWatch\022\023\n\013gl"
+  "obal_step\030\n \001(\003\"j\n\022DebuggedSourceFile\022\014\n"
+  "\004host\030\001 \001(\t\022\021\n\tfile_path\030\002 \001(\t\022\025\n\rlast_m"
+  "odified\030\003 \001(\003\022\r\n\005bytes\030\004 \001(\003\022\r\n\005lines\030\005 "
+  "\003(\t\"K\n\023DebuggedSourceFiles\0224\n\014source_fil"
+  "es\030\001 \003(\0132\036.tensorflow.DebuggedSourceFile"
+  "Bj\n\030org.tensorflow.frameworkB\013DebugProto"
+  "sP\001Z<github.com/tensorflow/tensorflow/te"
+  "nsorflow/go/core/protobuf\370\001\001b\006proto3"
+,
+  "tensorflow/core/protobuf/debug.proto", &assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2fdebug_2eproto, 596,
+};
+
+void AddDescriptors_tensorflow_2fcore_2fprotobuf_2fdebug_2eproto() {
+  static constexpr ::google::protobuf::internal::InitFunc deps[1] =
+  {
+  };
+ ::google::protobuf::internal::AddDescriptors(&descriptor_table_tensorflow_2fcore_2fprotobuf_2fdebug_2eproto, deps, 0);
+}
+
+// Force running AddDescriptors() at dynamic initialization time.
+static bool dynamic_init_dummy_tensorflow_2fcore_2fprotobuf_2fdebug_2eproto = []() { AddDescriptors_tensorflow_2fcore_2fprotobuf_2fdebug_2eproto(); return true; }();
+namespace tensorflow {
+
+// ===================================================================
+
+void DebugTensorWatch::InitAsDefaultInstance() {
+}
+class DebugTensorWatch::HasBitSetters {
+ public:
+};
+
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int DebugTensorWatch::kNodeNameFieldNumber;
+const int DebugTensorWatch::kOutputSlotFieldNumber;
+const int DebugTensorWatch::kDebugOpsFieldNumber;
+const int DebugTensorWatch::kDebugUrlsFieldNumber;
+const int DebugTensorWatch::kTolerateDebugOpCreationFailuresFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+DebugTensorWatch::DebugTensorWatch()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.DebugTensorWatch)
+}
+DebugTensorWatch::DebugTensorWatch(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena),
+  debug_ops_(arena),
+  debug_urls_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.DebugTensorWatch)
+}
+DebugTensorWatch::DebugTensorWatch(const DebugTensorWatch& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL),
+      debug_ops_(from.debug_ops_),
+      debug_urls_(from.debug_urls_) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  node_name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.node_name().size() > 0) {
+    node_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.node_name(),
+      GetArenaNoVirtual());
+  }
+  ::memcpy(&output_slot_, &from.output_slot_,
+    static_cast<size_t>(reinterpret_cast<char*>(&tolerate_debug_op_creation_failures_) -
+    reinterpret_cast<char*>(&output_slot_)) + sizeof(tolerate_debug_op_creation_failures_));
+  // @@protoc_insertion_point(copy_constructor:tensorflow.DebugTensorWatch)
+}
+
+void DebugTensorWatch::SharedCtor() {
+  ::google::protobuf::internal::InitSCC(
+      &scc_info_DebugTensorWatch_tensorflow_2fcore_2fprotobuf_2fdebug_2eproto.base);
+  node_name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  ::memset(&output_slot_, 0, static_cast<size_t>(
+      reinterpret_cast<char*>(&tolerate_debug_op_creation_failures_) -
+      reinterpret_cast<char*>(&output_slot_)) + sizeof(tolerate_debug_op_creation_failures_));
+}
+
+DebugTensorWatch::~DebugTensorWatch() {
+  // @@protoc_insertion_point(destructor:tensorflow.DebugTensorWatch)
+  SharedDtor();
+}
+
+void DebugTensorWatch::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+  node_name_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+
+void DebugTensorWatch::ArenaDtor(void* object) {
+  DebugTensorWatch* _this = reinterpret_cast< DebugTensorWatch* >(object);
+  (void)_this;
+}
+void DebugTensorWatch::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void DebugTensorWatch::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const DebugTensorWatch& DebugTensorWatch::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_DebugTensorWatch_tensorflow_2fcore_2fprotobuf_2fdebug_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void DebugTensorWatch::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.DebugTensorWatch)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  debug_ops_.Clear();
+  debug_urls_.Clear();
+  node_name_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+  ::memset(&output_slot_, 0, static_cast<size_t>(
+      reinterpret_cast<char*>(&tolerate_debug_op_creation_failures_) -
+      reinterpret_cast<char*>(&output_slot_)) + sizeof(tolerate_debug_op_creation_failures_));
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* DebugTensorWatch::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<DebugTensorWatch*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // string node_name = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 10) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("tensorflow.DebugTensorWatch.node_name");
+        parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+        ::std::string* str = msg->mutable_node_name();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+        break;
+      }
+      // int32 output_slot = 2;
+      case 2: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 16) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::google::protobuf::int32 value = val;
+        msg->set_output_slot(value);
+        break;
+      }
+      // repeated string debug_ops = 3;
+      case 3: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 26) goto handle_unusual;
+        do {
+          ptr = Varint::Parse32Inline(ptr, &size);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          ctx->extra_parse_data().SetFieldName("tensorflow.DebugTensorWatch.debug_ops");
+          parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+          ::std::string* str = msg->add_debug_ops();
+          str->clear();
+          object = str;
+          if (size > end - ptr) goto len_delim_till_end;
+          auto newend = ptr + size;
+          if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+          if (ptr >= end) break;
+        } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 26 && (ptr += 1));
+        break;
+      }
+      // repeated string debug_urls = 4;
+      case 4: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 34) goto handle_unusual;
+        do {
+          ptr = Varint::Parse32Inline(ptr, &size);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          ctx->extra_parse_data().SetFieldName("tensorflow.DebugTensorWatch.debug_urls");
+          parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+          ::std::string* str = msg->add_debug_urls();
+          str->clear();
+          object = str;
+          if (size > end - ptr) goto len_delim_till_end;
+          auto newend = ptr + size;
+          if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+          if (ptr >= end) break;
+        } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 34 && (ptr += 1));
+        break;
+      }
+      // bool tolerate_debug_op_creation_failures = 5;
+      case 5: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 40) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        bool value = val;
+        msg->set_tolerate_debug_op_creation_failures(value);
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool DebugTensorWatch::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.DebugTensorWatch)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // string node_name = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (10 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_node_name()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->node_name().data(), static_cast<int>(this->node_name().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.DebugTensorWatch.node_name"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // int32 output_slot = 2;
+      case 2: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (16 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
+                 input, &output_slot_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // repeated string debug_ops = 3;
+      case 3: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (26 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->add_debug_ops()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->debug_ops(this->debug_ops_size() - 1).data(),
+            static_cast<int>(this->debug_ops(this->debug_ops_size() - 1).length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.DebugTensorWatch.debug_ops"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // repeated string debug_urls = 4;
+      case 4: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (34 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->add_debug_urls()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->debug_urls(this->debug_urls_size() - 1).data(),
+            static_cast<int>(this->debug_urls(this->debug_urls_size() - 1).length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.DebugTensorWatch.debug_urls"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // bool tolerate_debug_op_creation_failures = 5;
+      case 5: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (40 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
+                 input, &tolerate_debug_op_creation_failures_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.DebugTensorWatch)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.DebugTensorWatch)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void DebugTensorWatch::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.DebugTensorWatch)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // string node_name = 1;
+  if (this->node_name().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->node_name().data(), static_cast<int>(this->node_name().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.DebugTensorWatch.node_name");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      1, this->node_name(), output);
+  }
+
+  // int32 output_slot = 2;
+  if (this->output_slot() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt32(2, this->output_slot(), output);
+  }
+
+  // repeated string debug_ops = 3;
+  for (int i = 0, n = this->debug_ops_size(); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->debug_ops(i).data(), static_cast<int>(this->debug_ops(i).length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.DebugTensorWatch.debug_ops");
+    ::google::protobuf::internal::WireFormatLite::WriteString(
+      3, this->debug_ops(i), output);
+  }
+
+  // repeated string debug_urls = 4;
+  for (int i = 0, n = this->debug_urls_size(); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->debug_urls(i).data(), static_cast<int>(this->debug_urls(i).length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.DebugTensorWatch.debug_urls");
+    ::google::protobuf::internal::WireFormatLite::WriteString(
+      4, this->debug_urls(i), output);
+  }
+
+  // bool tolerate_debug_op_creation_failures = 5;
+  if (this->tolerate_debug_op_creation_failures() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteBool(5, this->tolerate_debug_op_creation_failures(), output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.DebugTensorWatch)
+}
+
+::google::protobuf::uint8* DebugTensorWatch::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.DebugTensorWatch)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // string node_name = 1;
+  if (this->node_name().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->node_name().data(), static_cast<int>(this->node_name().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.DebugTensorWatch.node_name");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        1, this->node_name(), target);
+  }
+
+  // int32 output_slot = 2;
+  if (this->output_slot() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt32ToArray(2, this->output_slot(), target);
+  }
+
+  // repeated string debug_ops = 3;
+  for (int i = 0, n = this->debug_ops_size(); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->debug_ops(i).data(), static_cast<int>(this->debug_ops(i).length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.DebugTensorWatch.debug_ops");
+    target = ::google::protobuf::internal::WireFormatLite::
+      WriteStringToArray(3, this->debug_ops(i), target);
+  }
+
+  // repeated string debug_urls = 4;
+  for (int i = 0, n = this->debug_urls_size(); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->debug_urls(i).data(), static_cast<int>(this->debug_urls(i).length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.DebugTensorWatch.debug_urls");
+    target = ::google::protobuf::internal::WireFormatLite::
+      WriteStringToArray(4, this->debug_urls(i), target);
+  }
+
+  // bool tolerate_debug_op_creation_failures = 5;
+  if (this->tolerate_debug_op_creation_failures() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(5, this->tolerate_debug_op_creation_failures(), target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.DebugTensorWatch)
+  return target;
+}
+
+size_t DebugTensorWatch::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.DebugTensorWatch)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // repeated string debug_ops = 3;
+  total_size += 1 *
+      ::google::protobuf::internal::FromIntSize(this->debug_ops_size());
+  for (int i = 0, n = this->debug_ops_size(); i < n; i++) {
+    total_size += ::google::protobuf::internal::WireFormatLite::StringSize(
+      this->debug_ops(i));
+  }
+
+  // repeated string debug_urls = 4;
+  total_size += 1 *
+      ::google::protobuf::internal::FromIntSize(this->debug_urls_size());
+  for (int i = 0, n = this->debug_urls_size(); i < n; i++) {
+    total_size += ::google::protobuf::internal::WireFormatLite::StringSize(
+      this->debug_urls(i));
+  }
+
+  // string node_name = 1;
+  if (this->node_name().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->node_name());
+  }
+
+  // int32 output_slot = 2;
+  if (this->output_slot() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::Int32Size(
+        this->output_slot());
+  }
+
+  // bool tolerate_debug_op_creation_failures = 5;
+  if (this->tolerate_debug_op_creation_failures() != 0) {
+    total_size += 1 + 1;
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void DebugTensorWatch::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.DebugTensorWatch)
+  GOOGLE_DCHECK_NE(&from, this);
+  const DebugTensorWatch* source =
+      ::google::protobuf::DynamicCastToGenerated<DebugTensorWatch>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.DebugTensorWatch)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.DebugTensorWatch)
+    MergeFrom(*source);
+  }
+}
+
+void DebugTensorWatch::MergeFrom(const DebugTensorWatch& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.DebugTensorWatch)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  debug_ops_.MergeFrom(from.debug_ops_);
+  debug_urls_.MergeFrom(from.debug_urls_);
+  if (from.node_name().size() > 0) {
+    set_node_name(from.node_name());
+  }
+  if (from.output_slot() != 0) {
+    set_output_slot(from.output_slot());
+  }
+  if (from.tolerate_debug_op_creation_failures() != 0) {
+    set_tolerate_debug_op_creation_failures(from.tolerate_debug_op_creation_failures());
+  }
+}
+
+void DebugTensorWatch::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.DebugTensorWatch)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void DebugTensorWatch::CopyFrom(const DebugTensorWatch& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.DebugTensorWatch)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool DebugTensorWatch::IsInitialized() const {
+  return true;
+}
+
+void DebugTensorWatch::Swap(DebugTensorWatch* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    DebugTensorWatch* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void DebugTensorWatch::UnsafeArenaSwap(DebugTensorWatch* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void DebugTensorWatch::InternalSwap(DebugTensorWatch* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  debug_ops_.InternalSwap(CastToBase(&other->debug_ops_));
+  debug_urls_.InternalSwap(CastToBase(&other->debug_urls_));
+  node_name_.Swap(&other->node_name_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+  swap(output_slot_, other->output_slot_);
+  swap(tolerate_debug_op_creation_failures_, other->tolerate_debug_op_creation_failures_);
+}
+
+::google::protobuf::Metadata DebugTensorWatch::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2fdebug_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fprotobuf_2fdebug_2eproto[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+void DebugOptions::InitAsDefaultInstance() {
+}
+class DebugOptions::HasBitSetters {
+ public:
+};
+
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int DebugOptions::kDebugTensorWatchOptsFieldNumber;
+const int DebugOptions::kGlobalStepFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+DebugOptions::DebugOptions()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.DebugOptions)
+}
+DebugOptions::DebugOptions(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena),
+  debug_tensor_watch_opts_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.DebugOptions)
+}
+DebugOptions::DebugOptions(const DebugOptions& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL),
+      debug_tensor_watch_opts_(from.debug_tensor_watch_opts_) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  global_step_ = from.global_step_;
+  // @@protoc_insertion_point(copy_constructor:tensorflow.DebugOptions)
+}
+
+void DebugOptions::SharedCtor() {
+  ::google::protobuf::internal::InitSCC(
+      &scc_info_DebugOptions_tensorflow_2fcore_2fprotobuf_2fdebug_2eproto.base);
+  global_step_ = PROTOBUF_LONGLONG(0);
+}
+
+DebugOptions::~DebugOptions() {
+  // @@protoc_insertion_point(destructor:tensorflow.DebugOptions)
+  SharedDtor();
+}
+
+void DebugOptions::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+}
+
+void DebugOptions::ArenaDtor(void* object) {
+  DebugOptions* _this = reinterpret_cast< DebugOptions* >(object);
+  (void)_this;
+}
+void DebugOptions::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void DebugOptions::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const DebugOptions& DebugOptions::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_DebugOptions_tensorflow_2fcore_2fprotobuf_2fdebug_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void DebugOptions::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.DebugOptions)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  debug_tensor_watch_opts_.Clear();
+  global_step_ = PROTOBUF_LONGLONG(0);
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* DebugOptions::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<DebugOptions*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // repeated .tensorflow.DebugTensorWatch debug_tensor_watch_opts = 4;
+      case 4: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 34) goto handle_unusual;
+        do {
+          ptr = Varint::Parse32Inline(ptr, &size);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          parser_till_end = ::tensorflow::DebugTensorWatch::_InternalParse;
+          object = msg->add_debug_tensor_watch_opts();
+          if (size > end - ptr) goto len_delim_till_end;
+          auto newend = ptr + size;
+          bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                         ptr, newend);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          ptr = newend;
+          if (ptr >= end) break;
+        } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 34 && (ptr += 1));
+        break;
+      }
+      // int64 global_step = 10;
+      case 10: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 80) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::google::protobuf::int64 value = val;
+        msg->set_global_step(value);
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool DebugOptions::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.DebugOptions)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // repeated .tensorflow.DebugTensorWatch debug_tensor_watch_opts = 4;
+      case 4: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (34 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+                input, add_debug_tensor_watch_opts()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // int64 global_step = 10;
+      case 10: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (80 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>(
+                 input, &global_step_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.DebugOptions)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.DebugOptions)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void DebugOptions::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.DebugOptions)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // repeated .tensorflow.DebugTensorWatch debug_tensor_watch_opts = 4;
+  for (unsigned int i = 0,
+      n = static_cast<unsigned int>(this->debug_tensor_watch_opts_size()); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      4,
+      this->debug_tensor_watch_opts(static_cast<int>(i)),
+      output);
+  }
+
+  // int64 global_step = 10;
+  if (this->global_step() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt64(10, this->global_step(), output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.DebugOptions)
+}
+
+::google::protobuf::uint8* DebugOptions::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.DebugOptions)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // repeated .tensorflow.DebugTensorWatch debug_tensor_watch_opts = 4;
+  for (unsigned int i = 0,
+      n = static_cast<unsigned int>(this->debug_tensor_watch_opts_size()); i < n; i++) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        4, this->debug_tensor_watch_opts(static_cast<int>(i)), deterministic, target);
+  }
+
+  // int64 global_step = 10;
+  if (this->global_step() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt64ToArray(10, this->global_step(), target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.DebugOptions)
+  return target;
+}
+
+size_t DebugOptions::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.DebugOptions)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // repeated .tensorflow.DebugTensorWatch debug_tensor_watch_opts = 4;
+  {
+    unsigned int count = static_cast<unsigned int>(this->debug_tensor_watch_opts_size());
+    total_size += 1UL * count;
+    for (unsigned int i = 0; i < count; i++) {
+      total_size +=
+        ::google::protobuf::internal::WireFormatLite::MessageSize(
+          this->debug_tensor_watch_opts(static_cast<int>(i)));
+    }
+  }
+
+  // int64 global_step = 10;
+  if (this->global_step() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::Int64Size(
+        this->global_step());
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void DebugOptions::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.DebugOptions)
+  GOOGLE_DCHECK_NE(&from, this);
+  const DebugOptions* source =
+      ::google::protobuf::DynamicCastToGenerated<DebugOptions>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.DebugOptions)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.DebugOptions)
+    MergeFrom(*source);
+  }
+}
+
+void DebugOptions::MergeFrom(const DebugOptions& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.DebugOptions)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  debug_tensor_watch_opts_.MergeFrom(from.debug_tensor_watch_opts_);
+  if (from.global_step() != 0) {
+    set_global_step(from.global_step());
+  }
+}
+
+void DebugOptions::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.DebugOptions)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void DebugOptions::CopyFrom(const DebugOptions& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.DebugOptions)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool DebugOptions::IsInitialized() const {
+  return true;
+}
+
+void DebugOptions::Swap(DebugOptions* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    DebugOptions* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void DebugOptions::UnsafeArenaSwap(DebugOptions* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void DebugOptions::InternalSwap(DebugOptions* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  CastToBase(&debug_tensor_watch_opts_)->InternalSwap(CastToBase(&other->debug_tensor_watch_opts_));
+  swap(global_step_, other->global_step_);
+}
+
+::google::protobuf::Metadata DebugOptions::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2fdebug_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fprotobuf_2fdebug_2eproto[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+void DebuggedSourceFile::InitAsDefaultInstance() {
+}
+class DebuggedSourceFile::HasBitSetters {
+ public:
+};
+
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int DebuggedSourceFile::kHostFieldNumber;
+const int DebuggedSourceFile::kFilePathFieldNumber;
+const int DebuggedSourceFile::kLastModifiedFieldNumber;
+const int DebuggedSourceFile::kBytesFieldNumber;
+const int DebuggedSourceFile::kLinesFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+DebuggedSourceFile::DebuggedSourceFile()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.DebuggedSourceFile)
+}
+DebuggedSourceFile::DebuggedSourceFile(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena),
+  lines_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.DebuggedSourceFile)
+}
+DebuggedSourceFile::DebuggedSourceFile(const DebuggedSourceFile& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL),
+      lines_(from.lines_) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  host_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.host().size() > 0) {
+    host_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.host(),
+      GetArenaNoVirtual());
+  }
+  file_path_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.file_path().size() > 0) {
+    file_path_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.file_path(),
+      GetArenaNoVirtual());
+  }
+  ::memcpy(&last_modified_, &from.last_modified_,
+    static_cast<size_t>(reinterpret_cast<char*>(&bytes_) -
+    reinterpret_cast<char*>(&last_modified_)) + sizeof(bytes_));
+  // @@protoc_insertion_point(copy_constructor:tensorflow.DebuggedSourceFile)
+}
+
+void DebuggedSourceFile::SharedCtor() {
+  ::google::protobuf::internal::InitSCC(
+      &scc_info_DebuggedSourceFile_tensorflow_2fcore_2fprotobuf_2fdebug_2eproto.base);
+  host_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  file_path_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  ::memset(&last_modified_, 0, static_cast<size_t>(
+      reinterpret_cast<char*>(&bytes_) -
+      reinterpret_cast<char*>(&last_modified_)) + sizeof(bytes_));
+}
+
+DebuggedSourceFile::~DebuggedSourceFile() {
+  // @@protoc_insertion_point(destructor:tensorflow.DebuggedSourceFile)
+  SharedDtor();
+}
+
+void DebuggedSourceFile::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+  host_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  file_path_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+
+void DebuggedSourceFile::ArenaDtor(void* object) {
+  DebuggedSourceFile* _this = reinterpret_cast< DebuggedSourceFile* >(object);
+  (void)_this;
+}
+void DebuggedSourceFile::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void DebuggedSourceFile::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const DebuggedSourceFile& DebuggedSourceFile::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_DebuggedSourceFile_tensorflow_2fcore_2fprotobuf_2fdebug_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void DebuggedSourceFile::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.DebuggedSourceFile)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  lines_.Clear();
+  host_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+  file_path_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+  ::memset(&last_modified_, 0, static_cast<size_t>(
+      reinterpret_cast<char*>(&bytes_) -
+      reinterpret_cast<char*>(&last_modified_)) + sizeof(bytes_));
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* DebuggedSourceFile::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<DebuggedSourceFile*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // string host = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 10) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("tensorflow.DebuggedSourceFile.host");
+        parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+        ::std::string* str = msg->mutable_host();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+        break;
+      }
+      // string file_path = 2;
+      case 2: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 18) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("tensorflow.DebuggedSourceFile.file_path");
+        parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+        ::std::string* str = msg->mutable_file_path();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+        break;
+      }
+      // int64 last_modified = 3;
+      case 3: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 24) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::google::protobuf::int64 value = val;
+        msg->set_last_modified(value);
+        break;
+      }
+      // int64 bytes = 4;
+      case 4: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 32) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::google::protobuf::int64 value = val;
+        msg->set_bytes(value);
+        break;
+      }
+      // repeated string lines = 5;
+      case 5: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 42) goto handle_unusual;
+        do {
+          ptr = Varint::Parse32Inline(ptr, &size);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          ctx->extra_parse_data().SetFieldName("tensorflow.DebuggedSourceFile.lines");
+          parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+          ::std::string* str = msg->add_lines();
+          str->clear();
+          object = str;
+          if (size > end - ptr) goto len_delim_till_end;
+          auto newend = ptr + size;
+          if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+          if (ptr >= end) break;
+        } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 42 && (ptr += 1));
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool DebuggedSourceFile::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.DebuggedSourceFile)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // string host = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (10 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_host()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->host().data(), static_cast<int>(this->host().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.DebuggedSourceFile.host"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // string file_path = 2;
+      case 2: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (18 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_file_path()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->file_path().data(), static_cast<int>(this->file_path().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.DebuggedSourceFile.file_path"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // int64 last_modified = 3;
+      case 3: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (24 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>(
+                 input, &last_modified_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // int64 bytes = 4;
+      case 4: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (32 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>(
+                 input, &bytes_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // repeated string lines = 5;
+      case 5: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (42 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->add_lines()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->lines(this->lines_size() - 1).data(),
+            static_cast<int>(this->lines(this->lines_size() - 1).length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.DebuggedSourceFile.lines"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.DebuggedSourceFile)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.DebuggedSourceFile)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void DebuggedSourceFile::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.DebuggedSourceFile)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // string host = 1;
+  if (this->host().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->host().data(), static_cast<int>(this->host().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.DebuggedSourceFile.host");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      1, this->host(), output);
+  }
+
+  // string file_path = 2;
+  if (this->file_path().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->file_path().data(), static_cast<int>(this->file_path().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.DebuggedSourceFile.file_path");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      2, this->file_path(), output);
+  }
+
+  // int64 last_modified = 3;
+  if (this->last_modified() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt64(3, this->last_modified(), output);
+  }
+
+  // int64 bytes = 4;
+  if (this->bytes() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt64(4, this->bytes(), output);
+  }
+
+  // repeated string lines = 5;
+  for (int i = 0, n = this->lines_size(); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->lines(i).data(), static_cast<int>(this->lines(i).length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.DebuggedSourceFile.lines");
+    ::google::protobuf::internal::WireFormatLite::WriteString(
+      5, this->lines(i), output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.DebuggedSourceFile)
+}
+
+::google::protobuf::uint8* DebuggedSourceFile::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.DebuggedSourceFile)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // string host = 1;
+  if (this->host().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->host().data(), static_cast<int>(this->host().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.DebuggedSourceFile.host");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        1, this->host(), target);
+  }
+
+  // string file_path = 2;
+  if (this->file_path().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->file_path().data(), static_cast<int>(this->file_path().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.DebuggedSourceFile.file_path");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        2, this->file_path(), target);
+  }
+
+  // int64 last_modified = 3;
+  if (this->last_modified() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt64ToArray(3, this->last_modified(), target);
+  }
+
+  // int64 bytes = 4;
+  if (this->bytes() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt64ToArray(4, this->bytes(), target);
+  }
+
+  // repeated string lines = 5;
+  for (int i = 0, n = this->lines_size(); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->lines(i).data(), static_cast<int>(this->lines(i).length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.DebuggedSourceFile.lines");
+    target = ::google::protobuf::internal::WireFormatLite::
+      WriteStringToArray(5, this->lines(i), target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.DebuggedSourceFile)
+  return target;
+}
+
+size_t DebuggedSourceFile::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.DebuggedSourceFile)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // repeated string lines = 5;
+  total_size += 1 *
+      ::google::protobuf::internal::FromIntSize(this->lines_size());
+  for (int i = 0, n = this->lines_size(); i < n; i++) {
+    total_size += ::google::protobuf::internal::WireFormatLite::StringSize(
+      this->lines(i));
+  }
+
+  // string host = 1;
+  if (this->host().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->host());
+  }
+
+  // string file_path = 2;
+  if (this->file_path().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->file_path());
+  }
+
+  // int64 last_modified = 3;
+  if (this->last_modified() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::Int64Size(
+        this->last_modified());
+  }
+
+  // int64 bytes = 4;
+  if (this->bytes() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::Int64Size(
+        this->bytes());
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void DebuggedSourceFile::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.DebuggedSourceFile)
+  GOOGLE_DCHECK_NE(&from, this);
+  const DebuggedSourceFile* source =
+      ::google::protobuf::DynamicCastToGenerated<DebuggedSourceFile>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.DebuggedSourceFile)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.DebuggedSourceFile)
+    MergeFrom(*source);
+  }
+}
+
+void DebuggedSourceFile::MergeFrom(const DebuggedSourceFile& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.DebuggedSourceFile)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  lines_.MergeFrom(from.lines_);
+  if (from.host().size() > 0) {
+    set_host(from.host());
+  }
+  if (from.file_path().size() > 0) {
+    set_file_path(from.file_path());
+  }
+  if (from.last_modified() != 0) {
+    set_last_modified(from.last_modified());
+  }
+  if (from.bytes() != 0) {
+    set_bytes(from.bytes());
+  }
+}
+
+void DebuggedSourceFile::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.DebuggedSourceFile)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void DebuggedSourceFile::CopyFrom(const DebuggedSourceFile& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.DebuggedSourceFile)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool DebuggedSourceFile::IsInitialized() const {
+  return true;
+}
+
+void DebuggedSourceFile::Swap(DebuggedSourceFile* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    DebuggedSourceFile* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void DebuggedSourceFile::UnsafeArenaSwap(DebuggedSourceFile* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void DebuggedSourceFile::InternalSwap(DebuggedSourceFile* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  lines_.InternalSwap(CastToBase(&other->lines_));
+  host_.Swap(&other->host_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+  file_path_.Swap(&other->file_path_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+  swap(last_modified_, other->last_modified_);
+  swap(bytes_, other->bytes_);
+}
+
+::google::protobuf::Metadata DebuggedSourceFile::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2fdebug_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fprotobuf_2fdebug_2eproto[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+void DebuggedSourceFiles::InitAsDefaultInstance() {
+}
+class DebuggedSourceFiles::HasBitSetters {
+ public:
+};
+
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int DebuggedSourceFiles::kSourceFilesFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+DebuggedSourceFiles::DebuggedSourceFiles()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.DebuggedSourceFiles)
+}
+DebuggedSourceFiles::DebuggedSourceFiles(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena),
+  source_files_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.DebuggedSourceFiles)
+}
+DebuggedSourceFiles::DebuggedSourceFiles(const DebuggedSourceFiles& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL),
+      source_files_(from.source_files_) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  // @@protoc_insertion_point(copy_constructor:tensorflow.DebuggedSourceFiles)
+}
+
+void DebuggedSourceFiles::SharedCtor() {
+  ::google::protobuf::internal::InitSCC(
+      &scc_info_DebuggedSourceFiles_tensorflow_2fcore_2fprotobuf_2fdebug_2eproto.base);
+}
+
+DebuggedSourceFiles::~DebuggedSourceFiles() {
+  // @@protoc_insertion_point(destructor:tensorflow.DebuggedSourceFiles)
+  SharedDtor();
+}
+
+void DebuggedSourceFiles::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+}
+
+void DebuggedSourceFiles::ArenaDtor(void* object) {
+  DebuggedSourceFiles* _this = reinterpret_cast< DebuggedSourceFiles* >(object);
+  (void)_this;
+}
+void DebuggedSourceFiles::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void DebuggedSourceFiles::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const DebuggedSourceFiles& DebuggedSourceFiles::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_DebuggedSourceFiles_tensorflow_2fcore_2fprotobuf_2fdebug_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void DebuggedSourceFiles::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.DebuggedSourceFiles)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  source_files_.Clear();
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* DebuggedSourceFiles::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<DebuggedSourceFiles*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // repeated .tensorflow.DebuggedSourceFile source_files = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 10) goto handle_unusual;
+        do {
+          ptr = Varint::Parse32Inline(ptr, &size);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          parser_till_end = ::tensorflow::DebuggedSourceFile::_InternalParse;
+          object = msg->add_source_files();
+          if (size > end - ptr) goto len_delim_till_end;
+          auto newend = ptr + size;
+          bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                         ptr, newend);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          ptr = newend;
+          if (ptr >= end) break;
+        } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 10 && (ptr += 1));
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool DebuggedSourceFiles::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.DebuggedSourceFiles)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // repeated .tensorflow.DebuggedSourceFile source_files = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (10 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+                input, add_source_files()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.DebuggedSourceFiles)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.DebuggedSourceFiles)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void DebuggedSourceFiles::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.DebuggedSourceFiles)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // repeated .tensorflow.DebuggedSourceFile source_files = 1;
+  for (unsigned int i = 0,
+      n = static_cast<unsigned int>(this->source_files_size()); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      1,
+      this->source_files(static_cast<int>(i)),
+      output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.DebuggedSourceFiles)
+}
+
+::google::protobuf::uint8* DebuggedSourceFiles::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.DebuggedSourceFiles)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // repeated .tensorflow.DebuggedSourceFile source_files = 1;
+  for (unsigned int i = 0,
+      n = static_cast<unsigned int>(this->source_files_size()); i < n; i++) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        1, this->source_files(static_cast<int>(i)), deterministic, target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.DebuggedSourceFiles)
+  return target;
+}
+
+size_t DebuggedSourceFiles::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.DebuggedSourceFiles)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // repeated .tensorflow.DebuggedSourceFile source_files = 1;
+  {
+    unsigned int count = static_cast<unsigned int>(this->source_files_size());
+    total_size += 1UL * count;
+    for (unsigned int i = 0; i < count; i++) {
+      total_size +=
+        ::google::protobuf::internal::WireFormatLite::MessageSize(
+          this->source_files(static_cast<int>(i)));
+    }
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void DebuggedSourceFiles::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.DebuggedSourceFiles)
+  GOOGLE_DCHECK_NE(&from, this);
+  const DebuggedSourceFiles* source =
+      ::google::protobuf::DynamicCastToGenerated<DebuggedSourceFiles>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.DebuggedSourceFiles)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.DebuggedSourceFiles)
+    MergeFrom(*source);
+  }
+}
+
+void DebuggedSourceFiles::MergeFrom(const DebuggedSourceFiles& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.DebuggedSourceFiles)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  source_files_.MergeFrom(from.source_files_);
+}
+
+void DebuggedSourceFiles::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.DebuggedSourceFiles)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void DebuggedSourceFiles::CopyFrom(const DebuggedSourceFiles& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.DebuggedSourceFiles)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool DebuggedSourceFiles::IsInitialized() const {
+  return true;
+}
+
+void DebuggedSourceFiles::Swap(DebuggedSourceFiles* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    DebuggedSourceFiles* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void DebuggedSourceFiles::UnsafeArenaSwap(DebuggedSourceFiles* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void DebuggedSourceFiles::InternalSwap(DebuggedSourceFiles* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  CastToBase(&source_files_)->InternalSwap(CastToBase(&other->source_files_));
+}
+
+::google::protobuf::Metadata DebuggedSourceFiles::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2fdebug_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fprotobuf_2fdebug_2eproto[kIndexInFileMessages];
+}
+
+
+// @@protoc_insertion_point(namespace_scope)
+}  // namespace tensorflow
+namespace google {
+namespace protobuf {
+template<> PROTOBUF_NOINLINE ::tensorflow::DebugTensorWatch* Arena::CreateMaybeMessage< ::tensorflow::DebugTensorWatch >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::DebugTensorWatch >(arena);
+}
+template<> PROTOBUF_NOINLINE ::tensorflow::DebugOptions* Arena::CreateMaybeMessage< ::tensorflow::DebugOptions >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::DebugOptions >(arena);
+}
+template<> PROTOBUF_NOINLINE ::tensorflow::DebuggedSourceFile* Arena::CreateMaybeMessage< ::tensorflow::DebuggedSourceFile >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::DebuggedSourceFile >(arena);
+}
+template<> PROTOBUF_NOINLINE ::tensorflow::DebuggedSourceFiles* Arena::CreateMaybeMessage< ::tensorflow::DebuggedSourceFiles >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::DebuggedSourceFiles >(arena);
+}
+}  // namespace protobuf
+}  // namespace google
+
+// @@protoc_insertion_point(global_scope)
+#include <google/protobuf/port_undef.inc>
diff --git a/tensorflow/core/protobuf/debug.pb.h b/tensorflow/core/protobuf/debug.pb.h
new file mode 100644 (file)
index 0000000..eb2fd5f
--- /dev/null
@@ -0,0 +1,1355 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: tensorflow/core/protobuf/debug.proto
+
+#ifndef PROTOBUF_INCLUDED_tensorflow_2fcore_2fprotobuf_2fdebug_2eproto
+#define PROTOBUF_INCLUDED_tensorflow_2fcore_2fprotobuf_2fdebug_2eproto
+
+#include <limits>
+#include <string>
+
+#include <google/protobuf/port_def.inc>
+#if PROTOBUF_VERSION < 3006001
+#error This file was generated by a newer version of protoc which is
+#error incompatible with your Protocol Buffer headers. Please update
+#error your headers.
+#endif
+#if 3006001 < PROTOBUF_MIN_PROTOC_VERSION
+#error This file was generated by an older version of protoc which is
+#error incompatible with your Protocol Buffer headers. Please
+#error regenerate this file with a newer version of protoc.
+#endif
+
+#include <google/protobuf/port_undef.inc>
+#include <google/protobuf/io/coded_stream.h>
+#include <google/protobuf/arena.h>
+#include <google/protobuf/arenastring.h>
+#include <google/protobuf/generated_message_table_driven.h>
+#include <google/protobuf/generated_message_util.h>
+#include <google/protobuf/inlined_string_field.h>
+#include <google/protobuf/metadata.h>
+#include <google/protobuf/message.h>
+#include <google/protobuf/repeated_field.h>  // IWYU pragma: export
+#include <google/protobuf/extension_set.h>  // IWYU pragma: export
+#include <google/protobuf/unknown_field_set.h>
+// @@protoc_insertion_point(includes)
+#include <google/protobuf/port_def.inc>
+#define PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fprotobuf_2fdebug_2eproto
+
+// Internal implementation detail -- do not use these members.
+struct TableStruct_tensorflow_2fcore_2fprotobuf_2fdebug_2eproto {
+  static const ::google::protobuf::internal::ParseTableField entries[]
+    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
+  static const ::google::protobuf::internal::AuxillaryParseTableField aux[]
+    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
+  static const ::google::protobuf::internal::ParseTable schema[4]
+    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
+  static const ::google::protobuf::internal::FieldMetadata field_metadata[];
+  static const ::google::protobuf::internal::SerializationTable serialization_table[];
+  static const ::google::protobuf::uint32 offsets[];
+};
+void AddDescriptors_tensorflow_2fcore_2fprotobuf_2fdebug_2eproto();
+namespace tensorflow {
+class DebugOptions;
+class DebugOptionsDefaultTypeInternal;
+extern DebugOptionsDefaultTypeInternal _DebugOptions_default_instance_;
+class DebugTensorWatch;
+class DebugTensorWatchDefaultTypeInternal;
+extern DebugTensorWatchDefaultTypeInternal _DebugTensorWatch_default_instance_;
+class DebuggedSourceFile;
+class DebuggedSourceFileDefaultTypeInternal;
+extern DebuggedSourceFileDefaultTypeInternal _DebuggedSourceFile_default_instance_;
+class DebuggedSourceFiles;
+class DebuggedSourceFilesDefaultTypeInternal;
+extern DebuggedSourceFilesDefaultTypeInternal _DebuggedSourceFiles_default_instance_;
+}  // namespace tensorflow
+namespace google {
+namespace protobuf {
+template<> ::tensorflow::DebugOptions* Arena::CreateMaybeMessage<::tensorflow::DebugOptions>(Arena*);
+template<> ::tensorflow::DebugTensorWatch* Arena::CreateMaybeMessage<::tensorflow::DebugTensorWatch>(Arena*);
+template<> ::tensorflow::DebuggedSourceFile* Arena::CreateMaybeMessage<::tensorflow::DebuggedSourceFile>(Arena*);
+template<> ::tensorflow::DebuggedSourceFiles* Arena::CreateMaybeMessage<::tensorflow::DebuggedSourceFiles>(Arena*);
+}  // namespace protobuf
+}  // namespace google
+namespace tensorflow {
+
+// ===================================================================
+
+class DebugTensorWatch : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.DebugTensorWatch) */ {
+ public:
+  DebugTensorWatch();
+  virtual ~DebugTensorWatch();
+
+  DebugTensorWatch(const DebugTensorWatch& from);
+
+  inline DebugTensorWatch& operator=(const DebugTensorWatch& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  DebugTensorWatch(DebugTensorWatch&& from) noexcept
+    : DebugTensorWatch() {
+    *this = ::std::move(from);
+  }
+
+  inline DebugTensorWatch& operator=(DebugTensorWatch&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const DebugTensorWatch& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const DebugTensorWatch* internal_default_instance() {
+    return reinterpret_cast<const DebugTensorWatch*>(
+               &_DebugTensorWatch_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    0;
+
+  void UnsafeArenaSwap(DebugTensorWatch* other);
+  void Swap(DebugTensorWatch* other);
+  friend void swap(DebugTensorWatch& a, DebugTensorWatch& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline DebugTensorWatch* New() const final {
+    return CreateMaybeMessage<DebugTensorWatch>(NULL);
+  }
+
+  DebugTensorWatch* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<DebugTensorWatch>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const DebugTensorWatch& from);
+  void MergeFrom(const DebugTensorWatch& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(DebugTensorWatch* other);
+  protected:
+  explicit DebugTensorWatch(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // repeated string debug_ops = 3;
+  int debug_ops_size() const;
+  void clear_debug_ops();
+  static const int kDebugOpsFieldNumber = 3;
+  const ::std::string& debug_ops(int index) const;
+  ::std::string* mutable_debug_ops(int index);
+  void set_debug_ops(int index, const ::std::string& value);
+  #if LANG_CXX11
+  void set_debug_ops(int index, ::std::string&& value);
+  #endif
+  void set_debug_ops(int index, const char* value);
+  void set_debug_ops(int index, const char* value, size_t size);
+  ::std::string* add_debug_ops();
+  void add_debug_ops(const ::std::string& value);
+  #if LANG_CXX11
+  void add_debug_ops(::std::string&& value);
+  #endif
+  void add_debug_ops(const char* value);
+  void add_debug_ops(const char* value, size_t size);
+  const ::google::protobuf::RepeatedPtrField<::std::string>& debug_ops() const;
+  ::google::protobuf::RepeatedPtrField<::std::string>* mutable_debug_ops();
+
+  // repeated string debug_urls = 4;
+  int debug_urls_size() const;
+  void clear_debug_urls();
+  static const int kDebugUrlsFieldNumber = 4;
+  const ::std::string& debug_urls(int index) const;
+  ::std::string* mutable_debug_urls(int index);
+  void set_debug_urls(int index, const ::std::string& value);
+  #if LANG_CXX11
+  void set_debug_urls(int index, ::std::string&& value);
+  #endif
+  void set_debug_urls(int index, const char* value);
+  void set_debug_urls(int index, const char* value, size_t size);
+  ::std::string* add_debug_urls();
+  void add_debug_urls(const ::std::string& value);
+  #if LANG_CXX11
+  void add_debug_urls(::std::string&& value);
+  #endif
+  void add_debug_urls(const char* value);
+  void add_debug_urls(const char* value, size_t size);
+  const ::google::protobuf::RepeatedPtrField<::std::string>& debug_urls() const;
+  ::google::protobuf::RepeatedPtrField<::std::string>* mutable_debug_urls();
+
+  // string node_name = 1;
+  void clear_node_name();
+  static const int kNodeNameFieldNumber = 1;
+  const ::std::string& node_name() const;
+  void set_node_name(const ::std::string& value);
+  #if LANG_CXX11
+  void set_node_name(::std::string&& value);
+  #endif
+  void set_node_name(const char* value);
+  void set_node_name(const char* value, size_t size);
+  ::std::string* mutable_node_name();
+  ::std::string* release_node_name();
+  void set_allocated_node_name(::std::string* node_name);
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  ::std::string* unsafe_arena_release_node_name();
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  void unsafe_arena_set_allocated_node_name(
+      ::std::string* node_name);
+
+  // int32 output_slot = 2;
+  void clear_output_slot();
+  static const int kOutputSlotFieldNumber = 2;
+  ::google::protobuf::int32 output_slot() const;
+  void set_output_slot(::google::protobuf::int32 value);
+
+  // bool tolerate_debug_op_creation_failures = 5;
+  void clear_tolerate_debug_op_creation_failures();
+  static const int kTolerateDebugOpCreationFailuresFieldNumber = 5;
+  bool tolerate_debug_op_creation_failures() const;
+  void set_tolerate_debug_op_creation_failures(bool value);
+
+  // @@protoc_insertion_point(class_scope:tensorflow.DebugTensorWatch)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  ::google::protobuf::RepeatedPtrField<::std::string> debug_ops_;
+  ::google::protobuf::RepeatedPtrField<::std::string> debug_urls_;
+  ::google::protobuf::internal::ArenaStringPtr node_name_;
+  ::google::protobuf::int32 output_slot_;
+  bool tolerate_debug_op_creation_failures_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fprotobuf_2fdebug_2eproto;
+};
+// -------------------------------------------------------------------
+
+class DebugOptions : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.DebugOptions) */ {
+ public:
+  DebugOptions();
+  virtual ~DebugOptions();
+
+  DebugOptions(const DebugOptions& from);
+
+  inline DebugOptions& operator=(const DebugOptions& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  DebugOptions(DebugOptions&& from) noexcept
+    : DebugOptions() {
+    *this = ::std::move(from);
+  }
+
+  inline DebugOptions& operator=(DebugOptions&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const DebugOptions& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const DebugOptions* internal_default_instance() {
+    return reinterpret_cast<const DebugOptions*>(
+               &_DebugOptions_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    1;
+
+  void UnsafeArenaSwap(DebugOptions* other);
+  void Swap(DebugOptions* other);
+  friend void swap(DebugOptions& a, DebugOptions& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline DebugOptions* New() const final {
+    return CreateMaybeMessage<DebugOptions>(NULL);
+  }
+
+  DebugOptions* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<DebugOptions>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const DebugOptions& from);
+  void MergeFrom(const DebugOptions& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(DebugOptions* other);
+  protected:
+  explicit DebugOptions(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // repeated .tensorflow.DebugTensorWatch debug_tensor_watch_opts = 4;
+  int debug_tensor_watch_opts_size() const;
+  void clear_debug_tensor_watch_opts();
+  static const int kDebugTensorWatchOptsFieldNumber = 4;
+  ::tensorflow::DebugTensorWatch* mutable_debug_tensor_watch_opts(int index);
+  ::google::protobuf::RepeatedPtrField< ::tensorflow::DebugTensorWatch >*
+      mutable_debug_tensor_watch_opts();
+  const ::tensorflow::DebugTensorWatch& debug_tensor_watch_opts(int index) const;
+  ::tensorflow::DebugTensorWatch* add_debug_tensor_watch_opts();
+  const ::google::protobuf::RepeatedPtrField< ::tensorflow::DebugTensorWatch >&
+      debug_tensor_watch_opts() const;
+
+  // int64 global_step = 10;
+  void clear_global_step();
+  static const int kGlobalStepFieldNumber = 10;
+  ::google::protobuf::int64 global_step() const;
+  void set_global_step(::google::protobuf::int64 value);
+
+  // @@protoc_insertion_point(class_scope:tensorflow.DebugOptions)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  ::google::protobuf::RepeatedPtrField< ::tensorflow::DebugTensorWatch > debug_tensor_watch_opts_;
+  ::google::protobuf::int64 global_step_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fprotobuf_2fdebug_2eproto;
+};
+// -------------------------------------------------------------------
+
+class DebuggedSourceFile : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.DebuggedSourceFile) */ {
+ public:
+  DebuggedSourceFile();
+  virtual ~DebuggedSourceFile();
+
+  DebuggedSourceFile(const DebuggedSourceFile& from);
+
+  inline DebuggedSourceFile& operator=(const DebuggedSourceFile& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  DebuggedSourceFile(DebuggedSourceFile&& from) noexcept
+    : DebuggedSourceFile() {
+    *this = ::std::move(from);
+  }
+
+  inline DebuggedSourceFile& operator=(DebuggedSourceFile&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const DebuggedSourceFile& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const DebuggedSourceFile* internal_default_instance() {
+    return reinterpret_cast<const DebuggedSourceFile*>(
+               &_DebuggedSourceFile_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    2;
+
+  void UnsafeArenaSwap(DebuggedSourceFile* other);
+  void Swap(DebuggedSourceFile* other);
+  friend void swap(DebuggedSourceFile& a, DebuggedSourceFile& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline DebuggedSourceFile* New() const final {
+    return CreateMaybeMessage<DebuggedSourceFile>(NULL);
+  }
+
+  DebuggedSourceFile* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<DebuggedSourceFile>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const DebuggedSourceFile& from);
+  void MergeFrom(const DebuggedSourceFile& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(DebuggedSourceFile* other);
+  protected:
+  explicit DebuggedSourceFile(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // repeated string lines = 5;
+  int lines_size() const;
+  void clear_lines();
+  static const int kLinesFieldNumber = 5;
+  const ::std::string& lines(int index) const;
+  ::std::string* mutable_lines(int index);
+  void set_lines(int index, const ::std::string& value);
+  #if LANG_CXX11
+  void set_lines(int index, ::std::string&& value);
+  #endif
+  void set_lines(int index, const char* value);
+  void set_lines(int index, const char* value, size_t size);
+  ::std::string* add_lines();
+  void add_lines(const ::std::string& value);
+  #if LANG_CXX11
+  void add_lines(::std::string&& value);
+  #endif
+  void add_lines(const char* value);
+  void add_lines(const char* value, size_t size);
+  const ::google::protobuf::RepeatedPtrField<::std::string>& lines() const;
+  ::google::protobuf::RepeatedPtrField<::std::string>* mutable_lines();
+
+  // string host = 1;
+  void clear_host();
+  static const int kHostFieldNumber = 1;
+  const ::std::string& host() const;
+  void set_host(const ::std::string& value);
+  #if LANG_CXX11
+  void set_host(::std::string&& value);
+  #endif
+  void set_host(const char* value);
+  void set_host(const char* value, size_t size);
+  ::std::string* mutable_host();
+  ::std::string* release_host();
+  void set_allocated_host(::std::string* host);
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  ::std::string* unsafe_arena_release_host();
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  void unsafe_arena_set_allocated_host(
+      ::std::string* host);
+
+  // string file_path = 2;
+  void clear_file_path();
+  static const int kFilePathFieldNumber = 2;
+  const ::std::string& file_path() const;
+  void set_file_path(const ::std::string& value);
+  #if LANG_CXX11
+  void set_file_path(::std::string&& value);
+  #endif
+  void set_file_path(const char* value);
+  void set_file_path(const char* value, size_t size);
+  ::std::string* mutable_file_path();
+  ::std::string* release_file_path();
+  void set_allocated_file_path(::std::string* file_path);
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  ::std::string* unsafe_arena_release_file_path();
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  void unsafe_arena_set_allocated_file_path(
+      ::std::string* file_path);
+
+  // int64 last_modified = 3;
+  void clear_last_modified();
+  static const int kLastModifiedFieldNumber = 3;
+  ::google::protobuf::int64 last_modified() const;
+  void set_last_modified(::google::protobuf::int64 value);
+
+  // int64 bytes = 4;
+  void clear_bytes();
+  static const int kBytesFieldNumber = 4;
+  ::google::protobuf::int64 bytes() const;
+  void set_bytes(::google::protobuf::int64 value);
+
+  // @@protoc_insertion_point(class_scope:tensorflow.DebuggedSourceFile)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  ::google::protobuf::RepeatedPtrField<::std::string> lines_;
+  ::google::protobuf::internal::ArenaStringPtr host_;
+  ::google::protobuf::internal::ArenaStringPtr file_path_;
+  ::google::protobuf::int64 last_modified_;
+  ::google::protobuf::int64 bytes_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fprotobuf_2fdebug_2eproto;
+};
+// -------------------------------------------------------------------
+
+class DebuggedSourceFiles : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.DebuggedSourceFiles) */ {
+ public:
+  DebuggedSourceFiles();
+  virtual ~DebuggedSourceFiles();
+
+  DebuggedSourceFiles(const DebuggedSourceFiles& from);
+
+  inline DebuggedSourceFiles& operator=(const DebuggedSourceFiles& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  DebuggedSourceFiles(DebuggedSourceFiles&& from) noexcept
+    : DebuggedSourceFiles() {
+    *this = ::std::move(from);
+  }
+
+  inline DebuggedSourceFiles& operator=(DebuggedSourceFiles&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const DebuggedSourceFiles& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const DebuggedSourceFiles* internal_default_instance() {
+    return reinterpret_cast<const DebuggedSourceFiles*>(
+               &_DebuggedSourceFiles_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    3;
+
+  void UnsafeArenaSwap(DebuggedSourceFiles* other);
+  void Swap(DebuggedSourceFiles* other);
+  friend void swap(DebuggedSourceFiles& a, DebuggedSourceFiles& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline DebuggedSourceFiles* New() const final {
+    return CreateMaybeMessage<DebuggedSourceFiles>(NULL);
+  }
+
+  DebuggedSourceFiles* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<DebuggedSourceFiles>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const DebuggedSourceFiles& from);
+  void MergeFrom(const DebuggedSourceFiles& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(DebuggedSourceFiles* other);
+  protected:
+  explicit DebuggedSourceFiles(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // repeated .tensorflow.DebuggedSourceFile source_files = 1;
+  int source_files_size() const;
+  void clear_source_files();
+  static const int kSourceFilesFieldNumber = 1;
+  ::tensorflow::DebuggedSourceFile* mutable_source_files(int index);
+  ::google::protobuf::RepeatedPtrField< ::tensorflow::DebuggedSourceFile >*
+      mutable_source_files();
+  const ::tensorflow::DebuggedSourceFile& source_files(int index) const;
+  ::tensorflow::DebuggedSourceFile* add_source_files();
+  const ::google::protobuf::RepeatedPtrField< ::tensorflow::DebuggedSourceFile >&
+      source_files() const;
+
+  // @@protoc_insertion_point(class_scope:tensorflow.DebuggedSourceFiles)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  ::google::protobuf::RepeatedPtrField< ::tensorflow::DebuggedSourceFile > source_files_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fprotobuf_2fdebug_2eproto;
+};
+// ===================================================================
+
+
+// ===================================================================
+
+#ifdef __GNUC__
+  #pragma GCC diagnostic push
+  #pragma GCC diagnostic ignored "-Wstrict-aliasing"
+#endif  // __GNUC__
+// DebugTensorWatch
+
+// string node_name = 1;
+inline void DebugTensorWatch::clear_node_name() {
+  node_name_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline const ::std::string& DebugTensorWatch::node_name() const {
+  // @@protoc_insertion_point(field_get:tensorflow.DebugTensorWatch.node_name)
+  return node_name_.Get();
+}
+inline void DebugTensorWatch::set_node_name(const ::std::string& value) {
+  
+  node_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set:tensorflow.DebugTensorWatch.node_name)
+}
+#if LANG_CXX11
+inline void DebugTensorWatch::set_node_name(::std::string&& value) {
+  
+  node_name_.Set(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.DebugTensorWatch.node_name)
+}
+#endif
+inline void DebugTensorWatch::set_node_name(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  node_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
+              GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_char:tensorflow.DebugTensorWatch.node_name)
+}
+inline void DebugTensorWatch::set_node_name(const char* value,
+    size_t size) {
+  
+  node_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
+      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.DebugTensorWatch.node_name)
+}
+inline ::std::string* DebugTensorWatch::mutable_node_name() {
+  
+  // @@protoc_insertion_point(field_mutable:tensorflow.DebugTensorWatch.node_name)
+  return node_name_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline ::std::string* DebugTensorWatch::release_node_name() {
+  // @@protoc_insertion_point(field_release:tensorflow.DebugTensorWatch.node_name)
+  
+  return node_name_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline void DebugTensorWatch::set_allocated_node_name(::std::string* node_name) {
+  if (node_name != NULL) {
+    
+  } else {
+    
+  }
+  node_name_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), node_name,
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.DebugTensorWatch.node_name)
+}
+inline ::std::string* DebugTensorWatch::unsafe_arena_release_node_name() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.DebugTensorWatch.node_name)
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  
+  return node_name_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      GetArenaNoVirtual());
+}
+inline void DebugTensorWatch::unsafe_arena_set_allocated_node_name(
+    ::std::string* node_name) {
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (node_name != NULL) {
+    
+  } else {
+    
+  }
+  node_name_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      node_name, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.DebugTensorWatch.node_name)
+}
+
+// int32 output_slot = 2;
+inline void DebugTensorWatch::clear_output_slot() {
+  output_slot_ = 0;
+}
+inline ::google::protobuf::int32 DebugTensorWatch::output_slot() const {
+  // @@protoc_insertion_point(field_get:tensorflow.DebugTensorWatch.output_slot)
+  return output_slot_;
+}
+inline void DebugTensorWatch::set_output_slot(::google::protobuf::int32 value) {
+  
+  output_slot_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.DebugTensorWatch.output_slot)
+}
+
+// repeated string debug_ops = 3;
+inline int DebugTensorWatch::debug_ops_size() const {
+  return debug_ops_.size();
+}
+inline void DebugTensorWatch::clear_debug_ops() {
+  debug_ops_.Clear();
+}
+inline const ::std::string& DebugTensorWatch::debug_ops(int index) const {
+  // @@protoc_insertion_point(field_get:tensorflow.DebugTensorWatch.debug_ops)
+  return debug_ops_.Get(index);
+}
+inline ::std::string* DebugTensorWatch::mutable_debug_ops(int index) {
+  // @@protoc_insertion_point(field_mutable:tensorflow.DebugTensorWatch.debug_ops)
+  return debug_ops_.Mutable(index);
+}
+inline void DebugTensorWatch::set_debug_ops(int index, const ::std::string& value) {
+  // @@protoc_insertion_point(field_set:tensorflow.DebugTensorWatch.debug_ops)
+  debug_ops_.Mutable(index)->assign(value);
+}
+#if LANG_CXX11
+inline void DebugTensorWatch::set_debug_ops(int index, ::std::string&& value) {
+  // @@protoc_insertion_point(field_set:tensorflow.DebugTensorWatch.debug_ops)
+  debug_ops_.Mutable(index)->assign(std::move(value));
+}
+#endif
+inline void DebugTensorWatch::set_debug_ops(int index, const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  debug_ops_.Mutable(index)->assign(value);
+  // @@protoc_insertion_point(field_set_char:tensorflow.DebugTensorWatch.debug_ops)
+}
+inline void DebugTensorWatch::set_debug_ops(int index, const char* value, size_t size) {
+  debug_ops_.Mutable(index)->assign(
+    reinterpret_cast<const char*>(value), size);
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.DebugTensorWatch.debug_ops)
+}
+inline ::std::string* DebugTensorWatch::add_debug_ops() {
+  // @@protoc_insertion_point(field_add_mutable:tensorflow.DebugTensorWatch.debug_ops)
+  return debug_ops_.Add();
+}
+inline void DebugTensorWatch::add_debug_ops(const ::std::string& value) {
+  debug_ops_.Add()->assign(value);
+  // @@protoc_insertion_point(field_add:tensorflow.DebugTensorWatch.debug_ops)
+}
+#if LANG_CXX11
+inline void DebugTensorWatch::add_debug_ops(::std::string&& value) {
+  debug_ops_.Add(std::move(value));
+  // @@protoc_insertion_point(field_add:tensorflow.DebugTensorWatch.debug_ops)
+}
+#endif
+inline void DebugTensorWatch::add_debug_ops(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  debug_ops_.Add()->assign(value);
+  // @@protoc_insertion_point(field_add_char:tensorflow.DebugTensorWatch.debug_ops)
+}
+inline void DebugTensorWatch::add_debug_ops(const char* value, size_t size) {
+  debug_ops_.Add()->assign(reinterpret_cast<const char*>(value), size);
+  // @@protoc_insertion_point(field_add_pointer:tensorflow.DebugTensorWatch.debug_ops)
+}
+inline const ::google::protobuf::RepeatedPtrField<::std::string>&
+DebugTensorWatch::debug_ops() const {
+  // @@protoc_insertion_point(field_list:tensorflow.DebugTensorWatch.debug_ops)
+  return debug_ops_;
+}
+inline ::google::protobuf::RepeatedPtrField<::std::string>*
+DebugTensorWatch::mutable_debug_ops() {
+  // @@protoc_insertion_point(field_mutable_list:tensorflow.DebugTensorWatch.debug_ops)
+  return &debug_ops_;
+}
+
+// repeated string debug_urls = 4;
+inline int DebugTensorWatch::debug_urls_size() const {
+  return debug_urls_.size();
+}
+inline void DebugTensorWatch::clear_debug_urls() {
+  debug_urls_.Clear();
+}
+inline const ::std::string& DebugTensorWatch::debug_urls(int index) const {
+  // @@protoc_insertion_point(field_get:tensorflow.DebugTensorWatch.debug_urls)
+  return debug_urls_.Get(index);
+}
+inline ::std::string* DebugTensorWatch::mutable_debug_urls(int index) {
+  // @@protoc_insertion_point(field_mutable:tensorflow.DebugTensorWatch.debug_urls)
+  return debug_urls_.Mutable(index);
+}
+inline void DebugTensorWatch::set_debug_urls(int index, const ::std::string& value) {
+  // @@protoc_insertion_point(field_set:tensorflow.DebugTensorWatch.debug_urls)
+  debug_urls_.Mutable(index)->assign(value);
+}
+#if LANG_CXX11
+inline void DebugTensorWatch::set_debug_urls(int index, ::std::string&& value) {
+  // @@protoc_insertion_point(field_set:tensorflow.DebugTensorWatch.debug_urls)
+  debug_urls_.Mutable(index)->assign(std::move(value));
+}
+#endif
+inline void DebugTensorWatch::set_debug_urls(int index, const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  debug_urls_.Mutable(index)->assign(value);
+  // @@protoc_insertion_point(field_set_char:tensorflow.DebugTensorWatch.debug_urls)
+}
+inline void DebugTensorWatch::set_debug_urls(int index, const char* value, size_t size) {
+  debug_urls_.Mutable(index)->assign(
+    reinterpret_cast<const char*>(value), size);
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.DebugTensorWatch.debug_urls)
+}
+inline ::std::string* DebugTensorWatch::add_debug_urls() {
+  // @@protoc_insertion_point(field_add_mutable:tensorflow.DebugTensorWatch.debug_urls)
+  return debug_urls_.Add();
+}
+inline void DebugTensorWatch::add_debug_urls(const ::std::string& value) {
+  debug_urls_.Add()->assign(value);
+  // @@protoc_insertion_point(field_add:tensorflow.DebugTensorWatch.debug_urls)
+}
+#if LANG_CXX11
+inline void DebugTensorWatch::add_debug_urls(::std::string&& value) {
+  debug_urls_.Add(std::move(value));
+  // @@protoc_insertion_point(field_add:tensorflow.DebugTensorWatch.debug_urls)
+}
+#endif
+inline void DebugTensorWatch::add_debug_urls(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  debug_urls_.Add()->assign(value);
+  // @@protoc_insertion_point(field_add_char:tensorflow.DebugTensorWatch.debug_urls)
+}
+inline void DebugTensorWatch::add_debug_urls(const char* value, size_t size) {
+  debug_urls_.Add()->assign(reinterpret_cast<const char*>(value), size);
+  // @@protoc_insertion_point(field_add_pointer:tensorflow.DebugTensorWatch.debug_urls)
+}
+inline const ::google::protobuf::RepeatedPtrField<::std::string>&
+DebugTensorWatch::debug_urls() const {
+  // @@protoc_insertion_point(field_list:tensorflow.DebugTensorWatch.debug_urls)
+  return debug_urls_;
+}
+inline ::google::protobuf::RepeatedPtrField<::std::string>*
+DebugTensorWatch::mutable_debug_urls() {
+  // @@protoc_insertion_point(field_mutable_list:tensorflow.DebugTensorWatch.debug_urls)
+  return &debug_urls_;
+}
+
+// bool tolerate_debug_op_creation_failures = 5;
+inline void DebugTensorWatch::clear_tolerate_debug_op_creation_failures() {
+  tolerate_debug_op_creation_failures_ = false;
+}
+inline bool DebugTensorWatch::tolerate_debug_op_creation_failures() const {
+  // @@protoc_insertion_point(field_get:tensorflow.DebugTensorWatch.tolerate_debug_op_creation_failures)
+  return tolerate_debug_op_creation_failures_;
+}
+inline void DebugTensorWatch::set_tolerate_debug_op_creation_failures(bool value) {
+  
+  tolerate_debug_op_creation_failures_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.DebugTensorWatch.tolerate_debug_op_creation_failures)
+}
+
+// -------------------------------------------------------------------
+
+// DebugOptions
+
+// repeated .tensorflow.DebugTensorWatch debug_tensor_watch_opts = 4;
+inline int DebugOptions::debug_tensor_watch_opts_size() const {
+  return debug_tensor_watch_opts_.size();
+}
+inline void DebugOptions::clear_debug_tensor_watch_opts() {
+  debug_tensor_watch_opts_.Clear();
+}
+inline ::tensorflow::DebugTensorWatch* DebugOptions::mutable_debug_tensor_watch_opts(int index) {
+  // @@protoc_insertion_point(field_mutable:tensorflow.DebugOptions.debug_tensor_watch_opts)
+  return debug_tensor_watch_opts_.Mutable(index);
+}
+inline ::google::protobuf::RepeatedPtrField< ::tensorflow::DebugTensorWatch >*
+DebugOptions::mutable_debug_tensor_watch_opts() {
+  // @@protoc_insertion_point(field_mutable_list:tensorflow.DebugOptions.debug_tensor_watch_opts)
+  return &debug_tensor_watch_opts_;
+}
+inline const ::tensorflow::DebugTensorWatch& DebugOptions::debug_tensor_watch_opts(int index) const {
+  // @@protoc_insertion_point(field_get:tensorflow.DebugOptions.debug_tensor_watch_opts)
+  return debug_tensor_watch_opts_.Get(index);
+}
+inline ::tensorflow::DebugTensorWatch* DebugOptions::add_debug_tensor_watch_opts() {
+  // @@protoc_insertion_point(field_add:tensorflow.DebugOptions.debug_tensor_watch_opts)
+  return debug_tensor_watch_opts_.Add();
+}
+inline const ::google::protobuf::RepeatedPtrField< ::tensorflow::DebugTensorWatch >&
+DebugOptions::debug_tensor_watch_opts() const {
+  // @@protoc_insertion_point(field_list:tensorflow.DebugOptions.debug_tensor_watch_opts)
+  return debug_tensor_watch_opts_;
+}
+
+// int64 global_step = 10;
+inline void DebugOptions::clear_global_step() {
+  global_step_ = PROTOBUF_LONGLONG(0);
+}
+inline ::google::protobuf::int64 DebugOptions::global_step() const {
+  // @@protoc_insertion_point(field_get:tensorflow.DebugOptions.global_step)
+  return global_step_;
+}
+inline void DebugOptions::set_global_step(::google::protobuf::int64 value) {
+  
+  global_step_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.DebugOptions.global_step)
+}
+
+// -------------------------------------------------------------------
+
+// DebuggedSourceFile
+
+// string host = 1;
+inline void DebuggedSourceFile::clear_host() {
+  host_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline const ::std::string& DebuggedSourceFile::host() const {
+  // @@protoc_insertion_point(field_get:tensorflow.DebuggedSourceFile.host)
+  return host_.Get();
+}
+inline void DebuggedSourceFile::set_host(const ::std::string& value) {
+  
+  host_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set:tensorflow.DebuggedSourceFile.host)
+}
+#if LANG_CXX11
+inline void DebuggedSourceFile::set_host(::std::string&& value) {
+  
+  host_.Set(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.DebuggedSourceFile.host)
+}
+#endif
+inline void DebuggedSourceFile::set_host(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  host_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
+              GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_char:tensorflow.DebuggedSourceFile.host)
+}
+inline void DebuggedSourceFile::set_host(const char* value,
+    size_t size) {
+  
+  host_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
+      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.DebuggedSourceFile.host)
+}
+inline ::std::string* DebuggedSourceFile::mutable_host() {
+  
+  // @@protoc_insertion_point(field_mutable:tensorflow.DebuggedSourceFile.host)
+  return host_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline ::std::string* DebuggedSourceFile::release_host() {
+  // @@protoc_insertion_point(field_release:tensorflow.DebuggedSourceFile.host)
+  
+  return host_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline void DebuggedSourceFile::set_allocated_host(::std::string* host) {
+  if (host != NULL) {
+    
+  } else {
+    
+  }
+  host_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), host,
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.DebuggedSourceFile.host)
+}
+inline ::std::string* DebuggedSourceFile::unsafe_arena_release_host() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.DebuggedSourceFile.host)
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  
+  return host_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      GetArenaNoVirtual());
+}
+inline void DebuggedSourceFile::unsafe_arena_set_allocated_host(
+    ::std::string* host) {
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (host != NULL) {
+    
+  } else {
+    
+  }
+  host_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      host, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.DebuggedSourceFile.host)
+}
+
+// string file_path = 2;
+inline void DebuggedSourceFile::clear_file_path() {
+  file_path_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline const ::std::string& DebuggedSourceFile::file_path() const {
+  // @@protoc_insertion_point(field_get:tensorflow.DebuggedSourceFile.file_path)
+  return file_path_.Get();
+}
+inline void DebuggedSourceFile::set_file_path(const ::std::string& value) {
+  
+  file_path_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set:tensorflow.DebuggedSourceFile.file_path)
+}
+#if LANG_CXX11
+inline void DebuggedSourceFile::set_file_path(::std::string&& value) {
+  
+  file_path_.Set(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.DebuggedSourceFile.file_path)
+}
+#endif
+inline void DebuggedSourceFile::set_file_path(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  file_path_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
+              GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_char:tensorflow.DebuggedSourceFile.file_path)
+}
+inline void DebuggedSourceFile::set_file_path(const char* value,
+    size_t size) {
+  
+  file_path_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
+      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.DebuggedSourceFile.file_path)
+}
+inline ::std::string* DebuggedSourceFile::mutable_file_path() {
+  
+  // @@protoc_insertion_point(field_mutable:tensorflow.DebuggedSourceFile.file_path)
+  return file_path_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline ::std::string* DebuggedSourceFile::release_file_path() {
+  // @@protoc_insertion_point(field_release:tensorflow.DebuggedSourceFile.file_path)
+  
+  return file_path_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline void DebuggedSourceFile::set_allocated_file_path(::std::string* file_path) {
+  if (file_path != NULL) {
+    
+  } else {
+    
+  }
+  file_path_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), file_path,
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.DebuggedSourceFile.file_path)
+}
+inline ::std::string* DebuggedSourceFile::unsafe_arena_release_file_path() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.DebuggedSourceFile.file_path)
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  
+  return file_path_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      GetArenaNoVirtual());
+}
+inline void DebuggedSourceFile::unsafe_arena_set_allocated_file_path(
+    ::std::string* file_path) {
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (file_path != NULL) {
+    
+  } else {
+    
+  }
+  file_path_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      file_path, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.DebuggedSourceFile.file_path)
+}
+
+// int64 last_modified = 3;
+inline void DebuggedSourceFile::clear_last_modified() {
+  last_modified_ = PROTOBUF_LONGLONG(0);
+}
+inline ::google::protobuf::int64 DebuggedSourceFile::last_modified() const {
+  // @@protoc_insertion_point(field_get:tensorflow.DebuggedSourceFile.last_modified)
+  return last_modified_;
+}
+inline void DebuggedSourceFile::set_last_modified(::google::protobuf::int64 value) {
+  
+  last_modified_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.DebuggedSourceFile.last_modified)
+}
+
+// int64 bytes = 4;
+inline void DebuggedSourceFile::clear_bytes() {
+  bytes_ = PROTOBUF_LONGLONG(0);
+}
+inline ::google::protobuf::int64 DebuggedSourceFile::bytes() const {
+  // @@protoc_insertion_point(field_get:tensorflow.DebuggedSourceFile.bytes)
+  return bytes_;
+}
+inline void DebuggedSourceFile::set_bytes(::google::protobuf::int64 value) {
+  
+  bytes_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.DebuggedSourceFile.bytes)
+}
+
+// repeated string lines = 5;
+inline int DebuggedSourceFile::lines_size() const {
+  return lines_.size();
+}
+inline void DebuggedSourceFile::clear_lines() {
+  lines_.Clear();
+}
+inline const ::std::string& DebuggedSourceFile::lines(int index) const {
+  // @@protoc_insertion_point(field_get:tensorflow.DebuggedSourceFile.lines)
+  return lines_.Get(index);
+}
+inline ::std::string* DebuggedSourceFile::mutable_lines(int index) {
+  // @@protoc_insertion_point(field_mutable:tensorflow.DebuggedSourceFile.lines)
+  return lines_.Mutable(index);
+}
+inline void DebuggedSourceFile::set_lines(int index, const ::std::string& value) {
+  // @@protoc_insertion_point(field_set:tensorflow.DebuggedSourceFile.lines)
+  lines_.Mutable(index)->assign(value);
+}
+#if LANG_CXX11
+inline void DebuggedSourceFile::set_lines(int index, ::std::string&& value) {
+  // @@protoc_insertion_point(field_set:tensorflow.DebuggedSourceFile.lines)
+  lines_.Mutable(index)->assign(std::move(value));
+}
+#endif
+inline void DebuggedSourceFile::set_lines(int index, const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  lines_.Mutable(index)->assign(value);
+  // @@protoc_insertion_point(field_set_char:tensorflow.DebuggedSourceFile.lines)
+}
+inline void DebuggedSourceFile::set_lines(int index, const char* value, size_t size) {
+  lines_.Mutable(index)->assign(
+    reinterpret_cast<const char*>(value), size);
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.DebuggedSourceFile.lines)
+}
+inline ::std::string* DebuggedSourceFile::add_lines() {
+  // @@protoc_insertion_point(field_add_mutable:tensorflow.DebuggedSourceFile.lines)
+  return lines_.Add();
+}
+inline void DebuggedSourceFile::add_lines(const ::std::string& value) {
+  lines_.Add()->assign(value);
+  // @@protoc_insertion_point(field_add:tensorflow.DebuggedSourceFile.lines)
+}
+#if LANG_CXX11
+inline void DebuggedSourceFile::add_lines(::std::string&& value) {
+  lines_.Add(std::move(value));
+  // @@protoc_insertion_point(field_add:tensorflow.DebuggedSourceFile.lines)
+}
+#endif
+inline void DebuggedSourceFile::add_lines(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  lines_.Add()->assign(value);
+  // @@protoc_insertion_point(field_add_char:tensorflow.DebuggedSourceFile.lines)
+}
+inline void DebuggedSourceFile::add_lines(const char* value, size_t size) {
+  lines_.Add()->assign(reinterpret_cast<const char*>(value), size);
+  // @@protoc_insertion_point(field_add_pointer:tensorflow.DebuggedSourceFile.lines)
+}
+inline const ::google::protobuf::RepeatedPtrField<::std::string>&
+DebuggedSourceFile::lines() const {
+  // @@protoc_insertion_point(field_list:tensorflow.DebuggedSourceFile.lines)
+  return lines_;
+}
+inline ::google::protobuf::RepeatedPtrField<::std::string>*
+DebuggedSourceFile::mutable_lines() {
+  // @@protoc_insertion_point(field_mutable_list:tensorflow.DebuggedSourceFile.lines)
+  return &lines_;
+}
+
+// -------------------------------------------------------------------
+
+// DebuggedSourceFiles
+
+// repeated .tensorflow.DebuggedSourceFile source_files = 1;
+inline int DebuggedSourceFiles::source_files_size() const {
+  return source_files_.size();
+}
+inline void DebuggedSourceFiles::clear_source_files() {
+  source_files_.Clear();
+}
+inline ::tensorflow::DebuggedSourceFile* DebuggedSourceFiles::mutable_source_files(int index) {
+  // @@protoc_insertion_point(field_mutable:tensorflow.DebuggedSourceFiles.source_files)
+  return source_files_.Mutable(index);
+}
+inline ::google::protobuf::RepeatedPtrField< ::tensorflow::DebuggedSourceFile >*
+DebuggedSourceFiles::mutable_source_files() {
+  // @@protoc_insertion_point(field_mutable_list:tensorflow.DebuggedSourceFiles.source_files)
+  return &source_files_;
+}
+inline const ::tensorflow::DebuggedSourceFile& DebuggedSourceFiles::source_files(int index) const {
+  // @@protoc_insertion_point(field_get:tensorflow.DebuggedSourceFiles.source_files)
+  return source_files_.Get(index);
+}
+inline ::tensorflow::DebuggedSourceFile* DebuggedSourceFiles::add_source_files() {
+  // @@protoc_insertion_point(field_add:tensorflow.DebuggedSourceFiles.source_files)
+  return source_files_.Add();
+}
+inline const ::google::protobuf::RepeatedPtrField< ::tensorflow::DebuggedSourceFile >&
+DebuggedSourceFiles::source_files() const {
+  // @@protoc_insertion_point(field_list:tensorflow.DebuggedSourceFiles.source_files)
+  return source_files_;
+}
+
+#ifdef __GNUC__
+  #pragma GCC diagnostic pop
+#endif  // __GNUC__
+// -------------------------------------------------------------------
+
+// -------------------------------------------------------------------
+
+// -------------------------------------------------------------------
+
+
+// @@protoc_insertion_point(namespace_scope)
+
+}  // namespace tensorflow
+
+// @@protoc_insertion_point(global_scope)
+
+#include <google/protobuf/port_undef.inc>
+#endif  // PROTOBUF_INCLUDED_tensorflow_2fcore_2fprotobuf_2fdebug_2eproto
diff --git a/tensorflow/core/protobuf/debug.proto b/tensorflow/core/protobuf/debug.proto
new file mode 100644 (file)
index 0000000..499900f
--- /dev/null
@@ -0,0 +1,85 @@
+syntax = "proto3";
+
+package tensorflow;
+option cc_enable_arenas = true;
+option java_outer_classname = "DebugProtos";
+option java_multiple_files = true;
+option java_package = "org.tensorflow.framework";
+option go_package = "github.com/tensorflow/tensorflow/tensorflow/go/core/protobuf";
+
+// EXPERIMENTAL. Option for watching a node.
+message DebugTensorWatch {
+  // Name of the node to watch.
+  string node_name = 1;
+
+  // Output slot to watch.
+  // The semantics of output_slot == -1 is that the node is only watched for
+  // completion, but not for any output tensors. See NodeCompletionCallback
+  // in debug_gateway.h.
+  // TODO(cais): Implement this semantics.
+  int32 output_slot = 2;
+
+  // Name(s) of the debugging op(s).
+  // One or more than one probes on a tensor.
+  // e.g., {"DebugIdentity", "DebugNanCount"}
+  repeated string debug_ops = 3;
+
+  // URL(s) for debug targets(s).
+  //
+  // Supported URL formats are:
+  //   - file:///foo/tfdbg_dump: Writes out Event content to file
+  //     /foo/tfdbg_dump.  Assumes all directories can be created if they don't
+  //     already exist.
+  //   - grpc://localhost:11011: Sends an RPC request to an EventListener
+  //     service running at localhost:11011 with the event.
+  //   - memcbk:///event_key: Routes tensors to clients using the
+  //     callback registered with the DebugCallbackRegistry for event_key.
+  //
+  // Each debug op listed in debug_ops will publish its output tensor (debug
+  // signal) to all URLs in debug_urls.
+  //
+  // N.B. Session::Run() supports concurrent invocations of the same inputs
+  // (feed keys), outputs and target nodes. If such concurrent invocations
+  // are to be debugged, the callers of Session::Run() must use distinct
+  // debug_urls to make sure that the streamed or dumped events do not overlap
+  // among the invocations.
+  // TODO(cais): More visible documentation of this in g3docs.
+  repeated string debug_urls = 4;
+
+  // Do not error out if debug op creation fails (e.g., due to dtype
+  // incompatibility). Instead, just log the failure.
+  bool tolerate_debug_op_creation_failures = 5;
+}
+
+// EXPERIMENTAL. Options for initializing DebuggerState.
+message DebugOptions {
+  // Debugging options
+  repeated DebugTensorWatch debug_tensor_watch_opts = 4;
+
+  // Caller-specified global step count.
+  // Note that this is distinct from the session run count and the executor
+  // step count.
+  int64 global_step = 10;
+}
+
+message DebuggedSourceFile {
+  // The host name on which a source code file is located.
+  string host = 1;
+
+  // Path to the source code file.
+  string file_path = 2;
+
+  // The timestamp at which the source code file is last modified.
+  int64 last_modified = 3;
+
+  // Byte size of the file.
+  int64 bytes = 4;
+
+  // Line-by-line content of the source code file.
+  repeated string lines = 5;
+}
+
+message DebuggedSourceFiles {
+  // A collection of source code files.
+  repeated DebuggedSourceFile source_files = 1;
+}
diff --git a/tensorflow/core/protobuf/device_properties.pb.cc b/tensorflow/core/protobuf/device_properties.pb.cc
new file mode 100644 (file)
index 0000000..74f75e4
--- /dev/null
@@ -0,0 +1,1711 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: tensorflow/core/protobuf/device_properties.proto
+
+#include "tensorflow/core/protobuf/device_properties.pb.h"
+
+#include <algorithm>
+
+#include <google/protobuf/stubs/common.h>
+#include <google/protobuf/io/coded_stream.h>
+#include <google/protobuf/extension_set.h>
+#include <google/protobuf/wire_format_lite_inl.h>
+#include <google/protobuf/descriptor.h>
+#include <google/protobuf/generated_message_reflection.h>
+#include <google/protobuf/reflection_ops.h>
+#include <google/protobuf/wire_format.h>
+// @@protoc_insertion_point(includes)
+#include <google/protobuf/port_def.inc>
+
+extern PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fprotobuf_2fdevice_5fproperties_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_DeviceProperties_EnvironmentEntry_DoNotUse_tensorflow_2fcore_2fprotobuf_2fdevice_5fproperties_2eproto;
+extern PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fprotobuf_2fdevice_5fproperties_2eproto ::google::protobuf::internal::SCCInfo<1> scc_info_DeviceProperties_tensorflow_2fcore_2fprotobuf_2fdevice_5fproperties_2eproto;
+namespace tensorflow {
+class DeviceProperties_EnvironmentEntry_DoNotUseDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<DeviceProperties_EnvironmentEntry_DoNotUse> _instance;
+} _DeviceProperties_EnvironmentEntry_DoNotUse_default_instance_;
+class DevicePropertiesDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<DeviceProperties> _instance;
+} _DeviceProperties_default_instance_;
+class NamedDeviceDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<NamedDevice> _instance;
+} _NamedDevice_default_instance_;
+}  // namespace tensorflow
+static void InitDefaultsDeviceProperties_EnvironmentEntry_DoNotUse_tensorflow_2fcore_2fprotobuf_2fdevice_5fproperties_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_DeviceProperties_EnvironmentEntry_DoNotUse_default_instance_;
+    new (ptr) ::tensorflow::DeviceProperties_EnvironmentEntry_DoNotUse();
+  }
+  ::tensorflow::DeviceProperties_EnvironmentEntry_DoNotUse::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<0> scc_info_DeviceProperties_EnvironmentEntry_DoNotUse_tensorflow_2fcore_2fprotobuf_2fdevice_5fproperties_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsDeviceProperties_EnvironmentEntry_DoNotUse_tensorflow_2fcore_2fprotobuf_2fdevice_5fproperties_2eproto}, {}};
+
+static void InitDefaultsDeviceProperties_tensorflow_2fcore_2fprotobuf_2fdevice_5fproperties_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_DeviceProperties_default_instance_;
+    new (ptr) ::tensorflow::DeviceProperties();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::DeviceProperties::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<1> scc_info_DeviceProperties_tensorflow_2fcore_2fprotobuf_2fdevice_5fproperties_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsDeviceProperties_tensorflow_2fcore_2fprotobuf_2fdevice_5fproperties_2eproto}, {
+      &scc_info_DeviceProperties_EnvironmentEntry_DoNotUse_tensorflow_2fcore_2fprotobuf_2fdevice_5fproperties_2eproto.base,}};
+
+static void InitDefaultsNamedDevice_tensorflow_2fcore_2fprotobuf_2fdevice_5fproperties_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_NamedDevice_default_instance_;
+    new (ptr) ::tensorflow::NamedDevice();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::NamedDevice::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<1> scc_info_NamedDevice_tensorflow_2fcore_2fprotobuf_2fdevice_5fproperties_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsNamedDevice_tensorflow_2fcore_2fprotobuf_2fdevice_5fproperties_2eproto}, {
+      &scc_info_DeviceProperties_tensorflow_2fcore_2fprotobuf_2fdevice_5fproperties_2eproto.base,}};
+
+void InitDefaults_tensorflow_2fcore_2fprotobuf_2fdevice_5fproperties_2eproto() {
+  ::google::protobuf::internal::InitSCC(&scc_info_DeviceProperties_EnvironmentEntry_DoNotUse_tensorflow_2fcore_2fprotobuf_2fdevice_5fproperties_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_DeviceProperties_tensorflow_2fcore_2fprotobuf_2fdevice_5fproperties_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_NamedDevice_tensorflow_2fcore_2fprotobuf_2fdevice_5fproperties_2eproto.base);
+}
+
+::google::protobuf::Metadata file_level_metadata_tensorflow_2fcore_2fprotobuf_2fdevice_5fproperties_2eproto[3];
+constexpr ::google::protobuf::EnumDescriptor const** file_level_enum_descriptors_tensorflow_2fcore_2fprotobuf_2fdevice_5fproperties_2eproto = nullptr;
+constexpr ::google::protobuf::ServiceDescriptor const** file_level_service_descriptors_tensorflow_2fcore_2fprotobuf_2fdevice_5fproperties_2eproto = nullptr;
+
+const ::google::protobuf::uint32 TableStruct_tensorflow_2fcore_2fprotobuf_2fdevice_5fproperties_2eproto::offsets[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = {
+  PROTOBUF_FIELD_OFFSET(::tensorflow::DeviceProperties_EnvironmentEntry_DoNotUse, _has_bits_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::DeviceProperties_EnvironmentEntry_DoNotUse, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::DeviceProperties_EnvironmentEntry_DoNotUse, key_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::DeviceProperties_EnvironmentEntry_DoNotUse, value_),
+  0,
+  1,
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::DeviceProperties, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::DeviceProperties, type_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::DeviceProperties, vendor_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::DeviceProperties, model_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::DeviceProperties, frequency_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::DeviceProperties, num_cores_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::DeviceProperties, environment_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::DeviceProperties, num_registers_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::DeviceProperties, l1_cache_size_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::DeviceProperties, l2_cache_size_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::DeviceProperties, l3_cache_size_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::DeviceProperties, shared_memory_size_per_multiprocessor_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::DeviceProperties, memory_size_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::DeviceProperties, bandwidth_),
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::NamedDevice, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::NamedDevice, name_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::NamedDevice, properties_),
+};
+static const ::google::protobuf::internal::MigrationSchema schemas[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = {
+  { 0, 7, sizeof(::tensorflow::DeviceProperties_EnvironmentEntry_DoNotUse)},
+  { 9, -1, sizeof(::tensorflow::DeviceProperties)},
+  { 27, -1, sizeof(::tensorflow::NamedDevice)},
+};
+
+static ::google::protobuf::Message const * const file_default_instances[] = {
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_DeviceProperties_EnvironmentEntry_DoNotUse_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_DeviceProperties_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_NamedDevice_default_instance_),
+};
+
+::google::protobuf::internal::AssignDescriptorsTable assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2fdevice_5fproperties_2eproto = {
+  {}, AddDescriptors_tensorflow_2fcore_2fprotobuf_2fdevice_5fproperties_2eproto, "tensorflow/core/protobuf/device_properties.proto", schemas,
+  file_default_instances, TableStruct_tensorflow_2fcore_2fprotobuf_2fdevice_5fproperties_2eproto::offsets,
+  file_level_metadata_tensorflow_2fcore_2fprotobuf_2fdevice_5fproperties_2eproto, 3, file_level_enum_descriptors_tensorflow_2fcore_2fprotobuf_2fdevice_5fproperties_2eproto, file_level_service_descriptors_tensorflow_2fcore_2fprotobuf_2fdevice_5fproperties_2eproto,
+};
+
+::google::protobuf::internal::DescriptorTable descriptor_table_tensorflow_2fcore_2fprotobuf_2fdevice_5fproperties_2eproto = {
+  false, InitDefaults_tensorflow_2fcore_2fprotobuf_2fdevice_5fproperties_2eproto, 
+  "\n0tensorflow/core/protobuf/device_proper"
+  "ties.proto\022\ntensorflow\"\220\003\n\020DevicePropert"
+  "ies\022\014\n\004type\030\001 \001(\t\022\016\n\006vendor\030\002 \001(\t\022\r\n\005mod"
+  "el\030\003 \001(\t\022\021\n\tfrequency\030\004 \001(\003\022\021\n\tnum_cores"
+  "\030\005 \001(\003\022B\n\013environment\030\006 \003(\0132-.tensorflow"
+  ".DeviceProperties.EnvironmentEntry\022\025\n\rnu"
+  "m_registers\030\007 \001(\003\022\025\n\rl1_cache_size\030\010 \001(\003"
+  "\022\025\n\rl2_cache_size\030\t \001(\003\022\025\n\rl3_cache_size"
+  "\030\n \001(\003\022-\n%shared_memory_size_per_multipr"
+  "ocessor\030\013 \001(\003\022\023\n\013memory_size\030\014 \001(\003\022\021\n\tba"
+  "ndwidth\030\r \001(\003\0322\n\020EnvironmentEntry\022\013\n\003key"
+  "\030\001 \001(\t\022\r\n\005value\030\002 \001(\t:\0028\001\"M\n\013NamedDevice"
+  "\022\014\n\004name\030\001 \001(\t\0220\n\nproperties\030\002 \001(\0132\034.ten"
+  "sorflow.DevicePropertiesBYB\026DeviceProper"
+  "tiesProtosZ<github.com/tensorflow/tensor"
+  "flow/tensorflow/go/core/protobuf\370\001\001b\006pro"
+  "to3"
+,
+  "tensorflow/core/protobuf/device_properties.proto", &assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2fdevice_5fproperties_2eproto, 643,
+};
+
+void AddDescriptors_tensorflow_2fcore_2fprotobuf_2fdevice_5fproperties_2eproto() {
+  static constexpr ::google::protobuf::internal::InitFunc deps[1] =
+  {
+  };
+ ::google::protobuf::internal::AddDescriptors(&descriptor_table_tensorflow_2fcore_2fprotobuf_2fdevice_5fproperties_2eproto, deps, 0);
+}
+
+// Force running AddDescriptors() at dynamic initialization time.
+static bool dynamic_init_dummy_tensorflow_2fcore_2fprotobuf_2fdevice_5fproperties_2eproto = []() { AddDescriptors_tensorflow_2fcore_2fprotobuf_2fdevice_5fproperties_2eproto(); return true; }();
+namespace tensorflow {
+
+// ===================================================================
+
+DeviceProperties_EnvironmentEntry_DoNotUse::DeviceProperties_EnvironmentEntry_DoNotUse() {}
+DeviceProperties_EnvironmentEntry_DoNotUse::DeviceProperties_EnvironmentEntry_DoNotUse(::google::protobuf::Arena* arena)
+    : SuperType(arena) {}
+void DeviceProperties_EnvironmentEntry_DoNotUse::MergeFrom(const DeviceProperties_EnvironmentEntry_DoNotUse& other) {
+  MergeFromInternal(other);
+}
+::google::protobuf::Metadata DeviceProperties_EnvironmentEntry_DoNotUse::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2fdevice_5fproperties_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fprotobuf_2fdevice_5fproperties_2eproto[0];
+}
+void DeviceProperties_EnvironmentEntry_DoNotUse::MergeFrom(
+    const ::google::protobuf::Message& other) {
+  ::google::protobuf::Message::MergeFrom(other);
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool DeviceProperties_EnvironmentEntry_DoNotUse::_ParseMap(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx) {
+  using MF = ::google::protobuf::internal::MapField<
+      DeviceProperties_EnvironmentEntry_DoNotUse, EntryKeyType, EntryValueType,
+      kEntryKeyFieldType, kEntryValueFieldType,
+      kEntryDefaultEnumValue>;
+  auto mf = static_cast<MF*>(object);
+  Parser<MF, ::google::protobuf::Map<EntryKeyType, EntryValueType>> parser(mf);
+#define DO_(x) if (!(x)) return false
+  DO_(parser.ParseMap(begin, end));
+  DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+    parser.key().data(), static_cast<int>(parser.key().length()),
+    ::google::protobuf::internal::WireFormatLite::PARSE,
+    "tensorflow.DeviceProperties.EnvironmentEntry.key"));
+  DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+    parser.value().data(), static_cast<int>(parser.value().length()),
+    ::google::protobuf::internal::WireFormatLite::PARSE,
+    "tensorflow.DeviceProperties.EnvironmentEntry.value"));
+#undef DO_
+  return true;
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+
+// ===================================================================
+
+void DeviceProperties::InitAsDefaultInstance() {
+}
+class DeviceProperties::HasBitSetters {
+ public:
+};
+
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int DeviceProperties::kTypeFieldNumber;
+const int DeviceProperties::kVendorFieldNumber;
+const int DeviceProperties::kModelFieldNumber;
+const int DeviceProperties::kFrequencyFieldNumber;
+const int DeviceProperties::kNumCoresFieldNumber;
+const int DeviceProperties::kEnvironmentFieldNumber;
+const int DeviceProperties::kNumRegistersFieldNumber;
+const int DeviceProperties::kL1CacheSizeFieldNumber;
+const int DeviceProperties::kL2CacheSizeFieldNumber;
+const int DeviceProperties::kL3CacheSizeFieldNumber;
+const int DeviceProperties::kSharedMemorySizePerMultiprocessorFieldNumber;
+const int DeviceProperties::kMemorySizeFieldNumber;
+const int DeviceProperties::kBandwidthFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+DeviceProperties::DeviceProperties()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.DeviceProperties)
+}
+DeviceProperties::DeviceProperties(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena),
+  environment_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.DeviceProperties)
+}
+DeviceProperties::DeviceProperties(const DeviceProperties& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  environment_.MergeFrom(from.environment_);
+  type_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.type().size() > 0) {
+    type_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.type(),
+      GetArenaNoVirtual());
+  }
+  vendor_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.vendor().size() > 0) {
+    vendor_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.vendor(),
+      GetArenaNoVirtual());
+  }
+  model_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.model().size() > 0) {
+    model_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.model(),
+      GetArenaNoVirtual());
+  }
+  ::memcpy(&frequency_, &from.frequency_,
+    static_cast<size_t>(reinterpret_cast<char*>(&bandwidth_) -
+    reinterpret_cast<char*>(&frequency_)) + sizeof(bandwidth_));
+  // @@protoc_insertion_point(copy_constructor:tensorflow.DeviceProperties)
+}
+
+void DeviceProperties::SharedCtor() {
+  ::google::protobuf::internal::InitSCC(
+      &scc_info_DeviceProperties_tensorflow_2fcore_2fprotobuf_2fdevice_5fproperties_2eproto.base);
+  type_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  vendor_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  model_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  ::memset(&frequency_, 0, static_cast<size_t>(
+      reinterpret_cast<char*>(&bandwidth_) -
+      reinterpret_cast<char*>(&frequency_)) + sizeof(bandwidth_));
+}
+
+DeviceProperties::~DeviceProperties() {
+  // @@protoc_insertion_point(destructor:tensorflow.DeviceProperties)
+  SharedDtor();
+}
+
+void DeviceProperties::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+  type_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  vendor_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  model_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+
+void DeviceProperties::ArenaDtor(void* object) {
+  DeviceProperties* _this = reinterpret_cast< DeviceProperties* >(object);
+  (void)_this;
+}
+void DeviceProperties::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void DeviceProperties::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const DeviceProperties& DeviceProperties::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_DeviceProperties_tensorflow_2fcore_2fprotobuf_2fdevice_5fproperties_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void DeviceProperties::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.DeviceProperties)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  environment_.Clear();
+  type_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+  vendor_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+  model_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+  ::memset(&frequency_, 0, static_cast<size_t>(
+      reinterpret_cast<char*>(&bandwidth_) -
+      reinterpret_cast<char*>(&frequency_)) + sizeof(bandwidth_));
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* DeviceProperties::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<DeviceProperties*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // string type = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 10) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("tensorflow.DeviceProperties.type");
+        parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+        ::std::string* str = msg->mutable_type();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+        break;
+      }
+      // string vendor = 2;
+      case 2: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 18) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("tensorflow.DeviceProperties.vendor");
+        parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+        ::std::string* str = msg->mutable_vendor();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+        break;
+      }
+      // string model = 3;
+      case 3: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 26) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("tensorflow.DeviceProperties.model");
+        parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+        ::std::string* str = msg->mutable_model();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+        break;
+      }
+      // int64 frequency = 4;
+      case 4: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 32) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::google::protobuf::int64 value = val;
+        msg->set_frequency(value);
+        break;
+      }
+      // int64 num_cores = 5;
+      case 5: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 40) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::google::protobuf::int64 value = val;
+        msg->set_num_cores(value);
+        break;
+      }
+      // map<string, string> environment = 6;
+      case 6: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 50) goto handle_unusual;
+        do {
+          ptr = Varint::Parse32Inline(ptr, &size);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          parser_till_end = ::google::protobuf::internal::SlowMapEntryParser;
+          auto parse_map = ::tensorflow::DeviceProperties_EnvironmentEntry_DoNotUse::_ParseMap;
+          ctx->extra_parse_data().payload.clear();
+          ctx->extra_parse_data().parse_map = parse_map;
+          object = &msg->environment_;
+          if (size > end - ptr) goto len_delim_till_end;
+          auto newend = ptr + size;
+          GOOGLE_PROTOBUF_PARSER_ASSERT(parse_map(ptr, newend, object, ctx));
+          ptr = newend;
+          if (ptr >= end) break;
+        } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 50 && (ptr += 1));
+        break;
+      }
+      // int64 num_registers = 7;
+      case 7: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 56) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::google::protobuf::int64 value = val;
+        msg->set_num_registers(value);
+        break;
+      }
+      // int64 l1_cache_size = 8;
+      case 8: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 64) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::google::protobuf::int64 value = val;
+        msg->set_l1_cache_size(value);
+        break;
+      }
+      // int64 l2_cache_size = 9;
+      case 9: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 72) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::google::protobuf::int64 value = val;
+        msg->set_l2_cache_size(value);
+        break;
+      }
+      // int64 l3_cache_size = 10;
+      case 10: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 80) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::google::protobuf::int64 value = val;
+        msg->set_l3_cache_size(value);
+        break;
+      }
+      // int64 shared_memory_size_per_multiprocessor = 11;
+      case 11: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 88) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::google::protobuf::int64 value = val;
+        msg->set_shared_memory_size_per_multiprocessor(value);
+        break;
+      }
+      // int64 memory_size = 12;
+      case 12: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 96) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::google::protobuf::int64 value = val;
+        msg->set_memory_size(value);
+        break;
+      }
+      // int64 bandwidth = 13;
+      case 13: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 104) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::google::protobuf::int64 value = val;
+        msg->set_bandwidth(value);
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool DeviceProperties::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.DeviceProperties)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // string type = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (10 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_type()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->type().data(), static_cast<int>(this->type().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.DeviceProperties.type"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // string vendor = 2;
+      case 2: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (18 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_vendor()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->vendor().data(), static_cast<int>(this->vendor().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.DeviceProperties.vendor"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // string model = 3;
+      case 3: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (26 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_model()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->model().data(), static_cast<int>(this->model().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.DeviceProperties.model"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // int64 frequency = 4;
+      case 4: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (32 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>(
+                 input, &frequency_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // int64 num_cores = 5;
+      case 5: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (40 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>(
+                 input, &num_cores_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // map<string, string> environment = 6;
+      case 6: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (50 & 0xFF)) {
+          DeviceProperties_EnvironmentEntry_DoNotUse::Parser< ::google::protobuf::internal::MapField<
+              DeviceProperties_EnvironmentEntry_DoNotUse,
+              ::std::string, ::std::string,
+              ::google::protobuf::internal::WireFormatLite::TYPE_STRING,
+              ::google::protobuf::internal::WireFormatLite::TYPE_STRING,
+              0 >,
+            ::google::protobuf::Map< ::std::string, ::std::string > > parser(&environment_);
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
+              input, &parser));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            parser.key().data(), static_cast<int>(parser.key().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.DeviceProperties.EnvironmentEntry.key"));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            parser.value().data(), static_cast<int>(parser.value().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.DeviceProperties.EnvironmentEntry.value"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // int64 num_registers = 7;
+      case 7: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (56 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>(
+                 input, &num_registers_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // int64 l1_cache_size = 8;
+      case 8: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (64 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>(
+                 input, &l1_cache_size_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // int64 l2_cache_size = 9;
+      case 9: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (72 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>(
+                 input, &l2_cache_size_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // int64 l3_cache_size = 10;
+      case 10: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (80 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>(
+                 input, &l3_cache_size_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // int64 shared_memory_size_per_multiprocessor = 11;
+      case 11: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (88 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>(
+                 input, &shared_memory_size_per_multiprocessor_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // int64 memory_size = 12;
+      case 12: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (96 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>(
+                 input, &memory_size_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // int64 bandwidth = 13;
+      case 13: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (104 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>(
+                 input, &bandwidth_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.DeviceProperties)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.DeviceProperties)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void DeviceProperties::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.DeviceProperties)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // string type = 1;
+  if (this->type().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->type().data(), static_cast<int>(this->type().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.DeviceProperties.type");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      1, this->type(), output);
+  }
+
+  // string vendor = 2;
+  if (this->vendor().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->vendor().data(), static_cast<int>(this->vendor().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.DeviceProperties.vendor");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      2, this->vendor(), output);
+  }
+
+  // string model = 3;
+  if (this->model().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->model().data(), static_cast<int>(this->model().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.DeviceProperties.model");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      3, this->model(), output);
+  }
+
+  // int64 frequency = 4;
+  if (this->frequency() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt64(4, this->frequency(), output);
+  }
+
+  // int64 num_cores = 5;
+  if (this->num_cores() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt64(5, this->num_cores(), output);
+  }
+
+  // map<string, string> environment = 6;
+  if (!this->environment().empty()) {
+    typedef ::google::protobuf::Map< ::std::string, ::std::string >::const_pointer
+        ConstPtr;
+    typedef ConstPtr SortItem;
+    typedef ::google::protobuf::internal::CompareByDerefFirst<SortItem> Less;
+    struct Utf8Check {
+      static void Check(ConstPtr p) {
+        ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+          p->first.data(), static_cast<int>(p->first.length()),
+          ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+          "tensorflow.DeviceProperties.EnvironmentEntry.key");
+        ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+          p->second.data(), static_cast<int>(p->second.length()),
+          ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+          "tensorflow.DeviceProperties.EnvironmentEntry.value");
+      }
+    };
+
+    if (output->IsSerializationDeterministic() &&
+        this->environment().size() > 1) {
+      ::std::unique_ptr<SortItem[]> items(
+          new SortItem[this->environment().size()]);
+      typedef ::google::protobuf::Map< ::std::string, ::std::string >::size_type size_type;
+      size_type n = 0;
+      for (::google::protobuf::Map< ::std::string, ::std::string >::const_iterator
+          it = this->environment().begin();
+          it != this->environment().end(); ++it, ++n) {
+        items[static_cast<ptrdiff_t>(n)] = SortItem(&*it);
+      }
+      ::std::sort(&items[0], &items[static_cast<ptrdiff_t>(n)], Less());
+      ::std::unique_ptr<DeviceProperties_EnvironmentEntry_DoNotUse> entry;
+      for (size_type i = 0; i < n; i++) {
+        entry.reset(environment_.NewEntryWrapper(items[static_cast<ptrdiff_t>(i)]->first, items[static_cast<ptrdiff_t>(i)]->second));
+        ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(6, *entry, output);
+        if (entry->GetArena() != NULL) {
+          entry.release();
+        }
+        Utf8Check::Check(&(*items[static_cast<ptrdiff_t>(i)]));
+      }
+    } else {
+      ::std::unique_ptr<DeviceProperties_EnvironmentEntry_DoNotUse> entry;
+      for (::google::protobuf::Map< ::std::string, ::std::string >::const_iterator
+          it = this->environment().begin();
+          it != this->environment().end(); ++it) {
+        entry.reset(environment_.NewEntryWrapper(it->first, it->second));
+        ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(6, *entry, output);
+        if (entry->GetArena() != NULL) {
+          entry.release();
+        }
+        Utf8Check::Check(&(*it));
+      }
+    }
+  }
+
+  // int64 num_registers = 7;
+  if (this->num_registers() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt64(7, this->num_registers(), output);
+  }
+
+  // int64 l1_cache_size = 8;
+  if (this->l1_cache_size() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt64(8, this->l1_cache_size(), output);
+  }
+
+  // int64 l2_cache_size = 9;
+  if (this->l2_cache_size() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt64(9, this->l2_cache_size(), output);
+  }
+
+  // int64 l3_cache_size = 10;
+  if (this->l3_cache_size() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt64(10, this->l3_cache_size(), output);
+  }
+
+  // int64 shared_memory_size_per_multiprocessor = 11;
+  if (this->shared_memory_size_per_multiprocessor() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt64(11, this->shared_memory_size_per_multiprocessor(), output);
+  }
+
+  // int64 memory_size = 12;
+  if (this->memory_size() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt64(12, this->memory_size(), output);
+  }
+
+  // int64 bandwidth = 13;
+  if (this->bandwidth() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt64(13, this->bandwidth(), output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.DeviceProperties)
+}
+
+::google::protobuf::uint8* DeviceProperties::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.DeviceProperties)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // string type = 1;
+  if (this->type().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->type().data(), static_cast<int>(this->type().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.DeviceProperties.type");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        1, this->type(), target);
+  }
+
+  // string vendor = 2;
+  if (this->vendor().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->vendor().data(), static_cast<int>(this->vendor().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.DeviceProperties.vendor");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        2, this->vendor(), target);
+  }
+
+  // string model = 3;
+  if (this->model().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->model().data(), static_cast<int>(this->model().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.DeviceProperties.model");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        3, this->model(), target);
+  }
+
+  // int64 frequency = 4;
+  if (this->frequency() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt64ToArray(4, this->frequency(), target);
+  }
+
+  // int64 num_cores = 5;
+  if (this->num_cores() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt64ToArray(5, this->num_cores(), target);
+  }
+
+  // map<string, string> environment = 6;
+  if (!this->environment().empty()) {
+    typedef ::google::protobuf::Map< ::std::string, ::std::string >::const_pointer
+        ConstPtr;
+    typedef ConstPtr SortItem;
+    typedef ::google::protobuf::internal::CompareByDerefFirst<SortItem> Less;
+    struct Utf8Check {
+      static void Check(ConstPtr p) {
+        ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+          p->first.data(), static_cast<int>(p->first.length()),
+          ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+          "tensorflow.DeviceProperties.EnvironmentEntry.key");
+        ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+          p->second.data(), static_cast<int>(p->second.length()),
+          ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+          "tensorflow.DeviceProperties.EnvironmentEntry.value");
+      }
+    };
+
+    if (deterministic &&
+        this->environment().size() > 1) {
+      ::std::unique_ptr<SortItem[]> items(
+          new SortItem[this->environment().size()]);
+      typedef ::google::protobuf::Map< ::std::string, ::std::string >::size_type size_type;
+      size_type n = 0;
+      for (::google::protobuf::Map< ::std::string, ::std::string >::const_iterator
+          it = this->environment().begin();
+          it != this->environment().end(); ++it, ++n) {
+        items[static_cast<ptrdiff_t>(n)] = SortItem(&*it);
+      }
+      ::std::sort(&items[0], &items[static_cast<ptrdiff_t>(n)], Less());
+      ::std::unique_ptr<DeviceProperties_EnvironmentEntry_DoNotUse> entry;
+      for (size_type i = 0; i < n; i++) {
+        entry.reset(environment_.NewEntryWrapper(items[static_cast<ptrdiff_t>(i)]->first, items[static_cast<ptrdiff_t>(i)]->second));
+        target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessageNoVirtualToArray(6, *entry, deterministic, target);
+        if (entry->GetArena() != NULL) {
+          entry.release();
+        }
+        Utf8Check::Check(&(*items[static_cast<ptrdiff_t>(i)]));
+      }
+    } else {
+      ::std::unique_ptr<DeviceProperties_EnvironmentEntry_DoNotUse> entry;
+      for (::google::protobuf::Map< ::std::string, ::std::string >::const_iterator
+          it = this->environment().begin();
+          it != this->environment().end(); ++it) {
+        entry.reset(environment_.NewEntryWrapper(it->first, it->second));
+        target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessageNoVirtualToArray(6, *entry, deterministic, target);
+        if (entry->GetArena() != NULL) {
+          entry.release();
+        }
+        Utf8Check::Check(&(*it));
+      }
+    }
+  }
+
+  // int64 num_registers = 7;
+  if (this->num_registers() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt64ToArray(7, this->num_registers(), target);
+  }
+
+  // int64 l1_cache_size = 8;
+  if (this->l1_cache_size() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt64ToArray(8, this->l1_cache_size(), target);
+  }
+
+  // int64 l2_cache_size = 9;
+  if (this->l2_cache_size() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt64ToArray(9, this->l2_cache_size(), target);
+  }
+
+  // int64 l3_cache_size = 10;
+  if (this->l3_cache_size() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt64ToArray(10, this->l3_cache_size(), target);
+  }
+
+  // int64 shared_memory_size_per_multiprocessor = 11;
+  if (this->shared_memory_size_per_multiprocessor() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt64ToArray(11, this->shared_memory_size_per_multiprocessor(), target);
+  }
+
+  // int64 memory_size = 12;
+  if (this->memory_size() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt64ToArray(12, this->memory_size(), target);
+  }
+
+  // int64 bandwidth = 13;
+  if (this->bandwidth() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt64ToArray(13, this->bandwidth(), target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.DeviceProperties)
+  return target;
+}
+
+size_t DeviceProperties::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.DeviceProperties)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // map<string, string> environment = 6;
+  total_size += 1 *
+      ::google::protobuf::internal::FromIntSize(this->environment_size());
+  {
+    ::std::unique_ptr<DeviceProperties_EnvironmentEntry_DoNotUse> entry;
+    for (::google::protobuf::Map< ::std::string, ::std::string >::const_iterator
+        it = this->environment().begin();
+        it != this->environment().end(); ++it) {
+      if (entry.get() != NULL && entry->GetArena() != NULL) {
+        entry.release();
+      }
+      entry.reset(environment_.NewEntryWrapper(it->first, it->second));
+      total_size += ::google::protobuf::internal::WireFormatLite::
+          MessageSizeNoVirtual(*entry);
+    }
+    if (entry.get() != NULL && entry->GetArena() != NULL) {
+      entry.release();
+    }
+  }
+
+  // string type = 1;
+  if (this->type().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->type());
+  }
+
+  // string vendor = 2;
+  if (this->vendor().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->vendor());
+  }
+
+  // string model = 3;
+  if (this->model().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->model());
+  }
+
+  // int64 frequency = 4;
+  if (this->frequency() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::Int64Size(
+        this->frequency());
+  }
+
+  // int64 num_cores = 5;
+  if (this->num_cores() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::Int64Size(
+        this->num_cores());
+  }
+
+  // int64 num_registers = 7;
+  if (this->num_registers() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::Int64Size(
+        this->num_registers());
+  }
+
+  // int64 l1_cache_size = 8;
+  if (this->l1_cache_size() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::Int64Size(
+        this->l1_cache_size());
+  }
+
+  // int64 l2_cache_size = 9;
+  if (this->l2_cache_size() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::Int64Size(
+        this->l2_cache_size());
+  }
+
+  // int64 l3_cache_size = 10;
+  if (this->l3_cache_size() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::Int64Size(
+        this->l3_cache_size());
+  }
+
+  // int64 shared_memory_size_per_multiprocessor = 11;
+  if (this->shared_memory_size_per_multiprocessor() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::Int64Size(
+        this->shared_memory_size_per_multiprocessor());
+  }
+
+  // int64 memory_size = 12;
+  if (this->memory_size() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::Int64Size(
+        this->memory_size());
+  }
+
+  // int64 bandwidth = 13;
+  if (this->bandwidth() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::Int64Size(
+        this->bandwidth());
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void DeviceProperties::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.DeviceProperties)
+  GOOGLE_DCHECK_NE(&from, this);
+  const DeviceProperties* source =
+      ::google::protobuf::DynamicCastToGenerated<DeviceProperties>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.DeviceProperties)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.DeviceProperties)
+    MergeFrom(*source);
+  }
+}
+
+void DeviceProperties::MergeFrom(const DeviceProperties& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.DeviceProperties)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  environment_.MergeFrom(from.environment_);
+  if (from.type().size() > 0) {
+    set_type(from.type());
+  }
+  if (from.vendor().size() > 0) {
+    set_vendor(from.vendor());
+  }
+  if (from.model().size() > 0) {
+    set_model(from.model());
+  }
+  if (from.frequency() != 0) {
+    set_frequency(from.frequency());
+  }
+  if (from.num_cores() != 0) {
+    set_num_cores(from.num_cores());
+  }
+  if (from.num_registers() != 0) {
+    set_num_registers(from.num_registers());
+  }
+  if (from.l1_cache_size() != 0) {
+    set_l1_cache_size(from.l1_cache_size());
+  }
+  if (from.l2_cache_size() != 0) {
+    set_l2_cache_size(from.l2_cache_size());
+  }
+  if (from.l3_cache_size() != 0) {
+    set_l3_cache_size(from.l3_cache_size());
+  }
+  if (from.shared_memory_size_per_multiprocessor() != 0) {
+    set_shared_memory_size_per_multiprocessor(from.shared_memory_size_per_multiprocessor());
+  }
+  if (from.memory_size() != 0) {
+    set_memory_size(from.memory_size());
+  }
+  if (from.bandwidth() != 0) {
+    set_bandwidth(from.bandwidth());
+  }
+}
+
+void DeviceProperties::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.DeviceProperties)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void DeviceProperties::CopyFrom(const DeviceProperties& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.DeviceProperties)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool DeviceProperties::IsInitialized() const {
+  return true;
+}
+
+void DeviceProperties::Swap(DeviceProperties* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    DeviceProperties* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void DeviceProperties::UnsafeArenaSwap(DeviceProperties* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void DeviceProperties::InternalSwap(DeviceProperties* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  environment_.Swap(&other->environment_);
+  type_.Swap(&other->type_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+  vendor_.Swap(&other->vendor_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+  model_.Swap(&other->model_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+  swap(frequency_, other->frequency_);
+  swap(num_cores_, other->num_cores_);
+  swap(num_registers_, other->num_registers_);
+  swap(l1_cache_size_, other->l1_cache_size_);
+  swap(l2_cache_size_, other->l2_cache_size_);
+  swap(l3_cache_size_, other->l3_cache_size_);
+  swap(shared_memory_size_per_multiprocessor_, other->shared_memory_size_per_multiprocessor_);
+  swap(memory_size_, other->memory_size_);
+  swap(bandwidth_, other->bandwidth_);
+}
+
+::google::protobuf::Metadata DeviceProperties::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2fdevice_5fproperties_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fprotobuf_2fdevice_5fproperties_2eproto[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+void NamedDevice::InitAsDefaultInstance() {
+  ::tensorflow::_NamedDevice_default_instance_._instance.get_mutable()->properties_ = const_cast< ::tensorflow::DeviceProperties*>(
+      ::tensorflow::DeviceProperties::internal_default_instance());
+}
+class NamedDevice::HasBitSetters {
+ public:
+  static const ::tensorflow::DeviceProperties& properties(const NamedDevice* msg);
+};
+
+const ::tensorflow::DeviceProperties&
+NamedDevice::HasBitSetters::properties(const NamedDevice* msg) {
+  return *msg->properties_;
+}
+void NamedDevice::unsafe_arena_set_allocated_properties(
+    ::tensorflow::DeviceProperties* properties) {
+  if (GetArenaNoVirtual() == NULL) {
+    delete properties_;
+  }
+  properties_ = properties;
+  if (properties) {
+    
+  } else {
+    
+  }
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.NamedDevice.properties)
+}
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int NamedDevice::kNameFieldNumber;
+const int NamedDevice::kPropertiesFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+NamedDevice::NamedDevice()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.NamedDevice)
+}
+NamedDevice::NamedDevice(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.NamedDevice)
+}
+NamedDevice::NamedDevice(const NamedDevice& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.name().size() > 0) {
+    name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.name(),
+      GetArenaNoVirtual());
+  }
+  if (from.has_properties()) {
+    properties_ = new ::tensorflow::DeviceProperties(*from.properties_);
+  } else {
+    properties_ = NULL;
+  }
+  // @@protoc_insertion_point(copy_constructor:tensorflow.NamedDevice)
+}
+
+void NamedDevice::SharedCtor() {
+  ::google::protobuf::internal::InitSCC(
+      &scc_info_NamedDevice_tensorflow_2fcore_2fprotobuf_2fdevice_5fproperties_2eproto.base);
+  name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  properties_ = NULL;
+}
+
+NamedDevice::~NamedDevice() {
+  // @@protoc_insertion_point(destructor:tensorflow.NamedDevice)
+  SharedDtor();
+}
+
+void NamedDevice::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+  name_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (this != internal_default_instance()) delete properties_;
+}
+
+void NamedDevice::ArenaDtor(void* object) {
+  NamedDevice* _this = reinterpret_cast< NamedDevice* >(object);
+  (void)_this;
+}
+void NamedDevice::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void NamedDevice::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const NamedDevice& NamedDevice::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_NamedDevice_tensorflow_2fcore_2fprotobuf_2fdevice_5fproperties_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void NamedDevice::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.NamedDevice)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  name_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+  if (GetArenaNoVirtual() == NULL && properties_ != NULL) {
+    delete properties_;
+  }
+  properties_ = NULL;
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* NamedDevice::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<NamedDevice*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // string name = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 10) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("tensorflow.NamedDevice.name");
+        parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+        ::std::string* str = msg->mutable_name();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+        break;
+      }
+      // .tensorflow.DeviceProperties properties = 2;
+      case 2: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 18) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        parser_till_end = ::tensorflow::DeviceProperties::_InternalParse;
+        object = msg->mutable_properties();
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                       ptr, newend);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+        ptr = newend;
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool NamedDevice::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.NamedDevice)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // string name = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (10 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_name()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->name().data(), static_cast<int>(this->name().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.NamedDevice.name"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // .tensorflow.DeviceProperties properties = 2;
+      case 2: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (18 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+               input, mutable_properties()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.NamedDevice)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.NamedDevice)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void NamedDevice::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.NamedDevice)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // string name = 1;
+  if (this->name().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->name().data(), static_cast<int>(this->name().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.NamedDevice.name");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      1, this->name(), output);
+  }
+
+  // .tensorflow.DeviceProperties properties = 2;
+  if (this->has_properties()) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      2, HasBitSetters::properties(this), output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.NamedDevice)
+}
+
+::google::protobuf::uint8* NamedDevice::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.NamedDevice)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // string name = 1;
+  if (this->name().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->name().data(), static_cast<int>(this->name().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.NamedDevice.name");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        1, this->name(), target);
+  }
+
+  // .tensorflow.DeviceProperties properties = 2;
+  if (this->has_properties()) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        2, HasBitSetters::properties(this), deterministic, target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.NamedDevice)
+  return target;
+}
+
+size_t NamedDevice::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.NamedDevice)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // string name = 1;
+  if (this->name().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->name());
+  }
+
+  // .tensorflow.DeviceProperties properties = 2;
+  if (this->has_properties()) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::MessageSize(
+        *properties_);
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void NamedDevice::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.NamedDevice)
+  GOOGLE_DCHECK_NE(&from, this);
+  const NamedDevice* source =
+      ::google::protobuf::DynamicCastToGenerated<NamedDevice>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.NamedDevice)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.NamedDevice)
+    MergeFrom(*source);
+  }
+}
+
+void NamedDevice::MergeFrom(const NamedDevice& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.NamedDevice)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  if (from.name().size() > 0) {
+    set_name(from.name());
+  }
+  if (from.has_properties()) {
+    mutable_properties()->::tensorflow::DeviceProperties::MergeFrom(from.properties());
+  }
+}
+
+void NamedDevice::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.NamedDevice)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void NamedDevice::CopyFrom(const NamedDevice& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.NamedDevice)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool NamedDevice::IsInitialized() const {
+  return true;
+}
+
+void NamedDevice::Swap(NamedDevice* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    NamedDevice* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void NamedDevice::UnsafeArenaSwap(NamedDevice* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void NamedDevice::InternalSwap(NamedDevice* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  name_.Swap(&other->name_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+  swap(properties_, other->properties_);
+}
+
+::google::protobuf::Metadata NamedDevice::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2fdevice_5fproperties_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fprotobuf_2fdevice_5fproperties_2eproto[kIndexInFileMessages];
+}
+
+
+// @@protoc_insertion_point(namespace_scope)
+}  // namespace tensorflow
+namespace google {
+namespace protobuf {
+template<> PROTOBUF_NOINLINE ::tensorflow::DeviceProperties_EnvironmentEntry_DoNotUse* Arena::CreateMaybeMessage< ::tensorflow::DeviceProperties_EnvironmentEntry_DoNotUse >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::DeviceProperties_EnvironmentEntry_DoNotUse >(arena);
+}
+template<> PROTOBUF_NOINLINE ::tensorflow::DeviceProperties* Arena::CreateMaybeMessage< ::tensorflow::DeviceProperties >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::DeviceProperties >(arena);
+}
+template<> PROTOBUF_NOINLINE ::tensorflow::NamedDevice* Arena::CreateMaybeMessage< ::tensorflow::NamedDevice >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::NamedDevice >(arena);
+}
+}  // namespace protobuf
+}  // namespace google
+
+// @@protoc_insertion_point(global_scope)
+#include <google/protobuf/port_undef.inc>
diff --git a/tensorflow/core/protobuf/device_properties.pb.h b/tensorflow/core/protobuf/device_properties.pb.h
new file mode 100644 (file)
index 0000000..358f0aa
--- /dev/null
@@ -0,0 +1,1062 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: tensorflow/core/protobuf/device_properties.proto
+
+#ifndef PROTOBUF_INCLUDED_tensorflow_2fcore_2fprotobuf_2fdevice_5fproperties_2eproto
+#define PROTOBUF_INCLUDED_tensorflow_2fcore_2fprotobuf_2fdevice_5fproperties_2eproto
+
+#include <limits>
+#include <string>
+
+#include <google/protobuf/port_def.inc>
+#if PROTOBUF_VERSION < 3006001
+#error This file was generated by a newer version of protoc which is
+#error incompatible with your Protocol Buffer headers. Please update
+#error your headers.
+#endif
+#if 3006001 < PROTOBUF_MIN_PROTOC_VERSION
+#error This file was generated by an older version of protoc which is
+#error incompatible with your Protocol Buffer headers. Please
+#error regenerate this file with a newer version of protoc.
+#endif
+
+#include <google/protobuf/port_undef.inc>
+#include <google/protobuf/io/coded_stream.h>
+#include <google/protobuf/arena.h>
+#include <google/protobuf/arenastring.h>
+#include <google/protobuf/generated_message_table_driven.h>
+#include <google/protobuf/generated_message_util.h>
+#include <google/protobuf/inlined_string_field.h>
+#include <google/protobuf/metadata.h>
+#include <google/protobuf/message.h>
+#include <google/protobuf/repeated_field.h>  // IWYU pragma: export
+#include <google/protobuf/extension_set.h>  // IWYU pragma: export
+#include <google/protobuf/map.h>  // IWYU pragma: export
+#include <google/protobuf/map_entry.h>
+#include <google/protobuf/map_field_inl.h>
+#include <google/protobuf/unknown_field_set.h>
+// @@protoc_insertion_point(includes)
+#include <google/protobuf/port_def.inc>
+#define PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fprotobuf_2fdevice_5fproperties_2eproto
+
+// Internal implementation detail -- do not use these members.
+struct TableStruct_tensorflow_2fcore_2fprotobuf_2fdevice_5fproperties_2eproto {
+  static const ::google::protobuf::internal::ParseTableField entries[]
+    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
+  static const ::google::protobuf::internal::AuxillaryParseTableField aux[]
+    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
+  static const ::google::protobuf::internal::ParseTable schema[3]
+    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
+  static const ::google::protobuf::internal::FieldMetadata field_metadata[];
+  static const ::google::protobuf::internal::SerializationTable serialization_table[];
+  static const ::google::protobuf::uint32 offsets[];
+};
+void AddDescriptors_tensorflow_2fcore_2fprotobuf_2fdevice_5fproperties_2eproto();
+namespace tensorflow {
+class DeviceProperties;
+class DevicePropertiesDefaultTypeInternal;
+extern DevicePropertiesDefaultTypeInternal _DeviceProperties_default_instance_;
+class DeviceProperties_EnvironmentEntry_DoNotUse;
+class DeviceProperties_EnvironmentEntry_DoNotUseDefaultTypeInternal;
+extern DeviceProperties_EnvironmentEntry_DoNotUseDefaultTypeInternal _DeviceProperties_EnvironmentEntry_DoNotUse_default_instance_;
+class NamedDevice;
+class NamedDeviceDefaultTypeInternal;
+extern NamedDeviceDefaultTypeInternal _NamedDevice_default_instance_;
+}  // namespace tensorflow
+namespace google {
+namespace protobuf {
+template<> ::tensorflow::DeviceProperties* Arena::CreateMaybeMessage<::tensorflow::DeviceProperties>(Arena*);
+template<> ::tensorflow::DeviceProperties_EnvironmentEntry_DoNotUse* Arena::CreateMaybeMessage<::tensorflow::DeviceProperties_EnvironmentEntry_DoNotUse>(Arena*);
+template<> ::tensorflow::NamedDevice* Arena::CreateMaybeMessage<::tensorflow::NamedDevice>(Arena*);
+}  // namespace protobuf
+}  // namespace google
+namespace tensorflow {
+
+// ===================================================================
+
+class DeviceProperties_EnvironmentEntry_DoNotUse : public ::google::protobuf::internal::MapEntry<DeviceProperties_EnvironmentEntry_DoNotUse, 
+    ::std::string, ::std::string,
+    ::google::protobuf::internal::WireFormatLite::TYPE_STRING,
+    ::google::protobuf::internal::WireFormatLite::TYPE_STRING,
+    0 > {
+public:
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+static bool _ParseMap(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  typedef ::google::protobuf::internal::MapEntry<DeviceProperties_EnvironmentEntry_DoNotUse, 
+    ::std::string, ::std::string,
+    ::google::protobuf::internal::WireFormatLite::TYPE_STRING,
+    ::google::protobuf::internal::WireFormatLite::TYPE_STRING,
+    0 > SuperType;
+  DeviceProperties_EnvironmentEntry_DoNotUse();
+  DeviceProperties_EnvironmentEntry_DoNotUse(::google::protobuf::Arena* arena);
+  void MergeFrom(const DeviceProperties_EnvironmentEntry_DoNotUse& other);
+  static const DeviceProperties_EnvironmentEntry_DoNotUse* internal_default_instance() { return reinterpret_cast<const DeviceProperties_EnvironmentEntry_DoNotUse*>(&_DeviceProperties_EnvironmentEntry_DoNotUse_default_instance_); }
+  void MergeFrom(const ::google::protobuf::Message& other) final;
+  ::google::protobuf::Metadata GetMetadata() const;
+};
+
+// -------------------------------------------------------------------
+
+class DeviceProperties : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.DeviceProperties) */ {
+ public:
+  DeviceProperties();
+  virtual ~DeviceProperties();
+
+  DeviceProperties(const DeviceProperties& from);
+
+  inline DeviceProperties& operator=(const DeviceProperties& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  DeviceProperties(DeviceProperties&& from) noexcept
+    : DeviceProperties() {
+    *this = ::std::move(from);
+  }
+
+  inline DeviceProperties& operator=(DeviceProperties&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const DeviceProperties& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const DeviceProperties* internal_default_instance() {
+    return reinterpret_cast<const DeviceProperties*>(
+               &_DeviceProperties_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    1;
+
+  void UnsafeArenaSwap(DeviceProperties* other);
+  void Swap(DeviceProperties* other);
+  friend void swap(DeviceProperties& a, DeviceProperties& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline DeviceProperties* New() const final {
+    return CreateMaybeMessage<DeviceProperties>(NULL);
+  }
+
+  DeviceProperties* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<DeviceProperties>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const DeviceProperties& from);
+  void MergeFrom(const DeviceProperties& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(DeviceProperties* other);
+  protected:
+  explicit DeviceProperties(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+
+  // accessors -------------------------------------------------------
+
+  // map<string, string> environment = 6;
+  int environment_size() const;
+  void clear_environment();
+  static const int kEnvironmentFieldNumber = 6;
+  const ::google::protobuf::Map< ::std::string, ::std::string >&
+      environment() const;
+  ::google::protobuf::Map< ::std::string, ::std::string >*
+      mutable_environment();
+
+  // string type = 1;
+  void clear_type();
+  static const int kTypeFieldNumber = 1;
+  const ::std::string& type() const;
+  void set_type(const ::std::string& value);
+  #if LANG_CXX11
+  void set_type(::std::string&& value);
+  #endif
+  void set_type(const char* value);
+  void set_type(const char* value, size_t size);
+  ::std::string* mutable_type();
+  ::std::string* release_type();
+  void set_allocated_type(::std::string* type);
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  ::std::string* unsafe_arena_release_type();
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  void unsafe_arena_set_allocated_type(
+      ::std::string* type);
+
+  // string vendor = 2;
+  void clear_vendor();
+  static const int kVendorFieldNumber = 2;
+  const ::std::string& vendor() const;
+  void set_vendor(const ::std::string& value);
+  #if LANG_CXX11
+  void set_vendor(::std::string&& value);
+  #endif
+  void set_vendor(const char* value);
+  void set_vendor(const char* value, size_t size);
+  ::std::string* mutable_vendor();
+  ::std::string* release_vendor();
+  void set_allocated_vendor(::std::string* vendor);
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  ::std::string* unsafe_arena_release_vendor();
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  void unsafe_arena_set_allocated_vendor(
+      ::std::string* vendor);
+
+  // string model = 3;
+  void clear_model();
+  static const int kModelFieldNumber = 3;
+  const ::std::string& model() const;
+  void set_model(const ::std::string& value);
+  #if LANG_CXX11
+  void set_model(::std::string&& value);
+  #endif
+  void set_model(const char* value);
+  void set_model(const char* value, size_t size);
+  ::std::string* mutable_model();
+  ::std::string* release_model();
+  void set_allocated_model(::std::string* model);
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  ::std::string* unsafe_arena_release_model();
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  void unsafe_arena_set_allocated_model(
+      ::std::string* model);
+
+  // int64 frequency = 4;
+  void clear_frequency();
+  static const int kFrequencyFieldNumber = 4;
+  ::google::protobuf::int64 frequency() const;
+  void set_frequency(::google::protobuf::int64 value);
+
+  // int64 num_cores = 5;
+  void clear_num_cores();
+  static const int kNumCoresFieldNumber = 5;
+  ::google::protobuf::int64 num_cores() const;
+  void set_num_cores(::google::protobuf::int64 value);
+
+  // int64 num_registers = 7;
+  void clear_num_registers();
+  static const int kNumRegistersFieldNumber = 7;
+  ::google::protobuf::int64 num_registers() const;
+  void set_num_registers(::google::protobuf::int64 value);
+
+  // int64 l1_cache_size = 8;
+  void clear_l1_cache_size();
+  static const int kL1CacheSizeFieldNumber = 8;
+  ::google::protobuf::int64 l1_cache_size() const;
+  void set_l1_cache_size(::google::protobuf::int64 value);
+
+  // int64 l2_cache_size = 9;
+  void clear_l2_cache_size();
+  static const int kL2CacheSizeFieldNumber = 9;
+  ::google::protobuf::int64 l2_cache_size() const;
+  void set_l2_cache_size(::google::protobuf::int64 value);
+
+  // int64 l3_cache_size = 10;
+  void clear_l3_cache_size();
+  static const int kL3CacheSizeFieldNumber = 10;
+  ::google::protobuf::int64 l3_cache_size() const;
+  void set_l3_cache_size(::google::protobuf::int64 value);
+
+  // int64 shared_memory_size_per_multiprocessor = 11;
+  void clear_shared_memory_size_per_multiprocessor();
+  static const int kSharedMemorySizePerMultiprocessorFieldNumber = 11;
+  ::google::protobuf::int64 shared_memory_size_per_multiprocessor() const;
+  void set_shared_memory_size_per_multiprocessor(::google::protobuf::int64 value);
+
+  // int64 memory_size = 12;
+  void clear_memory_size();
+  static const int kMemorySizeFieldNumber = 12;
+  ::google::protobuf::int64 memory_size() const;
+  void set_memory_size(::google::protobuf::int64 value);
+
+  // int64 bandwidth = 13;
+  void clear_bandwidth();
+  static const int kBandwidthFieldNumber = 13;
+  ::google::protobuf::int64 bandwidth() const;
+  void set_bandwidth(::google::protobuf::int64 value);
+
+  // @@protoc_insertion_point(class_scope:tensorflow.DeviceProperties)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  ::google::protobuf::internal::MapField<
+      DeviceProperties_EnvironmentEntry_DoNotUse,
+      ::std::string, ::std::string,
+      ::google::protobuf::internal::WireFormatLite::TYPE_STRING,
+      ::google::protobuf::internal::WireFormatLite::TYPE_STRING,
+      0 > environment_;
+  ::google::protobuf::internal::ArenaStringPtr type_;
+  ::google::protobuf::internal::ArenaStringPtr vendor_;
+  ::google::protobuf::internal::ArenaStringPtr model_;
+  ::google::protobuf::int64 frequency_;
+  ::google::protobuf::int64 num_cores_;
+  ::google::protobuf::int64 num_registers_;
+  ::google::protobuf::int64 l1_cache_size_;
+  ::google::protobuf::int64 l2_cache_size_;
+  ::google::protobuf::int64 l3_cache_size_;
+  ::google::protobuf::int64 shared_memory_size_per_multiprocessor_;
+  ::google::protobuf::int64 memory_size_;
+  ::google::protobuf::int64 bandwidth_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fprotobuf_2fdevice_5fproperties_2eproto;
+};
+// -------------------------------------------------------------------
+
+class NamedDevice : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.NamedDevice) */ {
+ public:
+  NamedDevice();
+  virtual ~NamedDevice();
+
+  NamedDevice(const NamedDevice& from);
+
+  inline NamedDevice& operator=(const NamedDevice& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  NamedDevice(NamedDevice&& from) noexcept
+    : NamedDevice() {
+    *this = ::std::move(from);
+  }
+
+  inline NamedDevice& operator=(NamedDevice&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const NamedDevice& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const NamedDevice* internal_default_instance() {
+    return reinterpret_cast<const NamedDevice*>(
+               &_NamedDevice_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    2;
+
+  void UnsafeArenaSwap(NamedDevice* other);
+  void Swap(NamedDevice* other);
+  friend void swap(NamedDevice& a, NamedDevice& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline NamedDevice* New() const final {
+    return CreateMaybeMessage<NamedDevice>(NULL);
+  }
+
+  NamedDevice* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<NamedDevice>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const NamedDevice& from);
+  void MergeFrom(const NamedDevice& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(NamedDevice* other);
+  protected:
+  explicit NamedDevice(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // string name = 1;
+  void clear_name();
+  static const int kNameFieldNumber = 1;
+  const ::std::string& name() const;
+  void set_name(const ::std::string& value);
+  #if LANG_CXX11
+  void set_name(::std::string&& value);
+  #endif
+  void set_name(const char* value);
+  void set_name(const char* value, size_t size);
+  ::std::string* mutable_name();
+  ::std::string* release_name();
+  void set_allocated_name(::std::string* name);
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  ::std::string* unsafe_arena_release_name();
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  void unsafe_arena_set_allocated_name(
+      ::std::string* name);
+
+  // .tensorflow.DeviceProperties properties = 2;
+  bool has_properties() const;
+  void clear_properties();
+  static const int kPropertiesFieldNumber = 2;
+  const ::tensorflow::DeviceProperties& properties() const;
+  ::tensorflow::DeviceProperties* release_properties();
+  ::tensorflow::DeviceProperties* mutable_properties();
+  void set_allocated_properties(::tensorflow::DeviceProperties* properties);
+  void unsafe_arena_set_allocated_properties(
+      ::tensorflow::DeviceProperties* properties);
+  ::tensorflow::DeviceProperties* unsafe_arena_release_properties();
+
+  // @@protoc_insertion_point(class_scope:tensorflow.NamedDevice)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  ::google::protobuf::internal::ArenaStringPtr name_;
+  ::tensorflow::DeviceProperties* properties_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fprotobuf_2fdevice_5fproperties_2eproto;
+};
+// ===================================================================
+
+
+// ===================================================================
+
+#ifdef __GNUC__
+  #pragma GCC diagnostic push
+  #pragma GCC diagnostic ignored "-Wstrict-aliasing"
+#endif  // __GNUC__
+// -------------------------------------------------------------------
+
+// DeviceProperties
+
+// string type = 1;
+inline void DeviceProperties::clear_type() {
+  type_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline const ::std::string& DeviceProperties::type() const {
+  // @@protoc_insertion_point(field_get:tensorflow.DeviceProperties.type)
+  return type_.Get();
+}
+inline void DeviceProperties::set_type(const ::std::string& value) {
+  
+  type_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set:tensorflow.DeviceProperties.type)
+}
+#if LANG_CXX11
+inline void DeviceProperties::set_type(::std::string&& value) {
+  
+  type_.Set(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.DeviceProperties.type)
+}
+#endif
+inline void DeviceProperties::set_type(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  type_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
+              GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_char:tensorflow.DeviceProperties.type)
+}
+inline void DeviceProperties::set_type(const char* value,
+    size_t size) {
+  
+  type_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
+      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.DeviceProperties.type)
+}
+inline ::std::string* DeviceProperties::mutable_type() {
+  
+  // @@protoc_insertion_point(field_mutable:tensorflow.DeviceProperties.type)
+  return type_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline ::std::string* DeviceProperties::release_type() {
+  // @@protoc_insertion_point(field_release:tensorflow.DeviceProperties.type)
+  
+  return type_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline void DeviceProperties::set_allocated_type(::std::string* type) {
+  if (type != NULL) {
+    
+  } else {
+    
+  }
+  type_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), type,
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.DeviceProperties.type)
+}
+inline ::std::string* DeviceProperties::unsafe_arena_release_type() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.DeviceProperties.type)
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  
+  return type_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      GetArenaNoVirtual());
+}
+inline void DeviceProperties::unsafe_arena_set_allocated_type(
+    ::std::string* type) {
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (type != NULL) {
+    
+  } else {
+    
+  }
+  type_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      type, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.DeviceProperties.type)
+}
+
+// string vendor = 2;
+inline void DeviceProperties::clear_vendor() {
+  vendor_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline const ::std::string& DeviceProperties::vendor() const {
+  // @@protoc_insertion_point(field_get:tensorflow.DeviceProperties.vendor)
+  return vendor_.Get();
+}
+inline void DeviceProperties::set_vendor(const ::std::string& value) {
+  
+  vendor_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set:tensorflow.DeviceProperties.vendor)
+}
+#if LANG_CXX11
+inline void DeviceProperties::set_vendor(::std::string&& value) {
+  
+  vendor_.Set(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.DeviceProperties.vendor)
+}
+#endif
+inline void DeviceProperties::set_vendor(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  vendor_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
+              GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_char:tensorflow.DeviceProperties.vendor)
+}
+inline void DeviceProperties::set_vendor(const char* value,
+    size_t size) {
+  
+  vendor_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
+      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.DeviceProperties.vendor)
+}
+inline ::std::string* DeviceProperties::mutable_vendor() {
+  
+  // @@protoc_insertion_point(field_mutable:tensorflow.DeviceProperties.vendor)
+  return vendor_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline ::std::string* DeviceProperties::release_vendor() {
+  // @@protoc_insertion_point(field_release:tensorflow.DeviceProperties.vendor)
+  
+  return vendor_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline void DeviceProperties::set_allocated_vendor(::std::string* vendor) {
+  if (vendor != NULL) {
+    
+  } else {
+    
+  }
+  vendor_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), vendor,
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.DeviceProperties.vendor)
+}
+inline ::std::string* DeviceProperties::unsafe_arena_release_vendor() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.DeviceProperties.vendor)
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  
+  return vendor_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      GetArenaNoVirtual());
+}
+inline void DeviceProperties::unsafe_arena_set_allocated_vendor(
+    ::std::string* vendor) {
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (vendor != NULL) {
+    
+  } else {
+    
+  }
+  vendor_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      vendor, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.DeviceProperties.vendor)
+}
+
+// string model = 3;
+inline void DeviceProperties::clear_model() {
+  model_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline const ::std::string& DeviceProperties::model() const {
+  // @@protoc_insertion_point(field_get:tensorflow.DeviceProperties.model)
+  return model_.Get();
+}
+inline void DeviceProperties::set_model(const ::std::string& value) {
+  
+  model_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set:tensorflow.DeviceProperties.model)
+}
+#if LANG_CXX11
+inline void DeviceProperties::set_model(::std::string&& value) {
+  
+  model_.Set(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.DeviceProperties.model)
+}
+#endif
+inline void DeviceProperties::set_model(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  model_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
+              GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_char:tensorflow.DeviceProperties.model)
+}
+inline void DeviceProperties::set_model(const char* value,
+    size_t size) {
+  
+  model_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
+      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.DeviceProperties.model)
+}
+inline ::std::string* DeviceProperties::mutable_model() {
+  
+  // @@protoc_insertion_point(field_mutable:tensorflow.DeviceProperties.model)
+  return model_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline ::std::string* DeviceProperties::release_model() {
+  // @@protoc_insertion_point(field_release:tensorflow.DeviceProperties.model)
+  
+  return model_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline void DeviceProperties::set_allocated_model(::std::string* model) {
+  if (model != NULL) {
+    
+  } else {
+    
+  }
+  model_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), model,
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.DeviceProperties.model)
+}
+inline ::std::string* DeviceProperties::unsafe_arena_release_model() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.DeviceProperties.model)
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  
+  return model_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      GetArenaNoVirtual());
+}
+inline void DeviceProperties::unsafe_arena_set_allocated_model(
+    ::std::string* model) {
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (model != NULL) {
+    
+  } else {
+    
+  }
+  model_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      model, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.DeviceProperties.model)
+}
+
+// int64 frequency = 4;
+inline void DeviceProperties::clear_frequency() {
+  frequency_ = PROTOBUF_LONGLONG(0);
+}
+inline ::google::protobuf::int64 DeviceProperties::frequency() const {
+  // @@protoc_insertion_point(field_get:tensorflow.DeviceProperties.frequency)
+  return frequency_;
+}
+inline void DeviceProperties::set_frequency(::google::protobuf::int64 value) {
+  
+  frequency_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.DeviceProperties.frequency)
+}
+
+// int64 num_cores = 5;
+inline void DeviceProperties::clear_num_cores() {
+  num_cores_ = PROTOBUF_LONGLONG(0);
+}
+inline ::google::protobuf::int64 DeviceProperties::num_cores() const {
+  // @@protoc_insertion_point(field_get:tensorflow.DeviceProperties.num_cores)
+  return num_cores_;
+}
+inline void DeviceProperties::set_num_cores(::google::protobuf::int64 value) {
+  
+  num_cores_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.DeviceProperties.num_cores)
+}
+
+// map<string, string> environment = 6;
+inline int DeviceProperties::environment_size() const {
+  return environment_.size();
+}
+inline void DeviceProperties::clear_environment() {
+  environment_.Clear();
+}
+inline const ::google::protobuf::Map< ::std::string, ::std::string >&
+DeviceProperties::environment() const {
+  // @@protoc_insertion_point(field_map:tensorflow.DeviceProperties.environment)
+  return environment_.GetMap();
+}
+inline ::google::protobuf::Map< ::std::string, ::std::string >*
+DeviceProperties::mutable_environment() {
+  // @@protoc_insertion_point(field_mutable_map:tensorflow.DeviceProperties.environment)
+  return environment_.MutableMap();
+}
+
+// int64 num_registers = 7;
+inline void DeviceProperties::clear_num_registers() {
+  num_registers_ = PROTOBUF_LONGLONG(0);
+}
+inline ::google::protobuf::int64 DeviceProperties::num_registers() const {
+  // @@protoc_insertion_point(field_get:tensorflow.DeviceProperties.num_registers)
+  return num_registers_;
+}
+inline void DeviceProperties::set_num_registers(::google::protobuf::int64 value) {
+  
+  num_registers_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.DeviceProperties.num_registers)
+}
+
+// int64 l1_cache_size = 8;
+inline void DeviceProperties::clear_l1_cache_size() {
+  l1_cache_size_ = PROTOBUF_LONGLONG(0);
+}
+inline ::google::protobuf::int64 DeviceProperties::l1_cache_size() const {
+  // @@protoc_insertion_point(field_get:tensorflow.DeviceProperties.l1_cache_size)
+  return l1_cache_size_;
+}
+inline void DeviceProperties::set_l1_cache_size(::google::protobuf::int64 value) {
+  
+  l1_cache_size_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.DeviceProperties.l1_cache_size)
+}
+
+// int64 l2_cache_size = 9;
+inline void DeviceProperties::clear_l2_cache_size() {
+  l2_cache_size_ = PROTOBUF_LONGLONG(0);
+}
+inline ::google::protobuf::int64 DeviceProperties::l2_cache_size() const {
+  // @@protoc_insertion_point(field_get:tensorflow.DeviceProperties.l2_cache_size)
+  return l2_cache_size_;
+}
+inline void DeviceProperties::set_l2_cache_size(::google::protobuf::int64 value) {
+  
+  l2_cache_size_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.DeviceProperties.l2_cache_size)
+}
+
+// int64 l3_cache_size = 10;
+inline void DeviceProperties::clear_l3_cache_size() {
+  l3_cache_size_ = PROTOBUF_LONGLONG(0);
+}
+inline ::google::protobuf::int64 DeviceProperties::l3_cache_size() const {
+  // @@protoc_insertion_point(field_get:tensorflow.DeviceProperties.l3_cache_size)
+  return l3_cache_size_;
+}
+inline void DeviceProperties::set_l3_cache_size(::google::protobuf::int64 value) {
+  
+  l3_cache_size_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.DeviceProperties.l3_cache_size)
+}
+
+// int64 shared_memory_size_per_multiprocessor = 11;
+inline void DeviceProperties::clear_shared_memory_size_per_multiprocessor() {
+  shared_memory_size_per_multiprocessor_ = PROTOBUF_LONGLONG(0);
+}
+inline ::google::protobuf::int64 DeviceProperties::shared_memory_size_per_multiprocessor() const {
+  // @@protoc_insertion_point(field_get:tensorflow.DeviceProperties.shared_memory_size_per_multiprocessor)
+  return shared_memory_size_per_multiprocessor_;
+}
+inline void DeviceProperties::set_shared_memory_size_per_multiprocessor(::google::protobuf::int64 value) {
+  
+  shared_memory_size_per_multiprocessor_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.DeviceProperties.shared_memory_size_per_multiprocessor)
+}
+
+// int64 memory_size = 12;
+inline void DeviceProperties::clear_memory_size() {
+  memory_size_ = PROTOBUF_LONGLONG(0);
+}
+inline ::google::protobuf::int64 DeviceProperties::memory_size() const {
+  // @@protoc_insertion_point(field_get:tensorflow.DeviceProperties.memory_size)
+  return memory_size_;
+}
+inline void DeviceProperties::set_memory_size(::google::protobuf::int64 value) {
+  
+  memory_size_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.DeviceProperties.memory_size)
+}
+
+// int64 bandwidth = 13;
+inline void DeviceProperties::clear_bandwidth() {
+  bandwidth_ = PROTOBUF_LONGLONG(0);
+}
+inline ::google::protobuf::int64 DeviceProperties::bandwidth() const {
+  // @@protoc_insertion_point(field_get:tensorflow.DeviceProperties.bandwidth)
+  return bandwidth_;
+}
+inline void DeviceProperties::set_bandwidth(::google::protobuf::int64 value) {
+  
+  bandwidth_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.DeviceProperties.bandwidth)
+}
+
+// -------------------------------------------------------------------
+
+// NamedDevice
+
+// string name = 1;
+inline void NamedDevice::clear_name() {
+  name_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline const ::std::string& NamedDevice::name() const {
+  // @@protoc_insertion_point(field_get:tensorflow.NamedDevice.name)
+  return name_.Get();
+}
+inline void NamedDevice::set_name(const ::std::string& value) {
+  
+  name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set:tensorflow.NamedDevice.name)
+}
+#if LANG_CXX11
+inline void NamedDevice::set_name(::std::string&& value) {
+  
+  name_.Set(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.NamedDevice.name)
+}
+#endif
+inline void NamedDevice::set_name(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
+              GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_char:tensorflow.NamedDevice.name)
+}
+inline void NamedDevice::set_name(const char* value,
+    size_t size) {
+  
+  name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
+      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.NamedDevice.name)
+}
+inline ::std::string* NamedDevice::mutable_name() {
+  
+  // @@protoc_insertion_point(field_mutable:tensorflow.NamedDevice.name)
+  return name_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline ::std::string* NamedDevice::release_name() {
+  // @@protoc_insertion_point(field_release:tensorflow.NamedDevice.name)
+  
+  return name_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline void NamedDevice::set_allocated_name(::std::string* name) {
+  if (name != NULL) {
+    
+  } else {
+    
+  }
+  name_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), name,
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.NamedDevice.name)
+}
+inline ::std::string* NamedDevice::unsafe_arena_release_name() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.NamedDevice.name)
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  
+  return name_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      GetArenaNoVirtual());
+}
+inline void NamedDevice::unsafe_arena_set_allocated_name(
+    ::std::string* name) {
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (name != NULL) {
+    
+  } else {
+    
+  }
+  name_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      name, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.NamedDevice.name)
+}
+
+// .tensorflow.DeviceProperties properties = 2;
+inline bool NamedDevice::has_properties() const {
+  return this != internal_default_instance() && properties_ != NULL;
+}
+inline void NamedDevice::clear_properties() {
+  if (GetArenaNoVirtual() == NULL && properties_ != NULL) {
+    delete properties_;
+  }
+  properties_ = NULL;
+}
+inline const ::tensorflow::DeviceProperties& NamedDevice::properties() const {
+  const ::tensorflow::DeviceProperties* p = properties_;
+  // @@protoc_insertion_point(field_get:tensorflow.NamedDevice.properties)
+  return p != NULL ? *p : *reinterpret_cast<const ::tensorflow::DeviceProperties*>(
+      &::tensorflow::_DeviceProperties_default_instance_);
+}
+inline ::tensorflow::DeviceProperties* NamedDevice::release_properties() {
+  // @@protoc_insertion_point(field_release:tensorflow.NamedDevice.properties)
+  
+  ::tensorflow::DeviceProperties* temp = properties_;
+  if (GetArenaNoVirtual() != NULL) {
+    temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
+  }
+  properties_ = NULL;
+  return temp;
+}
+inline ::tensorflow::DeviceProperties* NamedDevice::unsafe_arena_release_properties() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.NamedDevice.properties)
+  
+  ::tensorflow::DeviceProperties* temp = properties_;
+  properties_ = NULL;
+  return temp;
+}
+inline ::tensorflow::DeviceProperties* NamedDevice::mutable_properties() {
+  
+  if (properties_ == NULL) {
+    auto* p = CreateMaybeMessage<::tensorflow::DeviceProperties>(GetArenaNoVirtual());
+    properties_ = p;
+  }
+  // @@protoc_insertion_point(field_mutable:tensorflow.NamedDevice.properties)
+  return properties_;
+}
+inline void NamedDevice::set_allocated_properties(::tensorflow::DeviceProperties* properties) {
+  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
+  if (message_arena == NULL) {
+    delete properties_;
+  }
+  if (properties) {
+    ::google::protobuf::Arena* submessage_arena =
+      ::google::protobuf::Arena::GetArena(properties);
+    if (message_arena != submessage_arena) {
+      properties = ::google::protobuf::internal::GetOwnedMessage(
+          message_arena, properties, submessage_arena);
+    }
+    
+  } else {
+    
+  }
+  properties_ = properties;
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.NamedDevice.properties)
+}
+
+#ifdef __GNUC__
+  #pragma GCC diagnostic pop
+#endif  // __GNUC__
+// -------------------------------------------------------------------
+
+// -------------------------------------------------------------------
+
+
+// @@protoc_insertion_point(namespace_scope)
+
+}  // namespace tensorflow
+
+// @@protoc_insertion_point(global_scope)
+
+#include <google/protobuf/port_undef.inc>
+#endif  // PROTOBUF_INCLUDED_tensorflow_2fcore_2fprotobuf_2fdevice_5fproperties_2eproto
diff --git a/tensorflow/core/protobuf/device_properties.proto b/tensorflow/core/protobuf/device_properties.proto
new file mode 100644 (file)
index 0000000..11e1258
--- /dev/null
@@ -0,0 +1,57 @@
+/* Copyright 2017 The TensorFlow Authors. All Rights Reserved.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+   http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+==============================================================================*/
+
+syntax = "proto3";
+
+package tensorflow;
+option cc_enable_arenas = true;
+option java_outer_classname = "DevicePropertiesProtos";
+option go_package = "github.com/tensorflow/tensorflow/tensorflow/go/core/protobuf";
+
+message DeviceProperties {
+  // Device type (CPU, GPU, ...)
+  string type = 1;
+  // Vendor (Intel, nvidia, ...)
+  string vendor = 2;
+  // Model (Haswell, K40, ...)
+  string model = 3;
+  // Core Frequency in Mhz
+  int64 frequency = 4;
+  // Number of cores
+  int64 num_cores = 5;
+  // Version of the tools and libraries used with this device (e.g. gcc 4.9,
+  // cudnn 5.1)
+  map<string, string> environment = 6;
+  // Number of registers per core.
+  int64 num_registers = 7;
+  // L1 cache size in bytes
+  int64 l1_cache_size = 8;
+  // L2 cache size in bytes
+  int64 l2_cache_size = 9;
+  // L3 cache size in bytes
+  int64 l3_cache_size = 10;
+  // Shared memory size per multiprocessor in bytes. This field is
+  // applicable to GPUs only.
+  int64 shared_memory_size_per_multiprocessor = 11;
+  // Memory size in bytes
+  int64 memory_size = 12;
+  // Memory bandwidth in KB/s
+  int64 bandwidth = 13;
+}
+
+message NamedDevice {
+  string name = 1;
+  DeviceProperties properties = 2;
+}
diff --git a/tensorflow/core/protobuf/eager_service.pb.cc b/tensorflow/core/protobuf/eager_service.pb.cc
new file mode 100644 (file)
index 0000000..340c2d5
--- /dev/null
@@ -0,0 +1,5595 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: tensorflow/core/protobuf/eager_service.proto
+
+#include "tensorflow/core/protobuf/eager_service.pb.h"
+
+#include <algorithm>
+
+#include <google/protobuf/stubs/common.h>
+#include <google/protobuf/io/coded_stream.h>
+#include <google/protobuf/extension_set.h>
+#include <google/protobuf/wire_format_lite_inl.h>
+#include <google/protobuf/descriptor.h>
+#include <google/protobuf/generated_message_reflection.h>
+#include <google/protobuf/reflection_ops.h>
+#include <google/protobuf/wire_format.h>
+// @@protoc_insertion_point(includes)
+#include <google/protobuf/port_def.inc>
+
+extern PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fframework_2fattr_5fvalue_2eproto ::google::protobuf::internal::SCCInfo<2> scc_info_AttrValue_tensorflow_2fcore_2fframework_2fattr_5fvalue_2eproto;
+extern PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fframework_2fdevice_5fattributes_2eproto ::google::protobuf::internal::SCCInfo<1> scc_info_DeviceAttributes_tensorflow_2fcore_2fframework_2fdevice_5fattributes_2eproto;
+extern PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fframework_2ffunction_2eproto ::google::protobuf::internal::SCCInfo<4> scc_info_FunctionDef_tensorflow_2fcore_2fframework_2ffunction_2eproto;
+extern PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fframework_2fversions_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_VersionDef_tensorflow_2fcore_2fframework_2fversions_2eproto;
+extern PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fprotobuf_2feager_5fservice_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_RemoteTensorHandle_tensorflow_2fcore_2fprotobuf_2feager_5fservice_2eproto;
+extern PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fprotobuf_2feager_5fservice_2eproto ::google::protobuf::internal::SCCInfo<1> scc_info_Operation_AttrsEntry_DoNotUse_tensorflow_2fcore_2fprotobuf_2feager_5fservice_2eproto;
+extern PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fprotobuf_2feager_5fservice_2eproto ::google::protobuf::internal::SCCInfo<2> scc_info_Operation_tensorflow_2fcore_2fprotobuf_2feager_5fservice_2eproto;
+extern PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fprotobuf_2feager_5fservice_2eproto ::google::protobuf::internal::SCCInfo<2> scc_info_QueueItem_tensorflow_2fcore_2fprotobuf_2feager_5fservice_2eproto;
+extern PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fprotobuf_2ftensorflow_5fserver_2eproto ::google::protobuf::internal::SCCInfo<2> scc_info_ServerDef_tensorflow_2fcore_2fprotobuf_2ftensorflow_5fserver_2eproto;
+namespace tensorflow {
+namespace eager {
+class RemoteTensorHandleDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<RemoteTensorHandle> _instance;
+} _RemoteTensorHandle_default_instance_;
+class Operation_AttrsEntry_DoNotUseDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<Operation_AttrsEntry_DoNotUse> _instance;
+} _Operation_AttrsEntry_DoNotUse_default_instance_;
+class OperationDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<Operation> _instance;
+} _Operation_default_instance_;
+class QueueItemDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<QueueItem> _instance;
+  const ::tensorflow::eager::RemoteTensorHandle* handle_to_decref_;
+  const ::tensorflow::eager::Operation* operation_;
+} _QueueItem_default_instance_;
+class CreateContextRequestDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<CreateContextRequest> _instance;
+} _CreateContextRequest_default_instance_;
+class CreateContextResponseDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<CreateContextResponse> _instance;
+} _CreateContextResponse_default_instance_;
+class EnqueueRequestDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<EnqueueRequest> _instance;
+} _EnqueueRequest_default_instance_;
+class EnqueueResponseDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<EnqueueResponse> _instance;
+} _EnqueueResponse_default_instance_;
+class WaitQueueDoneRequestDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<WaitQueueDoneRequest> _instance;
+} _WaitQueueDoneRequest_default_instance_;
+class WaitQueueDoneResponseDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<WaitQueueDoneResponse> _instance;
+} _WaitQueueDoneResponse_default_instance_;
+class KeepAliveRequestDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<KeepAliveRequest> _instance;
+} _KeepAliveRequest_default_instance_;
+class KeepAliveResponseDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<KeepAliveResponse> _instance;
+} _KeepAliveResponse_default_instance_;
+class CloseContextRequestDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<CloseContextRequest> _instance;
+} _CloseContextRequest_default_instance_;
+class CloseContextResponseDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<CloseContextResponse> _instance;
+} _CloseContextResponse_default_instance_;
+class RegisterFunctionRequestDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<RegisterFunctionRequest> _instance;
+} _RegisterFunctionRequest_default_instance_;
+class RegisterFunctionResponseDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<RegisterFunctionResponse> _instance;
+} _RegisterFunctionResponse_default_instance_;
+}  // namespace eager
+}  // namespace tensorflow
+static void InitDefaultsRemoteTensorHandle_tensorflow_2fcore_2fprotobuf_2feager_5fservice_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::eager::_RemoteTensorHandle_default_instance_;
+    new (ptr) ::tensorflow::eager::RemoteTensorHandle();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::eager::RemoteTensorHandle::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<0> scc_info_RemoteTensorHandle_tensorflow_2fcore_2fprotobuf_2feager_5fservice_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsRemoteTensorHandle_tensorflow_2fcore_2fprotobuf_2feager_5fservice_2eproto}, {}};
+
+static void InitDefaultsOperation_AttrsEntry_DoNotUse_tensorflow_2fcore_2fprotobuf_2feager_5fservice_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::eager::_Operation_AttrsEntry_DoNotUse_default_instance_;
+    new (ptr) ::tensorflow::eager::Operation_AttrsEntry_DoNotUse();
+  }
+  ::tensorflow::eager::Operation_AttrsEntry_DoNotUse::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<1> scc_info_Operation_AttrsEntry_DoNotUse_tensorflow_2fcore_2fprotobuf_2feager_5fservice_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsOperation_AttrsEntry_DoNotUse_tensorflow_2fcore_2fprotobuf_2feager_5fservice_2eproto}, {
+      &scc_info_AttrValue_tensorflow_2fcore_2fframework_2fattr_5fvalue_2eproto.base,}};
+
+static void InitDefaultsOperation_tensorflow_2fcore_2fprotobuf_2feager_5fservice_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::eager::_Operation_default_instance_;
+    new (ptr) ::tensorflow::eager::Operation();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::eager::Operation::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<2> scc_info_Operation_tensorflow_2fcore_2fprotobuf_2feager_5fservice_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 2, InitDefaultsOperation_tensorflow_2fcore_2fprotobuf_2feager_5fservice_2eproto}, {
+      &scc_info_RemoteTensorHandle_tensorflow_2fcore_2fprotobuf_2feager_5fservice_2eproto.base,
+      &scc_info_Operation_AttrsEntry_DoNotUse_tensorflow_2fcore_2fprotobuf_2feager_5fservice_2eproto.base,}};
+
+static void InitDefaultsQueueItem_tensorflow_2fcore_2fprotobuf_2feager_5fservice_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::eager::_QueueItem_default_instance_;
+    new (ptr) ::tensorflow::eager::QueueItem();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::eager::QueueItem::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<2> scc_info_QueueItem_tensorflow_2fcore_2fprotobuf_2feager_5fservice_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 2, InitDefaultsQueueItem_tensorflow_2fcore_2fprotobuf_2feager_5fservice_2eproto}, {
+      &scc_info_RemoteTensorHandle_tensorflow_2fcore_2fprotobuf_2feager_5fservice_2eproto.base,
+      &scc_info_Operation_tensorflow_2fcore_2fprotobuf_2feager_5fservice_2eproto.base,}};
+
+static void InitDefaultsCreateContextRequest_tensorflow_2fcore_2fprotobuf_2feager_5fservice_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::eager::_CreateContextRequest_default_instance_;
+    new (ptr) ::tensorflow::eager::CreateContextRequest();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::eager::CreateContextRequest::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<2> scc_info_CreateContextRequest_tensorflow_2fcore_2fprotobuf_2feager_5fservice_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 2, InitDefaultsCreateContextRequest_tensorflow_2fcore_2fprotobuf_2feager_5fservice_2eproto}, {
+      &scc_info_ServerDef_tensorflow_2fcore_2fprotobuf_2ftensorflow_5fserver_2eproto.base,
+      &scc_info_VersionDef_tensorflow_2fcore_2fframework_2fversions_2eproto.base,}};
+
+static void InitDefaultsCreateContextResponse_tensorflow_2fcore_2fprotobuf_2feager_5fservice_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::eager::_CreateContextResponse_default_instance_;
+    new (ptr) ::tensorflow::eager::CreateContextResponse();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::eager::CreateContextResponse::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<1> scc_info_CreateContextResponse_tensorflow_2fcore_2fprotobuf_2feager_5fservice_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsCreateContextResponse_tensorflow_2fcore_2fprotobuf_2feager_5fservice_2eproto}, {
+      &scc_info_DeviceAttributes_tensorflow_2fcore_2fframework_2fdevice_5fattributes_2eproto.base,}};
+
+static void InitDefaultsEnqueueRequest_tensorflow_2fcore_2fprotobuf_2feager_5fservice_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::eager::_EnqueueRequest_default_instance_;
+    new (ptr) ::tensorflow::eager::EnqueueRequest();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::eager::EnqueueRequest::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<1> scc_info_EnqueueRequest_tensorflow_2fcore_2fprotobuf_2feager_5fservice_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsEnqueueRequest_tensorflow_2fcore_2fprotobuf_2feager_5fservice_2eproto}, {
+      &scc_info_QueueItem_tensorflow_2fcore_2fprotobuf_2feager_5fservice_2eproto.base,}};
+
+static void InitDefaultsEnqueueResponse_tensorflow_2fcore_2fprotobuf_2feager_5fservice_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::eager::_EnqueueResponse_default_instance_;
+    new (ptr) ::tensorflow::eager::EnqueueResponse();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::eager::EnqueueResponse::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<0> scc_info_EnqueueResponse_tensorflow_2fcore_2fprotobuf_2feager_5fservice_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsEnqueueResponse_tensorflow_2fcore_2fprotobuf_2feager_5fservice_2eproto}, {}};
+
+static void InitDefaultsWaitQueueDoneRequest_tensorflow_2fcore_2fprotobuf_2feager_5fservice_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::eager::_WaitQueueDoneRequest_default_instance_;
+    new (ptr) ::tensorflow::eager::WaitQueueDoneRequest();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::eager::WaitQueueDoneRequest::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<0> scc_info_WaitQueueDoneRequest_tensorflow_2fcore_2fprotobuf_2feager_5fservice_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsWaitQueueDoneRequest_tensorflow_2fcore_2fprotobuf_2feager_5fservice_2eproto}, {}};
+
+static void InitDefaultsWaitQueueDoneResponse_tensorflow_2fcore_2fprotobuf_2feager_5fservice_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::eager::_WaitQueueDoneResponse_default_instance_;
+    new (ptr) ::tensorflow::eager::WaitQueueDoneResponse();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::eager::WaitQueueDoneResponse::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<0> scc_info_WaitQueueDoneResponse_tensorflow_2fcore_2fprotobuf_2feager_5fservice_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsWaitQueueDoneResponse_tensorflow_2fcore_2fprotobuf_2feager_5fservice_2eproto}, {}};
+
+static void InitDefaultsKeepAliveRequest_tensorflow_2fcore_2fprotobuf_2feager_5fservice_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::eager::_KeepAliveRequest_default_instance_;
+    new (ptr) ::tensorflow::eager::KeepAliveRequest();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::eager::KeepAliveRequest::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<0> scc_info_KeepAliveRequest_tensorflow_2fcore_2fprotobuf_2feager_5fservice_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsKeepAliveRequest_tensorflow_2fcore_2fprotobuf_2feager_5fservice_2eproto}, {}};
+
+static void InitDefaultsKeepAliveResponse_tensorflow_2fcore_2fprotobuf_2feager_5fservice_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::eager::_KeepAliveResponse_default_instance_;
+    new (ptr) ::tensorflow::eager::KeepAliveResponse();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::eager::KeepAliveResponse::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<0> scc_info_KeepAliveResponse_tensorflow_2fcore_2fprotobuf_2feager_5fservice_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsKeepAliveResponse_tensorflow_2fcore_2fprotobuf_2feager_5fservice_2eproto}, {}};
+
+static void InitDefaultsCloseContextRequest_tensorflow_2fcore_2fprotobuf_2feager_5fservice_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::eager::_CloseContextRequest_default_instance_;
+    new (ptr) ::tensorflow::eager::CloseContextRequest();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::eager::CloseContextRequest::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<0> scc_info_CloseContextRequest_tensorflow_2fcore_2fprotobuf_2feager_5fservice_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsCloseContextRequest_tensorflow_2fcore_2fprotobuf_2feager_5fservice_2eproto}, {}};
+
+static void InitDefaultsCloseContextResponse_tensorflow_2fcore_2fprotobuf_2feager_5fservice_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::eager::_CloseContextResponse_default_instance_;
+    new (ptr) ::tensorflow::eager::CloseContextResponse();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::eager::CloseContextResponse::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<0> scc_info_CloseContextResponse_tensorflow_2fcore_2fprotobuf_2feager_5fservice_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsCloseContextResponse_tensorflow_2fcore_2fprotobuf_2feager_5fservice_2eproto}, {}};
+
+static void InitDefaultsRegisterFunctionRequest_tensorflow_2fcore_2fprotobuf_2feager_5fservice_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::eager::_RegisterFunctionRequest_default_instance_;
+    new (ptr) ::tensorflow::eager::RegisterFunctionRequest();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::eager::RegisterFunctionRequest::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<1> scc_info_RegisterFunctionRequest_tensorflow_2fcore_2fprotobuf_2feager_5fservice_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsRegisterFunctionRequest_tensorflow_2fcore_2fprotobuf_2feager_5fservice_2eproto}, {
+      &scc_info_FunctionDef_tensorflow_2fcore_2fframework_2ffunction_2eproto.base,}};
+
+static void InitDefaultsRegisterFunctionResponse_tensorflow_2fcore_2fprotobuf_2feager_5fservice_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::eager::_RegisterFunctionResponse_default_instance_;
+    new (ptr) ::tensorflow::eager::RegisterFunctionResponse();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::eager::RegisterFunctionResponse::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<0> scc_info_RegisterFunctionResponse_tensorflow_2fcore_2fprotobuf_2feager_5fservice_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsRegisterFunctionResponse_tensorflow_2fcore_2fprotobuf_2feager_5fservice_2eproto}, {}};
+
+void InitDefaults_tensorflow_2fcore_2fprotobuf_2feager_5fservice_2eproto() {
+  ::google::protobuf::internal::InitSCC(&scc_info_RemoteTensorHandle_tensorflow_2fcore_2fprotobuf_2feager_5fservice_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_Operation_AttrsEntry_DoNotUse_tensorflow_2fcore_2fprotobuf_2feager_5fservice_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_Operation_tensorflow_2fcore_2fprotobuf_2feager_5fservice_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_QueueItem_tensorflow_2fcore_2fprotobuf_2feager_5fservice_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_CreateContextRequest_tensorflow_2fcore_2fprotobuf_2feager_5fservice_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_CreateContextResponse_tensorflow_2fcore_2fprotobuf_2feager_5fservice_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_EnqueueRequest_tensorflow_2fcore_2fprotobuf_2feager_5fservice_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_EnqueueResponse_tensorflow_2fcore_2fprotobuf_2feager_5fservice_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_WaitQueueDoneRequest_tensorflow_2fcore_2fprotobuf_2feager_5fservice_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_WaitQueueDoneResponse_tensorflow_2fcore_2fprotobuf_2feager_5fservice_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_KeepAliveRequest_tensorflow_2fcore_2fprotobuf_2feager_5fservice_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_KeepAliveResponse_tensorflow_2fcore_2fprotobuf_2feager_5fservice_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_CloseContextRequest_tensorflow_2fcore_2fprotobuf_2feager_5fservice_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_CloseContextResponse_tensorflow_2fcore_2fprotobuf_2feager_5fservice_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_RegisterFunctionRequest_tensorflow_2fcore_2fprotobuf_2feager_5fservice_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_RegisterFunctionResponse_tensorflow_2fcore_2fprotobuf_2feager_5fservice_2eproto.base);
+}
+
+::google::protobuf::Metadata file_level_metadata_tensorflow_2fcore_2fprotobuf_2feager_5fservice_2eproto[16];
+constexpr ::google::protobuf::EnumDescriptor const** file_level_enum_descriptors_tensorflow_2fcore_2fprotobuf_2feager_5fservice_2eproto = nullptr;
+constexpr ::google::protobuf::ServiceDescriptor const** file_level_service_descriptors_tensorflow_2fcore_2fprotobuf_2feager_5fservice_2eproto = nullptr;
+
+const ::google::protobuf::uint32 TableStruct_tensorflow_2fcore_2fprotobuf_2feager_5fservice_2eproto::offsets[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = {
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::eager::RemoteTensorHandle, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::eager::RemoteTensorHandle, op_id_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::eager::RemoteTensorHandle, output_num_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::eager::Operation_AttrsEntry_DoNotUse, _has_bits_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::eager::Operation_AttrsEntry_DoNotUse, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::eager::Operation_AttrsEntry_DoNotUse, key_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::eager::Operation_AttrsEntry_DoNotUse, value_),
+  0,
+  1,
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::eager::Operation, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::eager::Operation, id_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::eager::Operation, name_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::eager::Operation, inputs_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::eager::Operation, control_op_ids_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::eager::Operation, attrs_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::eager::Operation, device_),
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::eager::QueueItem, _internal_metadata_),
+  ~0u,  // no _extensions_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::eager::QueueItem, _oneof_case_[0]),
+  ~0u,  // no _weak_field_map_
+  offsetof(::tensorflow::eager::QueueItemDefaultTypeInternal, handle_to_decref_),
+  offsetof(::tensorflow::eager::QueueItemDefaultTypeInternal, operation_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::eager::QueueItem, item_),
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::eager::CreateContextRequest, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::eager::CreateContextRequest, server_def_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::eager::CreateContextRequest, async_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::eager::CreateContextRequest, keep_alive_secs_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::eager::CreateContextRequest, version_def_),
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::eager::CreateContextResponse, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::eager::CreateContextResponse, context_id_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::eager::CreateContextResponse, device_attributes_),
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::eager::EnqueueRequest, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::eager::EnqueueRequest, context_id_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::eager::EnqueueRequest, queue_),
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::eager::EnqueueResponse, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::eager::WaitQueueDoneRequest, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::eager::WaitQueueDoneRequest, context_id_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::eager::WaitQueueDoneRequest, op_id_),
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::eager::WaitQueueDoneResponse, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::eager::KeepAliveRequest, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::eager::KeepAliveRequest, context_id_),
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::eager::KeepAliveResponse, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::eager::CloseContextRequest, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::eager::CloseContextRequest, context_id_),
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::eager::CloseContextResponse, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::eager::RegisterFunctionRequest, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::eager::RegisterFunctionRequest, context_id_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::eager::RegisterFunctionRequest, function_def_),
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::eager::RegisterFunctionResponse, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+};
+static const ::google::protobuf::internal::MigrationSchema schemas[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = {
+  { 0, -1, sizeof(::tensorflow::eager::RemoteTensorHandle)},
+  { 7, 14, sizeof(::tensorflow::eager::Operation_AttrsEntry_DoNotUse)},
+  { 16, -1, sizeof(::tensorflow::eager::Operation)},
+  { 27, -1, sizeof(::tensorflow::eager::QueueItem)},
+  { 35, -1, sizeof(::tensorflow::eager::CreateContextRequest)},
+  { 44, -1, sizeof(::tensorflow::eager::CreateContextResponse)},
+  { 51, -1, sizeof(::tensorflow::eager::EnqueueRequest)},
+  { 58, -1, sizeof(::tensorflow::eager::EnqueueResponse)},
+  { 63, -1, sizeof(::tensorflow::eager::WaitQueueDoneRequest)},
+  { 70, -1, sizeof(::tensorflow::eager::WaitQueueDoneResponse)},
+  { 75, -1, sizeof(::tensorflow::eager::KeepAliveRequest)},
+  { 81, -1, sizeof(::tensorflow::eager::KeepAliveResponse)},
+  { 86, -1, sizeof(::tensorflow::eager::CloseContextRequest)},
+  { 92, -1, sizeof(::tensorflow::eager::CloseContextResponse)},
+  { 97, -1, sizeof(::tensorflow::eager::RegisterFunctionRequest)},
+  { 104, -1, sizeof(::tensorflow::eager::RegisterFunctionResponse)},
+};
+
+static ::google::protobuf::Message const * const file_default_instances[] = {
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::eager::_RemoteTensorHandle_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::eager::_Operation_AttrsEntry_DoNotUse_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::eager::_Operation_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::eager::_QueueItem_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::eager::_CreateContextRequest_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::eager::_CreateContextResponse_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::eager::_EnqueueRequest_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::eager::_EnqueueResponse_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::eager::_WaitQueueDoneRequest_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::eager::_WaitQueueDoneResponse_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::eager::_KeepAliveRequest_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::eager::_KeepAliveResponse_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::eager::_CloseContextRequest_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::eager::_CloseContextResponse_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::eager::_RegisterFunctionRequest_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::eager::_RegisterFunctionResponse_default_instance_),
+};
+
+::google::protobuf::internal::AssignDescriptorsTable assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2feager_5fservice_2eproto = {
+  {}, AddDescriptors_tensorflow_2fcore_2fprotobuf_2feager_5fservice_2eproto, "tensorflow/core/protobuf/eager_service.proto", schemas,
+  file_default_instances, TableStruct_tensorflow_2fcore_2fprotobuf_2feager_5fservice_2eproto::offsets,
+  file_level_metadata_tensorflow_2fcore_2fprotobuf_2feager_5fservice_2eproto, 16, file_level_enum_descriptors_tensorflow_2fcore_2fprotobuf_2feager_5fservice_2eproto, file_level_service_descriptors_tensorflow_2fcore_2fprotobuf_2feager_5fservice_2eproto,
+};
+
+::google::protobuf::internal::DescriptorTable descriptor_table_tensorflow_2fcore_2fprotobuf_2feager_5fservice_2eproto = {
+  false, InitDefaults_tensorflow_2fcore_2fprotobuf_2feager_5fservice_2eproto, 
+  "\n,tensorflow/core/protobuf/eager_service"
+  ".proto\022\020tensorflow.eager\032*tensorflow/cor"
+  "e/framework/attr_value.proto\0321tensorflow"
+  "/core/framework/device_attributes.proto\032"
+  "(tensorflow/core/framework/function.prot"
+  "o\032(tensorflow/core/framework/versions.pr"
+  "oto\0320tensorflow/core/protobuf/tensorflow"
+  "_server.proto\"7\n\022RemoteTensorHandle\022\r\n\005o"
+  "p_id\030\001 \001(\003\022\022\n\noutput_num\030\002 \001(\005\"\377\001\n\tOpera"
+  "tion\022\n\n\002id\030\001 \001(\003\022\014\n\004name\030\002 \001(\t\0224\n\006inputs"
+  "\030\003 \003(\0132$.tensorflow.eager.RemoteTensorHa"
+  "ndle\022\026\n\016control_op_ids\030\004 \003(\003\0225\n\005attrs\030\005 "
+  "\003(\0132&.tensorflow.eager.Operation.AttrsEn"
+  "try\022\016\n\006device\030\006 \001(\t\032C\n\nAttrsEntry\022\013\n\003key"
+  "\030\001 \001(\t\022$\n\005value\030\002 \001(\0132\025.tensorflow.AttrV"
+  "alue:\0028\001\"\207\001\n\tQueueItem\022@\n\020handle_to_decr"
+  "ef\030\001 \001(\0132$.tensorflow.eager.RemoteTensor"
+  "HandleH\000\0220\n\toperation\030\002 \001(\0132\033.tensorflow"
+  ".eager.OperationH\000B\006\n\004item\"\226\001\n\024CreateCon"
+  "textRequest\022)\n\nserver_def\030\001 \001(\0132\025.tensor"
+  "flow.ServerDef\022\r\n\005async\030\002 \001(\010\022\027\n\017keep_al"
+  "ive_secs\030\003 \001(\003\022+\n\013version_def\030\004 \001(\0132\026.te"
+  "nsorflow.VersionDef\"d\n\025CreateContextResp"
+  "onse\022\022\n\ncontext_id\030\001 \001(\006\0227\n\021device_attri"
+  "butes\030\002 \003(\0132\034.tensorflow.DeviceAttribute"
+  "s\"P\n\016EnqueueRequest\022\022\n\ncontext_id\030\001 \001(\006\022"
+  "*\n\005queue\030\003 \003(\0132\033.tensorflow.eager.QueueI"
+  "tem\"\021\n\017EnqueueResponse\"9\n\024WaitQueueDoneR"
+  "equest\022\022\n\ncontext_id\030\001 \001(\006\022\r\n\005op_id\030\002 \003("
+  "\003\"\027\n\025WaitQueueDoneResponse\"&\n\020KeepAliveR"
+  "equest\022\022\n\ncontext_id\030\001 \001(\006\"\023\n\021KeepAliveR"
+  "esponse\")\n\023CloseContextRequest\022\022\n\ncontex"
+  "t_id\030\001 \001(\006\"\026\n\024CloseContextResponse\"\\\n\027Re"
+  "gisterFunctionRequest\022\022\n\ncontext_id\030\001 \001("
+  "\006\022-\n\014function_def\030\002 \001(\0132\027.tensorflow.Fun"
+  "ctionDef\"\032\n\030RegisterFunctionResponse2\302\004\n"
+  "\014EagerService\022`\n\rCreateContext\022&.tensorf"
+  "low.eager.CreateContextRequest\032\'.tensorf"
+  "low.eager.CreateContextResponse\022N\n\007Enque"
+  "ue\022 .tensorflow.eager.EnqueueRequest\032!.t"
+  "ensorflow.eager.EnqueueResponse\022`\n\rWaitQ"
+  "ueueDone\022&.tensorflow.eager.WaitQueueDon"
+  "eRequest\032\'.tensorflow.eager.WaitQueueDon"
+  "eResponse\022T\n\tKeepAlive\022\".tensorflow.eage"
+  "r.KeepAliveRequest\032#.tensorflow.eager.Ke"
+  "epAliveResponse\022]\n\014CloseContext\022%.tensor"
+  "flow.eager.CloseContextRequest\032&.tensorf"
+  "low.eager.CloseContextResponse\022i\n\020Regist"
+  "erFunction\022).tensorflow.eager.RegisterFu"
+  "nctionRequest\032*.tensorflow.eager.Registe"
+  "rFunctionResponseb\006proto3"
+,
+  "tensorflow/core/protobuf/eager_service.proto", &assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2feager_5fservice_2eproto, 2025,
+};
+
+void AddDescriptors_tensorflow_2fcore_2fprotobuf_2feager_5fservice_2eproto() {
+  static constexpr ::google::protobuf::internal::InitFunc deps[5] =
+  {
+    ::AddDescriptors_tensorflow_2fcore_2fframework_2fattr_5fvalue_2eproto,
+    ::AddDescriptors_tensorflow_2fcore_2fframework_2fdevice_5fattributes_2eproto,
+    ::AddDescriptors_tensorflow_2fcore_2fframework_2ffunction_2eproto,
+    ::AddDescriptors_tensorflow_2fcore_2fframework_2fversions_2eproto,
+    ::AddDescriptors_tensorflow_2fcore_2fprotobuf_2ftensorflow_5fserver_2eproto,
+  };
+ ::google::protobuf::internal::AddDescriptors(&descriptor_table_tensorflow_2fcore_2fprotobuf_2feager_5fservice_2eproto, deps, 5);
+}
+
+// Force running AddDescriptors() at dynamic initialization time.
+static bool dynamic_init_dummy_tensorflow_2fcore_2fprotobuf_2feager_5fservice_2eproto = []() { AddDescriptors_tensorflow_2fcore_2fprotobuf_2feager_5fservice_2eproto(); return true; }();
+namespace tensorflow {
+namespace eager {
+
+// ===================================================================
+
+void RemoteTensorHandle::InitAsDefaultInstance() {
+}
+class RemoteTensorHandle::HasBitSetters {
+ public:
+};
+
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int RemoteTensorHandle::kOpIdFieldNumber;
+const int RemoteTensorHandle::kOutputNumFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+RemoteTensorHandle::RemoteTensorHandle()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.eager.RemoteTensorHandle)
+}
+RemoteTensorHandle::RemoteTensorHandle(const RemoteTensorHandle& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::memcpy(&op_id_, &from.op_id_,
+    static_cast<size_t>(reinterpret_cast<char*>(&output_num_) -
+    reinterpret_cast<char*>(&op_id_)) + sizeof(output_num_));
+  // @@protoc_insertion_point(copy_constructor:tensorflow.eager.RemoteTensorHandle)
+}
+
+void RemoteTensorHandle::SharedCtor() {
+  ::memset(&op_id_, 0, static_cast<size_t>(
+      reinterpret_cast<char*>(&output_num_) -
+      reinterpret_cast<char*>(&op_id_)) + sizeof(output_num_));
+}
+
+RemoteTensorHandle::~RemoteTensorHandle() {
+  // @@protoc_insertion_point(destructor:tensorflow.eager.RemoteTensorHandle)
+  SharedDtor();
+}
+
+void RemoteTensorHandle::SharedDtor() {
+}
+
+void RemoteTensorHandle::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const RemoteTensorHandle& RemoteTensorHandle::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_RemoteTensorHandle_tensorflow_2fcore_2fprotobuf_2feager_5fservice_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void RemoteTensorHandle::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.eager.RemoteTensorHandle)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  ::memset(&op_id_, 0, static_cast<size_t>(
+      reinterpret_cast<char*>(&output_num_) -
+      reinterpret_cast<char*>(&op_id_)) + sizeof(output_num_));
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* RemoteTensorHandle::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<RemoteTensorHandle*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // int64 op_id = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 8) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::google::protobuf::int64 value = val;
+        msg->set_op_id(value);
+        break;
+      }
+      // int32 output_num = 2;
+      case 2: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 16) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::google::protobuf::int32 value = val;
+        msg->set_output_num(value);
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool RemoteTensorHandle::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.eager.RemoteTensorHandle)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // int64 op_id = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (8 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>(
+                 input, &op_id_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // int32 output_num = 2;
+      case 2: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (16 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
+                 input, &output_num_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.eager.RemoteTensorHandle)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.eager.RemoteTensorHandle)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void RemoteTensorHandle::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.eager.RemoteTensorHandle)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // int64 op_id = 1;
+  if (this->op_id() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt64(1, this->op_id(), output);
+  }
+
+  // int32 output_num = 2;
+  if (this->output_num() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt32(2, this->output_num(), output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.eager.RemoteTensorHandle)
+}
+
+::google::protobuf::uint8* RemoteTensorHandle::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.eager.RemoteTensorHandle)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // int64 op_id = 1;
+  if (this->op_id() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt64ToArray(1, this->op_id(), target);
+  }
+
+  // int32 output_num = 2;
+  if (this->output_num() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt32ToArray(2, this->output_num(), target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.eager.RemoteTensorHandle)
+  return target;
+}
+
+size_t RemoteTensorHandle::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.eager.RemoteTensorHandle)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // int64 op_id = 1;
+  if (this->op_id() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::Int64Size(
+        this->op_id());
+  }
+
+  // int32 output_num = 2;
+  if (this->output_num() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::Int32Size(
+        this->output_num());
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void RemoteTensorHandle::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.eager.RemoteTensorHandle)
+  GOOGLE_DCHECK_NE(&from, this);
+  const RemoteTensorHandle* source =
+      ::google::protobuf::DynamicCastToGenerated<RemoteTensorHandle>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.eager.RemoteTensorHandle)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.eager.RemoteTensorHandle)
+    MergeFrom(*source);
+  }
+}
+
+void RemoteTensorHandle::MergeFrom(const RemoteTensorHandle& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.eager.RemoteTensorHandle)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  if (from.op_id() != 0) {
+    set_op_id(from.op_id());
+  }
+  if (from.output_num() != 0) {
+    set_output_num(from.output_num());
+  }
+}
+
+void RemoteTensorHandle::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.eager.RemoteTensorHandle)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void RemoteTensorHandle::CopyFrom(const RemoteTensorHandle& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.eager.RemoteTensorHandle)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool RemoteTensorHandle::IsInitialized() const {
+  return true;
+}
+
+void RemoteTensorHandle::Swap(RemoteTensorHandle* other) {
+  if (other == this) return;
+  InternalSwap(other);
+}
+void RemoteTensorHandle::InternalSwap(RemoteTensorHandle* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  swap(op_id_, other->op_id_);
+  swap(output_num_, other->output_num_);
+}
+
+::google::protobuf::Metadata RemoteTensorHandle::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2feager_5fservice_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fprotobuf_2feager_5fservice_2eproto[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+Operation_AttrsEntry_DoNotUse::Operation_AttrsEntry_DoNotUse() {}
+Operation_AttrsEntry_DoNotUse::Operation_AttrsEntry_DoNotUse(::google::protobuf::Arena* arena)
+    : SuperType(arena) {}
+void Operation_AttrsEntry_DoNotUse::MergeFrom(const Operation_AttrsEntry_DoNotUse& other) {
+  MergeFromInternal(other);
+}
+::google::protobuf::Metadata Operation_AttrsEntry_DoNotUse::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2feager_5fservice_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fprotobuf_2feager_5fservice_2eproto[1];
+}
+void Operation_AttrsEntry_DoNotUse::MergeFrom(
+    const ::google::protobuf::Message& other) {
+  ::google::protobuf::Message::MergeFrom(other);
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool Operation_AttrsEntry_DoNotUse::_ParseMap(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx) {
+  using MF = ::google::protobuf::internal::MapField<
+      Operation_AttrsEntry_DoNotUse, EntryKeyType, EntryValueType,
+      kEntryKeyFieldType, kEntryValueFieldType,
+      kEntryDefaultEnumValue>;
+  auto mf = static_cast<MF*>(object);
+  Parser<MF, ::google::protobuf::Map<EntryKeyType, EntryValueType>> parser(mf);
+#define DO_(x) if (!(x)) return false
+  DO_(parser.ParseMap(begin, end));
+  DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+    parser.key().data(), static_cast<int>(parser.key().length()),
+    ::google::protobuf::internal::WireFormatLite::PARSE,
+    "tensorflow.eager.Operation.AttrsEntry.key"));
+#undef DO_
+  return true;
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+
+// ===================================================================
+
+void Operation::InitAsDefaultInstance() {
+}
+class Operation::HasBitSetters {
+ public:
+};
+
+void Operation::clear_attrs() {
+  attrs_.Clear();
+}
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int Operation::kIdFieldNumber;
+const int Operation::kNameFieldNumber;
+const int Operation::kInputsFieldNumber;
+const int Operation::kControlOpIdsFieldNumber;
+const int Operation::kAttrsFieldNumber;
+const int Operation::kDeviceFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+Operation::Operation()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.eager.Operation)
+}
+Operation::Operation(const Operation& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL),
+      inputs_(from.inputs_),
+      control_op_ids_(from.control_op_ids_) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  attrs_.MergeFrom(from.attrs_);
+  name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.name().size() > 0) {
+    name_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.name_);
+  }
+  device_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.device().size() > 0) {
+    device_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.device_);
+  }
+  id_ = from.id_;
+  // @@protoc_insertion_point(copy_constructor:tensorflow.eager.Operation)
+}
+
+void Operation::SharedCtor() {
+  ::google::protobuf::internal::InitSCC(
+      &scc_info_Operation_tensorflow_2fcore_2fprotobuf_2feager_5fservice_2eproto.base);
+  name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  device_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  id_ = PROTOBUF_LONGLONG(0);
+}
+
+Operation::~Operation() {
+  // @@protoc_insertion_point(destructor:tensorflow.eager.Operation)
+  SharedDtor();
+}
+
+void Operation::SharedDtor() {
+  name_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  device_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+
+void Operation::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const Operation& Operation::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_Operation_tensorflow_2fcore_2fprotobuf_2feager_5fservice_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void Operation::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.eager.Operation)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  inputs_.Clear();
+  control_op_ids_.Clear();
+  attrs_.Clear();
+  name_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  device_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  id_ = PROTOBUF_LONGLONG(0);
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* Operation::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<Operation*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // int64 id = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 8) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::google::protobuf::int64 value = val;
+        msg->set_id(value);
+        break;
+      }
+      // string name = 2;
+      case 2: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 18) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("tensorflow.eager.Operation.name");
+        parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+        ::std::string* str = msg->mutable_name();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+        break;
+      }
+      // repeated .tensorflow.eager.RemoteTensorHandle inputs = 3;
+      case 3: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 26) goto handle_unusual;
+        do {
+          ptr = Varint::Parse32Inline(ptr, &size);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          parser_till_end = ::tensorflow::eager::RemoteTensorHandle::_InternalParse;
+          object = msg->add_inputs();
+          if (size > end - ptr) goto len_delim_till_end;
+          auto newend = ptr + size;
+          bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                         ptr, newend);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          ptr = newend;
+          if (ptr >= end) break;
+        } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 26 && (ptr += 1));
+        break;
+      }
+      // repeated int64 control_op_ids = 4;
+      case 4: {
+        if (static_cast<::google::protobuf::uint8>(tag) == 34) {
+          ptr = Varint::Parse32Inline(ptr, &size);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          parser_till_end = ::google::protobuf::internal::PackedInt64Parser;
+          object = msg->mutable_control_op_ids();
+          if (size > end - ptr) goto len_delim_till_end;
+          auto newend = ptr + size;
+          if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+          break;
+        } else if (static_cast<::google::protobuf::uint8>(tag) != 32) goto handle_unusual;
+        do {
+          ::google::protobuf::uint64 val;
+          ptr = Varint::Parse64(ptr, &val);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          ::google::protobuf::int64 value = val;
+          msg->add_control_op_ids(value);
+          if (ptr >= end) break;
+        } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 32 && (ptr += 1));
+        break;
+      }
+      // map<string, .tensorflow.AttrValue> attrs = 5;
+      case 5: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 42) goto handle_unusual;
+        do {
+          ptr = Varint::Parse32Inline(ptr, &size);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          parser_till_end = ::google::protobuf::internal::SlowMapEntryParser;
+          auto parse_map = ::tensorflow::eager::Operation_AttrsEntry_DoNotUse::_ParseMap;
+          ctx->extra_parse_data().payload.clear();
+          ctx->extra_parse_data().parse_map = parse_map;
+          object = &msg->attrs_;
+          if (size > end - ptr) goto len_delim_till_end;
+          auto newend = ptr + size;
+          GOOGLE_PROTOBUF_PARSER_ASSERT(parse_map(ptr, newend, object, ctx));
+          ptr = newend;
+          if (ptr >= end) break;
+        } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 42 && (ptr += 1));
+        break;
+      }
+      // string device = 6;
+      case 6: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 50) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("tensorflow.eager.Operation.device");
+        parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+        ::std::string* str = msg->mutable_device();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool Operation::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.eager.Operation)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // int64 id = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (8 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>(
+                 input, &id_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // string name = 2;
+      case 2: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (18 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_name()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->name().data(), static_cast<int>(this->name().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.eager.Operation.name"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // repeated .tensorflow.eager.RemoteTensorHandle inputs = 3;
+      case 3: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (26 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+                input, add_inputs()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // repeated int64 control_op_ids = 4;
+      case 4: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (34 & 0xFF)) {
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPackedPrimitive<
+                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>(
+                 input, this->mutable_control_op_ids())));
+        } else if (static_cast< ::google::protobuf::uint8>(tag) == (32 & 0xFF)) {
+          DO_((::google::protobuf::internal::WireFormatLite::ReadRepeatedPrimitiveNoInline<
+                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>(
+                 1, 34u, input, this->mutable_control_op_ids())));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // map<string, .tensorflow.AttrValue> attrs = 5;
+      case 5: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (42 & 0xFF)) {
+          Operation_AttrsEntry_DoNotUse::Parser< ::google::protobuf::internal::MapField<
+              Operation_AttrsEntry_DoNotUse,
+              ::std::string, ::tensorflow::AttrValue,
+              ::google::protobuf::internal::WireFormatLite::TYPE_STRING,
+              ::google::protobuf::internal::WireFormatLite::TYPE_MESSAGE,
+              0 >,
+            ::google::protobuf::Map< ::std::string, ::tensorflow::AttrValue > > parser(&attrs_);
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
+              input, &parser));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            parser.key().data(), static_cast<int>(parser.key().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.eager.Operation.AttrsEntry.key"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // string device = 6;
+      case 6: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (50 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_device()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->device().data(), static_cast<int>(this->device().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.eager.Operation.device"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.eager.Operation)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.eager.Operation)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void Operation::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.eager.Operation)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // int64 id = 1;
+  if (this->id() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt64(1, this->id(), output);
+  }
+
+  // string name = 2;
+  if (this->name().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->name().data(), static_cast<int>(this->name().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.eager.Operation.name");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      2, this->name(), output);
+  }
+
+  // repeated .tensorflow.eager.RemoteTensorHandle inputs = 3;
+  for (unsigned int i = 0,
+      n = static_cast<unsigned int>(this->inputs_size()); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      3,
+      this->inputs(static_cast<int>(i)),
+      output);
+  }
+
+  // repeated int64 control_op_ids = 4;
+  if (this->control_op_ids_size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteTag(4, ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED, output);
+    output->WriteVarint32(_control_op_ids_cached_byte_size_.load(
+        std::memory_order_relaxed));
+  }
+  for (int i = 0, n = this->control_op_ids_size(); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt64NoTag(
+      this->control_op_ids(i), output);
+  }
+
+  // map<string, .tensorflow.AttrValue> attrs = 5;
+  if (!this->attrs().empty()) {
+    typedef ::google::protobuf::Map< ::std::string, ::tensorflow::AttrValue >::const_pointer
+        ConstPtr;
+    typedef ConstPtr SortItem;
+    typedef ::google::protobuf::internal::CompareByDerefFirst<SortItem> Less;
+    struct Utf8Check {
+      static void Check(ConstPtr p) {
+        ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+          p->first.data(), static_cast<int>(p->first.length()),
+          ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+          "tensorflow.eager.Operation.AttrsEntry.key");
+      }
+    };
+
+    if (output->IsSerializationDeterministic() &&
+        this->attrs().size() > 1) {
+      ::std::unique_ptr<SortItem[]> items(
+          new SortItem[this->attrs().size()]);
+      typedef ::google::protobuf::Map< ::std::string, ::tensorflow::AttrValue >::size_type size_type;
+      size_type n = 0;
+      for (::google::protobuf::Map< ::std::string, ::tensorflow::AttrValue >::const_iterator
+          it = this->attrs().begin();
+          it != this->attrs().end(); ++it, ++n) {
+        items[static_cast<ptrdiff_t>(n)] = SortItem(&*it);
+      }
+      ::std::sort(&items[0], &items[static_cast<ptrdiff_t>(n)], Less());
+      ::std::unique_ptr<Operation_AttrsEntry_DoNotUse> entry;
+      for (size_type i = 0; i < n; i++) {
+        entry.reset(attrs_.NewEntryWrapper(items[static_cast<ptrdiff_t>(i)]->first, items[static_cast<ptrdiff_t>(i)]->second));
+        ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(5, *entry, output);
+        Utf8Check::Check(&(*items[static_cast<ptrdiff_t>(i)]));
+      }
+    } else {
+      ::std::unique_ptr<Operation_AttrsEntry_DoNotUse> entry;
+      for (::google::protobuf::Map< ::std::string, ::tensorflow::AttrValue >::const_iterator
+          it = this->attrs().begin();
+          it != this->attrs().end(); ++it) {
+        entry.reset(attrs_.NewEntryWrapper(it->first, it->second));
+        ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(5, *entry, output);
+        Utf8Check::Check(&(*it));
+      }
+    }
+  }
+
+  // string device = 6;
+  if (this->device().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->device().data(), static_cast<int>(this->device().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.eager.Operation.device");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      6, this->device(), output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.eager.Operation)
+}
+
+::google::protobuf::uint8* Operation::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.eager.Operation)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // int64 id = 1;
+  if (this->id() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt64ToArray(1, this->id(), target);
+  }
+
+  // string name = 2;
+  if (this->name().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->name().data(), static_cast<int>(this->name().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.eager.Operation.name");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        2, this->name(), target);
+  }
+
+  // repeated .tensorflow.eager.RemoteTensorHandle inputs = 3;
+  for (unsigned int i = 0,
+      n = static_cast<unsigned int>(this->inputs_size()); i < n; i++) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        3, this->inputs(static_cast<int>(i)), deterministic, target);
+  }
+
+  // repeated int64 control_op_ids = 4;
+  if (this->control_op_ids_size() > 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteTagToArray(
+      4,
+      ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED,
+      target);
+    target = ::google::protobuf::io::CodedOutputStream::WriteVarint32ToArray(
+        _control_op_ids_cached_byte_size_.load(std::memory_order_relaxed),
+         target);
+    target = ::google::protobuf::internal::WireFormatLite::
+      WriteInt64NoTagToArray(this->control_op_ids_, target);
+  }
+
+  // map<string, .tensorflow.AttrValue> attrs = 5;
+  if (!this->attrs().empty()) {
+    typedef ::google::protobuf::Map< ::std::string, ::tensorflow::AttrValue >::const_pointer
+        ConstPtr;
+    typedef ConstPtr SortItem;
+    typedef ::google::protobuf::internal::CompareByDerefFirst<SortItem> Less;
+    struct Utf8Check {
+      static void Check(ConstPtr p) {
+        ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+          p->first.data(), static_cast<int>(p->first.length()),
+          ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+          "tensorflow.eager.Operation.AttrsEntry.key");
+      }
+    };
+
+    if (deterministic &&
+        this->attrs().size() > 1) {
+      ::std::unique_ptr<SortItem[]> items(
+          new SortItem[this->attrs().size()]);
+      typedef ::google::protobuf::Map< ::std::string, ::tensorflow::AttrValue >::size_type size_type;
+      size_type n = 0;
+      for (::google::protobuf::Map< ::std::string, ::tensorflow::AttrValue >::const_iterator
+          it = this->attrs().begin();
+          it != this->attrs().end(); ++it, ++n) {
+        items[static_cast<ptrdiff_t>(n)] = SortItem(&*it);
+      }
+      ::std::sort(&items[0], &items[static_cast<ptrdiff_t>(n)], Less());
+      ::std::unique_ptr<Operation_AttrsEntry_DoNotUse> entry;
+      for (size_type i = 0; i < n; i++) {
+        entry.reset(attrs_.NewEntryWrapper(items[static_cast<ptrdiff_t>(i)]->first, items[static_cast<ptrdiff_t>(i)]->second));
+        target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessageNoVirtualToArray(5, *entry, deterministic, target);
+        Utf8Check::Check(&(*items[static_cast<ptrdiff_t>(i)]));
+      }
+    } else {
+      ::std::unique_ptr<Operation_AttrsEntry_DoNotUse> entry;
+      for (::google::protobuf::Map< ::std::string, ::tensorflow::AttrValue >::const_iterator
+          it = this->attrs().begin();
+          it != this->attrs().end(); ++it) {
+        entry.reset(attrs_.NewEntryWrapper(it->first, it->second));
+        target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessageNoVirtualToArray(5, *entry, deterministic, target);
+        Utf8Check::Check(&(*it));
+      }
+    }
+  }
+
+  // string device = 6;
+  if (this->device().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->device().data(), static_cast<int>(this->device().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.eager.Operation.device");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        6, this->device(), target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.eager.Operation)
+  return target;
+}
+
+size_t Operation::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.eager.Operation)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // repeated .tensorflow.eager.RemoteTensorHandle inputs = 3;
+  {
+    unsigned int count = static_cast<unsigned int>(this->inputs_size());
+    total_size += 1UL * count;
+    for (unsigned int i = 0; i < count; i++) {
+      total_size +=
+        ::google::protobuf::internal::WireFormatLite::MessageSize(
+          this->inputs(static_cast<int>(i)));
+    }
+  }
+
+  // repeated int64 control_op_ids = 4;
+  {
+    size_t data_size = ::google::protobuf::internal::WireFormatLite::
+      Int64Size(this->control_op_ids_);
+    if (data_size > 0) {
+      total_size += 1 +
+        ::google::protobuf::internal::WireFormatLite::Int32Size(
+            static_cast<::google::protobuf::int32>(data_size));
+    }
+    int cached_size = ::google::protobuf::internal::ToCachedSize(data_size);
+    _control_op_ids_cached_byte_size_.store(cached_size,
+                                    std::memory_order_relaxed);
+    total_size += data_size;
+  }
+
+  // map<string, .tensorflow.AttrValue> attrs = 5;
+  total_size += 1 *
+      ::google::protobuf::internal::FromIntSize(this->attrs_size());
+  {
+    ::std::unique_ptr<Operation_AttrsEntry_DoNotUse> entry;
+    for (::google::protobuf::Map< ::std::string, ::tensorflow::AttrValue >::const_iterator
+        it = this->attrs().begin();
+        it != this->attrs().end(); ++it) {
+      entry.reset(attrs_.NewEntryWrapper(it->first, it->second));
+      total_size += ::google::protobuf::internal::WireFormatLite::
+          MessageSizeNoVirtual(*entry);
+    }
+  }
+
+  // string name = 2;
+  if (this->name().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->name());
+  }
+
+  // string device = 6;
+  if (this->device().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->device());
+  }
+
+  // int64 id = 1;
+  if (this->id() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::Int64Size(
+        this->id());
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void Operation::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.eager.Operation)
+  GOOGLE_DCHECK_NE(&from, this);
+  const Operation* source =
+      ::google::protobuf::DynamicCastToGenerated<Operation>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.eager.Operation)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.eager.Operation)
+    MergeFrom(*source);
+  }
+}
+
+void Operation::MergeFrom(const Operation& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.eager.Operation)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  inputs_.MergeFrom(from.inputs_);
+  control_op_ids_.MergeFrom(from.control_op_ids_);
+  attrs_.MergeFrom(from.attrs_);
+  if (from.name().size() > 0) {
+
+    name_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.name_);
+  }
+  if (from.device().size() > 0) {
+
+    device_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.device_);
+  }
+  if (from.id() != 0) {
+    set_id(from.id());
+  }
+}
+
+void Operation::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.eager.Operation)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void Operation::CopyFrom(const Operation& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.eager.Operation)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool Operation::IsInitialized() const {
+  return true;
+}
+
+void Operation::Swap(Operation* other) {
+  if (other == this) return;
+  InternalSwap(other);
+}
+void Operation::InternalSwap(Operation* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  CastToBase(&inputs_)->InternalSwap(CastToBase(&other->inputs_));
+  control_op_ids_.InternalSwap(&other->control_op_ids_);
+  attrs_.Swap(&other->attrs_);
+  name_.Swap(&other->name_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+  device_.Swap(&other->device_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+  swap(id_, other->id_);
+}
+
+::google::protobuf::Metadata Operation::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2feager_5fservice_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fprotobuf_2feager_5fservice_2eproto[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+void QueueItem::InitAsDefaultInstance() {
+  ::tensorflow::eager::_QueueItem_default_instance_.handle_to_decref_ = const_cast< ::tensorflow::eager::RemoteTensorHandle*>(
+      ::tensorflow::eager::RemoteTensorHandle::internal_default_instance());
+  ::tensorflow::eager::_QueueItem_default_instance_.operation_ = const_cast< ::tensorflow::eager::Operation*>(
+      ::tensorflow::eager::Operation::internal_default_instance());
+}
+class QueueItem::HasBitSetters {
+ public:
+  static const ::tensorflow::eager::RemoteTensorHandle& handle_to_decref(const QueueItem* msg);
+  static const ::tensorflow::eager::Operation& operation(const QueueItem* msg);
+};
+
+const ::tensorflow::eager::RemoteTensorHandle&
+QueueItem::HasBitSetters::handle_to_decref(const QueueItem* msg) {
+  return *msg->item_.handle_to_decref_;
+}
+const ::tensorflow::eager::Operation&
+QueueItem::HasBitSetters::operation(const QueueItem* msg) {
+  return *msg->item_.operation_;
+}
+void QueueItem::set_allocated_handle_to_decref(::tensorflow::eager::RemoteTensorHandle* handle_to_decref) {
+  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
+  clear_item();
+  if (handle_to_decref) {
+    ::google::protobuf::Arena* submessage_arena = NULL;
+    if (message_arena != submessage_arena) {
+      handle_to_decref = ::google::protobuf::internal::GetOwnedMessage(
+          message_arena, handle_to_decref, submessage_arena);
+    }
+    set_has_handle_to_decref();
+    item_.handle_to_decref_ = handle_to_decref;
+  }
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.eager.QueueItem.handle_to_decref)
+}
+void QueueItem::set_allocated_operation(::tensorflow::eager::Operation* operation) {
+  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
+  clear_item();
+  if (operation) {
+    ::google::protobuf::Arena* submessage_arena = NULL;
+    if (message_arena != submessage_arena) {
+      operation = ::google::protobuf::internal::GetOwnedMessage(
+          message_arena, operation, submessage_arena);
+    }
+    set_has_operation();
+    item_.operation_ = operation;
+  }
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.eager.QueueItem.operation)
+}
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int QueueItem::kHandleToDecrefFieldNumber;
+const int QueueItem::kOperationFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+QueueItem::QueueItem()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.eager.QueueItem)
+}
+QueueItem::QueueItem(const QueueItem& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  clear_has_item();
+  switch (from.item_case()) {
+    case kHandleToDecref: {
+      mutable_handle_to_decref()->::tensorflow::eager::RemoteTensorHandle::MergeFrom(from.handle_to_decref());
+      break;
+    }
+    case kOperation: {
+      mutable_operation()->::tensorflow::eager::Operation::MergeFrom(from.operation());
+      break;
+    }
+    case ITEM_NOT_SET: {
+      break;
+    }
+  }
+  // @@protoc_insertion_point(copy_constructor:tensorflow.eager.QueueItem)
+}
+
+void QueueItem::SharedCtor() {
+  ::google::protobuf::internal::InitSCC(
+      &scc_info_QueueItem_tensorflow_2fcore_2fprotobuf_2feager_5fservice_2eproto.base);
+  clear_has_item();
+}
+
+QueueItem::~QueueItem() {
+  // @@protoc_insertion_point(destructor:tensorflow.eager.QueueItem)
+  SharedDtor();
+}
+
+void QueueItem::SharedDtor() {
+  if (has_item()) {
+    clear_item();
+  }
+}
+
+void QueueItem::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const QueueItem& QueueItem::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_QueueItem_tensorflow_2fcore_2fprotobuf_2feager_5fservice_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void QueueItem::clear_item() {
+// @@protoc_insertion_point(one_of_clear_start:tensorflow.eager.QueueItem)
+  switch (item_case()) {
+    case kHandleToDecref: {
+      delete item_.handle_to_decref_;
+      break;
+    }
+    case kOperation: {
+      delete item_.operation_;
+      break;
+    }
+    case ITEM_NOT_SET: {
+      break;
+    }
+  }
+  _oneof_case_[0] = ITEM_NOT_SET;
+}
+
+
+void QueueItem::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.eager.QueueItem)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  clear_item();
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* QueueItem::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<QueueItem*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // .tensorflow.eager.RemoteTensorHandle handle_to_decref = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 10) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        parser_till_end = ::tensorflow::eager::RemoteTensorHandle::_InternalParse;
+        object = msg->mutable_handle_to_decref();
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                       ptr, newend);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+        ptr = newend;
+        break;
+      }
+      // .tensorflow.eager.Operation operation = 2;
+      case 2: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 18) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        parser_till_end = ::tensorflow::eager::Operation::_InternalParse;
+        object = msg->mutable_operation();
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                       ptr, newend);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+        ptr = newend;
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool QueueItem::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.eager.QueueItem)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // .tensorflow.eager.RemoteTensorHandle handle_to_decref = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (10 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+               input, mutable_handle_to_decref()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // .tensorflow.eager.Operation operation = 2;
+      case 2: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (18 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+               input, mutable_operation()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.eager.QueueItem)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.eager.QueueItem)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void QueueItem::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.eager.QueueItem)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // .tensorflow.eager.RemoteTensorHandle handle_to_decref = 1;
+  if (has_handle_to_decref()) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      1, HasBitSetters::handle_to_decref(this), output);
+  }
+
+  // .tensorflow.eager.Operation operation = 2;
+  if (has_operation()) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      2, HasBitSetters::operation(this), output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.eager.QueueItem)
+}
+
+::google::protobuf::uint8* QueueItem::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.eager.QueueItem)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // .tensorflow.eager.RemoteTensorHandle handle_to_decref = 1;
+  if (has_handle_to_decref()) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        1, HasBitSetters::handle_to_decref(this), deterministic, target);
+  }
+
+  // .tensorflow.eager.Operation operation = 2;
+  if (has_operation()) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        2, HasBitSetters::operation(this), deterministic, target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.eager.QueueItem)
+  return target;
+}
+
+size_t QueueItem::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.eager.QueueItem)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  switch (item_case()) {
+    // .tensorflow.eager.RemoteTensorHandle handle_to_decref = 1;
+    case kHandleToDecref: {
+      total_size += 1 +
+        ::google::protobuf::internal::WireFormatLite::MessageSize(
+          *item_.handle_to_decref_);
+      break;
+    }
+    // .tensorflow.eager.Operation operation = 2;
+    case kOperation: {
+      total_size += 1 +
+        ::google::protobuf::internal::WireFormatLite::MessageSize(
+          *item_.operation_);
+      break;
+    }
+    case ITEM_NOT_SET: {
+      break;
+    }
+  }
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void QueueItem::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.eager.QueueItem)
+  GOOGLE_DCHECK_NE(&from, this);
+  const QueueItem* source =
+      ::google::protobuf::DynamicCastToGenerated<QueueItem>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.eager.QueueItem)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.eager.QueueItem)
+    MergeFrom(*source);
+  }
+}
+
+void QueueItem::MergeFrom(const QueueItem& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.eager.QueueItem)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  switch (from.item_case()) {
+    case kHandleToDecref: {
+      mutable_handle_to_decref()->::tensorflow::eager::RemoteTensorHandle::MergeFrom(from.handle_to_decref());
+      break;
+    }
+    case kOperation: {
+      mutable_operation()->::tensorflow::eager::Operation::MergeFrom(from.operation());
+      break;
+    }
+    case ITEM_NOT_SET: {
+      break;
+    }
+  }
+}
+
+void QueueItem::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.eager.QueueItem)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void QueueItem::CopyFrom(const QueueItem& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.eager.QueueItem)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool QueueItem::IsInitialized() const {
+  return true;
+}
+
+void QueueItem::Swap(QueueItem* other) {
+  if (other == this) return;
+  InternalSwap(other);
+}
+void QueueItem::InternalSwap(QueueItem* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  swap(item_, other->item_);
+  swap(_oneof_case_[0], other->_oneof_case_[0]);
+}
+
+::google::protobuf::Metadata QueueItem::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2feager_5fservice_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fprotobuf_2feager_5fservice_2eproto[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+void CreateContextRequest::InitAsDefaultInstance() {
+  ::tensorflow::eager::_CreateContextRequest_default_instance_._instance.get_mutable()->server_def_ = const_cast< ::tensorflow::ServerDef*>(
+      ::tensorflow::ServerDef::internal_default_instance());
+  ::tensorflow::eager::_CreateContextRequest_default_instance_._instance.get_mutable()->version_def_ = const_cast< ::tensorflow::VersionDef*>(
+      ::tensorflow::VersionDef::internal_default_instance());
+}
+class CreateContextRequest::HasBitSetters {
+ public:
+  static const ::tensorflow::ServerDef& server_def(const CreateContextRequest* msg);
+  static const ::tensorflow::VersionDef& version_def(const CreateContextRequest* msg);
+};
+
+const ::tensorflow::ServerDef&
+CreateContextRequest::HasBitSetters::server_def(const CreateContextRequest* msg) {
+  return *msg->server_def_;
+}
+const ::tensorflow::VersionDef&
+CreateContextRequest::HasBitSetters::version_def(const CreateContextRequest* msg) {
+  return *msg->version_def_;
+}
+void CreateContextRequest::clear_server_def() {
+  if (GetArenaNoVirtual() == NULL && server_def_ != NULL) {
+    delete server_def_;
+  }
+  server_def_ = NULL;
+}
+void CreateContextRequest::clear_version_def() {
+  if (GetArenaNoVirtual() == NULL && version_def_ != NULL) {
+    delete version_def_;
+  }
+  version_def_ = NULL;
+}
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int CreateContextRequest::kServerDefFieldNumber;
+const int CreateContextRequest::kAsyncFieldNumber;
+const int CreateContextRequest::kKeepAliveSecsFieldNumber;
+const int CreateContextRequest::kVersionDefFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+CreateContextRequest::CreateContextRequest()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.eager.CreateContextRequest)
+}
+CreateContextRequest::CreateContextRequest(const CreateContextRequest& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  if (from.has_server_def()) {
+    server_def_ = new ::tensorflow::ServerDef(*from.server_def_);
+  } else {
+    server_def_ = NULL;
+  }
+  if (from.has_version_def()) {
+    version_def_ = new ::tensorflow::VersionDef(*from.version_def_);
+  } else {
+    version_def_ = NULL;
+  }
+  ::memcpy(&keep_alive_secs_, &from.keep_alive_secs_,
+    static_cast<size_t>(reinterpret_cast<char*>(&async_) -
+    reinterpret_cast<char*>(&keep_alive_secs_)) + sizeof(async_));
+  // @@protoc_insertion_point(copy_constructor:tensorflow.eager.CreateContextRequest)
+}
+
+void CreateContextRequest::SharedCtor() {
+  ::google::protobuf::internal::InitSCC(
+      &scc_info_CreateContextRequest_tensorflow_2fcore_2fprotobuf_2feager_5fservice_2eproto.base);
+  ::memset(&server_def_, 0, static_cast<size_t>(
+      reinterpret_cast<char*>(&async_) -
+      reinterpret_cast<char*>(&server_def_)) + sizeof(async_));
+}
+
+CreateContextRequest::~CreateContextRequest() {
+  // @@protoc_insertion_point(destructor:tensorflow.eager.CreateContextRequest)
+  SharedDtor();
+}
+
+void CreateContextRequest::SharedDtor() {
+  if (this != internal_default_instance()) delete server_def_;
+  if (this != internal_default_instance()) delete version_def_;
+}
+
+void CreateContextRequest::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const CreateContextRequest& CreateContextRequest::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_CreateContextRequest_tensorflow_2fcore_2fprotobuf_2feager_5fservice_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void CreateContextRequest::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.eager.CreateContextRequest)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  if (GetArenaNoVirtual() == NULL && server_def_ != NULL) {
+    delete server_def_;
+  }
+  server_def_ = NULL;
+  if (GetArenaNoVirtual() == NULL && version_def_ != NULL) {
+    delete version_def_;
+  }
+  version_def_ = NULL;
+  ::memset(&keep_alive_secs_, 0, static_cast<size_t>(
+      reinterpret_cast<char*>(&async_) -
+      reinterpret_cast<char*>(&keep_alive_secs_)) + sizeof(async_));
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* CreateContextRequest::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<CreateContextRequest*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // .tensorflow.ServerDef server_def = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 10) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        parser_till_end = ::tensorflow::ServerDef::_InternalParse;
+        object = msg->mutable_server_def();
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                       ptr, newend);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+        ptr = newend;
+        break;
+      }
+      // bool async = 2;
+      case 2: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 16) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        bool value = val;
+        msg->set_async(value);
+        break;
+      }
+      // int64 keep_alive_secs = 3;
+      case 3: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 24) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::google::protobuf::int64 value = val;
+        msg->set_keep_alive_secs(value);
+        break;
+      }
+      // .tensorflow.VersionDef version_def = 4;
+      case 4: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 34) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        parser_till_end = ::tensorflow::VersionDef::_InternalParse;
+        object = msg->mutable_version_def();
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                       ptr, newend);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+        ptr = newend;
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool CreateContextRequest::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.eager.CreateContextRequest)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // .tensorflow.ServerDef server_def = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (10 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+               input, mutable_server_def()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // bool async = 2;
+      case 2: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (16 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
+                 input, &async_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // int64 keep_alive_secs = 3;
+      case 3: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (24 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>(
+                 input, &keep_alive_secs_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // .tensorflow.VersionDef version_def = 4;
+      case 4: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (34 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+               input, mutable_version_def()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.eager.CreateContextRequest)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.eager.CreateContextRequest)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void CreateContextRequest::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.eager.CreateContextRequest)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // .tensorflow.ServerDef server_def = 1;
+  if (this->has_server_def()) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      1, HasBitSetters::server_def(this), output);
+  }
+
+  // bool async = 2;
+  if (this->async() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteBool(2, this->async(), output);
+  }
+
+  // int64 keep_alive_secs = 3;
+  if (this->keep_alive_secs() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt64(3, this->keep_alive_secs(), output);
+  }
+
+  // .tensorflow.VersionDef version_def = 4;
+  if (this->has_version_def()) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      4, HasBitSetters::version_def(this), output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.eager.CreateContextRequest)
+}
+
+::google::protobuf::uint8* CreateContextRequest::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.eager.CreateContextRequest)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // .tensorflow.ServerDef server_def = 1;
+  if (this->has_server_def()) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        1, HasBitSetters::server_def(this), deterministic, target);
+  }
+
+  // bool async = 2;
+  if (this->async() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(2, this->async(), target);
+  }
+
+  // int64 keep_alive_secs = 3;
+  if (this->keep_alive_secs() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt64ToArray(3, this->keep_alive_secs(), target);
+  }
+
+  // .tensorflow.VersionDef version_def = 4;
+  if (this->has_version_def()) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        4, HasBitSetters::version_def(this), deterministic, target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.eager.CreateContextRequest)
+  return target;
+}
+
+size_t CreateContextRequest::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.eager.CreateContextRequest)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // .tensorflow.ServerDef server_def = 1;
+  if (this->has_server_def()) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::MessageSize(
+        *server_def_);
+  }
+
+  // .tensorflow.VersionDef version_def = 4;
+  if (this->has_version_def()) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::MessageSize(
+        *version_def_);
+  }
+
+  // int64 keep_alive_secs = 3;
+  if (this->keep_alive_secs() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::Int64Size(
+        this->keep_alive_secs());
+  }
+
+  // bool async = 2;
+  if (this->async() != 0) {
+    total_size += 1 + 1;
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void CreateContextRequest::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.eager.CreateContextRequest)
+  GOOGLE_DCHECK_NE(&from, this);
+  const CreateContextRequest* source =
+      ::google::protobuf::DynamicCastToGenerated<CreateContextRequest>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.eager.CreateContextRequest)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.eager.CreateContextRequest)
+    MergeFrom(*source);
+  }
+}
+
+void CreateContextRequest::MergeFrom(const CreateContextRequest& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.eager.CreateContextRequest)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  if (from.has_server_def()) {
+    mutable_server_def()->::tensorflow::ServerDef::MergeFrom(from.server_def());
+  }
+  if (from.has_version_def()) {
+    mutable_version_def()->::tensorflow::VersionDef::MergeFrom(from.version_def());
+  }
+  if (from.keep_alive_secs() != 0) {
+    set_keep_alive_secs(from.keep_alive_secs());
+  }
+  if (from.async() != 0) {
+    set_async(from.async());
+  }
+}
+
+void CreateContextRequest::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.eager.CreateContextRequest)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void CreateContextRequest::CopyFrom(const CreateContextRequest& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.eager.CreateContextRequest)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool CreateContextRequest::IsInitialized() const {
+  return true;
+}
+
+void CreateContextRequest::Swap(CreateContextRequest* other) {
+  if (other == this) return;
+  InternalSwap(other);
+}
+void CreateContextRequest::InternalSwap(CreateContextRequest* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  swap(server_def_, other->server_def_);
+  swap(version_def_, other->version_def_);
+  swap(keep_alive_secs_, other->keep_alive_secs_);
+  swap(async_, other->async_);
+}
+
+::google::protobuf::Metadata CreateContextRequest::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2feager_5fservice_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fprotobuf_2feager_5fservice_2eproto[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+void CreateContextResponse::InitAsDefaultInstance() {
+}
+class CreateContextResponse::HasBitSetters {
+ public:
+};
+
+void CreateContextResponse::clear_device_attributes() {
+  device_attributes_.Clear();
+}
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int CreateContextResponse::kContextIdFieldNumber;
+const int CreateContextResponse::kDeviceAttributesFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+CreateContextResponse::CreateContextResponse()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.eager.CreateContextResponse)
+}
+CreateContextResponse::CreateContextResponse(const CreateContextResponse& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL),
+      device_attributes_(from.device_attributes_) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  context_id_ = from.context_id_;
+  // @@protoc_insertion_point(copy_constructor:tensorflow.eager.CreateContextResponse)
+}
+
+void CreateContextResponse::SharedCtor() {
+  ::google::protobuf::internal::InitSCC(
+      &scc_info_CreateContextResponse_tensorflow_2fcore_2fprotobuf_2feager_5fservice_2eproto.base);
+  context_id_ = PROTOBUF_ULONGLONG(0);
+}
+
+CreateContextResponse::~CreateContextResponse() {
+  // @@protoc_insertion_point(destructor:tensorflow.eager.CreateContextResponse)
+  SharedDtor();
+}
+
+void CreateContextResponse::SharedDtor() {
+}
+
+void CreateContextResponse::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const CreateContextResponse& CreateContextResponse::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_CreateContextResponse_tensorflow_2fcore_2fprotobuf_2feager_5fservice_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void CreateContextResponse::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.eager.CreateContextResponse)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  device_attributes_.Clear();
+  context_id_ = PROTOBUF_ULONGLONG(0);
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* CreateContextResponse::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<CreateContextResponse*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // fixed64 context_id = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 9) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ::std::memcpy(&val, ptr, 8);
+        ptr += 8;
+        msg->set_context_id(val);
+        break;
+      }
+      // repeated .tensorflow.DeviceAttributes device_attributes = 2;
+      case 2: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 18) goto handle_unusual;
+        do {
+          ptr = Varint::Parse32Inline(ptr, &size);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          parser_till_end = ::tensorflow::DeviceAttributes::_InternalParse;
+          object = msg->add_device_attributes();
+          if (size > end - ptr) goto len_delim_till_end;
+          auto newend = ptr + size;
+          bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                         ptr, newend);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          ptr = newend;
+          if (ptr >= end) break;
+        } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 18 && (ptr += 1));
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool CreateContextResponse::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.eager.CreateContextResponse)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // fixed64 context_id = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (9 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_FIXED64>(
+                 input, &context_id_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // repeated .tensorflow.DeviceAttributes device_attributes = 2;
+      case 2: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (18 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+                input, add_device_attributes()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.eager.CreateContextResponse)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.eager.CreateContextResponse)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void CreateContextResponse::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.eager.CreateContextResponse)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // fixed64 context_id = 1;
+  if (this->context_id() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteFixed64(1, this->context_id(), output);
+  }
+
+  // repeated .tensorflow.DeviceAttributes device_attributes = 2;
+  for (unsigned int i = 0,
+      n = static_cast<unsigned int>(this->device_attributes_size()); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      2,
+      this->device_attributes(static_cast<int>(i)),
+      output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.eager.CreateContextResponse)
+}
+
+::google::protobuf::uint8* CreateContextResponse::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.eager.CreateContextResponse)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // fixed64 context_id = 1;
+  if (this->context_id() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteFixed64ToArray(1, this->context_id(), target);
+  }
+
+  // repeated .tensorflow.DeviceAttributes device_attributes = 2;
+  for (unsigned int i = 0,
+      n = static_cast<unsigned int>(this->device_attributes_size()); i < n; i++) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        2, this->device_attributes(static_cast<int>(i)), deterministic, target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.eager.CreateContextResponse)
+  return target;
+}
+
+size_t CreateContextResponse::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.eager.CreateContextResponse)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // repeated .tensorflow.DeviceAttributes device_attributes = 2;
+  {
+    unsigned int count = static_cast<unsigned int>(this->device_attributes_size());
+    total_size += 1UL * count;
+    for (unsigned int i = 0; i < count; i++) {
+      total_size +=
+        ::google::protobuf::internal::WireFormatLite::MessageSize(
+          this->device_attributes(static_cast<int>(i)));
+    }
+  }
+
+  // fixed64 context_id = 1;
+  if (this->context_id() != 0) {
+    total_size += 1 + 8;
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void CreateContextResponse::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.eager.CreateContextResponse)
+  GOOGLE_DCHECK_NE(&from, this);
+  const CreateContextResponse* source =
+      ::google::protobuf::DynamicCastToGenerated<CreateContextResponse>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.eager.CreateContextResponse)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.eager.CreateContextResponse)
+    MergeFrom(*source);
+  }
+}
+
+void CreateContextResponse::MergeFrom(const CreateContextResponse& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.eager.CreateContextResponse)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  device_attributes_.MergeFrom(from.device_attributes_);
+  if (from.context_id() != 0) {
+    set_context_id(from.context_id());
+  }
+}
+
+void CreateContextResponse::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.eager.CreateContextResponse)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void CreateContextResponse::CopyFrom(const CreateContextResponse& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.eager.CreateContextResponse)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool CreateContextResponse::IsInitialized() const {
+  return true;
+}
+
+void CreateContextResponse::Swap(CreateContextResponse* other) {
+  if (other == this) return;
+  InternalSwap(other);
+}
+void CreateContextResponse::InternalSwap(CreateContextResponse* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  CastToBase(&device_attributes_)->InternalSwap(CastToBase(&other->device_attributes_));
+  swap(context_id_, other->context_id_);
+}
+
+::google::protobuf::Metadata CreateContextResponse::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2feager_5fservice_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fprotobuf_2feager_5fservice_2eproto[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+void EnqueueRequest::InitAsDefaultInstance() {
+}
+class EnqueueRequest::HasBitSetters {
+ public:
+};
+
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int EnqueueRequest::kContextIdFieldNumber;
+const int EnqueueRequest::kQueueFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+EnqueueRequest::EnqueueRequest()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.eager.EnqueueRequest)
+}
+EnqueueRequest::EnqueueRequest(const EnqueueRequest& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL),
+      queue_(from.queue_) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  context_id_ = from.context_id_;
+  // @@protoc_insertion_point(copy_constructor:tensorflow.eager.EnqueueRequest)
+}
+
+void EnqueueRequest::SharedCtor() {
+  ::google::protobuf::internal::InitSCC(
+      &scc_info_EnqueueRequest_tensorflow_2fcore_2fprotobuf_2feager_5fservice_2eproto.base);
+  context_id_ = PROTOBUF_ULONGLONG(0);
+}
+
+EnqueueRequest::~EnqueueRequest() {
+  // @@protoc_insertion_point(destructor:tensorflow.eager.EnqueueRequest)
+  SharedDtor();
+}
+
+void EnqueueRequest::SharedDtor() {
+}
+
+void EnqueueRequest::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const EnqueueRequest& EnqueueRequest::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_EnqueueRequest_tensorflow_2fcore_2fprotobuf_2feager_5fservice_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void EnqueueRequest::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.eager.EnqueueRequest)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  queue_.Clear();
+  context_id_ = PROTOBUF_ULONGLONG(0);
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* EnqueueRequest::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<EnqueueRequest*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // fixed64 context_id = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 9) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ::std::memcpy(&val, ptr, 8);
+        ptr += 8;
+        msg->set_context_id(val);
+        break;
+      }
+      // repeated .tensorflow.eager.QueueItem queue = 3;
+      case 3: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 26) goto handle_unusual;
+        do {
+          ptr = Varint::Parse32Inline(ptr, &size);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          parser_till_end = ::tensorflow::eager::QueueItem::_InternalParse;
+          object = msg->add_queue();
+          if (size > end - ptr) goto len_delim_till_end;
+          auto newend = ptr + size;
+          bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                         ptr, newend);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          ptr = newend;
+          if (ptr >= end) break;
+        } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 26 && (ptr += 1));
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool EnqueueRequest::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.eager.EnqueueRequest)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // fixed64 context_id = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (9 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_FIXED64>(
+                 input, &context_id_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // repeated .tensorflow.eager.QueueItem queue = 3;
+      case 3: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (26 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+                input, add_queue()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.eager.EnqueueRequest)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.eager.EnqueueRequest)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void EnqueueRequest::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.eager.EnqueueRequest)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // fixed64 context_id = 1;
+  if (this->context_id() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteFixed64(1, this->context_id(), output);
+  }
+
+  // repeated .tensorflow.eager.QueueItem queue = 3;
+  for (unsigned int i = 0,
+      n = static_cast<unsigned int>(this->queue_size()); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      3,
+      this->queue(static_cast<int>(i)),
+      output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.eager.EnqueueRequest)
+}
+
+::google::protobuf::uint8* EnqueueRequest::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.eager.EnqueueRequest)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // fixed64 context_id = 1;
+  if (this->context_id() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteFixed64ToArray(1, this->context_id(), target);
+  }
+
+  // repeated .tensorflow.eager.QueueItem queue = 3;
+  for (unsigned int i = 0,
+      n = static_cast<unsigned int>(this->queue_size()); i < n; i++) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        3, this->queue(static_cast<int>(i)), deterministic, target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.eager.EnqueueRequest)
+  return target;
+}
+
+size_t EnqueueRequest::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.eager.EnqueueRequest)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // repeated .tensorflow.eager.QueueItem queue = 3;
+  {
+    unsigned int count = static_cast<unsigned int>(this->queue_size());
+    total_size += 1UL * count;
+    for (unsigned int i = 0; i < count; i++) {
+      total_size +=
+        ::google::protobuf::internal::WireFormatLite::MessageSize(
+          this->queue(static_cast<int>(i)));
+    }
+  }
+
+  // fixed64 context_id = 1;
+  if (this->context_id() != 0) {
+    total_size += 1 + 8;
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void EnqueueRequest::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.eager.EnqueueRequest)
+  GOOGLE_DCHECK_NE(&from, this);
+  const EnqueueRequest* source =
+      ::google::protobuf::DynamicCastToGenerated<EnqueueRequest>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.eager.EnqueueRequest)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.eager.EnqueueRequest)
+    MergeFrom(*source);
+  }
+}
+
+void EnqueueRequest::MergeFrom(const EnqueueRequest& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.eager.EnqueueRequest)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  queue_.MergeFrom(from.queue_);
+  if (from.context_id() != 0) {
+    set_context_id(from.context_id());
+  }
+}
+
+void EnqueueRequest::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.eager.EnqueueRequest)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void EnqueueRequest::CopyFrom(const EnqueueRequest& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.eager.EnqueueRequest)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool EnqueueRequest::IsInitialized() const {
+  return true;
+}
+
+void EnqueueRequest::Swap(EnqueueRequest* other) {
+  if (other == this) return;
+  InternalSwap(other);
+}
+void EnqueueRequest::InternalSwap(EnqueueRequest* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  CastToBase(&queue_)->InternalSwap(CastToBase(&other->queue_));
+  swap(context_id_, other->context_id_);
+}
+
+::google::protobuf::Metadata EnqueueRequest::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2feager_5fservice_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fprotobuf_2feager_5fservice_2eproto[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+void EnqueueResponse::InitAsDefaultInstance() {
+}
+class EnqueueResponse::HasBitSetters {
+ public:
+};
+
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+EnqueueResponse::EnqueueResponse()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.eager.EnqueueResponse)
+}
+EnqueueResponse::EnqueueResponse(const EnqueueResponse& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  // @@protoc_insertion_point(copy_constructor:tensorflow.eager.EnqueueResponse)
+}
+
+void EnqueueResponse::SharedCtor() {
+}
+
+EnqueueResponse::~EnqueueResponse() {
+  // @@protoc_insertion_point(destructor:tensorflow.eager.EnqueueResponse)
+  SharedDtor();
+}
+
+void EnqueueResponse::SharedDtor() {
+}
+
+void EnqueueResponse::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const EnqueueResponse& EnqueueResponse::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_EnqueueResponse_tensorflow_2fcore_2fprotobuf_2feager_5fservice_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void EnqueueResponse::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.eager.EnqueueResponse)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* EnqueueResponse::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<EnqueueResponse*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool EnqueueResponse::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.eager.EnqueueResponse)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+  handle_unusual:
+    if (tag == 0) {
+      goto success;
+    }
+    DO_(::google::protobuf::internal::WireFormat::SkipField(
+          input, tag, _internal_metadata_.mutable_unknown_fields()));
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.eager.EnqueueResponse)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.eager.EnqueueResponse)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void EnqueueResponse::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.eager.EnqueueResponse)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.eager.EnqueueResponse)
+}
+
+::google::protobuf::uint8* EnqueueResponse::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.eager.EnqueueResponse)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.eager.EnqueueResponse)
+  return target;
+}
+
+size_t EnqueueResponse::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.eager.EnqueueResponse)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void EnqueueResponse::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.eager.EnqueueResponse)
+  GOOGLE_DCHECK_NE(&from, this);
+  const EnqueueResponse* source =
+      ::google::protobuf::DynamicCastToGenerated<EnqueueResponse>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.eager.EnqueueResponse)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.eager.EnqueueResponse)
+    MergeFrom(*source);
+  }
+}
+
+void EnqueueResponse::MergeFrom(const EnqueueResponse& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.eager.EnqueueResponse)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+}
+
+void EnqueueResponse::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.eager.EnqueueResponse)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void EnqueueResponse::CopyFrom(const EnqueueResponse& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.eager.EnqueueResponse)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool EnqueueResponse::IsInitialized() const {
+  return true;
+}
+
+void EnqueueResponse::Swap(EnqueueResponse* other) {
+  if (other == this) return;
+  InternalSwap(other);
+}
+void EnqueueResponse::InternalSwap(EnqueueResponse* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+}
+
+::google::protobuf::Metadata EnqueueResponse::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2feager_5fservice_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fprotobuf_2feager_5fservice_2eproto[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+void WaitQueueDoneRequest::InitAsDefaultInstance() {
+}
+class WaitQueueDoneRequest::HasBitSetters {
+ public:
+};
+
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int WaitQueueDoneRequest::kContextIdFieldNumber;
+const int WaitQueueDoneRequest::kOpIdFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+WaitQueueDoneRequest::WaitQueueDoneRequest()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.eager.WaitQueueDoneRequest)
+}
+WaitQueueDoneRequest::WaitQueueDoneRequest(const WaitQueueDoneRequest& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL),
+      op_id_(from.op_id_) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  context_id_ = from.context_id_;
+  // @@protoc_insertion_point(copy_constructor:tensorflow.eager.WaitQueueDoneRequest)
+}
+
+void WaitQueueDoneRequest::SharedCtor() {
+  context_id_ = PROTOBUF_ULONGLONG(0);
+}
+
+WaitQueueDoneRequest::~WaitQueueDoneRequest() {
+  // @@protoc_insertion_point(destructor:tensorflow.eager.WaitQueueDoneRequest)
+  SharedDtor();
+}
+
+void WaitQueueDoneRequest::SharedDtor() {
+}
+
+void WaitQueueDoneRequest::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const WaitQueueDoneRequest& WaitQueueDoneRequest::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_WaitQueueDoneRequest_tensorflow_2fcore_2fprotobuf_2feager_5fservice_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void WaitQueueDoneRequest::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.eager.WaitQueueDoneRequest)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  op_id_.Clear();
+  context_id_ = PROTOBUF_ULONGLONG(0);
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* WaitQueueDoneRequest::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<WaitQueueDoneRequest*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // fixed64 context_id = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 9) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ::std::memcpy(&val, ptr, 8);
+        ptr += 8;
+        msg->set_context_id(val);
+        break;
+      }
+      // repeated int64 op_id = 2;
+      case 2: {
+        if (static_cast<::google::protobuf::uint8>(tag) == 18) {
+          ptr = Varint::Parse32Inline(ptr, &size);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          parser_till_end = ::google::protobuf::internal::PackedInt64Parser;
+          object = msg->mutable_op_id();
+          if (size > end - ptr) goto len_delim_till_end;
+          auto newend = ptr + size;
+          if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+          break;
+        } else if (static_cast<::google::protobuf::uint8>(tag) != 16) goto handle_unusual;
+        do {
+          ::google::protobuf::uint64 val;
+          ptr = Varint::Parse64(ptr, &val);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          ::google::protobuf::int64 value = val;
+          msg->add_op_id(value);
+          if (ptr >= end) break;
+        } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 16 && (ptr += 1));
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool WaitQueueDoneRequest::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.eager.WaitQueueDoneRequest)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // fixed64 context_id = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (9 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_FIXED64>(
+                 input, &context_id_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // repeated int64 op_id = 2;
+      case 2: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (18 & 0xFF)) {
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPackedPrimitive<
+                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>(
+                 input, this->mutable_op_id())));
+        } else if (static_cast< ::google::protobuf::uint8>(tag) == (16 & 0xFF)) {
+          DO_((::google::protobuf::internal::WireFormatLite::ReadRepeatedPrimitiveNoInline<
+                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>(
+                 1, 18u, input, this->mutable_op_id())));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.eager.WaitQueueDoneRequest)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.eager.WaitQueueDoneRequest)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void WaitQueueDoneRequest::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.eager.WaitQueueDoneRequest)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // fixed64 context_id = 1;
+  if (this->context_id() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteFixed64(1, this->context_id(), output);
+  }
+
+  // repeated int64 op_id = 2;
+  if (this->op_id_size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteTag(2, ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED, output);
+    output->WriteVarint32(_op_id_cached_byte_size_.load(
+        std::memory_order_relaxed));
+  }
+  for (int i = 0, n = this->op_id_size(); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt64NoTag(
+      this->op_id(i), output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.eager.WaitQueueDoneRequest)
+}
+
+::google::protobuf::uint8* WaitQueueDoneRequest::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.eager.WaitQueueDoneRequest)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // fixed64 context_id = 1;
+  if (this->context_id() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteFixed64ToArray(1, this->context_id(), target);
+  }
+
+  // repeated int64 op_id = 2;
+  if (this->op_id_size() > 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteTagToArray(
+      2,
+      ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED,
+      target);
+    target = ::google::protobuf::io::CodedOutputStream::WriteVarint32ToArray(
+        _op_id_cached_byte_size_.load(std::memory_order_relaxed),
+         target);
+    target = ::google::protobuf::internal::WireFormatLite::
+      WriteInt64NoTagToArray(this->op_id_, target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.eager.WaitQueueDoneRequest)
+  return target;
+}
+
+size_t WaitQueueDoneRequest::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.eager.WaitQueueDoneRequest)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // repeated int64 op_id = 2;
+  {
+    size_t data_size = ::google::protobuf::internal::WireFormatLite::
+      Int64Size(this->op_id_);
+    if (data_size > 0) {
+      total_size += 1 +
+        ::google::protobuf::internal::WireFormatLite::Int32Size(
+            static_cast<::google::protobuf::int32>(data_size));
+    }
+    int cached_size = ::google::protobuf::internal::ToCachedSize(data_size);
+    _op_id_cached_byte_size_.store(cached_size,
+                                    std::memory_order_relaxed);
+    total_size += data_size;
+  }
+
+  // fixed64 context_id = 1;
+  if (this->context_id() != 0) {
+    total_size += 1 + 8;
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void WaitQueueDoneRequest::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.eager.WaitQueueDoneRequest)
+  GOOGLE_DCHECK_NE(&from, this);
+  const WaitQueueDoneRequest* source =
+      ::google::protobuf::DynamicCastToGenerated<WaitQueueDoneRequest>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.eager.WaitQueueDoneRequest)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.eager.WaitQueueDoneRequest)
+    MergeFrom(*source);
+  }
+}
+
+void WaitQueueDoneRequest::MergeFrom(const WaitQueueDoneRequest& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.eager.WaitQueueDoneRequest)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  op_id_.MergeFrom(from.op_id_);
+  if (from.context_id() != 0) {
+    set_context_id(from.context_id());
+  }
+}
+
+void WaitQueueDoneRequest::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.eager.WaitQueueDoneRequest)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void WaitQueueDoneRequest::CopyFrom(const WaitQueueDoneRequest& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.eager.WaitQueueDoneRequest)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool WaitQueueDoneRequest::IsInitialized() const {
+  return true;
+}
+
+void WaitQueueDoneRequest::Swap(WaitQueueDoneRequest* other) {
+  if (other == this) return;
+  InternalSwap(other);
+}
+void WaitQueueDoneRequest::InternalSwap(WaitQueueDoneRequest* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  op_id_.InternalSwap(&other->op_id_);
+  swap(context_id_, other->context_id_);
+}
+
+::google::protobuf::Metadata WaitQueueDoneRequest::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2feager_5fservice_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fprotobuf_2feager_5fservice_2eproto[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+void WaitQueueDoneResponse::InitAsDefaultInstance() {
+}
+class WaitQueueDoneResponse::HasBitSetters {
+ public:
+};
+
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+WaitQueueDoneResponse::WaitQueueDoneResponse()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.eager.WaitQueueDoneResponse)
+}
+WaitQueueDoneResponse::WaitQueueDoneResponse(const WaitQueueDoneResponse& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  // @@protoc_insertion_point(copy_constructor:tensorflow.eager.WaitQueueDoneResponse)
+}
+
+void WaitQueueDoneResponse::SharedCtor() {
+}
+
+WaitQueueDoneResponse::~WaitQueueDoneResponse() {
+  // @@protoc_insertion_point(destructor:tensorflow.eager.WaitQueueDoneResponse)
+  SharedDtor();
+}
+
+void WaitQueueDoneResponse::SharedDtor() {
+}
+
+void WaitQueueDoneResponse::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const WaitQueueDoneResponse& WaitQueueDoneResponse::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_WaitQueueDoneResponse_tensorflow_2fcore_2fprotobuf_2feager_5fservice_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void WaitQueueDoneResponse::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.eager.WaitQueueDoneResponse)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* WaitQueueDoneResponse::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<WaitQueueDoneResponse*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool WaitQueueDoneResponse::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.eager.WaitQueueDoneResponse)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+  handle_unusual:
+    if (tag == 0) {
+      goto success;
+    }
+    DO_(::google::protobuf::internal::WireFormat::SkipField(
+          input, tag, _internal_metadata_.mutable_unknown_fields()));
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.eager.WaitQueueDoneResponse)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.eager.WaitQueueDoneResponse)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void WaitQueueDoneResponse::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.eager.WaitQueueDoneResponse)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.eager.WaitQueueDoneResponse)
+}
+
+::google::protobuf::uint8* WaitQueueDoneResponse::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.eager.WaitQueueDoneResponse)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.eager.WaitQueueDoneResponse)
+  return target;
+}
+
+size_t WaitQueueDoneResponse::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.eager.WaitQueueDoneResponse)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void WaitQueueDoneResponse::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.eager.WaitQueueDoneResponse)
+  GOOGLE_DCHECK_NE(&from, this);
+  const WaitQueueDoneResponse* source =
+      ::google::protobuf::DynamicCastToGenerated<WaitQueueDoneResponse>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.eager.WaitQueueDoneResponse)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.eager.WaitQueueDoneResponse)
+    MergeFrom(*source);
+  }
+}
+
+void WaitQueueDoneResponse::MergeFrom(const WaitQueueDoneResponse& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.eager.WaitQueueDoneResponse)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+}
+
+void WaitQueueDoneResponse::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.eager.WaitQueueDoneResponse)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void WaitQueueDoneResponse::CopyFrom(const WaitQueueDoneResponse& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.eager.WaitQueueDoneResponse)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool WaitQueueDoneResponse::IsInitialized() const {
+  return true;
+}
+
+void WaitQueueDoneResponse::Swap(WaitQueueDoneResponse* other) {
+  if (other == this) return;
+  InternalSwap(other);
+}
+void WaitQueueDoneResponse::InternalSwap(WaitQueueDoneResponse* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+}
+
+::google::protobuf::Metadata WaitQueueDoneResponse::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2feager_5fservice_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fprotobuf_2feager_5fservice_2eproto[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+void KeepAliveRequest::InitAsDefaultInstance() {
+}
+class KeepAliveRequest::HasBitSetters {
+ public:
+};
+
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int KeepAliveRequest::kContextIdFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+KeepAliveRequest::KeepAliveRequest()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.eager.KeepAliveRequest)
+}
+KeepAliveRequest::KeepAliveRequest(const KeepAliveRequest& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  context_id_ = from.context_id_;
+  // @@protoc_insertion_point(copy_constructor:tensorflow.eager.KeepAliveRequest)
+}
+
+void KeepAliveRequest::SharedCtor() {
+  context_id_ = PROTOBUF_ULONGLONG(0);
+}
+
+KeepAliveRequest::~KeepAliveRequest() {
+  // @@protoc_insertion_point(destructor:tensorflow.eager.KeepAliveRequest)
+  SharedDtor();
+}
+
+void KeepAliveRequest::SharedDtor() {
+}
+
+void KeepAliveRequest::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const KeepAliveRequest& KeepAliveRequest::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_KeepAliveRequest_tensorflow_2fcore_2fprotobuf_2feager_5fservice_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void KeepAliveRequest::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.eager.KeepAliveRequest)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  context_id_ = PROTOBUF_ULONGLONG(0);
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* KeepAliveRequest::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<KeepAliveRequest*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // fixed64 context_id = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 9) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ::std::memcpy(&val, ptr, 8);
+        ptr += 8;
+        msg->set_context_id(val);
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool KeepAliveRequest::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.eager.KeepAliveRequest)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // fixed64 context_id = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (9 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_FIXED64>(
+                 input, &context_id_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.eager.KeepAliveRequest)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.eager.KeepAliveRequest)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void KeepAliveRequest::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.eager.KeepAliveRequest)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // fixed64 context_id = 1;
+  if (this->context_id() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteFixed64(1, this->context_id(), output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.eager.KeepAliveRequest)
+}
+
+::google::protobuf::uint8* KeepAliveRequest::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.eager.KeepAliveRequest)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // fixed64 context_id = 1;
+  if (this->context_id() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteFixed64ToArray(1, this->context_id(), target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.eager.KeepAliveRequest)
+  return target;
+}
+
+size_t KeepAliveRequest::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.eager.KeepAliveRequest)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // fixed64 context_id = 1;
+  if (this->context_id() != 0) {
+    total_size += 1 + 8;
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void KeepAliveRequest::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.eager.KeepAliveRequest)
+  GOOGLE_DCHECK_NE(&from, this);
+  const KeepAliveRequest* source =
+      ::google::protobuf::DynamicCastToGenerated<KeepAliveRequest>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.eager.KeepAliveRequest)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.eager.KeepAliveRequest)
+    MergeFrom(*source);
+  }
+}
+
+void KeepAliveRequest::MergeFrom(const KeepAliveRequest& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.eager.KeepAliveRequest)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  if (from.context_id() != 0) {
+    set_context_id(from.context_id());
+  }
+}
+
+void KeepAliveRequest::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.eager.KeepAliveRequest)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void KeepAliveRequest::CopyFrom(const KeepAliveRequest& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.eager.KeepAliveRequest)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool KeepAliveRequest::IsInitialized() const {
+  return true;
+}
+
+void KeepAliveRequest::Swap(KeepAliveRequest* other) {
+  if (other == this) return;
+  InternalSwap(other);
+}
+void KeepAliveRequest::InternalSwap(KeepAliveRequest* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  swap(context_id_, other->context_id_);
+}
+
+::google::protobuf::Metadata KeepAliveRequest::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2feager_5fservice_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fprotobuf_2feager_5fservice_2eproto[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+void KeepAliveResponse::InitAsDefaultInstance() {
+}
+class KeepAliveResponse::HasBitSetters {
+ public:
+};
+
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+KeepAliveResponse::KeepAliveResponse()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.eager.KeepAliveResponse)
+}
+KeepAliveResponse::KeepAliveResponse(const KeepAliveResponse& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  // @@protoc_insertion_point(copy_constructor:tensorflow.eager.KeepAliveResponse)
+}
+
+void KeepAliveResponse::SharedCtor() {
+}
+
+KeepAliveResponse::~KeepAliveResponse() {
+  // @@protoc_insertion_point(destructor:tensorflow.eager.KeepAliveResponse)
+  SharedDtor();
+}
+
+void KeepAliveResponse::SharedDtor() {
+}
+
+void KeepAliveResponse::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const KeepAliveResponse& KeepAliveResponse::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_KeepAliveResponse_tensorflow_2fcore_2fprotobuf_2feager_5fservice_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void KeepAliveResponse::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.eager.KeepAliveResponse)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* KeepAliveResponse::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<KeepAliveResponse*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool KeepAliveResponse::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.eager.KeepAliveResponse)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+  handle_unusual:
+    if (tag == 0) {
+      goto success;
+    }
+    DO_(::google::protobuf::internal::WireFormat::SkipField(
+          input, tag, _internal_metadata_.mutable_unknown_fields()));
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.eager.KeepAliveResponse)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.eager.KeepAliveResponse)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void KeepAliveResponse::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.eager.KeepAliveResponse)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.eager.KeepAliveResponse)
+}
+
+::google::protobuf::uint8* KeepAliveResponse::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.eager.KeepAliveResponse)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.eager.KeepAliveResponse)
+  return target;
+}
+
+size_t KeepAliveResponse::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.eager.KeepAliveResponse)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void KeepAliveResponse::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.eager.KeepAliveResponse)
+  GOOGLE_DCHECK_NE(&from, this);
+  const KeepAliveResponse* source =
+      ::google::protobuf::DynamicCastToGenerated<KeepAliveResponse>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.eager.KeepAliveResponse)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.eager.KeepAliveResponse)
+    MergeFrom(*source);
+  }
+}
+
+void KeepAliveResponse::MergeFrom(const KeepAliveResponse& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.eager.KeepAliveResponse)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+}
+
+void KeepAliveResponse::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.eager.KeepAliveResponse)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void KeepAliveResponse::CopyFrom(const KeepAliveResponse& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.eager.KeepAliveResponse)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool KeepAliveResponse::IsInitialized() const {
+  return true;
+}
+
+void KeepAliveResponse::Swap(KeepAliveResponse* other) {
+  if (other == this) return;
+  InternalSwap(other);
+}
+void KeepAliveResponse::InternalSwap(KeepAliveResponse* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+}
+
+::google::protobuf::Metadata KeepAliveResponse::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2feager_5fservice_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fprotobuf_2feager_5fservice_2eproto[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+void CloseContextRequest::InitAsDefaultInstance() {
+}
+class CloseContextRequest::HasBitSetters {
+ public:
+};
+
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int CloseContextRequest::kContextIdFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+CloseContextRequest::CloseContextRequest()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.eager.CloseContextRequest)
+}
+CloseContextRequest::CloseContextRequest(const CloseContextRequest& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  context_id_ = from.context_id_;
+  // @@protoc_insertion_point(copy_constructor:tensorflow.eager.CloseContextRequest)
+}
+
+void CloseContextRequest::SharedCtor() {
+  context_id_ = PROTOBUF_ULONGLONG(0);
+}
+
+CloseContextRequest::~CloseContextRequest() {
+  // @@protoc_insertion_point(destructor:tensorflow.eager.CloseContextRequest)
+  SharedDtor();
+}
+
+void CloseContextRequest::SharedDtor() {
+}
+
+void CloseContextRequest::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const CloseContextRequest& CloseContextRequest::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_CloseContextRequest_tensorflow_2fcore_2fprotobuf_2feager_5fservice_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void CloseContextRequest::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.eager.CloseContextRequest)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  context_id_ = PROTOBUF_ULONGLONG(0);
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* CloseContextRequest::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<CloseContextRequest*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // fixed64 context_id = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 9) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ::std::memcpy(&val, ptr, 8);
+        ptr += 8;
+        msg->set_context_id(val);
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool CloseContextRequest::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.eager.CloseContextRequest)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // fixed64 context_id = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (9 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_FIXED64>(
+                 input, &context_id_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.eager.CloseContextRequest)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.eager.CloseContextRequest)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void CloseContextRequest::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.eager.CloseContextRequest)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // fixed64 context_id = 1;
+  if (this->context_id() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteFixed64(1, this->context_id(), output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.eager.CloseContextRequest)
+}
+
+::google::protobuf::uint8* CloseContextRequest::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.eager.CloseContextRequest)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // fixed64 context_id = 1;
+  if (this->context_id() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteFixed64ToArray(1, this->context_id(), target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.eager.CloseContextRequest)
+  return target;
+}
+
+size_t CloseContextRequest::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.eager.CloseContextRequest)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // fixed64 context_id = 1;
+  if (this->context_id() != 0) {
+    total_size += 1 + 8;
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void CloseContextRequest::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.eager.CloseContextRequest)
+  GOOGLE_DCHECK_NE(&from, this);
+  const CloseContextRequest* source =
+      ::google::protobuf::DynamicCastToGenerated<CloseContextRequest>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.eager.CloseContextRequest)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.eager.CloseContextRequest)
+    MergeFrom(*source);
+  }
+}
+
+void CloseContextRequest::MergeFrom(const CloseContextRequest& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.eager.CloseContextRequest)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  if (from.context_id() != 0) {
+    set_context_id(from.context_id());
+  }
+}
+
+void CloseContextRequest::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.eager.CloseContextRequest)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void CloseContextRequest::CopyFrom(const CloseContextRequest& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.eager.CloseContextRequest)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool CloseContextRequest::IsInitialized() const {
+  return true;
+}
+
+void CloseContextRequest::Swap(CloseContextRequest* other) {
+  if (other == this) return;
+  InternalSwap(other);
+}
+void CloseContextRequest::InternalSwap(CloseContextRequest* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  swap(context_id_, other->context_id_);
+}
+
+::google::protobuf::Metadata CloseContextRequest::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2feager_5fservice_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fprotobuf_2feager_5fservice_2eproto[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+void CloseContextResponse::InitAsDefaultInstance() {
+}
+class CloseContextResponse::HasBitSetters {
+ public:
+};
+
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+CloseContextResponse::CloseContextResponse()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.eager.CloseContextResponse)
+}
+CloseContextResponse::CloseContextResponse(const CloseContextResponse& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  // @@protoc_insertion_point(copy_constructor:tensorflow.eager.CloseContextResponse)
+}
+
+void CloseContextResponse::SharedCtor() {
+}
+
+CloseContextResponse::~CloseContextResponse() {
+  // @@protoc_insertion_point(destructor:tensorflow.eager.CloseContextResponse)
+  SharedDtor();
+}
+
+void CloseContextResponse::SharedDtor() {
+}
+
+void CloseContextResponse::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const CloseContextResponse& CloseContextResponse::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_CloseContextResponse_tensorflow_2fcore_2fprotobuf_2feager_5fservice_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void CloseContextResponse::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.eager.CloseContextResponse)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* CloseContextResponse::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<CloseContextResponse*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool CloseContextResponse::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.eager.CloseContextResponse)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+  handle_unusual:
+    if (tag == 0) {
+      goto success;
+    }
+    DO_(::google::protobuf::internal::WireFormat::SkipField(
+          input, tag, _internal_metadata_.mutable_unknown_fields()));
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.eager.CloseContextResponse)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.eager.CloseContextResponse)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void CloseContextResponse::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.eager.CloseContextResponse)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.eager.CloseContextResponse)
+}
+
+::google::protobuf::uint8* CloseContextResponse::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.eager.CloseContextResponse)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.eager.CloseContextResponse)
+  return target;
+}
+
+size_t CloseContextResponse::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.eager.CloseContextResponse)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void CloseContextResponse::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.eager.CloseContextResponse)
+  GOOGLE_DCHECK_NE(&from, this);
+  const CloseContextResponse* source =
+      ::google::protobuf::DynamicCastToGenerated<CloseContextResponse>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.eager.CloseContextResponse)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.eager.CloseContextResponse)
+    MergeFrom(*source);
+  }
+}
+
+void CloseContextResponse::MergeFrom(const CloseContextResponse& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.eager.CloseContextResponse)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+}
+
+void CloseContextResponse::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.eager.CloseContextResponse)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void CloseContextResponse::CopyFrom(const CloseContextResponse& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.eager.CloseContextResponse)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool CloseContextResponse::IsInitialized() const {
+  return true;
+}
+
+void CloseContextResponse::Swap(CloseContextResponse* other) {
+  if (other == this) return;
+  InternalSwap(other);
+}
+void CloseContextResponse::InternalSwap(CloseContextResponse* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+}
+
+::google::protobuf::Metadata CloseContextResponse::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2feager_5fservice_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fprotobuf_2feager_5fservice_2eproto[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+void RegisterFunctionRequest::InitAsDefaultInstance() {
+  ::tensorflow::eager::_RegisterFunctionRequest_default_instance_._instance.get_mutable()->function_def_ = const_cast< ::tensorflow::FunctionDef*>(
+      ::tensorflow::FunctionDef::internal_default_instance());
+}
+class RegisterFunctionRequest::HasBitSetters {
+ public:
+  static const ::tensorflow::FunctionDef& function_def(const RegisterFunctionRequest* msg);
+};
+
+const ::tensorflow::FunctionDef&
+RegisterFunctionRequest::HasBitSetters::function_def(const RegisterFunctionRequest* msg) {
+  return *msg->function_def_;
+}
+void RegisterFunctionRequest::clear_function_def() {
+  if (GetArenaNoVirtual() == NULL && function_def_ != NULL) {
+    delete function_def_;
+  }
+  function_def_ = NULL;
+}
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int RegisterFunctionRequest::kContextIdFieldNumber;
+const int RegisterFunctionRequest::kFunctionDefFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+RegisterFunctionRequest::RegisterFunctionRequest()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.eager.RegisterFunctionRequest)
+}
+RegisterFunctionRequest::RegisterFunctionRequest(const RegisterFunctionRequest& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  if (from.has_function_def()) {
+    function_def_ = new ::tensorflow::FunctionDef(*from.function_def_);
+  } else {
+    function_def_ = NULL;
+  }
+  context_id_ = from.context_id_;
+  // @@protoc_insertion_point(copy_constructor:tensorflow.eager.RegisterFunctionRequest)
+}
+
+void RegisterFunctionRequest::SharedCtor() {
+  ::google::protobuf::internal::InitSCC(
+      &scc_info_RegisterFunctionRequest_tensorflow_2fcore_2fprotobuf_2feager_5fservice_2eproto.base);
+  ::memset(&function_def_, 0, static_cast<size_t>(
+      reinterpret_cast<char*>(&context_id_) -
+      reinterpret_cast<char*>(&function_def_)) + sizeof(context_id_));
+}
+
+RegisterFunctionRequest::~RegisterFunctionRequest() {
+  // @@protoc_insertion_point(destructor:tensorflow.eager.RegisterFunctionRequest)
+  SharedDtor();
+}
+
+void RegisterFunctionRequest::SharedDtor() {
+  if (this != internal_default_instance()) delete function_def_;
+}
+
+void RegisterFunctionRequest::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const RegisterFunctionRequest& RegisterFunctionRequest::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_RegisterFunctionRequest_tensorflow_2fcore_2fprotobuf_2feager_5fservice_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void RegisterFunctionRequest::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.eager.RegisterFunctionRequest)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  if (GetArenaNoVirtual() == NULL && function_def_ != NULL) {
+    delete function_def_;
+  }
+  function_def_ = NULL;
+  context_id_ = PROTOBUF_ULONGLONG(0);
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* RegisterFunctionRequest::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<RegisterFunctionRequest*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // fixed64 context_id = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 9) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ::std::memcpy(&val, ptr, 8);
+        ptr += 8;
+        msg->set_context_id(val);
+        break;
+      }
+      // .tensorflow.FunctionDef function_def = 2;
+      case 2: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 18) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        parser_till_end = ::tensorflow::FunctionDef::_InternalParse;
+        object = msg->mutable_function_def();
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                       ptr, newend);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+        ptr = newend;
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool RegisterFunctionRequest::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.eager.RegisterFunctionRequest)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // fixed64 context_id = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (9 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_FIXED64>(
+                 input, &context_id_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // .tensorflow.FunctionDef function_def = 2;
+      case 2: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (18 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+               input, mutable_function_def()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.eager.RegisterFunctionRequest)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.eager.RegisterFunctionRequest)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void RegisterFunctionRequest::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.eager.RegisterFunctionRequest)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // fixed64 context_id = 1;
+  if (this->context_id() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteFixed64(1, this->context_id(), output);
+  }
+
+  // .tensorflow.FunctionDef function_def = 2;
+  if (this->has_function_def()) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      2, HasBitSetters::function_def(this), output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.eager.RegisterFunctionRequest)
+}
+
+::google::protobuf::uint8* RegisterFunctionRequest::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.eager.RegisterFunctionRequest)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // fixed64 context_id = 1;
+  if (this->context_id() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteFixed64ToArray(1, this->context_id(), target);
+  }
+
+  // .tensorflow.FunctionDef function_def = 2;
+  if (this->has_function_def()) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        2, HasBitSetters::function_def(this), deterministic, target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.eager.RegisterFunctionRequest)
+  return target;
+}
+
+size_t RegisterFunctionRequest::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.eager.RegisterFunctionRequest)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // .tensorflow.FunctionDef function_def = 2;
+  if (this->has_function_def()) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::MessageSize(
+        *function_def_);
+  }
+
+  // fixed64 context_id = 1;
+  if (this->context_id() != 0) {
+    total_size += 1 + 8;
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void RegisterFunctionRequest::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.eager.RegisterFunctionRequest)
+  GOOGLE_DCHECK_NE(&from, this);
+  const RegisterFunctionRequest* source =
+      ::google::protobuf::DynamicCastToGenerated<RegisterFunctionRequest>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.eager.RegisterFunctionRequest)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.eager.RegisterFunctionRequest)
+    MergeFrom(*source);
+  }
+}
+
+void RegisterFunctionRequest::MergeFrom(const RegisterFunctionRequest& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.eager.RegisterFunctionRequest)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  if (from.has_function_def()) {
+    mutable_function_def()->::tensorflow::FunctionDef::MergeFrom(from.function_def());
+  }
+  if (from.context_id() != 0) {
+    set_context_id(from.context_id());
+  }
+}
+
+void RegisterFunctionRequest::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.eager.RegisterFunctionRequest)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void RegisterFunctionRequest::CopyFrom(const RegisterFunctionRequest& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.eager.RegisterFunctionRequest)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool RegisterFunctionRequest::IsInitialized() const {
+  return true;
+}
+
+void RegisterFunctionRequest::Swap(RegisterFunctionRequest* other) {
+  if (other == this) return;
+  InternalSwap(other);
+}
+void RegisterFunctionRequest::InternalSwap(RegisterFunctionRequest* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  swap(function_def_, other->function_def_);
+  swap(context_id_, other->context_id_);
+}
+
+::google::protobuf::Metadata RegisterFunctionRequest::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2feager_5fservice_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fprotobuf_2feager_5fservice_2eproto[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+void RegisterFunctionResponse::InitAsDefaultInstance() {
+}
+class RegisterFunctionResponse::HasBitSetters {
+ public:
+};
+
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+RegisterFunctionResponse::RegisterFunctionResponse()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.eager.RegisterFunctionResponse)
+}
+RegisterFunctionResponse::RegisterFunctionResponse(const RegisterFunctionResponse& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  // @@protoc_insertion_point(copy_constructor:tensorflow.eager.RegisterFunctionResponse)
+}
+
+void RegisterFunctionResponse::SharedCtor() {
+}
+
+RegisterFunctionResponse::~RegisterFunctionResponse() {
+  // @@protoc_insertion_point(destructor:tensorflow.eager.RegisterFunctionResponse)
+  SharedDtor();
+}
+
+void RegisterFunctionResponse::SharedDtor() {
+}
+
+void RegisterFunctionResponse::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const RegisterFunctionResponse& RegisterFunctionResponse::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_RegisterFunctionResponse_tensorflow_2fcore_2fprotobuf_2feager_5fservice_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void RegisterFunctionResponse::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.eager.RegisterFunctionResponse)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* RegisterFunctionResponse::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<RegisterFunctionResponse*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool RegisterFunctionResponse::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.eager.RegisterFunctionResponse)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+  handle_unusual:
+    if (tag == 0) {
+      goto success;
+    }
+    DO_(::google::protobuf::internal::WireFormat::SkipField(
+          input, tag, _internal_metadata_.mutable_unknown_fields()));
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.eager.RegisterFunctionResponse)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.eager.RegisterFunctionResponse)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void RegisterFunctionResponse::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.eager.RegisterFunctionResponse)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.eager.RegisterFunctionResponse)
+}
+
+::google::protobuf::uint8* RegisterFunctionResponse::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.eager.RegisterFunctionResponse)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.eager.RegisterFunctionResponse)
+  return target;
+}
+
+size_t RegisterFunctionResponse::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.eager.RegisterFunctionResponse)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void RegisterFunctionResponse::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.eager.RegisterFunctionResponse)
+  GOOGLE_DCHECK_NE(&from, this);
+  const RegisterFunctionResponse* source =
+      ::google::protobuf::DynamicCastToGenerated<RegisterFunctionResponse>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.eager.RegisterFunctionResponse)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.eager.RegisterFunctionResponse)
+    MergeFrom(*source);
+  }
+}
+
+void RegisterFunctionResponse::MergeFrom(const RegisterFunctionResponse& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.eager.RegisterFunctionResponse)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+}
+
+void RegisterFunctionResponse::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.eager.RegisterFunctionResponse)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void RegisterFunctionResponse::CopyFrom(const RegisterFunctionResponse& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.eager.RegisterFunctionResponse)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool RegisterFunctionResponse::IsInitialized() const {
+  return true;
+}
+
+void RegisterFunctionResponse::Swap(RegisterFunctionResponse* other) {
+  if (other == this) return;
+  InternalSwap(other);
+}
+void RegisterFunctionResponse::InternalSwap(RegisterFunctionResponse* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+}
+
+::google::protobuf::Metadata RegisterFunctionResponse::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2feager_5fservice_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fprotobuf_2feager_5fservice_2eproto[kIndexInFileMessages];
+}
+
+
+// @@protoc_insertion_point(namespace_scope)
+}  // namespace eager
+}  // namespace tensorflow
+namespace google {
+namespace protobuf {
+template<> PROTOBUF_NOINLINE ::tensorflow::eager::RemoteTensorHandle* Arena::CreateMaybeMessage< ::tensorflow::eager::RemoteTensorHandle >(Arena* arena) {
+  return Arena::CreateInternal< ::tensorflow::eager::RemoteTensorHandle >(arena);
+}
+template<> PROTOBUF_NOINLINE ::tensorflow::eager::Operation_AttrsEntry_DoNotUse* Arena::CreateMaybeMessage< ::tensorflow::eager::Operation_AttrsEntry_DoNotUse >(Arena* arena) {
+  return Arena::CreateInternal< ::tensorflow::eager::Operation_AttrsEntry_DoNotUse >(arena);
+}
+template<> PROTOBUF_NOINLINE ::tensorflow::eager::Operation* Arena::CreateMaybeMessage< ::tensorflow::eager::Operation >(Arena* arena) {
+  return Arena::CreateInternal< ::tensorflow::eager::Operation >(arena);
+}
+template<> PROTOBUF_NOINLINE ::tensorflow::eager::QueueItem* Arena::CreateMaybeMessage< ::tensorflow::eager::QueueItem >(Arena* arena) {
+  return Arena::CreateInternal< ::tensorflow::eager::QueueItem >(arena);
+}
+template<> PROTOBUF_NOINLINE ::tensorflow::eager::CreateContextRequest* Arena::CreateMaybeMessage< ::tensorflow::eager::CreateContextRequest >(Arena* arena) {
+  return Arena::CreateInternal< ::tensorflow::eager::CreateContextRequest >(arena);
+}
+template<> PROTOBUF_NOINLINE ::tensorflow::eager::CreateContextResponse* Arena::CreateMaybeMessage< ::tensorflow::eager::CreateContextResponse >(Arena* arena) {
+  return Arena::CreateInternal< ::tensorflow::eager::CreateContextResponse >(arena);
+}
+template<> PROTOBUF_NOINLINE ::tensorflow::eager::EnqueueRequest* Arena::CreateMaybeMessage< ::tensorflow::eager::EnqueueRequest >(Arena* arena) {
+  return Arena::CreateInternal< ::tensorflow::eager::EnqueueRequest >(arena);
+}
+template<> PROTOBUF_NOINLINE ::tensorflow::eager::EnqueueResponse* Arena::CreateMaybeMessage< ::tensorflow::eager::EnqueueResponse >(Arena* arena) {
+  return Arena::CreateInternal< ::tensorflow::eager::EnqueueResponse >(arena);
+}
+template<> PROTOBUF_NOINLINE ::tensorflow::eager::WaitQueueDoneRequest* Arena::CreateMaybeMessage< ::tensorflow::eager::WaitQueueDoneRequest >(Arena* arena) {
+  return Arena::CreateInternal< ::tensorflow::eager::WaitQueueDoneRequest >(arena);
+}
+template<> PROTOBUF_NOINLINE ::tensorflow::eager::WaitQueueDoneResponse* Arena::CreateMaybeMessage< ::tensorflow::eager::WaitQueueDoneResponse >(Arena* arena) {
+  return Arena::CreateInternal< ::tensorflow::eager::WaitQueueDoneResponse >(arena);
+}
+template<> PROTOBUF_NOINLINE ::tensorflow::eager::KeepAliveRequest* Arena::CreateMaybeMessage< ::tensorflow::eager::KeepAliveRequest >(Arena* arena) {
+  return Arena::CreateInternal< ::tensorflow::eager::KeepAliveRequest >(arena);
+}
+template<> PROTOBUF_NOINLINE ::tensorflow::eager::KeepAliveResponse* Arena::CreateMaybeMessage< ::tensorflow::eager::KeepAliveResponse >(Arena* arena) {
+  return Arena::CreateInternal< ::tensorflow::eager::KeepAliveResponse >(arena);
+}
+template<> PROTOBUF_NOINLINE ::tensorflow::eager::CloseContextRequest* Arena::CreateMaybeMessage< ::tensorflow::eager::CloseContextRequest >(Arena* arena) {
+  return Arena::CreateInternal< ::tensorflow::eager::CloseContextRequest >(arena);
+}
+template<> PROTOBUF_NOINLINE ::tensorflow::eager::CloseContextResponse* Arena::CreateMaybeMessage< ::tensorflow::eager::CloseContextResponse >(Arena* arena) {
+  return Arena::CreateInternal< ::tensorflow::eager::CloseContextResponse >(arena);
+}
+template<> PROTOBUF_NOINLINE ::tensorflow::eager::RegisterFunctionRequest* Arena::CreateMaybeMessage< ::tensorflow::eager::RegisterFunctionRequest >(Arena* arena) {
+  return Arena::CreateInternal< ::tensorflow::eager::RegisterFunctionRequest >(arena);
+}
+template<> PROTOBUF_NOINLINE ::tensorflow::eager::RegisterFunctionResponse* Arena::CreateMaybeMessage< ::tensorflow::eager::RegisterFunctionResponse >(Arena* arena) {
+  return Arena::CreateInternal< ::tensorflow::eager::RegisterFunctionResponse >(arena);
+}
+}  // namespace protobuf
+}  // namespace google
+
+// @@protoc_insertion_point(global_scope)
+#include <google/protobuf/port_undef.inc>
diff --git a/tensorflow/core/protobuf/eager_service.pb.h b/tensorflow/core/protobuf/eager_service.pb.h
new file mode 100644 (file)
index 0000000..764b381
--- /dev/null
@@ -0,0 +1,2738 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: tensorflow/core/protobuf/eager_service.proto
+
+#ifndef PROTOBUF_INCLUDED_tensorflow_2fcore_2fprotobuf_2feager_5fservice_2eproto
+#define PROTOBUF_INCLUDED_tensorflow_2fcore_2fprotobuf_2feager_5fservice_2eproto
+
+#include <limits>
+#include <string>
+
+#include <google/protobuf/port_def.inc>
+#if PROTOBUF_VERSION < 3006001
+#error This file was generated by a newer version of protoc which is
+#error incompatible with your Protocol Buffer headers. Please update
+#error your headers.
+#endif
+#if 3006001 < PROTOBUF_MIN_PROTOC_VERSION
+#error This file was generated by an older version of protoc which is
+#error incompatible with your Protocol Buffer headers. Please
+#error regenerate this file with a newer version of protoc.
+#endif
+
+#include <google/protobuf/port_undef.inc>
+#include <google/protobuf/io/coded_stream.h>
+#include <google/protobuf/arena.h>
+#include <google/protobuf/arenastring.h>
+#include <google/protobuf/generated_message_table_driven.h>
+#include <google/protobuf/generated_message_util.h>
+#include <google/protobuf/inlined_string_field.h>
+#include <google/protobuf/metadata.h>
+#include <google/protobuf/message.h>
+#include <google/protobuf/repeated_field.h>  // IWYU pragma: export
+#include <google/protobuf/extension_set.h>  // IWYU pragma: export
+#include <google/protobuf/map.h>  // IWYU pragma: export
+#include <google/protobuf/map_entry.h>
+#include <google/protobuf/map_field_inl.h>
+#include <google/protobuf/unknown_field_set.h>
+#include "tensorflow/core/framework/attr_value.pb.h"
+#include "tensorflow/core/framework/device_attributes.pb.h"
+#include "tensorflow/core/framework/function.pb.h"
+#include "tensorflow/core/framework/versions.pb.h"
+#include "tensorflow/core/protobuf/tensorflow_server.pb.h"
+// @@protoc_insertion_point(includes)
+#include <google/protobuf/port_def.inc>
+#define PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fprotobuf_2feager_5fservice_2eproto
+
+// Internal implementation detail -- do not use these members.
+struct TableStruct_tensorflow_2fcore_2fprotobuf_2feager_5fservice_2eproto {
+  static const ::google::protobuf::internal::ParseTableField entries[]
+    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
+  static const ::google::protobuf::internal::AuxillaryParseTableField aux[]
+    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
+  static const ::google::protobuf::internal::ParseTable schema[16]
+    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
+  static const ::google::protobuf::internal::FieldMetadata field_metadata[];
+  static const ::google::protobuf::internal::SerializationTable serialization_table[];
+  static const ::google::protobuf::uint32 offsets[];
+};
+void AddDescriptors_tensorflow_2fcore_2fprotobuf_2feager_5fservice_2eproto();
+namespace tensorflow {
+namespace eager {
+class CloseContextRequest;
+class CloseContextRequestDefaultTypeInternal;
+extern CloseContextRequestDefaultTypeInternal _CloseContextRequest_default_instance_;
+class CloseContextResponse;
+class CloseContextResponseDefaultTypeInternal;
+extern CloseContextResponseDefaultTypeInternal _CloseContextResponse_default_instance_;
+class CreateContextRequest;
+class CreateContextRequestDefaultTypeInternal;
+extern CreateContextRequestDefaultTypeInternal _CreateContextRequest_default_instance_;
+class CreateContextResponse;
+class CreateContextResponseDefaultTypeInternal;
+extern CreateContextResponseDefaultTypeInternal _CreateContextResponse_default_instance_;
+class EnqueueRequest;
+class EnqueueRequestDefaultTypeInternal;
+extern EnqueueRequestDefaultTypeInternal _EnqueueRequest_default_instance_;
+class EnqueueResponse;
+class EnqueueResponseDefaultTypeInternal;
+extern EnqueueResponseDefaultTypeInternal _EnqueueResponse_default_instance_;
+class KeepAliveRequest;
+class KeepAliveRequestDefaultTypeInternal;
+extern KeepAliveRequestDefaultTypeInternal _KeepAliveRequest_default_instance_;
+class KeepAliveResponse;
+class KeepAliveResponseDefaultTypeInternal;
+extern KeepAliveResponseDefaultTypeInternal _KeepAliveResponse_default_instance_;
+class Operation;
+class OperationDefaultTypeInternal;
+extern OperationDefaultTypeInternal _Operation_default_instance_;
+class Operation_AttrsEntry_DoNotUse;
+class Operation_AttrsEntry_DoNotUseDefaultTypeInternal;
+extern Operation_AttrsEntry_DoNotUseDefaultTypeInternal _Operation_AttrsEntry_DoNotUse_default_instance_;
+class QueueItem;
+class QueueItemDefaultTypeInternal;
+extern QueueItemDefaultTypeInternal _QueueItem_default_instance_;
+class RegisterFunctionRequest;
+class RegisterFunctionRequestDefaultTypeInternal;
+extern RegisterFunctionRequestDefaultTypeInternal _RegisterFunctionRequest_default_instance_;
+class RegisterFunctionResponse;
+class RegisterFunctionResponseDefaultTypeInternal;
+extern RegisterFunctionResponseDefaultTypeInternal _RegisterFunctionResponse_default_instance_;
+class RemoteTensorHandle;
+class RemoteTensorHandleDefaultTypeInternal;
+extern RemoteTensorHandleDefaultTypeInternal _RemoteTensorHandle_default_instance_;
+class WaitQueueDoneRequest;
+class WaitQueueDoneRequestDefaultTypeInternal;
+extern WaitQueueDoneRequestDefaultTypeInternal _WaitQueueDoneRequest_default_instance_;
+class WaitQueueDoneResponse;
+class WaitQueueDoneResponseDefaultTypeInternal;
+extern WaitQueueDoneResponseDefaultTypeInternal _WaitQueueDoneResponse_default_instance_;
+}  // namespace eager
+}  // namespace tensorflow
+namespace google {
+namespace protobuf {
+template<> ::tensorflow::eager::CloseContextRequest* Arena::CreateMaybeMessage<::tensorflow::eager::CloseContextRequest>(Arena*);
+template<> ::tensorflow::eager::CloseContextResponse* Arena::CreateMaybeMessage<::tensorflow::eager::CloseContextResponse>(Arena*);
+template<> ::tensorflow::eager::CreateContextRequest* Arena::CreateMaybeMessage<::tensorflow::eager::CreateContextRequest>(Arena*);
+template<> ::tensorflow::eager::CreateContextResponse* Arena::CreateMaybeMessage<::tensorflow::eager::CreateContextResponse>(Arena*);
+template<> ::tensorflow::eager::EnqueueRequest* Arena::CreateMaybeMessage<::tensorflow::eager::EnqueueRequest>(Arena*);
+template<> ::tensorflow::eager::EnqueueResponse* Arena::CreateMaybeMessage<::tensorflow::eager::EnqueueResponse>(Arena*);
+template<> ::tensorflow::eager::KeepAliveRequest* Arena::CreateMaybeMessage<::tensorflow::eager::KeepAliveRequest>(Arena*);
+template<> ::tensorflow::eager::KeepAliveResponse* Arena::CreateMaybeMessage<::tensorflow::eager::KeepAliveResponse>(Arena*);
+template<> ::tensorflow::eager::Operation* Arena::CreateMaybeMessage<::tensorflow::eager::Operation>(Arena*);
+template<> ::tensorflow::eager::Operation_AttrsEntry_DoNotUse* Arena::CreateMaybeMessage<::tensorflow::eager::Operation_AttrsEntry_DoNotUse>(Arena*);
+template<> ::tensorflow::eager::QueueItem* Arena::CreateMaybeMessage<::tensorflow::eager::QueueItem>(Arena*);
+template<> ::tensorflow::eager::RegisterFunctionRequest* Arena::CreateMaybeMessage<::tensorflow::eager::RegisterFunctionRequest>(Arena*);
+template<> ::tensorflow::eager::RegisterFunctionResponse* Arena::CreateMaybeMessage<::tensorflow::eager::RegisterFunctionResponse>(Arena*);
+template<> ::tensorflow::eager::RemoteTensorHandle* Arena::CreateMaybeMessage<::tensorflow::eager::RemoteTensorHandle>(Arena*);
+template<> ::tensorflow::eager::WaitQueueDoneRequest* Arena::CreateMaybeMessage<::tensorflow::eager::WaitQueueDoneRequest>(Arena*);
+template<> ::tensorflow::eager::WaitQueueDoneResponse* Arena::CreateMaybeMessage<::tensorflow::eager::WaitQueueDoneResponse>(Arena*);
+}  // namespace protobuf
+}  // namespace google
+namespace tensorflow {
+namespace eager {
+
+// ===================================================================
+
+class RemoteTensorHandle : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.eager.RemoteTensorHandle) */ {
+ public:
+  RemoteTensorHandle();
+  virtual ~RemoteTensorHandle();
+
+  RemoteTensorHandle(const RemoteTensorHandle& from);
+
+  inline RemoteTensorHandle& operator=(const RemoteTensorHandle& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  RemoteTensorHandle(RemoteTensorHandle&& from) noexcept
+    : RemoteTensorHandle() {
+    *this = ::std::move(from);
+  }
+
+  inline RemoteTensorHandle& operator=(RemoteTensorHandle&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const RemoteTensorHandle& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const RemoteTensorHandle* internal_default_instance() {
+    return reinterpret_cast<const RemoteTensorHandle*>(
+               &_RemoteTensorHandle_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    0;
+
+  void Swap(RemoteTensorHandle* other);
+  friend void swap(RemoteTensorHandle& a, RemoteTensorHandle& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline RemoteTensorHandle* New() const final {
+    return CreateMaybeMessage<RemoteTensorHandle>(NULL);
+  }
+
+  RemoteTensorHandle* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<RemoteTensorHandle>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const RemoteTensorHandle& from);
+  void MergeFrom(const RemoteTensorHandle& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(RemoteTensorHandle* other);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return NULL;
+  }
+  inline void* MaybeArenaPtr() const {
+    return NULL;
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // int64 op_id = 1;
+  void clear_op_id();
+  static const int kOpIdFieldNumber = 1;
+  ::google::protobuf::int64 op_id() const;
+  void set_op_id(::google::protobuf::int64 value);
+
+  // int32 output_num = 2;
+  void clear_output_num();
+  static const int kOutputNumFieldNumber = 2;
+  ::google::protobuf::int32 output_num() const;
+  void set_output_num(::google::protobuf::int32 value);
+
+  // @@protoc_insertion_point(class_scope:tensorflow.eager.RemoteTensorHandle)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  ::google::protobuf::int64 op_id_;
+  ::google::protobuf::int32 output_num_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fprotobuf_2feager_5fservice_2eproto;
+};
+// -------------------------------------------------------------------
+
+class Operation_AttrsEntry_DoNotUse : public ::google::protobuf::internal::MapEntry<Operation_AttrsEntry_DoNotUse, 
+    ::std::string, ::tensorflow::AttrValue,
+    ::google::protobuf::internal::WireFormatLite::TYPE_STRING,
+    ::google::protobuf::internal::WireFormatLite::TYPE_MESSAGE,
+    0 > {
+public:
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+static bool _ParseMap(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  typedef ::google::protobuf::internal::MapEntry<Operation_AttrsEntry_DoNotUse, 
+    ::std::string, ::tensorflow::AttrValue,
+    ::google::protobuf::internal::WireFormatLite::TYPE_STRING,
+    ::google::protobuf::internal::WireFormatLite::TYPE_MESSAGE,
+    0 > SuperType;
+  Operation_AttrsEntry_DoNotUse();
+  Operation_AttrsEntry_DoNotUse(::google::protobuf::Arena* arena);
+  void MergeFrom(const Operation_AttrsEntry_DoNotUse& other);
+  static const Operation_AttrsEntry_DoNotUse* internal_default_instance() { return reinterpret_cast<const Operation_AttrsEntry_DoNotUse*>(&_Operation_AttrsEntry_DoNotUse_default_instance_); }
+  void MergeFrom(const ::google::protobuf::Message& other) final;
+  ::google::protobuf::Metadata GetMetadata() const;
+};
+
+// -------------------------------------------------------------------
+
+class Operation : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.eager.Operation) */ {
+ public:
+  Operation();
+  virtual ~Operation();
+
+  Operation(const Operation& from);
+
+  inline Operation& operator=(const Operation& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  Operation(Operation&& from) noexcept
+    : Operation() {
+    *this = ::std::move(from);
+  }
+
+  inline Operation& operator=(Operation&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const Operation& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const Operation* internal_default_instance() {
+    return reinterpret_cast<const Operation*>(
+               &_Operation_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    2;
+
+  void Swap(Operation* other);
+  friend void swap(Operation& a, Operation& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline Operation* New() const final {
+    return CreateMaybeMessage<Operation>(NULL);
+  }
+
+  Operation* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<Operation>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const Operation& from);
+  void MergeFrom(const Operation& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(Operation* other);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return NULL;
+  }
+  inline void* MaybeArenaPtr() const {
+    return NULL;
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+
+  // accessors -------------------------------------------------------
+
+  // repeated .tensorflow.eager.RemoteTensorHandle inputs = 3;
+  int inputs_size() const;
+  void clear_inputs();
+  static const int kInputsFieldNumber = 3;
+  ::tensorflow::eager::RemoteTensorHandle* mutable_inputs(int index);
+  ::google::protobuf::RepeatedPtrField< ::tensorflow::eager::RemoteTensorHandle >*
+      mutable_inputs();
+  const ::tensorflow::eager::RemoteTensorHandle& inputs(int index) const;
+  ::tensorflow::eager::RemoteTensorHandle* add_inputs();
+  const ::google::protobuf::RepeatedPtrField< ::tensorflow::eager::RemoteTensorHandle >&
+      inputs() const;
+
+  // repeated int64 control_op_ids = 4;
+  int control_op_ids_size() const;
+  void clear_control_op_ids();
+  static const int kControlOpIdsFieldNumber = 4;
+  ::google::protobuf::int64 control_op_ids(int index) const;
+  void set_control_op_ids(int index, ::google::protobuf::int64 value);
+  void add_control_op_ids(::google::protobuf::int64 value);
+  const ::google::protobuf::RepeatedField< ::google::protobuf::int64 >&
+      control_op_ids() const;
+  ::google::protobuf::RepeatedField< ::google::protobuf::int64 >*
+      mutable_control_op_ids();
+
+  // map<string, .tensorflow.AttrValue> attrs = 5;
+  int attrs_size() const;
+  void clear_attrs();
+  static const int kAttrsFieldNumber = 5;
+  const ::google::protobuf::Map< ::std::string, ::tensorflow::AttrValue >&
+      attrs() const;
+  ::google::protobuf::Map< ::std::string, ::tensorflow::AttrValue >*
+      mutable_attrs();
+
+  // string name = 2;
+  void clear_name();
+  static const int kNameFieldNumber = 2;
+  const ::std::string& name() const;
+  void set_name(const ::std::string& value);
+  #if LANG_CXX11
+  void set_name(::std::string&& value);
+  #endif
+  void set_name(const char* value);
+  void set_name(const char* value, size_t size);
+  ::std::string* mutable_name();
+  ::std::string* release_name();
+  void set_allocated_name(::std::string* name);
+
+  // string device = 6;
+  void clear_device();
+  static const int kDeviceFieldNumber = 6;
+  const ::std::string& device() const;
+  void set_device(const ::std::string& value);
+  #if LANG_CXX11
+  void set_device(::std::string&& value);
+  #endif
+  void set_device(const char* value);
+  void set_device(const char* value, size_t size);
+  ::std::string* mutable_device();
+  ::std::string* release_device();
+  void set_allocated_device(::std::string* device);
+
+  // int64 id = 1;
+  void clear_id();
+  static const int kIdFieldNumber = 1;
+  ::google::protobuf::int64 id() const;
+  void set_id(::google::protobuf::int64 value);
+
+  // @@protoc_insertion_point(class_scope:tensorflow.eager.Operation)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  ::google::protobuf::RepeatedPtrField< ::tensorflow::eager::RemoteTensorHandle > inputs_;
+  ::google::protobuf::RepeatedField< ::google::protobuf::int64 > control_op_ids_;
+  mutable std::atomic<int> _control_op_ids_cached_byte_size_;
+  ::google::protobuf::internal::MapField<
+      Operation_AttrsEntry_DoNotUse,
+      ::std::string, ::tensorflow::AttrValue,
+      ::google::protobuf::internal::WireFormatLite::TYPE_STRING,
+      ::google::protobuf::internal::WireFormatLite::TYPE_MESSAGE,
+      0 > attrs_;
+  ::google::protobuf::internal::ArenaStringPtr name_;
+  ::google::protobuf::internal::ArenaStringPtr device_;
+  ::google::protobuf::int64 id_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fprotobuf_2feager_5fservice_2eproto;
+};
+// -------------------------------------------------------------------
+
+class QueueItem : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.eager.QueueItem) */ {
+ public:
+  QueueItem();
+  virtual ~QueueItem();
+
+  QueueItem(const QueueItem& from);
+
+  inline QueueItem& operator=(const QueueItem& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  QueueItem(QueueItem&& from) noexcept
+    : QueueItem() {
+    *this = ::std::move(from);
+  }
+
+  inline QueueItem& operator=(QueueItem&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const QueueItem& default_instance();
+
+  enum ItemCase {
+    kHandleToDecref = 1,
+    kOperation = 2,
+    ITEM_NOT_SET = 0,
+  };
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const QueueItem* internal_default_instance() {
+    return reinterpret_cast<const QueueItem*>(
+               &_QueueItem_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    3;
+
+  void Swap(QueueItem* other);
+  friend void swap(QueueItem& a, QueueItem& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline QueueItem* New() const final {
+    return CreateMaybeMessage<QueueItem>(NULL);
+  }
+
+  QueueItem* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<QueueItem>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const QueueItem& from);
+  void MergeFrom(const QueueItem& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(QueueItem* other);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return NULL;
+  }
+  inline void* MaybeArenaPtr() const {
+    return NULL;
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // .tensorflow.eager.RemoteTensorHandle handle_to_decref = 1;
+  bool has_handle_to_decref() const;
+  void clear_handle_to_decref();
+  static const int kHandleToDecrefFieldNumber = 1;
+  const ::tensorflow::eager::RemoteTensorHandle& handle_to_decref() const;
+  ::tensorflow::eager::RemoteTensorHandle* release_handle_to_decref();
+  ::tensorflow::eager::RemoteTensorHandle* mutable_handle_to_decref();
+  void set_allocated_handle_to_decref(::tensorflow::eager::RemoteTensorHandle* handle_to_decref);
+
+  // .tensorflow.eager.Operation operation = 2;
+  bool has_operation() const;
+  void clear_operation();
+  static const int kOperationFieldNumber = 2;
+  const ::tensorflow::eager::Operation& operation() const;
+  ::tensorflow::eager::Operation* release_operation();
+  ::tensorflow::eager::Operation* mutable_operation();
+  void set_allocated_operation(::tensorflow::eager::Operation* operation);
+
+  void clear_item();
+  ItemCase item_case() const;
+  // @@protoc_insertion_point(class_scope:tensorflow.eager.QueueItem)
+ private:
+  class HasBitSetters;
+  void set_has_handle_to_decref();
+  void set_has_operation();
+
+  inline bool has_item() const;
+  inline void clear_has_item();
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  union ItemUnion {
+    ItemUnion() {}
+    ::tensorflow::eager::RemoteTensorHandle* handle_to_decref_;
+    ::tensorflow::eager::Operation* operation_;
+  } item_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  ::google::protobuf::uint32 _oneof_case_[1];
+
+  friend struct ::TableStruct_tensorflow_2fcore_2fprotobuf_2feager_5fservice_2eproto;
+};
+// -------------------------------------------------------------------
+
+class CreateContextRequest : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.eager.CreateContextRequest) */ {
+ public:
+  CreateContextRequest();
+  virtual ~CreateContextRequest();
+
+  CreateContextRequest(const CreateContextRequest& from);
+
+  inline CreateContextRequest& operator=(const CreateContextRequest& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  CreateContextRequest(CreateContextRequest&& from) noexcept
+    : CreateContextRequest() {
+    *this = ::std::move(from);
+  }
+
+  inline CreateContextRequest& operator=(CreateContextRequest&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const CreateContextRequest& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const CreateContextRequest* internal_default_instance() {
+    return reinterpret_cast<const CreateContextRequest*>(
+               &_CreateContextRequest_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    4;
+
+  void Swap(CreateContextRequest* other);
+  friend void swap(CreateContextRequest& a, CreateContextRequest& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline CreateContextRequest* New() const final {
+    return CreateMaybeMessage<CreateContextRequest>(NULL);
+  }
+
+  CreateContextRequest* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<CreateContextRequest>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const CreateContextRequest& from);
+  void MergeFrom(const CreateContextRequest& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(CreateContextRequest* other);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return NULL;
+  }
+  inline void* MaybeArenaPtr() const {
+    return NULL;
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // .tensorflow.ServerDef server_def = 1;
+  bool has_server_def() const;
+  void clear_server_def();
+  static const int kServerDefFieldNumber = 1;
+  const ::tensorflow::ServerDef& server_def() const;
+  ::tensorflow::ServerDef* release_server_def();
+  ::tensorflow::ServerDef* mutable_server_def();
+  void set_allocated_server_def(::tensorflow::ServerDef* server_def);
+
+  // .tensorflow.VersionDef version_def = 4;
+  bool has_version_def() const;
+  void clear_version_def();
+  static const int kVersionDefFieldNumber = 4;
+  const ::tensorflow::VersionDef& version_def() const;
+  ::tensorflow::VersionDef* release_version_def();
+  ::tensorflow::VersionDef* mutable_version_def();
+  void set_allocated_version_def(::tensorflow::VersionDef* version_def);
+
+  // int64 keep_alive_secs = 3;
+  void clear_keep_alive_secs();
+  static const int kKeepAliveSecsFieldNumber = 3;
+  ::google::protobuf::int64 keep_alive_secs() const;
+  void set_keep_alive_secs(::google::protobuf::int64 value);
+
+  // bool async = 2;
+  void clear_async();
+  static const int kAsyncFieldNumber = 2;
+  bool async() const;
+  void set_async(bool value);
+
+  // @@protoc_insertion_point(class_scope:tensorflow.eager.CreateContextRequest)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  ::tensorflow::ServerDef* server_def_;
+  ::tensorflow::VersionDef* version_def_;
+  ::google::protobuf::int64 keep_alive_secs_;
+  bool async_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fprotobuf_2feager_5fservice_2eproto;
+};
+// -------------------------------------------------------------------
+
+class CreateContextResponse : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.eager.CreateContextResponse) */ {
+ public:
+  CreateContextResponse();
+  virtual ~CreateContextResponse();
+
+  CreateContextResponse(const CreateContextResponse& from);
+
+  inline CreateContextResponse& operator=(const CreateContextResponse& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  CreateContextResponse(CreateContextResponse&& from) noexcept
+    : CreateContextResponse() {
+    *this = ::std::move(from);
+  }
+
+  inline CreateContextResponse& operator=(CreateContextResponse&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const CreateContextResponse& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const CreateContextResponse* internal_default_instance() {
+    return reinterpret_cast<const CreateContextResponse*>(
+               &_CreateContextResponse_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    5;
+
+  void Swap(CreateContextResponse* other);
+  friend void swap(CreateContextResponse& a, CreateContextResponse& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline CreateContextResponse* New() const final {
+    return CreateMaybeMessage<CreateContextResponse>(NULL);
+  }
+
+  CreateContextResponse* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<CreateContextResponse>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const CreateContextResponse& from);
+  void MergeFrom(const CreateContextResponse& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(CreateContextResponse* other);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return NULL;
+  }
+  inline void* MaybeArenaPtr() const {
+    return NULL;
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // repeated .tensorflow.DeviceAttributes device_attributes = 2;
+  int device_attributes_size() const;
+  void clear_device_attributes();
+  static const int kDeviceAttributesFieldNumber = 2;
+  ::tensorflow::DeviceAttributes* mutable_device_attributes(int index);
+  ::google::protobuf::RepeatedPtrField< ::tensorflow::DeviceAttributes >*
+      mutable_device_attributes();
+  const ::tensorflow::DeviceAttributes& device_attributes(int index) const;
+  ::tensorflow::DeviceAttributes* add_device_attributes();
+  const ::google::protobuf::RepeatedPtrField< ::tensorflow::DeviceAttributes >&
+      device_attributes() const;
+
+  // fixed64 context_id = 1;
+  void clear_context_id();
+  static const int kContextIdFieldNumber = 1;
+  ::google::protobuf::uint64 context_id() const;
+  void set_context_id(::google::protobuf::uint64 value);
+
+  // @@protoc_insertion_point(class_scope:tensorflow.eager.CreateContextResponse)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  ::google::protobuf::RepeatedPtrField< ::tensorflow::DeviceAttributes > device_attributes_;
+  ::google::protobuf::uint64 context_id_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fprotobuf_2feager_5fservice_2eproto;
+};
+// -------------------------------------------------------------------
+
+class EnqueueRequest : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.eager.EnqueueRequest) */ {
+ public:
+  EnqueueRequest();
+  virtual ~EnqueueRequest();
+
+  EnqueueRequest(const EnqueueRequest& from);
+
+  inline EnqueueRequest& operator=(const EnqueueRequest& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  EnqueueRequest(EnqueueRequest&& from) noexcept
+    : EnqueueRequest() {
+    *this = ::std::move(from);
+  }
+
+  inline EnqueueRequest& operator=(EnqueueRequest&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const EnqueueRequest& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const EnqueueRequest* internal_default_instance() {
+    return reinterpret_cast<const EnqueueRequest*>(
+               &_EnqueueRequest_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    6;
+
+  void Swap(EnqueueRequest* other);
+  friend void swap(EnqueueRequest& a, EnqueueRequest& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline EnqueueRequest* New() const final {
+    return CreateMaybeMessage<EnqueueRequest>(NULL);
+  }
+
+  EnqueueRequest* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<EnqueueRequest>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const EnqueueRequest& from);
+  void MergeFrom(const EnqueueRequest& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(EnqueueRequest* other);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return NULL;
+  }
+  inline void* MaybeArenaPtr() const {
+    return NULL;
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // repeated .tensorflow.eager.QueueItem queue = 3;
+  int queue_size() const;
+  void clear_queue();
+  static const int kQueueFieldNumber = 3;
+  ::tensorflow::eager::QueueItem* mutable_queue(int index);
+  ::google::protobuf::RepeatedPtrField< ::tensorflow::eager::QueueItem >*
+      mutable_queue();
+  const ::tensorflow::eager::QueueItem& queue(int index) const;
+  ::tensorflow::eager::QueueItem* add_queue();
+  const ::google::protobuf::RepeatedPtrField< ::tensorflow::eager::QueueItem >&
+      queue() const;
+
+  // fixed64 context_id = 1;
+  void clear_context_id();
+  static const int kContextIdFieldNumber = 1;
+  ::google::protobuf::uint64 context_id() const;
+  void set_context_id(::google::protobuf::uint64 value);
+
+  // @@protoc_insertion_point(class_scope:tensorflow.eager.EnqueueRequest)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  ::google::protobuf::RepeatedPtrField< ::tensorflow::eager::QueueItem > queue_;
+  ::google::protobuf::uint64 context_id_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fprotobuf_2feager_5fservice_2eproto;
+};
+// -------------------------------------------------------------------
+
+class EnqueueResponse : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.eager.EnqueueResponse) */ {
+ public:
+  EnqueueResponse();
+  virtual ~EnqueueResponse();
+
+  EnqueueResponse(const EnqueueResponse& from);
+
+  inline EnqueueResponse& operator=(const EnqueueResponse& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  EnqueueResponse(EnqueueResponse&& from) noexcept
+    : EnqueueResponse() {
+    *this = ::std::move(from);
+  }
+
+  inline EnqueueResponse& operator=(EnqueueResponse&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const EnqueueResponse& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const EnqueueResponse* internal_default_instance() {
+    return reinterpret_cast<const EnqueueResponse*>(
+               &_EnqueueResponse_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    7;
+
+  void Swap(EnqueueResponse* other);
+  friend void swap(EnqueueResponse& a, EnqueueResponse& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline EnqueueResponse* New() const final {
+    return CreateMaybeMessage<EnqueueResponse>(NULL);
+  }
+
+  EnqueueResponse* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<EnqueueResponse>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const EnqueueResponse& from);
+  void MergeFrom(const EnqueueResponse& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(EnqueueResponse* other);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return NULL;
+  }
+  inline void* MaybeArenaPtr() const {
+    return NULL;
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // @@protoc_insertion_point(class_scope:tensorflow.eager.EnqueueResponse)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fprotobuf_2feager_5fservice_2eproto;
+};
+// -------------------------------------------------------------------
+
+class WaitQueueDoneRequest : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.eager.WaitQueueDoneRequest) */ {
+ public:
+  WaitQueueDoneRequest();
+  virtual ~WaitQueueDoneRequest();
+
+  WaitQueueDoneRequest(const WaitQueueDoneRequest& from);
+
+  inline WaitQueueDoneRequest& operator=(const WaitQueueDoneRequest& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  WaitQueueDoneRequest(WaitQueueDoneRequest&& from) noexcept
+    : WaitQueueDoneRequest() {
+    *this = ::std::move(from);
+  }
+
+  inline WaitQueueDoneRequest& operator=(WaitQueueDoneRequest&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const WaitQueueDoneRequest& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const WaitQueueDoneRequest* internal_default_instance() {
+    return reinterpret_cast<const WaitQueueDoneRequest*>(
+               &_WaitQueueDoneRequest_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    8;
+
+  void Swap(WaitQueueDoneRequest* other);
+  friend void swap(WaitQueueDoneRequest& a, WaitQueueDoneRequest& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline WaitQueueDoneRequest* New() const final {
+    return CreateMaybeMessage<WaitQueueDoneRequest>(NULL);
+  }
+
+  WaitQueueDoneRequest* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<WaitQueueDoneRequest>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const WaitQueueDoneRequest& from);
+  void MergeFrom(const WaitQueueDoneRequest& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(WaitQueueDoneRequest* other);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return NULL;
+  }
+  inline void* MaybeArenaPtr() const {
+    return NULL;
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // repeated int64 op_id = 2;
+  int op_id_size() const;
+  void clear_op_id();
+  static const int kOpIdFieldNumber = 2;
+  ::google::protobuf::int64 op_id(int index) const;
+  void set_op_id(int index, ::google::protobuf::int64 value);
+  void add_op_id(::google::protobuf::int64 value);
+  const ::google::protobuf::RepeatedField< ::google::protobuf::int64 >&
+      op_id() const;
+  ::google::protobuf::RepeatedField< ::google::protobuf::int64 >*
+      mutable_op_id();
+
+  // fixed64 context_id = 1;
+  void clear_context_id();
+  static const int kContextIdFieldNumber = 1;
+  ::google::protobuf::uint64 context_id() const;
+  void set_context_id(::google::protobuf::uint64 value);
+
+  // @@protoc_insertion_point(class_scope:tensorflow.eager.WaitQueueDoneRequest)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  ::google::protobuf::RepeatedField< ::google::protobuf::int64 > op_id_;
+  mutable std::atomic<int> _op_id_cached_byte_size_;
+  ::google::protobuf::uint64 context_id_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fprotobuf_2feager_5fservice_2eproto;
+};
+// -------------------------------------------------------------------
+
+class WaitQueueDoneResponse : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.eager.WaitQueueDoneResponse) */ {
+ public:
+  WaitQueueDoneResponse();
+  virtual ~WaitQueueDoneResponse();
+
+  WaitQueueDoneResponse(const WaitQueueDoneResponse& from);
+
+  inline WaitQueueDoneResponse& operator=(const WaitQueueDoneResponse& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  WaitQueueDoneResponse(WaitQueueDoneResponse&& from) noexcept
+    : WaitQueueDoneResponse() {
+    *this = ::std::move(from);
+  }
+
+  inline WaitQueueDoneResponse& operator=(WaitQueueDoneResponse&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const WaitQueueDoneResponse& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const WaitQueueDoneResponse* internal_default_instance() {
+    return reinterpret_cast<const WaitQueueDoneResponse*>(
+               &_WaitQueueDoneResponse_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    9;
+
+  void Swap(WaitQueueDoneResponse* other);
+  friend void swap(WaitQueueDoneResponse& a, WaitQueueDoneResponse& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline WaitQueueDoneResponse* New() const final {
+    return CreateMaybeMessage<WaitQueueDoneResponse>(NULL);
+  }
+
+  WaitQueueDoneResponse* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<WaitQueueDoneResponse>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const WaitQueueDoneResponse& from);
+  void MergeFrom(const WaitQueueDoneResponse& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(WaitQueueDoneResponse* other);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return NULL;
+  }
+  inline void* MaybeArenaPtr() const {
+    return NULL;
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // @@protoc_insertion_point(class_scope:tensorflow.eager.WaitQueueDoneResponse)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fprotobuf_2feager_5fservice_2eproto;
+};
+// -------------------------------------------------------------------
+
+class KeepAliveRequest : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.eager.KeepAliveRequest) */ {
+ public:
+  KeepAliveRequest();
+  virtual ~KeepAliveRequest();
+
+  KeepAliveRequest(const KeepAliveRequest& from);
+
+  inline KeepAliveRequest& operator=(const KeepAliveRequest& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  KeepAliveRequest(KeepAliveRequest&& from) noexcept
+    : KeepAliveRequest() {
+    *this = ::std::move(from);
+  }
+
+  inline KeepAliveRequest& operator=(KeepAliveRequest&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const KeepAliveRequest& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const KeepAliveRequest* internal_default_instance() {
+    return reinterpret_cast<const KeepAliveRequest*>(
+               &_KeepAliveRequest_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    10;
+
+  void Swap(KeepAliveRequest* other);
+  friend void swap(KeepAliveRequest& a, KeepAliveRequest& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline KeepAliveRequest* New() const final {
+    return CreateMaybeMessage<KeepAliveRequest>(NULL);
+  }
+
+  KeepAliveRequest* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<KeepAliveRequest>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const KeepAliveRequest& from);
+  void MergeFrom(const KeepAliveRequest& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(KeepAliveRequest* other);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return NULL;
+  }
+  inline void* MaybeArenaPtr() const {
+    return NULL;
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // fixed64 context_id = 1;
+  void clear_context_id();
+  static const int kContextIdFieldNumber = 1;
+  ::google::protobuf::uint64 context_id() const;
+  void set_context_id(::google::protobuf::uint64 value);
+
+  // @@protoc_insertion_point(class_scope:tensorflow.eager.KeepAliveRequest)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  ::google::protobuf::uint64 context_id_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fprotobuf_2feager_5fservice_2eproto;
+};
+// -------------------------------------------------------------------
+
+class KeepAliveResponse : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.eager.KeepAliveResponse) */ {
+ public:
+  KeepAliveResponse();
+  virtual ~KeepAliveResponse();
+
+  KeepAliveResponse(const KeepAliveResponse& from);
+
+  inline KeepAliveResponse& operator=(const KeepAliveResponse& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  KeepAliveResponse(KeepAliveResponse&& from) noexcept
+    : KeepAliveResponse() {
+    *this = ::std::move(from);
+  }
+
+  inline KeepAliveResponse& operator=(KeepAliveResponse&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const KeepAliveResponse& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const KeepAliveResponse* internal_default_instance() {
+    return reinterpret_cast<const KeepAliveResponse*>(
+               &_KeepAliveResponse_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    11;
+
+  void Swap(KeepAliveResponse* other);
+  friend void swap(KeepAliveResponse& a, KeepAliveResponse& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline KeepAliveResponse* New() const final {
+    return CreateMaybeMessage<KeepAliveResponse>(NULL);
+  }
+
+  KeepAliveResponse* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<KeepAliveResponse>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const KeepAliveResponse& from);
+  void MergeFrom(const KeepAliveResponse& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(KeepAliveResponse* other);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return NULL;
+  }
+  inline void* MaybeArenaPtr() const {
+    return NULL;
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // @@protoc_insertion_point(class_scope:tensorflow.eager.KeepAliveResponse)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fprotobuf_2feager_5fservice_2eproto;
+};
+// -------------------------------------------------------------------
+
+class CloseContextRequest : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.eager.CloseContextRequest) */ {
+ public:
+  CloseContextRequest();
+  virtual ~CloseContextRequest();
+
+  CloseContextRequest(const CloseContextRequest& from);
+
+  inline CloseContextRequest& operator=(const CloseContextRequest& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  CloseContextRequest(CloseContextRequest&& from) noexcept
+    : CloseContextRequest() {
+    *this = ::std::move(from);
+  }
+
+  inline CloseContextRequest& operator=(CloseContextRequest&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const CloseContextRequest& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const CloseContextRequest* internal_default_instance() {
+    return reinterpret_cast<const CloseContextRequest*>(
+               &_CloseContextRequest_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    12;
+
+  void Swap(CloseContextRequest* other);
+  friend void swap(CloseContextRequest& a, CloseContextRequest& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline CloseContextRequest* New() const final {
+    return CreateMaybeMessage<CloseContextRequest>(NULL);
+  }
+
+  CloseContextRequest* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<CloseContextRequest>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const CloseContextRequest& from);
+  void MergeFrom(const CloseContextRequest& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(CloseContextRequest* other);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return NULL;
+  }
+  inline void* MaybeArenaPtr() const {
+    return NULL;
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // fixed64 context_id = 1;
+  void clear_context_id();
+  static const int kContextIdFieldNumber = 1;
+  ::google::protobuf::uint64 context_id() const;
+  void set_context_id(::google::protobuf::uint64 value);
+
+  // @@protoc_insertion_point(class_scope:tensorflow.eager.CloseContextRequest)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  ::google::protobuf::uint64 context_id_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fprotobuf_2feager_5fservice_2eproto;
+};
+// -------------------------------------------------------------------
+
+class CloseContextResponse : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.eager.CloseContextResponse) */ {
+ public:
+  CloseContextResponse();
+  virtual ~CloseContextResponse();
+
+  CloseContextResponse(const CloseContextResponse& from);
+
+  inline CloseContextResponse& operator=(const CloseContextResponse& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  CloseContextResponse(CloseContextResponse&& from) noexcept
+    : CloseContextResponse() {
+    *this = ::std::move(from);
+  }
+
+  inline CloseContextResponse& operator=(CloseContextResponse&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const CloseContextResponse& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const CloseContextResponse* internal_default_instance() {
+    return reinterpret_cast<const CloseContextResponse*>(
+               &_CloseContextResponse_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    13;
+
+  void Swap(CloseContextResponse* other);
+  friend void swap(CloseContextResponse& a, CloseContextResponse& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline CloseContextResponse* New() const final {
+    return CreateMaybeMessage<CloseContextResponse>(NULL);
+  }
+
+  CloseContextResponse* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<CloseContextResponse>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const CloseContextResponse& from);
+  void MergeFrom(const CloseContextResponse& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(CloseContextResponse* other);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return NULL;
+  }
+  inline void* MaybeArenaPtr() const {
+    return NULL;
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // @@protoc_insertion_point(class_scope:tensorflow.eager.CloseContextResponse)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fprotobuf_2feager_5fservice_2eproto;
+};
+// -------------------------------------------------------------------
+
+class RegisterFunctionRequest : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.eager.RegisterFunctionRequest) */ {
+ public:
+  RegisterFunctionRequest();
+  virtual ~RegisterFunctionRequest();
+
+  RegisterFunctionRequest(const RegisterFunctionRequest& from);
+
+  inline RegisterFunctionRequest& operator=(const RegisterFunctionRequest& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  RegisterFunctionRequest(RegisterFunctionRequest&& from) noexcept
+    : RegisterFunctionRequest() {
+    *this = ::std::move(from);
+  }
+
+  inline RegisterFunctionRequest& operator=(RegisterFunctionRequest&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const RegisterFunctionRequest& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const RegisterFunctionRequest* internal_default_instance() {
+    return reinterpret_cast<const RegisterFunctionRequest*>(
+               &_RegisterFunctionRequest_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    14;
+
+  void Swap(RegisterFunctionRequest* other);
+  friend void swap(RegisterFunctionRequest& a, RegisterFunctionRequest& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline RegisterFunctionRequest* New() const final {
+    return CreateMaybeMessage<RegisterFunctionRequest>(NULL);
+  }
+
+  RegisterFunctionRequest* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<RegisterFunctionRequest>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const RegisterFunctionRequest& from);
+  void MergeFrom(const RegisterFunctionRequest& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(RegisterFunctionRequest* other);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return NULL;
+  }
+  inline void* MaybeArenaPtr() const {
+    return NULL;
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // .tensorflow.FunctionDef function_def = 2;
+  bool has_function_def() const;
+  void clear_function_def();
+  static const int kFunctionDefFieldNumber = 2;
+  const ::tensorflow::FunctionDef& function_def() const;
+  ::tensorflow::FunctionDef* release_function_def();
+  ::tensorflow::FunctionDef* mutable_function_def();
+  void set_allocated_function_def(::tensorflow::FunctionDef* function_def);
+
+  // fixed64 context_id = 1;
+  void clear_context_id();
+  static const int kContextIdFieldNumber = 1;
+  ::google::protobuf::uint64 context_id() const;
+  void set_context_id(::google::protobuf::uint64 value);
+
+  // @@protoc_insertion_point(class_scope:tensorflow.eager.RegisterFunctionRequest)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  ::tensorflow::FunctionDef* function_def_;
+  ::google::protobuf::uint64 context_id_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fprotobuf_2feager_5fservice_2eproto;
+};
+// -------------------------------------------------------------------
+
+class RegisterFunctionResponse : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.eager.RegisterFunctionResponse) */ {
+ public:
+  RegisterFunctionResponse();
+  virtual ~RegisterFunctionResponse();
+
+  RegisterFunctionResponse(const RegisterFunctionResponse& from);
+
+  inline RegisterFunctionResponse& operator=(const RegisterFunctionResponse& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  RegisterFunctionResponse(RegisterFunctionResponse&& from) noexcept
+    : RegisterFunctionResponse() {
+    *this = ::std::move(from);
+  }
+
+  inline RegisterFunctionResponse& operator=(RegisterFunctionResponse&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const RegisterFunctionResponse& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const RegisterFunctionResponse* internal_default_instance() {
+    return reinterpret_cast<const RegisterFunctionResponse*>(
+               &_RegisterFunctionResponse_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    15;
+
+  void Swap(RegisterFunctionResponse* other);
+  friend void swap(RegisterFunctionResponse& a, RegisterFunctionResponse& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline RegisterFunctionResponse* New() const final {
+    return CreateMaybeMessage<RegisterFunctionResponse>(NULL);
+  }
+
+  RegisterFunctionResponse* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<RegisterFunctionResponse>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const RegisterFunctionResponse& from);
+  void MergeFrom(const RegisterFunctionResponse& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(RegisterFunctionResponse* other);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return NULL;
+  }
+  inline void* MaybeArenaPtr() const {
+    return NULL;
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // @@protoc_insertion_point(class_scope:tensorflow.eager.RegisterFunctionResponse)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fprotobuf_2feager_5fservice_2eproto;
+};
+// ===================================================================
+
+
+// ===================================================================
+
+#ifdef __GNUC__
+  #pragma GCC diagnostic push
+  #pragma GCC diagnostic ignored "-Wstrict-aliasing"
+#endif  // __GNUC__
+// RemoteTensorHandle
+
+// int64 op_id = 1;
+inline void RemoteTensorHandle::clear_op_id() {
+  op_id_ = PROTOBUF_LONGLONG(0);
+}
+inline ::google::protobuf::int64 RemoteTensorHandle::op_id() const {
+  // @@protoc_insertion_point(field_get:tensorflow.eager.RemoteTensorHandle.op_id)
+  return op_id_;
+}
+inline void RemoteTensorHandle::set_op_id(::google::protobuf::int64 value) {
+  
+  op_id_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.eager.RemoteTensorHandle.op_id)
+}
+
+// int32 output_num = 2;
+inline void RemoteTensorHandle::clear_output_num() {
+  output_num_ = 0;
+}
+inline ::google::protobuf::int32 RemoteTensorHandle::output_num() const {
+  // @@protoc_insertion_point(field_get:tensorflow.eager.RemoteTensorHandle.output_num)
+  return output_num_;
+}
+inline void RemoteTensorHandle::set_output_num(::google::protobuf::int32 value) {
+  
+  output_num_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.eager.RemoteTensorHandle.output_num)
+}
+
+// -------------------------------------------------------------------
+
+// -------------------------------------------------------------------
+
+// Operation
+
+// int64 id = 1;
+inline void Operation::clear_id() {
+  id_ = PROTOBUF_LONGLONG(0);
+}
+inline ::google::protobuf::int64 Operation::id() const {
+  // @@protoc_insertion_point(field_get:tensorflow.eager.Operation.id)
+  return id_;
+}
+inline void Operation::set_id(::google::protobuf::int64 value) {
+  
+  id_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.eager.Operation.id)
+}
+
+// string name = 2;
+inline void Operation::clear_name() {
+  name_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+inline const ::std::string& Operation::name() const {
+  // @@protoc_insertion_point(field_get:tensorflow.eager.Operation.name)
+  return name_.GetNoArena();
+}
+inline void Operation::set_name(const ::std::string& value) {
+  
+  name_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value);
+  // @@protoc_insertion_point(field_set:tensorflow.eager.Operation.name)
+}
+#if LANG_CXX11
+inline void Operation::set_name(::std::string&& value) {
+  
+  name_.SetNoArena(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value));
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.eager.Operation.name)
+}
+#endif
+inline void Operation::set_name(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  name_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value));
+  // @@protoc_insertion_point(field_set_char:tensorflow.eager.Operation.name)
+}
+inline void Operation::set_name(const char* value, size_t size) {
+  
+  name_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      ::std::string(reinterpret_cast<const char*>(value), size));
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.eager.Operation.name)
+}
+inline ::std::string* Operation::mutable_name() {
+  
+  // @@protoc_insertion_point(field_mutable:tensorflow.eager.Operation.name)
+  return name_.MutableNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+inline ::std::string* Operation::release_name() {
+  // @@protoc_insertion_point(field_release:tensorflow.eager.Operation.name)
+  
+  return name_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+inline void Operation::set_allocated_name(::std::string* name) {
+  if (name != NULL) {
+    
+  } else {
+    
+  }
+  name_.SetAllocatedNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), name);
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.eager.Operation.name)
+}
+
+// repeated .tensorflow.eager.RemoteTensorHandle inputs = 3;
+inline int Operation::inputs_size() const {
+  return inputs_.size();
+}
+inline void Operation::clear_inputs() {
+  inputs_.Clear();
+}
+inline ::tensorflow::eager::RemoteTensorHandle* Operation::mutable_inputs(int index) {
+  // @@protoc_insertion_point(field_mutable:tensorflow.eager.Operation.inputs)
+  return inputs_.Mutable(index);
+}
+inline ::google::protobuf::RepeatedPtrField< ::tensorflow::eager::RemoteTensorHandle >*
+Operation::mutable_inputs() {
+  // @@protoc_insertion_point(field_mutable_list:tensorflow.eager.Operation.inputs)
+  return &inputs_;
+}
+inline const ::tensorflow::eager::RemoteTensorHandle& Operation::inputs(int index) const {
+  // @@protoc_insertion_point(field_get:tensorflow.eager.Operation.inputs)
+  return inputs_.Get(index);
+}
+inline ::tensorflow::eager::RemoteTensorHandle* Operation::add_inputs() {
+  // @@protoc_insertion_point(field_add:tensorflow.eager.Operation.inputs)
+  return inputs_.Add();
+}
+inline const ::google::protobuf::RepeatedPtrField< ::tensorflow::eager::RemoteTensorHandle >&
+Operation::inputs() const {
+  // @@protoc_insertion_point(field_list:tensorflow.eager.Operation.inputs)
+  return inputs_;
+}
+
+// repeated int64 control_op_ids = 4;
+inline int Operation::control_op_ids_size() const {
+  return control_op_ids_.size();
+}
+inline void Operation::clear_control_op_ids() {
+  control_op_ids_.Clear();
+}
+inline ::google::protobuf::int64 Operation::control_op_ids(int index) const {
+  // @@protoc_insertion_point(field_get:tensorflow.eager.Operation.control_op_ids)
+  return control_op_ids_.Get(index);
+}
+inline void Operation::set_control_op_ids(int index, ::google::protobuf::int64 value) {
+  control_op_ids_.Set(index, value);
+  // @@protoc_insertion_point(field_set:tensorflow.eager.Operation.control_op_ids)
+}
+inline void Operation::add_control_op_ids(::google::protobuf::int64 value) {
+  control_op_ids_.Add(value);
+  // @@protoc_insertion_point(field_add:tensorflow.eager.Operation.control_op_ids)
+}
+inline const ::google::protobuf::RepeatedField< ::google::protobuf::int64 >&
+Operation::control_op_ids() const {
+  // @@protoc_insertion_point(field_list:tensorflow.eager.Operation.control_op_ids)
+  return control_op_ids_;
+}
+inline ::google::protobuf::RepeatedField< ::google::protobuf::int64 >*
+Operation::mutable_control_op_ids() {
+  // @@protoc_insertion_point(field_mutable_list:tensorflow.eager.Operation.control_op_ids)
+  return &control_op_ids_;
+}
+
+// map<string, .tensorflow.AttrValue> attrs = 5;
+inline int Operation::attrs_size() const {
+  return attrs_.size();
+}
+inline const ::google::protobuf::Map< ::std::string, ::tensorflow::AttrValue >&
+Operation::attrs() const {
+  // @@protoc_insertion_point(field_map:tensorflow.eager.Operation.attrs)
+  return attrs_.GetMap();
+}
+inline ::google::protobuf::Map< ::std::string, ::tensorflow::AttrValue >*
+Operation::mutable_attrs() {
+  // @@protoc_insertion_point(field_mutable_map:tensorflow.eager.Operation.attrs)
+  return attrs_.MutableMap();
+}
+
+// string device = 6;
+inline void Operation::clear_device() {
+  device_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+inline const ::std::string& Operation::device() const {
+  // @@protoc_insertion_point(field_get:tensorflow.eager.Operation.device)
+  return device_.GetNoArena();
+}
+inline void Operation::set_device(const ::std::string& value) {
+  
+  device_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value);
+  // @@protoc_insertion_point(field_set:tensorflow.eager.Operation.device)
+}
+#if LANG_CXX11
+inline void Operation::set_device(::std::string&& value) {
+  
+  device_.SetNoArena(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value));
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.eager.Operation.device)
+}
+#endif
+inline void Operation::set_device(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  device_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value));
+  // @@protoc_insertion_point(field_set_char:tensorflow.eager.Operation.device)
+}
+inline void Operation::set_device(const char* value, size_t size) {
+  
+  device_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      ::std::string(reinterpret_cast<const char*>(value), size));
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.eager.Operation.device)
+}
+inline ::std::string* Operation::mutable_device() {
+  
+  // @@protoc_insertion_point(field_mutable:tensorflow.eager.Operation.device)
+  return device_.MutableNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+inline ::std::string* Operation::release_device() {
+  // @@protoc_insertion_point(field_release:tensorflow.eager.Operation.device)
+  
+  return device_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+inline void Operation::set_allocated_device(::std::string* device) {
+  if (device != NULL) {
+    
+  } else {
+    
+  }
+  device_.SetAllocatedNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), device);
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.eager.Operation.device)
+}
+
+// -------------------------------------------------------------------
+
+// QueueItem
+
+// .tensorflow.eager.RemoteTensorHandle handle_to_decref = 1;
+inline bool QueueItem::has_handle_to_decref() const {
+  return item_case() == kHandleToDecref;
+}
+inline void QueueItem::set_has_handle_to_decref() {
+  _oneof_case_[0] = kHandleToDecref;
+}
+inline void QueueItem::clear_handle_to_decref() {
+  if (has_handle_to_decref()) {
+    delete item_.handle_to_decref_;
+    clear_has_item();
+  }
+}
+inline ::tensorflow::eager::RemoteTensorHandle* QueueItem::release_handle_to_decref() {
+  // @@protoc_insertion_point(field_release:tensorflow.eager.QueueItem.handle_to_decref)
+  if (has_handle_to_decref()) {
+    clear_has_item();
+      ::tensorflow::eager::RemoteTensorHandle* temp = item_.handle_to_decref_;
+    item_.handle_to_decref_ = NULL;
+    return temp;
+  } else {
+    return NULL;
+  }
+}
+inline const ::tensorflow::eager::RemoteTensorHandle& QueueItem::handle_to_decref() const {
+  // @@protoc_insertion_point(field_get:tensorflow.eager.QueueItem.handle_to_decref)
+  return has_handle_to_decref()
+      ? *item_.handle_to_decref_
+      : *reinterpret_cast< ::tensorflow::eager::RemoteTensorHandle*>(&::tensorflow::eager::_RemoteTensorHandle_default_instance_);
+}
+inline ::tensorflow::eager::RemoteTensorHandle* QueueItem::mutable_handle_to_decref() {
+  if (!has_handle_to_decref()) {
+    clear_item();
+    set_has_handle_to_decref();
+    item_.handle_to_decref_ = CreateMaybeMessage< ::tensorflow::eager::RemoteTensorHandle >(
+        GetArenaNoVirtual());
+  }
+  // @@protoc_insertion_point(field_mutable:tensorflow.eager.QueueItem.handle_to_decref)
+  return item_.handle_to_decref_;
+}
+
+// .tensorflow.eager.Operation operation = 2;
+inline bool QueueItem::has_operation() const {
+  return item_case() == kOperation;
+}
+inline void QueueItem::set_has_operation() {
+  _oneof_case_[0] = kOperation;
+}
+inline void QueueItem::clear_operation() {
+  if (has_operation()) {
+    delete item_.operation_;
+    clear_has_item();
+  }
+}
+inline ::tensorflow::eager::Operation* QueueItem::release_operation() {
+  // @@protoc_insertion_point(field_release:tensorflow.eager.QueueItem.operation)
+  if (has_operation()) {
+    clear_has_item();
+      ::tensorflow::eager::Operation* temp = item_.operation_;
+    item_.operation_ = NULL;
+    return temp;
+  } else {
+    return NULL;
+  }
+}
+inline const ::tensorflow::eager::Operation& QueueItem::operation() const {
+  // @@protoc_insertion_point(field_get:tensorflow.eager.QueueItem.operation)
+  return has_operation()
+      ? *item_.operation_
+      : *reinterpret_cast< ::tensorflow::eager::Operation*>(&::tensorflow::eager::_Operation_default_instance_);
+}
+inline ::tensorflow::eager::Operation* QueueItem::mutable_operation() {
+  if (!has_operation()) {
+    clear_item();
+    set_has_operation();
+    item_.operation_ = CreateMaybeMessage< ::tensorflow::eager::Operation >(
+        GetArenaNoVirtual());
+  }
+  // @@protoc_insertion_point(field_mutable:tensorflow.eager.QueueItem.operation)
+  return item_.operation_;
+}
+
+inline bool QueueItem::has_item() const {
+  return item_case() != ITEM_NOT_SET;
+}
+inline void QueueItem::clear_has_item() {
+  _oneof_case_[0] = ITEM_NOT_SET;
+}
+inline QueueItem::ItemCase QueueItem::item_case() const {
+  return QueueItem::ItemCase(_oneof_case_[0]);
+}
+// -------------------------------------------------------------------
+
+// CreateContextRequest
+
+// .tensorflow.ServerDef server_def = 1;
+inline bool CreateContextRequest::has_server_def() const {
+  return this != internal_default_instance() && server_def_ != NULL;
+}
+inline const ::tensorflow::ServerDef& CreateContextRequest::server_def() const {
+  const ::tensorflow::ServerDef* p = server_def_;
+  // @@protoc_insertion_point(field_get:tensorflow.eager.CreateContextRequest.server_def)
+  return p != NULL ? *p : *reinterpret_cast<const ::tensorflow::ServerDef*>(
+      &::tensorflow::_ServerDef_default_instance_);
+}
+inline ::tensorflow::ServerDef* CreateContextRequest::release_server_def() {
+  // @@protoc_insertion_point(field_release:tensorflow.eager.CreateContextRequest.server_def)
+  
+  ::tensorflow::ServerDef* temp = server_def_;
+  server_def_ = NULL;
+  return temp;
+}
+inline ::tensorflow::ServerDef* CreateContextRequest::mutable_server_def() {
+  
+  if (server_def_ == NULL) {
+    auto* p = CreateMaybeMessage<::tensorflow::ServerDef>(GetArenaNoVirtual());
+    server_def_ = p;
+  }
+  // @@protoc_insertion_point(field_mutable:tensorflow.eager.CreateContextRequest.server_def)
+  return server_def_;
+}
+inline void CreateContextRequest::set_allocated_server_def(::tensorflow::ServerDef* server_def) {
+  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
+  if (message_arena == NULL) {
+    delete reinterpret_cast< ::google::protobuf::MessageLite*>(server_def_);
+  }
+  if (server_def) {
+    ::google::protobuf::Arena* submessage_arena =
+      reinterpret_cast<::google::protobuf::MessageLite*>(server_def)->GetArena();
+    if (message_arena != submessage_arena) {
+      server_def = ::google::protobuf::internal::GetOwnedMessage(
+          message_arena, server_def, submessage_arena);
+    }
+    
+  } else {
+    
+  }
+  server_def_ = server_def;
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.eager.CreateContextRequest.server_def)
+}
+
+// bool async = 2;
+inline void CreateContextRequest::clear_async() {
+  async_ = false;
+}
+inline bool CreateContextRequest::async() const {
+  // @@protoc_insertion_point(field_get:tensorflow.eager.CreateContextRequest.async)
+  return async_;
+}
+inline void CreateContextRequest::set_async(bool value) {
+  
+  async_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.eager.CreateContextRequest.async)
+}
+
+// int64 keep_alive_secs = 3;
+inline void CreateContextRequest::clear_keep_alive_secs() {
+  keep_alive_secs_ = PROTOBUF_LONGLONG(0);
+}
+inline ::google::protobuf::int64 CreateContextRequest::keep_alive_secs() const {
+  // @@protoc_insertion_point(field_get:tensorflow.eager.CreateContextRequest.keep_alive_secs)
+  return keep_alive_secs_;
+}
+inline void CreateContextRequest::set_keep_alive_secs(::google::protobuf::int64 value) {
+  
+  keep_alive_secs_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.eager.CreateContextRequest.keep_alive_secs)
+}
+
+// .tensorflow.VersionDef version_def = 4;
+inline bool CreateContextRequest::has_version_def() const {
+  return this != internal_default_instance() && version_def_ != NULL;
+}
+inline const ::tensorflow::VersionDef& CreateContextRequest::version_def() const {
+  const ::tensorflow::VersionDef* p = version_def_;
+  // @@protoc_insertion_point(field_get:tensorflow.eager.CreateContextRequest.version_def)
+  return p != NULL ? *p : *reinterpret_cast<const ::tensorflow::VersionDef*>(
+      &::tensorflow::_VersionDef_default_instance_);
+}
+inline ::tensorflow::VersionDef* CreateContextRequest::release_version_def() {
+  // @@protoc_insertion_point(field_release:tensorflow.eager.CreateContextRequest.version_def)
+  
+  ::tensorflow::VersionDef* temp = version_def_;
+  version_def_ = NULL;
+  return temp;
+}
+inline ::tensorflow::VersionDef* CreateContextRequest::mutable_version_def() {
+  
+  if (version_def_ == NULL) {
+    auto* p = CreateMaybeMessage<::tensorflow::VersionDef>(GetArenaNoVirtual());
+    version_def_ = p;
+  }
+  // @@protoc_insertion_point(field_mutable:tensorflow.eager.CreateContextRequest.version_def)
+  return version_def_;
+}
+inline void CreateContextRequest::set_allocated_version_def(::tensorflow::VersionDef* version_def) {
+  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
+  if (message_arena == NULL) {
+    delete reinterpret_cast< ::google::protobuf::MessageLite*>(version_def_);
+  }
+  if (version_def) {
+    ::google::protobuf::Arena* submessage_arena =
+      reinterpret_cast<::google::protobuf::MessageLite*>(version_def)->GetArena();
+    if (message_arena != submessage_arena) {
+      version_def = ::google::protobuf::internal::GetOwnedMessage(
+          message_arena, version_def, submessage_arena);
+    }
+    
+  } else {
+    
+  }
+  version_def_ = version_def;
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.eager.CreateContextRequest.version_def)
+}
+
+// -------------------------------------------------------------------
+
+// CreateContextResponse
+
+// fixed64 context_id = 1;
+inline void CreateContextResponse::clear_context_id() {
+  context_id_ = PROTOBUF_ULONGLONG(0);
+}
+inline ::google::protobuf::uint64 CreateContextResponse::context_id() const {
+  // @@protoc_insertion_point(field_get:tensorflow.eager.CreateContextResponse.context_id)
+  return context_id_;
+}
+inline void CreateContextResponse::set_context_id(::google::protobuf::uint64 value) {
+  
+  context_id_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.eager.CreateContextResponse.context_id)
+}
+
+// repeated .tensorflow.DeviceAttributes device_attributes = 2;
+inline int CreateContextResponse::device_attributes_size() const {
+  return device_attributes_.size();
+}
+inline ::tensorflow::DeviceAttributes* CreateContextResponse::mutable_device_attributes(int index) {
+  // @@protoc_insertion_point(field_mutable:tensorflow.eager.CreateContextResponse.device_attributes)
+  return device_attributes_.Mutable(index);
+}
+inline ::google::protobuf::RepeatedPtrField< ::tensorflow::DeviceAttributes >*
+CreateContextResponse::mutable_device_attributes() {
+  // @@protoc_insertion_point(field_mutable_list:tensorflow.eager.CreateContextResponse.device_attributes)
+  return &device_attributes_;
+}
+inline const ::tensorflow::DeviceAttributes& CreateContextResponse::device_attributes(int index) const {
+  // @@protoc_insertion_point(field_get:tensorflow.eager.CreateContextResponse.device_attributes)
+  return device_attributes_.Get(index);
+}
+inline ::tensorflow::DeviceAttributes* CreateContextResponse::add_device_attributes() {
+  // @@protoc_insertion_point(field_add:tensorflow.eager.CreateContextResponse.device_attributes)
+  return device_attributes_.Add();
+}
+inline const ::google::protobuf::RepeatedPtrField< ::tensorflow::DeviceAttributes >&
+CreateContextResponse::device_attributes() const {
+  // @@protoc_insertion_point(field_list:tensorflow.eager.CreateContextResponse.device_attributes)
+  return device_attributes_;
+}
+
+// -------------------------------------------------------------------
+
+// EnqueueRequest
+
+// fixed64 context_id = 1;
+inline void EnqueueRequest::clear_context_id() {
+  context_id_ = PROTOBUF_ULONGLONG(0);
+}
+inline ::google::protobuf::uint64 EnqueueRequest::context_id() const {
+  // @@protoc_insertion_point(field_get:tensorflow.eager.EnqueueRequest.context_id)
+  return context_id_;
+}
+inline void EnqueueRequest::set_context_id(::google::protobuf::uint64 value) {
+  
+  context_id_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.eager.EnqueueRequest.context_id)
+}
+
+// repeated .tensorflow.eager.QueueItem queue = 3;
+inline int EnqueueRequest::queue_size() const {
+  return queue_.size();
+}
+inline void EnqueueRequest::clear_queue() {
+  queue_.Clear();
+}
+inline ::tensorflow::eager::QueueItem* EnqueueRequest::mutable_queue(int index) {
+  // @@protoc_insertion_point(field_mutable:tensorflow.eager.EnqueueRequest.queue)
+  return queue_.Mutable(index);
+}
+inline ::google::protobuf::RepeatedPtrField< ::tensorflow::eager::QueueItem >*
+EnqueueRequest::mutable_queue() {
+  // @@protoc_insertion_point(field_mutable_list:tensorflow.eager.EnqueueRequest.queue)
+  return &queue_;
+}
+inline const ::tensorflow::eager::QueueItem& EnqueueRequest::queue(int index) const {
+  // @@protoc_insertion_point(field_get:tensorflow.eager.EnqueueRequest.queue)
+  return queue_.Get(index);
+}
+inline ::tensorflow::eager::QueueItem* EnqueueRequest::add_queue() {
+  // @@protoc_insertion_point(field_add:tensorflow.eager.EnqueueRequest.queue)
+  return queue_.Add();
+}
+inline const ::google::protobuf::RepeatedPtrField< ::tensorflow::eager::QueueItem >&
+EnqueueRequest::queue() const {
+  // @@protoc_insertion_point(field_list:tensorflow.eager.EnqueueRequest.queue)
+  return queue_;
+}
+
+// -------------------------------------------------------------------
+
+// EnqueueResponse
+
+// -------------------------------------------------------------------
+
+// WaitQueueDoneRequest
+
+// fixed64 context_id = 1;
+inline void WaitQueueDoneRequest::clear_context_id() {
+  context_id_ = PROTOBUF_ULONGLONG(0);
+}
+inline ::google::protobuf::uint64 WaitQueueDoneRequest::context_id() const {
+  // @@protoc_insertion_point(field_get:tensorflow.eager.WaitQueueDoneRequest.context_id)
+  return context_id_;
+}
+inline void WaitQueueDoneRequest::set_context_id(::google::protobuf::uint64 value) {
+  
+  context_id_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.eager.WaitQueueDoneRequest.context_id)
+}
+
+// repeated int64 op_id = 2;
+inline int WaitQueueDoneRequest::op_id_size() const {
+  return op_id_.size();
+}
+inline void WaitQueueDoneRequest::clear_op_id() {
+  op_id_.Clear();
+}
+inline ::google::protobuf::int64 WaitQueueDoneRequest::op_id(int index) const {
+  // @@protoc_insertion_point(field_get:tensorflow.eager.WaitQueueDoneRequest.op_id)
+  return op_id_.Get(index);
+}
+inline void WaitQueueDoneRequest::set_op_id(int index, ::google::protobuf::int64 value) {
+  op_id_.Set(index, value);
+  // @@protoc_insertion_point(field_set:tensorflow.eager.WaitQueueDoneRequest.op_id)
+}
+inline void WaitQueueDoneRequest::add_op_id(::google::protobuf::int64 value) {
+  op_id_.Add(value);
+  // @@protoc_insertion_point(field_add:tensorflow.eager.WaitQueueDoneRequest.op_id)
+}
+inline const ::google::protobuf::RepeatedField< ::google::protobuf::int64 >&
+WaitQueueDoneRequest::op_id() const {
+  // @@protoc_insertion_point(field_list:tensorflow.eager.WaitQueueDoneRequest.op_id)
+  return op_id_;
+}
+inline ::google::protobuf::RepeatedField< ::google::protobuf::int64 >*
+WaitQueueDoneRequest::mutable_op_id() {
+  // @@protoc_insertion_point(field_mutable_list:tensorflow.eager.WaitQueueDoneRequest.op_id)
+  return &op_id_;
+}
+
+// -------------------------------------------------------------------
+
+// WaitQueueDoneResponse
+
+// -------------------------------------------------------------------
+
+// KeepAliveRequest
+
+// fixed64 context_id = 1;
+inline void KeepAliveRequest::clear_context_id() {
+  context_id_ = PROTOBUF_ULONGLONG(0);
+}
+inline ::google::protobuf::uint64 KeepAliveRequest::context_id() const {
+  // @@protoc_insertion_point(field_get:tensorflow.eager.KeepAliveRequest.context_id)
+  return context_id_;
+}
+inline void KeepAliveRequest::set_context_id(::google::protobuf::uint64 value) {
+  
+  context_id_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.eager.KeepAliveRequest.context_id)
+}
+
+// -------------------------------------------------------------------
+
+// KeepAliveResponse
+
+// -------------------------------------------------------------------
+
+// CloseContextRequest
+
+// fixed64 context_id = 1;
+inline void CloseContextRequest::clear_context_id() {
+  context_id_ = PROTOBUF_ULONGLONG(0);
+}
+inline ::google::protobuf::uint64 CloseContextRequest::context_id() const {
+  // @@protoc_insertion_point(field_get:tensorflow.eager.CloseContextRequest.context_id)
+  return context_id_;
+}
+inline void CloseContextRequest::set_context_id(::google::protobuf::uint64 value) {
+  
+  context_id_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.eager.CloseContextRequest.context_id)
+}
+
+// -------------------------------------------------------------------
+
+// CloseContextResponse
+
+// -------------------------------------------------------------------
+
+// RegisterFunctionRequest
+
+// fixed64 context_id = 1;
+inline void RegisterFunctionRequest::clear_context_id() {
+  context_id_ = PROTOBUF_ULONGLONG(0);
+}
+inline ::google::protobuf::uint64 RegisterFunctionRequest::context_id() const {
+  // @@protoc_insertion_point(field_get:tensorflow.eager.RegisterFunctionRequest.context_id)
+  return context_id_;
+}
+inline void RegisterFunctionRequest::set_context_id(::google::protobuf::uint64 value) {
+  
+  context_id_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.eager.RegisterFunctionRequest.context_id)
+}
+
+// .tensorflow.FunctionDef function_def = 2;
+inline bool RegisterFunctionRequest::has_function_def() const {
+  return this != internal_default_instance() && function_def_ != NULL;
+}
+inline const ::tensorflow::FunctionDef& RegisterFunctionRequest::function_def() const {
+  const ::tensorflow::FunctionDef* p = function_def_;
+  // @@protoc_insertion_point(field_get:tensorflow.eager.RegisterFunctionRequest.function_def)
+  return p != NULL ? *p : *reinterpret_cast<const ::tensorflow::FunctionDef*>(
+      &::tensorflow::_FunctionDef_default_instance_);
+}
+inline ::tensorflow::FunctionDef* RegisterFunctionRequest::release_function_def() {
+  // @@protoc_insertion_point(field_release:tensorflow.eager.RegisterFunctionRequest.function_def)
+  
+  ::tensorflow::FunctionDef* temp = function_def_;
+  function_def_ = NULL;
+  return temp;
+}
+inline ::tensorflow::FunctionDef* RegisterFunctionRequest::mutable_function_def() {
+  
+  if (function_def_ == NULL) {
+    auto* p = CreateMaybeMessage<::tensorflow::FunctionDef>(GetArenaNoVirtual());
+    function_def_ = p;
+  }
+  // @@protoc_insertion_point(field_mutable:tensorflow.eager.RegisterFunctionRequest.function_def)
+  return function_def_;
+}
+inline void RegisterFunctionRequest::set_allocated_function_def(::tensorflow::FunctionDef* function_def) {
+  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
+  if (message_arena == NULL) {
+    delete reinterpret_cast< ::google::protobuf::MessageLite*>(function_def_);
+  }
+  if (function_def) {
+    ::google::protobuf::Arena* submessage_arena =
+      reinterpret_cast<::google::protobuf::MessageLite*>(function_def)->GetArena();
+    if (message_arena != submessage_arena) {
+      function_def = ::google::protobuf::internal::GetOwnedMessage(
+          message_arena, function_def, submessage_arena);
+    }
+    
+  } else {
+    
+  }
+  function_def_ = function_def;
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.eager.RegisterFunctionRequest.function_def)
+}
+
+// -------------------------------------------------------------------
+
+// RegisterFunctionResponse
+
+#ifdef __GNUC__
+  #pragma GCC diagnostic pop
+#endif  // __GNUC__
+// -------------------------------------------------------------------
+
+// -------------------------------------------------------------------
+
+// -------------------------------------------------------------------
+
+// -------------------------------------------------------------------
+
+// -------------------------------------------------------------------
+
+// -------------------------------------------------------------------
+
+// -------------------------------------------------------------------
+
+// -------------------------------------------------------------------
+
+// -------------------------------------------------------------------
+
+// -------------------------------------------------------------------
+
+// -------------------------------------------------------------------
+
+// -------------------------------------------------------------------
+
+// -------------------------------------------------------------------
+
+// -------------------------------------------------------------------
+
+// -------------------------------------------------------------------
+
+
+// @@protoc_insertion_point(namespace_scope)
+
+}  // namespace eager
+}  // namespace tensorflow
+
+// @@protoc_insertion_point(global_scope)
+
+#include <google/protobuf/port_undef.inc>
+#endif  // PROTOBUF_INCLUDED_tensorflow_2fcore_2fprotobuf_2feager_5fservice_2eproto
diff --git a/tensorflow/core/protobuf/eager_service.proto b/tensorflow/core/protobuf/eager_service.proto
new file mode 100644 (file)
index 0000000..9a7d0ed
--- /dev/null
@@ -0,0 +1,165 @@
+syntax = "proto3";
+
+package tensorflow.eager;
+
+import "tensorflow/core/framework/attr_value.proto";
+import "tensorflow/core/framework/device_attributes.proto";
+import "tensorflow/core/framework/function.proto";
+import "tensorflow/core/framework/versions.proto";
+import "tensorflow/core/protobuf/tensorflow_server.proto";
+
+message RemoteTensorHandle {
+  // The ID of the operation that produced this tensor.
+  int64 op_id = 1;
+  // The index into the outputs of the operation that produced this tensor.
+  int32 output_num = 2;
+}
+
+// A proto representation of an eager operation.
+message Operation {
+  // A unique identifier for the operation. Set by the client so that the client
+  // can uniquely identify the outputs of the scheduled operation.
+  //
+  // In the initial implementation, sending duplicate IDs has undefined
+  // behaviour, but additional constraints may be placed upon this in the
+  // future.
+  int64 id = 1;
+  string name = 2;
+  repeated RemoteTensorHandle inputs = 3;
+
+  // Control Operation IDs that will be respected when ops are re-ordered by
+  // async execution. If async execution (+ op re-ordering) is not enabled, this
+  // should have no effect.
+  repeated int64 control_op_ids = 4;
+  map<string, AttrValue> attrs = 5;
+  string device = 6;
+}
+
+message QueueItem {
+  // The remote executor should be able to handle either executing ops directly,
+  // or releasing any unused tensor handles, since the tensor lifetime is
+  // maintained by the client.
+  oneof item {
+    RemoteTensorHandle handle_to_decref = 1;
+    Operation operation = 2;
+  }
+}
+
+message CreateContextRequest {
+  // Identifies the full cluster, and this particular worker's position within.
+  ServerDef server_def = 1;
+
+  // Whether the ops on the worker should be executed synchronously or
+  // asynchronously. By default, ops are executed synchronously.
+  bool async = 2;
+
+  // Number of seconds to keep the context alive. If more than keep_alive_secs
+  // has passed since a particular context has been communicated with, it will
+  // be garbage collected.
+  int64 keep_alive_secs = 3;
+
+  // This is the version for all the ops that will be enqueued by the client.
+  VersionDef version_def = 4;
+}
+
+message CreateContextResponse {
+  // The ID of the created context. This is usually a randomly generated number,
+  // that will be used to identify the context in future requests to the
+  // service. Contexts are not persisted through server restarts.
+  fixed64 context_id = 1;
+
+  // List of devices that are locally accessible to the worker.
+  repeated DeviceAttributes device_attributes = 2;
+}
+
+message EnqueueRequest {
+  fixed64 context_id = 1;
+
+  repeated QueueItem queue = 3;
+}
+
+message EnqueueResponse {
+}
+
+message WaitQueueDoneRequest {
+  fixed64 context_id = 1;
+
+  // Ids to wait on. If empty, wait on everything currently pending.
+  repeated int64 op_id = 2;
+}
+
+message WaitQueueDoneResponse {
+  // TODO(nareshmodi): Consider adding NodeExecStats here to be able to
+  // propagate some stats.
+}
+
+message KeepAliveRequest {
+  fixed64 context_id = 1;
+}
+
+message KeepAliveResponse {
+}
+
+message CloseContextRequest {
+  fixed64 context_id = 1;
+}
+
+message CloseContextResponse {
+}
+
+message RegisterFunctionRequest {
+  fixed64 context_id = 1;
+
+  FunctionDef function_def = 2;
+}
+
+message RegisterFunctionResponse {
+}
+
+////////////////////////////////////////////////////////////////////////////////
+//
+// Eager Service defines a TensorFlow service that executes operations eagerly
+// on a set of local devices, on behalf of a remote Eager executor.
+//
+// The service impl will keep track of the various clients and devices it has
+// access to and allows the client to enqueue ops on any devices that it is able
+// to access and schedule data transfers from/to any of the peers.
+//
+// A client can generate multiple contexts to be able to independently execute
+// operations, but cannot share data between the two contexts.
+//
+// NOTE: Even though contexts generated by clients should be independent, the
+// lower level tensorflow execution engine is not, so they might share some data
+// (e.g. a Device's ResourceMgr).
+//
+////////////////////////////////////////////////////////////////////////////////
+service EagerService {
+  // This initializes the worker, informing it about the other workers in the
+  // cluster and exchanging authentication tokens which will be used in all
+  // other RPCs to detect whether the worker has restarted.
+  rpc CreateContext(CreateContextRequest) returns (CreateContextResponse);
+
+  // This takes a list of Execute and DeleteTensorHandle operations and enqueues
+  // (in async mode) or executes (in sync mode) them on the remote server.
+  // All outputs of ops which were not explicitly deleted with
+  // DeleteTensorHandle entries will be assumed to be alive and are usable by
+  // future calls to Enqueue.
+  rpc Enqueue(EnqueueRequest) returns (EnqueueResponse);
+
+  // Takes a set of op IDs and waits until those ops are done. Returns any error
+  // in the stream so far.
+  rpc WaitQueueDone(WaitQueueDoneRequest) returns (WaitQueueDoneResponse);
+
+  // Contexts are always created with a deadline and no RPCs within a deadline
+  // will trigger a context garbage collection. KeepAlive calls can be used to
+  // delay this.
+  rpc KeepAlive(KeepAliveRequest) returns (KeepAliveResponse);
+
+  // Closes the context. No calls to other methods using the existing context ID
+  // are valid after this.
+  rpc CloseContext(CloseContextRequest) returns (CloseContextResponse);
+
+  // Takes a FunctionDef and makes it enqueable on the remote worker.
+  rpc RegisterFunction(RegisterFunctionRequest)
+      returns (RegisterFunctionResponse);
+}
diff --git a/tensorflow/core/protobuf/master.pb.cc b/tensorflow/core/protobuf/master.pb.cc
new file mode 100644 (file)
index 0000000..3848deb
--- /dev/null
@@ -0,0 +1,8654 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: tensorflow/core/protobuf/master.proto
+
+#include "tensorflow/core/protobuf/master.pb.h"
+
+#include <algorithm>
+
+#include <google/protobuf/stubs/common.h>
+#include <google/protobuf/io/coded_stream.h>
+#include <google/protobuf/extension_set.h>
+#include <google/protobuf/wire_format_lite_inl.h>
+#include <google/protobuf/descriptor.h>
+#include <google/protobuf/generated_message_reflection.h>
+#include <google/protobuf/reflection_ops.h>
+#include <google/protobuf/wire_format.h>
+// @@protoc_insertion_point(includes)
+#include <google/protobuf/port_def.inc>
+
+extern PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fframework_2fdevice_5fattributes_2eproto ::google::protobuf::internal::SCCInfo<1> scc_info_DeviceAttributes_tensorflow_2fcore_2fframework_2fdevice_5fattributes_2eproto;
+extern PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fframework_2fgraph_2eproto ::google::protobuf::internal::SCCInfo<3> scc_info_GraphDef_tensorflow_2fcore_2fframework_2fgraph_2eproto;
+extern PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fframework_2ftensor_2eproto ::google::protobuf::internal::SCCInfo<2> scc_info_TensorProto_tensorflow_2fcore_2fframework_2ftensor_2eproto;
+extern PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto ::google::protobuf::internal::SCCInfo<2> scc_info_CallableOptions_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto;
+extern PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto ::google::protobuf::internal::SCCInfo<2> scc_info_RunOptions_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto;
+extern PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto ::google::protobuf::internal::SCCInfo<3> scc_info_RunMetadata_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto;
+extern PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto ::google::protobuf::internal::SCCInfo<7> scc_info_ConfigProto_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto;
+extern PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fprotobuf_2fnamed_5ftensor_2eproto ::google::protobuf::internal::SCCInfo<1> scc_info_NamedTensorProto_tensorflow_2fcore_2fprotobuf_2fnamed_5ftensor_2eproto;
+namespace tensorflow {
+class CreateSessionRequestDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<CreateSessionRequest> _instance;
+} _CreateSessionRequest_default_instance_;
+class CreateSessionResponseDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<CreateSessionResponse> _instance;
+} _CreateSessionResponse_default_instance_;
+class ExtendSessionRequestDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<ExtendSessionRequest> _instance;
+} _ExtendSessionRequest_default_instance_;
+class ExtendSessionResponseDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<ExtendSessionResponse> _instance;
+} _ExtendSessionResponse_default_instance_;
+class RunStepRequestDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<RunStepRequest> _instance;
+} _RunStepRequest_default_instance_;
+class RunStepResponseDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<RunStepResponse> _instance;
+} _RunStepResponse_default_instance_;
+class PartialRunSetupRequestDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<PartialRunSetupRequest> _instance;
+} _PartialRunSetupRequest_default_instance_;
+class PartialRunSetupResponseDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<PartialRunSetupResponse> _instance;
+} _PartialRunSetupResponse_default_instance_;
+class CloseSessionRequestDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<CloseSessionRequest> _instance;
+} _CloseSessionRequest_default_instance_;
+class CloseSessionResponseDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<CloseSessionResponse> _instance;
+} _CloseSessionResponse_default_instance_;
+class ResetRequestDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<ResetRequest> _instance;
+} _ResetRequest_default_instance_;
+class ResetResponseDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<ResetResponse> _instance;
+} _ResetResponse_default_instance_;
+class ListDevicesRequestDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<ListDevicesRequest> _instance;
+} _ListDevicesRequest_default_instance_;
+class ListDevicesResponseDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<ListDevicesResponse> _instance;
+} _ListDevicesResponse_default_instance_;
+class MakeCallableRequestDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<MakeCallableRequest> _instance;
+} _MakeCallableRequest_default_instance_;
+class MakeCallableResponseDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<MakeCallableResponse> _instance;
+} _MakeCallableResponse_default_instance_;
+class RunCallableRequestDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<RunCallableRequest> _instance;
+} _RunCallableRequest_default_instance_;
+class RunCallableResponseDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<RunCallableResponse> _instance;
+} _RunCallableResponse_default_instance_;
+class ReleaseCallableRequestDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<ReleaseCallableRequest> _instance;
+} _ReleaseCallableRequest_default_instance_;
+class ReleaseCallableResponseDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<ReleaseCallableResponse> _instance;
+} _ReleaseCallableResponse_default_instance_;
+}  // namespace tensorflow
+static void InitDefaultsCreateSessionRequest_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_CreateSessionRequest_default_instance_;
+    new (ptr) ::tensorflow::CreateSessionRequest();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::CreateSessionRequest::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<2> scc_info_CreateSessionRequest_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 2, InitDefaultsCreateSessionRequest_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto}, {
+      &scc_info_GraphDef_tensorflow_2fcore_2fframework_2fgraph_2eproto.base,
+      &scc_info_ConfigProto_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto.base,}};
+
+static void InitDefaultsCreateSessionResponse_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_CreateSessionResponse_default_instance_;
+    new (ptr) ::tensorflow::CreateSessionResponse();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::CreateSessionResponse::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<0> scc_info_CreateSessionResponse_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsCreateSessionResponse_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto}, {}};
+
+static void InitDefaultsExtendSessionRequest_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_ExtendSessionRequest_default_instance_;
+    new (ptr) ::tensorflow::ExtendSessionRequest();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::ExtendSessionRequest::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<1> scc_info_ExtendSessionRequest_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsExtendSessionRequest_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto}, {
+      &scc_info_GraphDef_tensorflow_2fcore_2fframework_2fgraph_2eproto.base,}};
+
+static void InitDefaultsExtendSessionResponse_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_ExtendSessionResponse_default_instance_;
+    new (ptr) ::tensorflow::ExtendSessionResponse();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::ExtendSessionResponse::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<0> scc_info_ExtendSessionResponse_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsExtendSessionResponse_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto}, {}};
+
+static void InitDefaultsRunStepRequest_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_RunStepRequest_default_instance_;
+    new (ptr) ::tensorflow::RunStepRequest();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::RunStepRequest::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<2> scc_info_RunStepRequest_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 2, InitDefaultsRunStepRequest_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto}, {
+      &scc_info_NamedTensorProto_tensorflow_2fcore_2fprotobuf_2fnamed_5ftensor_2eproto.base,
+      &scc_info_RunOptions_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto.base,}};
+
+static void InitDefaultsRunStepResponse_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_RunStepResponse_default_instance_;
+    new (ptr) ::tensorflow::RunStepResponse();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::RunStepResponse::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<2> scc_info_RunStepResponse_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 2, InitDefaultsRunStepResponse_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto}, {
+      &scc_info_NamedTensorProto_tensorflow_2fcore_2fprotobuf_2fnamed_5ftensor_2eproto.base,
+      &scc_info_RunMetadata_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto.base,}};
+
+static void InitDefaultsPartialRunSetupRequest_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_PartialRunSetupRequest_default_instance_;
+    new (ptr) ::tensorflow::PartialRunSetupRequest();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::PartialRunSetupRequest::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<0> scc_info_PartialRunSetupRequest_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsPartialRunSetupRequest_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto}, {}};
+
+static void InitDefaultsPartialRunSetupResponse_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_PartialRunSetupResponse_default_instance_;
+    new (ptr) ::tensorflow::PartialRunSetupResponse();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::PartialRunSetupResponse::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<0> scc_info_PartialRunSetupResponse_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsPartialRunSetupResponse_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto}, {}};
+
+static void InitDefaultsCloseSessionRequest_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_CloseSessionRequest_default_instance_;
+    new (ptr) ::tensorflow::CloseSessionRequest();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::CloseSessionRequest::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<0> scc_info_CloseSessionRequest_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsCloseSessionRequest_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto}, {}};
+
+static void InitDefaultsCloseSessionResponse_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_CloseSessionResponse_default_instance_;
+    new (ptr) ::tensorflow::CloseSessionResponse();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::CloseSessionResponse::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<0> scc_info_CloseSessionResponse_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsCloseSessionResponse_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto}, {}};
+
+static void InitDefaultsResetRequest_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_ResetRequest_default_instance_;
+    new (ptr) ::tensorflow::ResetRequest();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::ResetRequest::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<0> scc_info_ResetRequest_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsResetRequest_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto}, {}};
+
+static void InitDefaultsResetResponse_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_ResetResponse_default_instance_;
+    new (ptr) ::tensorflow::ResetResponse();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::ResetResponse::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<0> scc_info_ResetResponse_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsResetResponse_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto}, {}};
+
+static void InitDefaultsListDevicesRequest_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_ListDevicesRequest_default_instance_;
+    new (ptr) ::tensorflow::ListDevicesRequest();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::ListDevicesRequest::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<0> scc_info_ListDevicesRequest_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsListDevicesRequest_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto}, {}};
+
+static void InitDefaultsListDevicesResponse_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_ListDevicesResponse_default_instance_;
+    new (ptr) ::tensorflow::ListDevicesResponse();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::ListDevicesResponse::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<1> scc_info_ListDevicesResponse_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsListDevicesResponse_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto}, {
+      &scc_info_DeviceAttributes_tensorflow_2fcore_2fframework_2fdevice_5fattributes_2eproto.base,}};
+
+static void InitDefaultsMakeCallableRequest_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_MakeCallableRequest_default_instance_;
+    new (ptr) ::tensorflow::MakeCallableRequest();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::MakeCallableRequest::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<1> scc_info_MakeCallableRequest_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsMakeCallableRequest_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto}, {
+      &scc_info_CallableOptions_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto.base,}};
+
+static void InitDefaultsMakeCallableResponse_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_MakeCallableResponse_default_instance_;
+    new (ptr) ::tensorflow::MakeCallableResponse();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::MakeCallableResponse::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<0> scc_info_MakeCallableResponse_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsMakeCallableResponse_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto}, {}};
+
+static void InitDefaultsRunCallableRequest_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_RunCallableRequest_default_instance_;
+    new (ptr) ::tensorflow::RunCallableRequest();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::RunCallableRequest::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<1> scc_info_RunCallableRequest_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsRunCallableRequest_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto}, {
+      &scc_info_TensorProto_tensorflow_2fcore_2fframework_2ftensor_2eproto.base,}};
+
+static void InitDefaultsRunCallableResponse_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_RunCallableResponse_default_instance_;
+    new (ptr) ::tensorflow::RunCallableResponse();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::RunCallableResponse::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<2> scc_info_RunCallableResponse_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 2, InitDefaultsRunCallableResponse_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto}, {
+      &scc_info_TensorProto_tensorflow_2fcore_2fframework_2ftensor_2eproto.base,
+      &scc_info_RunMetadata_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto.base,}};
+
+static void InitDefaultsReleaseCallableRequest_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_ReleaseCallableRequest_default_instance_;
+    new (ptr) ::tensorflow::ReleaseCallableRequest();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::ReleaseCallableRequest::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<0> scc_info_ReleaseCallableRequest_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsReleaseCallableRequest_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto}, {}};
+
+static void InitDefaultsReleaseCallableResponse_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_ReleaseCallableResponse_default_instance_;
+    new (ptr) ::tensorflow::ReleaseCallableResponse();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::ReleaseCallableResponse::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<0> scc_info_ReleaseCallableResponse_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsReleaseCallableResponse_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto}, {}};
+
+void InitDefaults_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto() {
+  ::google::protobuf::internal::InitSCC(&scc_info_CreateSessionRequest_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_CreateSessionResponse_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_ExtendSessionRequest_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_ExtendSessionResponse_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_RunStepRequest_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_RunStepResponse_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_PartialRunSetupRequest_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_PartialRunSetupResponse_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_CloseSessionRequest_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_CloseSessionResponse_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_ResetRequest_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_ResetResponse_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_ListDevicesRequest_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_ListDevicesResponse_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_MakeCallableRequest_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_MakeCallableResponse_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_RunCallableRequest_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_RunCallableResponse_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_ReleaseCallableRequest_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_ReleaseCallableResponse_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto.base);
+}
+
+::google::protobuf::Metadata file_level_metadata_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto[20];
+constexpr ::google::protobuf::EnumDescriptor const** file_level_enum_descriptors_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto = nullptr;
+constexpr ::google::protobuf::ServiceDescriptor const** file_level_service_descriptors_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto = nullptr;
+
+const ::google::protobuf::uint32 TableStruct_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto::offsets[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = {
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::CreateSessionRequest, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::CreateSessionRequest, graph_def_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::CreateSessionRequest, config_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::CreateSessionRequest, target_),
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::CreateSessionResponse, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::CreateSessionResponse, session_handle_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::CreateSessionResponse, graph_version_),
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::ExtendSessionRequest, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::ExtendSessionRequest, session_handle_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::ExtendSessionRequest, graph_def_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::ExtendSessionRequest, current_graph_version_),
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::ExtendSessionResponse, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::ExtendSessionResponse, new_graph_version_),
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::RunStepRequest, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::RunStepRequest, session_handle_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::RunStepRequest, feed_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::RunStepRequest, fetch_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::RunStepRequest, target_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::RunStepRequest, options_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::RunStepRequest, partial_run_handle_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::RunStepRequest, store_errors_in_response_body_),
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::RunStepResponse, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::RunStepResponse, tensor_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::RunStepResponse, metadata_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::RunStepResponse, status_code_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::RunStepResponse, status_error_message_),
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::PartialRunSetupRequest, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::PartialRunSetupRequest, session_handle_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::PartialRunSetupRequest, feed_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::PartialRunSetupRequest, fetch_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::PartialRunSetupRequest, target_),
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::PartialRunSetupResponse, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::PartialRunSetupResponse, partial_run_handle_),
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::CloseSessionRequest, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::CloseSessionRequest, session_handle_),
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::CloseSessionResponse, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::ResetRequest, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::ResetRequest, container_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::ResetRequest, device_filters_),
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::ResetResponse, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::ListDevicesRequest, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::ListDevicesRequest, session_handle_),
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::ListDevicesResponse, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::ListDevicesResponse, local_device_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::ListDevicesResponse, remote_device_),
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::MakeCallableRequest, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::MakeCallableRequest, session_handle_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::MakeCallableRequest, options_),
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::MakeCallableResponse, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::MakeCallableResponse, handle_),
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::RunCallableRequest, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::RunCallableRequest, session_handle_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::RunCallableRequest, handle_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::RunCallableRequest, feed_),
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::RunCallableResponse, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::RunCallableResponse, fetch_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::RunCallableResponse, metadata_),
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::ReleaseCallableRequest, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::ReleaseCallableRequest, session_handle_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::ReleaseCallableRequest, handle_),
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::ReleaseCallableResponse, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+};
+static const ::google::protobuf::internal::MigrationSchema schemas[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = {
+  { 0, -1, sizeof(::tensorflow::CreateSessionRequest)},
+  { 8, -1, sizeof(::tensorflow::CreateSessionResponse)},
+  { 15, -1, sizeof(::tensorflow::ExtendSessionRequest)},
+  { 23, -1, sizeof(::tensorflow::ExtendSessionResponse)},
+  { 29, -1, sizeof(::tensorflow::RunStepRequest)},
+  { 41, -1, sizeof(::tensorflow::RunStepResponse)},
+  { 50, -1, sizeof(::tensorflow::PartialRunSetupRequest)},
+  { 59, -1, sizeof(::tensorflow::PartialRunSetupResponse)},
+  { 65, -1, sizeof(::tensorflow::CloseSessionRequest)},
+  { 71, -1, sizeof(::tensorflow::CloseSessionResponse)},
+  { 76, -1, sizeof(::tensorflow::ResetRequest)},
+  { 83, -1, sizeof(::tensorflow::ResetResponse)},
+  { 88, -1, sizeof(::tensorflow::ListDevicesRequest)},
+  { 94, -1, sizeof(::tensorflow::ListDevicesResponse)},
+  { 101, -1, sizeof(::tensorflow::MakeCallableRequest)},
+  { 108, -1, sizeof(::tensorflow::MakeCallableResponse)},
+  { 114, -1, sizeof(::tensorflow::RunCallableRequest)},
+  { 122, -1, sizeof(::tensorflow::RunCallableResponse)},
+  { 129, -1, sizeof(::tensorflow::ReleaseCallableRequest)},
+  { 136, -1, sizeof(::tensorflow::ReleaseCallableResponse)},
+};
+
+static ::google::protobuf::Message const * const file_default_instances[] = {
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_CreateSessionRequest_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_CreateSessionResponse_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_ExtendSessionRequest_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_ExtendSessionResponse_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_RunStepRequest_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_RunStepResponse_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_PartialRunSetupRequest_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_PartialRunSetupResponse_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_CloseSessionRequest_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_CloseSessionResponse_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_ResetRequest_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_ResetResponse_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_ListDevicesRequest_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_ListDevicesResponse_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_MakeCallableRequest_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_MakeCallableResponse_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_RunCallableRequest_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_RunCallableResponse_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_ReleaseCallableRequest_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_ReleaseCallableResponse_default_instance_),
+};
+
+::google::protobuf::internal::AssignDescriptorsTable assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto = {
+  {}, AddDescriptors_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto, "tensorflow/core/protobuf/master.proto", schemas,
+  file_default_instances, TableStruct_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto::offsets,
+  file_level_metadata_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto, 20, file_level_enum_descriptors_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto, file_level_service_descriptors_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto,
+};
+
+::google::protobuf::internal::DescriptorTable descriptor_table_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto = {
+  false, InitDefaults_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto, 
+  "\n%tensorflow/core/protobuf/master.proto\022"
+  "\ntensorflow\0321tensorflow/core/framework/d"
+  "evice_attributes.proto\032%tensorflow/core/"
+  "framework/graph.proto\032&tensorflow/core/f"
+  "ramework/tensor.proto\032*tensorflow/core/l"
+  "ib/core/error_codes.proto\032%tensorflow/co"
+  "re/protobuf/config.proto\032+tensorflow/cor"
+  "e/protobuf/named_tensor.proto\"x\n\024CreateS"
+  "essionRequest\022\'\n\tgraph_def\030\001 \001(\0132\024.tenso"
+  "rflow.GraphDef\022\'\n\006config\030\002 \001(\0132\027.tensorf"
+  "low.ConfigProto\022\016\n\006target\030\003 \001(\t\"F\n\025Creat"
+  "eSessionResponse\022\026\n\016session_handle\030\001 \001(\t"
+  "\022\025\n\rgraph_version\030\002 \001(\003\"v\n\024ExtendSession"
+  "Request\022\026\n\016session_handle\030\001 \001(\t\022\'\n\tgraph"
+  "_def\030\002 \001(\0132\024.tensorflow.GraphDef\022\035\n\025curr"
+  "ent_graph_version\030\003 \001(\003\"2\n\025ExtendSession"
+  "Response\022\031\n\021new_graph_version\030\004 \001(\003\"\337\001\n\016"
+  "RunStepRequest\022\026\n\016session_handle\030\001 \001(\t\022*"
+  "\n\004feed\030\002 \003(\0132\034.tensorflow.NamedTensorPro"
+  "to\022\r\n\005fetch\030\003 \003(\t\022\016\n\006target\030\004 \003(\t\022\'\n\007opt"
+  "ions\030\005 \001(\0132\026.tensorflow.RunOptions\022\032\n\022pa"
+  "rtial_run_handle\030\006 \001(\t\022%\n\035store_errors_i"
+  "n_response_body\030\007 \001(\010\"\265\001\n\017RunStepRespons"
+  "e\022,\n\006tensor\030\001 \003(\0132\034.tensorflow.NamedTens"
+  "orProto\022)\n\010metadata\030\002 \001(\0132\027.tensorflow.R"
+  "unMetadata\022+\n\013status_code\030\003 \001(\0162\026.tensor"
+  "flow.error.Code\022\034\n\024status_error_message\030"
+  "\004 \001(\t\"]\n\026PartialRunSetupRequest\022\026\n\016sessi"
+  "on_handle\030\001 \001(\t\022\014\n\004feed\030\002 \003(\t\022\r\n\005fetch\030\003"
+  " \003(\t\022\016\n\006target\030\004 \003(\t\"5\n\027PartialRunSetupR"
+  "esponse\022\032\n\022partial_run_handle\030\001 \001(\t\"-\n\023C"
+  "loseSessionRequest\022\026\n\016session_handle\030\001 \001"
+  "(\t\"\026\n\024CloseSessionResponse\"9\n\014ResetReque"
+  "st\022\021\n\tcontainer\030\001 \003(\t\022\026\n\016device_filters\030"
+  "\002 \003(\t\"\017\n\rResetResponse\",\n\022ListDevicesReq"
+  "uest\022\026\n\016session_handle\030\001 \001(\t\"~\n\023ListDevi"
+  "cesResponse\0222\n\014local_device\030\001 \003(\0132\034.tens"
+  "orflow.DeviceAttributes\0223\n\rremote_device"
+  "\030\002 \003(\0132\034.tensorflow.DeviceAttributes\"[\n\023"
+  "MakeCallableRequest\022\026\n\016session_handle\030\001 "
+  "\001(\t\022,\n\007options\030\002 \001(\0132\033.tensorflow.Callab"
+  "leOptions\"&\n\024MakeCallableResponse\022\016\n\006han"
+  "dle\030\001 \001(\003\"c\n\022RunCallableRequest\022\026\n\016sessi"
+  "on_handle\030\001 \001(\t\022\016\n\006handle\030\002 \001(\003\022%\n\004feed\030"
+  "\003 \003(\0132\027.tensorflow.TensorProto\"h\n\023RunCal"
+  "lableResponse\022&\n\005fetch\030\001 \003(\0132\027.tensorflo"
+  "w.TensorProto\022)\n\010metadata\030\002 \001(\0132\027.tensor"
+  "flow.RunMetadata\"@\n\026ReleaseCallableReque"
+  "st\022\026\n\016session_handle\030\001 \001(\t\022\016\n\006handle\030\002 \001"
+  "(\003\"\031\n\027ReleaseCallableResponseBy\n\032org.ten"
+  "sorflow.distruntimeB\030DistributedRuntimeP"
+  "rotosP\001Z<github.com/tensorflow/tensorflo"
+  "w/tensorflow/go/core/protobuf\370\001\001b\006proto3"
+,
+  "tensorflow/core/protobuf/master.proto", &assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto, 2120,
+};
+
+void AddDescriptors_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto() {
+  static constexpr ::google::protobuf::internal::InitFunc deps[6] =
+  {
+    ::AddDescriptors_tensorflow_2fcore_2fframework_2fdevice_5fattributes_2eproto,
+    ::AddDescriptors_tensorflow_2fcore_2fframework_2fgraph_2eproto,
+    ::AddDescriptors_tensorflow_2fcore_2fframework_2ftensor_2eproto,
+    ::AddDescriptors_tensorflow_2fcore_2flib_2fcore_2ferror_5fcodes_2eproto,
+    ::AddDescriptors_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto,
+    ::AddDescriptors_tensorflow_2fcore_2fprotobuf_2fnamed_5ftensor_2eproto,
+  };
+ ::google::protobuf::internal::AddDescriptors(&descriptor_table_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto, deps, 6);
+}
+
+// Force running AddDescriptors() at dynamic initialization time.
+static bool dynamic_init_dummy_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto = []() { AddDescriptors_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto(); return true; }();
+namespace tensorflow {
+
+// ===================================================================
+
+void CreateSessionRequest::InitAsDefaultInstance() {
+  ::tensorflow::_CreateSessionRequest_default_instance_._instance.get_mutable()->graph_def_ = const_cast< ::tensorflow::GraphDef*>(
+      ::tensorflow::GraphDef::internal_default_instance());
+  ::tensorflow::_CreateSessionRequest_default_instance_._instance.get_mutable()->config_ = const_cast< ::tensorflow::ConfigProto*>(
+      ::tensorflow::ConfigProto::internal_default_instance());
+}
+class CreateSessionRequest::HasBitSetters {
+ public:
+  static const ::tensorflow::GraphDef& graph_def(const CreateSessionRequest* msg);
+  static const ::tensorflow::ConfigProto& config(const CreateSessionRequest* msg);
+};
+
+const ::tensorflow::GraphDef&
+CreateSessionRequest::HasBitSetters::graph_def(const CreateSessionRequest* msg) {
+  return *msg->graph_def_;
+}
+const ::tensorflow::ConfigProto&
+CreateSessionRequest::HasBitSetters::config(const CreateSessionRequest* msg) {
+  return *msg->config_;
+}
+void CreateSessionRequest::unsafe_arena_set_allocated_graph_def(
+    ::tensorflow::GraphDef* graph_def) {
+  if (GetArenaNoVirtual() == NULL) {
+    delete graph_def_;
+  }
+  graph_def_ = graph_def;
+  if (graph_def) {
+    
+  } else {
+    
+  }
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.CreateSessionRequest.graph_def)
+}
+void CreateSessionRequest::clear_graph_def() {
+  if (GetArenaNoVirtual() == NULL && graph_def_ != NULL) {
+    delete graph_def_;
+  }
+  graph_def_ = NULL;
+}
+void CreateSessionRequest::unsafe_arena_set_allocated_config(
+    ::tensorflow::ConfigProto* config) {
+  if (GetArenaNoVirtual() == NULL) {
+    delete config_;
+  }
+  config_ = config;
+  if (config) {
+    
+  } else {
+    
+  }
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.CreateSessionRequest.config)
+}
+void CreateSessionRequest::clear_config() {
+  if (GetArenaNoVirtual() == NULL && config_ != NULL) {
+    delete config_;
+  }
+  config_ = NULL;
+}
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int CreateSessionRequest::kGraphDefFieldNumber;
+const int CreateSessionRequest::kConfigFieldNumber;
+const int CreateSessionRequest::kTargetFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+CreateSessionRequest::CreateSessionRequest()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.CreateSessionRequest)
+}
+CreateSessionRequest::CreateSessionRequest(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.CreateSessionRequest)
+}
+CreateSessionRequest::CreateSessionRequest(const CreateSessionRequest& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  target_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.target().size() > 0) {
+    target_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.target(),
+      GetArenaNoVirtual());
+  }
+  if (from.has_graph_def()) {
+    graph_def_ = new ::tensorflow::GraphDef(*from.graph_def_);
+  } else {
+    graph_def_ = NULL;
+  }
+  if (from.has_config()) {
+    config_ = new ::tensorflow::ConfigProto(*from.config_);
+  } else {
+    config_ = NULL;
+  }
+  // @@protoc_insertion_point(copy_constructor:tensorflow.CreateSessionRequest)
+}
+
+void CreateSessionRequest::SharedCtor() {
+  ::google::protobuf::internal::InitSCC(
+      &scc_info_CreateSessionRequest_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto.base);
+  target_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  ::memset(&graph_def_, 0, static_cast<size_t>(
+      reinterpret_cast<char*>(&config_) -
+      reinterpret_cast<char*>(&graph_def_)) + sizeof(config_));
+}
+
+CreateSessionRequest::~CreateSessionRequest() {
+  // @@protoc_insertion_point(destructor:tensorflow.CreateSessionRequest)
+  SharedDtor();
+}
+
+void CreateSessionRequest::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+  target_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (this != internal_default_instance()) delete graph_def_;
+  if (this != internal_default_instance()) delete config_;
+}
+
+void CreateSessionRequest::ArenaDtor(void* object) {
+  CreateSessionRequest* _this = reinterpret_cast< CreateSessionRequest* >(object);
+  (void)_this;
+}
+void CreateSessionRequest::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void CreateSessionRequest::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const CreateSessionRequest& CreateSessionRequest::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_CreateSessionRequest_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void CreateSessionRequest::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.CreateSessionRequest)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  target_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+  if (GetArenaNoVirtual() == NULL && graph_def_ != NULL) {
+    delete graph_def_;
+  }
+  graph_def_ = NULL;
+  if (GetArenaNoVirtual() == NULL && config_ != NULL) {
+    delete config_;
+  }
+  config_ = NULL;
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* CreateSessionRequest::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<CreateSessionRequest*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // .tensorflow.GraphDef graph_def = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 10) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        parser_till_end = ::tensorflow::GraphDef::_InternalParse;
+        object = msg->mutable_graph_def();
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                       ptr, newend);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+        ptr = newend;
+        break;
+      }
+      // .tensorflow.ConfigProto config = 2;
+      case 2: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 18) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        parser_till_end = ::tensorflow::ConfigProto::_InternalParse;
+        object = msg->mutable_config();
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                       ptr, newend);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+        ptr = newend;
+        break;
+      }
+      // string target = 3;
+      case 3: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 26) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("tensorflow.CreateSessionRequest.target");
+        parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+        ::std::string* str = msg->mutable_target();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool CreateSessionRequest::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.CreateSessionRequest)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // .tensorflow.GraphDef graph_def = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (10 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+               input, mutable_graph_def()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // .tensorflow.ConfigProto config = 2;
+      case 2: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (18 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+               input, mutable_config()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // string target = 3;
+      case 3: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (26 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_target()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->target().data(), static_cast<int>(this->target().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.CreateSessionRequest.target"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.CreateSessionRequest)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.CreateSessionRequest)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void CreateSessionRequest::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.CreateSessionRequest)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // .tensorflow.GraphDef graph_def = 1;
+  if (this->has_graph_def()) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      1, HasBitSetters::graph_def(this), output);
+  }
+
+  // .tensorflow.ConfigProto config = 2;
+  if (this->has_config()) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      2, HasBitSetters::config(this), output);
+  }
+
+  // string target = 3;
+  if (this->target().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->target().data(), static_cast<int>(this->target().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.CreateSessionRequest.target");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      3, this->target(), output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.CreateSessionRequest)
+}
+
+::google::protobuf::uint8* CreateSessionRequest::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.CreateSessionRequest)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // .tensorflow.GraphDef graph_def = 1;
+  if (this->has_graph_def()) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        1, HasBitSetters::graph_def(this), deterministic, target);
+  }
+
+  // .tensorflow.ConfigProto config = 2;
+  if (this->has_config()) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        2, HasBitSetters::config(this), deterministic, target);
+  }
+
+  // string target = 3;
+  if (this->target().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->target().data(), static_cast<int>(this->target().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.CreateSessionRequest.target");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        3, this->target(), target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.CreateSessionRequest)
+  return target;
+}
+
+size_t CreateSessionRequest::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.CreateSessionRequest)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // string target = 3;
+  if (this->target().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->target());
+  }
+
+  // .tensorflow.GraphDef graph_def = 1;
+  if (this->has_graph_def()) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::MessageSize(
+        *graph_def_);
+  }
+
+  // .tensorflow.ConfigProto config = 2;
+  if (this->has_config()) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::MessageSize(
+        *config_);
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void CreateSessionRequest::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.CreateSessionRequest)
+  GOOGLE_DCHECK_NE(&from, this);
+  const CreateSessionRequest* source =
+      ::google::protobuf::DynamicCastToGenerated<CreateSessionRequest>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.CreateSessionRequest)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.CreateSessionRequest)
+    MergeFrom(*source);
+  }
+}
+
+void CreateSessionRequest::MergeFrom(const CreateSessionRequest& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.CreateSessionRequest)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  if (from.target().size() > 0) {
+    set_target(from.target());
+  }
+  if (from.has_graph_def()) {
+    mutable_graph_def()->::tensorflow::GraphDef::MergeFrom(from.graph_def());
+  }
+  if (from.has_config()) {
+    mutable_config()->::tensorflow::ConfigProto::MergeFrom(from.config());
+  }
+}
+
+void CreateSessionRequest::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.CreateSessionRequest)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void CreateSessionRequest::CopyFrom(const CreateSessionRequest& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.CreateSessionRequest)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool CreateSessionRequest::IsInitialized() const {
+  return true;
+}
+
+void CreateSessionRequest::Swap(CreateSessionRequest* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    CreateSessionRequest* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void CreateSessionRequest::UnsafeArenaSwap(CreateSessionRequest* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void CreateSessionRequest::InternalSwap(CreateSessionRequest* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  target_.Swap(&other->target_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+  swap(graph_def_, other->graph_def_);
+  swap(config_, other->config_);
+}
+
+::google::protobuf::Metadata CreateSessionRequest::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+void CreateSessionResponse::InitAsDefaultInstance() {
+}
+class CreateSessionResponse::HasBitSetters {
+ public:
+};
+
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int CreateSessionResponse::kSessionHandleFieldNumber;
+const int CreateSessionResponse::kGraphVersionFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+CreateSessionResponse::CreateSessionResponse()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.CreateSessionResponse)
+}
+CreateSessionResponse::CreateSessionResponse(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.CreateSessionResponse)
+}
+CreateSessionResponse::CreateSessionResponse(const CreateSessionResponse& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  session_handle_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.session_handle().size() > 0) {
+    session_handle_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.session_handle(),
+      GetArenaNoVirtual());
+  }
+  graph_version_ = from.graph_version_;
+  // @@protoc_insertion_point(copy_constructor:tensorflow.CreateSessionResponse)
+}
+
+void CreateSessionResponse::SharedCtor() {
+  ::google::protobuf::internal::InitSCC(
+      &scc_info_CreateSessionResponse_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto.base);
+  session_handle_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  graph_version_ = PROTOBUF_LONGLONG(0);
+}
+
+CreateSessionResponse::~CreateSessionResponse() {
+  // @@protoc_insertion_point(destructor:tensorflow.CreateSessionResponse)
+  SharedDtor();
+}
+
+void CreateSessionResponse::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+  session_handle_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+
+void CreateSessionResponse::ArenaDtor(void* object) {
+  CreateSessionResponse* _this = reinterpret_cast< CreateSessionResponse* >(object);
+  (void)_this;
+}
+void CreateSessionResponse::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void CreateSessionResponse::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const CreateSessionResponse& CreateSessionResponse::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_CreateSessionResponse_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void CreateSessionResponse::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.CreateSessionResponse)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  session_handle_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+  graph_version_ = PROTOBUF_LONGLONG(0);
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* CreateSessionResponse::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<CreateSessionResponse*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // string session_handle = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 10) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("tensorflow.CreateSessionResponse.session_handle");
+        parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+        ::std::string* str = msg->mutable_session_handle();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+        break;
+      }
+      // int64 graph_version = 2;
+      case 2: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 16) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::google::protobuf::int64 value = val;
+        msg->set_graph_version(value);
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool CreateSessionResponse::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.CreateSessionResponse)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // string session_handle = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (10 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_session_handle()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->session_handle().data(), static_cast<int>(this->session_handle().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.CreateSessionResponse.session_handle"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // int64 graph_version = 2;
+      case 2: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (16 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>(
+                 input, &graph_version_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.CreateSessionResponse)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.CreateSessionResponse)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void CreateSessionResponse::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.CreateSessionResponse)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // string session_handle = 1;
+  if (this->session_handle().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->session_handle().data(), static_cast<int>(this->session_handle().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.CreateSessionResponse.session_handle");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      1, this->session_handle(), output);
+  }
+
+  // int64 graph_version = 2;
+  if (this->graph_version() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt64(2, this->graph_version(), output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.CreateSessionResponse)
+}
+
+::google::protobuf::uint8* CreateSessionResponse::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.CreateSessionResponse)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // string session_handle = 1;
+  if (this->session_handle().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->session_handle().data(), static_cast<int>(this->session_handle().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.CreateSessionResponse.session_handle");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        1, this->session_handle(), target);
+  }
+
+  // int64 graph_version = 2;
+  if (this->graph_version() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt64ToArray(2, this->graph_version(), target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.CreateSessionResponse)
+  return target;
+}
+
+size_t CreateSessionResponse::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.CreateSessionResponse)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // string session_handle = 1;
+  if (this->session_handle().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->session_handle());
+  }
+
+  // int64 graph_version = 2;
+  if (this->graph_version() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::Int64Size(
+        this->graph_version());
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void CreateSessionResponse::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.CreateSessionResponse)
+  GOOGLE_DCHECK_NE(&from, this);
+  const CreateSessionResponse* source =
+      ::google::protobuf::DynamicCastToGenerated<CreateSessionResponse>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.CreateSessionResponse)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.CreateSessionResponse)
+    MergeFrom(*source);
+  }
+}
+
+void CreateSessionResponse::MergeFrom(const CreateSessionResponse& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.CreateSessionResponse)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  if (from.session_handle().size() > 0) {
+    set_session_handle(from.session_handle());
+  }
+  if (from.graph_version() != 0) {
+    set_graph_version(from.graph_version());
+  }
+}
+
+void CreateSessionResponse::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.CreateSessionResponse)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void CreateSessionResponse::CopyFrom(const CreateSessionResponse& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.CreateSessionResponse)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool CreateSessionResponse::IsInitialized() const {
+  return true;
+}
+
+void CreateSessionResponse::Swap(CreateSessionResponse* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    CreateSessionResponse* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void CreateSessionResponse::UnsafeArenaSwap(CreateSessionResponse* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void CreateSessionResponse::InternalSwap(CreateSessionResponse* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  session_handle_.Swap(&other->session_handle_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+  swap(graph_version_, other->graph_version_);
+}
+
+::google::protobuf::Metadata CreateSessionResponse::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+void ExtendSessionRequest::InitAsDefaultInstance() {
+  ::tensorflow::_ExtendSessionRequest_default_instance_._instance.get_mutable()->graph_def_ = const_cast< ::tensorflow::GraphDef*>(
+      ::tensorflow::GraphDef::internal_default_instance());
+}
+class ExtendSessionRequest::HasBitSetters {
+ public:
+  static const ::tensorflow::GraphDef& graph_def(const ExtendSessionRequest* msg);
+};
+
+const ::tensorflow::GraphDef&
+ExtendSessionRequest::HasBitSetters::graph_def(const ExtendSessionRequest* msg) {
+  return *msg->graph_def_;
+}
+void ExtendSessionRequest::unsafe_arena_set_allocated_graph_def(
+    ::tensorflow::GraphDef* graph_def) {
+  if (GetArenaNoVirtual() == NULL) {
+    delete graph_def_;
+  }
+  graph_def_ = graph_def;
+  if (graph_def) {
+    
+  } else {
+    
+  }
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.ExtendSessionRequest.graph_def)
+}
+void ExtendSessionRequest::clear_graph_def() {
+  if (GetArenaNoVirtual() == NULL && graph_def_ != NULL) {
+    delete graph_def_;
+  }
+  graph_def_ = NULL;
+}
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int ExtendSessionRequest::kSessionHandleFieldNumber;
+const int ExtendSessionRequest::kGraphDefFieldNumber;
+const int ExtendSessionRequest::kCurrentGraphVersionFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+ExtendSessionRequest::ExtendSessionRequest()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.ExtendSessionRequest)
+}
+ExtendSessionRequest::ExtendSessionRequest(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.ExtendSessionRequest)
+}
+ExtendSessionRequest::ExtendSessionRequest(const ExtendSessionRequest& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  session_handle_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.session_handle().size() > 0) {
+    session_handle_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.session_handle(),
+      GetArenaNoVirtual());
+  }
+  if (from.has_graph_def()) {
+    graph_def_ = new ::tensorflow::GraphDef(*from.graph_def_);
+  } else {
+    graph_def_ = NULL;
+  }
+  current_graph_version_ = from.current_graph_version_;
+  // @@protoc_insertion_point(copy_constructor:tensorflow.ExtendSessionRequest)
+}
+
+void ExtendSessionRequest::SharedCtor() {
+  ::google::protobuf::internal::InitSCC(
+      &scc_info_ExtendSessionRequest_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto.base);
+  session_handle_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  ::memset(&graph_def_, 0, static_cast<size_t>(
+      reinterpret_cast<char*>(&current_graph_version_) -
+      reinterpret_cast<char*>(&graph_def_)) + sizeof(current_graph_version_));
+}
+
+ExtendSessionRequest::~ExtendSessionRequest() {
+  // @@protoc_insertion_point(destructor:tensorflow.ExtendSessionRequest)
+  SharedDtor();
+}
+
+void ExtendSessionRequest::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+  session_handle_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (this != internal_default_instance()) delete graph_def_;
+}
+
+void ExtendSessionRequest::ArenaDtor(void* object) {
+  ExtendSessionRequest* _this = reinterpret_cast< ExtendSessionRequest* >(object);
+  (void)_this;
+}
+void ExtendSessionRequest::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void ExtendSessionRequest::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const ExtendSessionRequest& ExtendSessionRequest::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_ExtendSessionRequest_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void ExtendSessionRequest::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.ExtendSessionRequest)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  session_handle_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+  if (GetArenaNoVirtual() == NULL && graph_def_ != NULL) {
+    delete graph_def_;
+  }
+  graph_def_ = NULL;
+  current_graph_version_ = PROTOBUF_LONGLONG(0);
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* ExtendSessionRequest::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<ExtendSessionRequest*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // string session_handle = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 10) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("tensorflow.ExtendSessionRequest.session_handle");
+        parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+        ::std::string* str = msg->mutable_session_handle();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+        break;
+      }
+      // .tensorflow.GraphDef graph_def = 2;
+      case 2: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 18) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        parser_till_end = ::tensorflow::GraphDef::_InternalParse;
+        object = msg->mutable_graph_def();
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                       ptr, newend);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+        ptr = newend;
+        break;
+      }
+      // int64 current_graph_version = 3;
+      case 3: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 24) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::google::protobuf::int64 value = val;
+        msg->set_current_graph_version(value);
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool ExtendSessionRequest::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.ExtendSessionRequest)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // string session_handle = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (10 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_session_handle()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->session_handle().data(), static_cast<int>(this->session_handle().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.ExtendSessionRequest.session_handle"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // .tensorflow.GraphDef graph_def = 2;
+      case 2: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (18 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+               input, mutable_graph_def()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // int64 current_graph_version = 3;
+      case 3: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (24 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>(
+                 input, &current_graph_version_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.ExtendSessionRequest)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.ExtendSessionRequest)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void ExtendSessionRequest::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.ExtendSessionRequest)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // string session_handle = 1;
+  if (this->session_handle().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->session_handle().data(), static_cast<int>(this->session_handle().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.ExtendSessionRequest.session_handle");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      1, this->session_handle(), output);
+  }
+
+  // .tensorflow.GraphDef graph_def = 2;
+  if (this->has_graph_def()) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      2, HasBitSetters::graph_def(this), output);
+  }
+
+  // int64 current_graph_version = 3;
+  if (this->current_graph_version() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt64(3, this->current_graph_version(), output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.ExtendSessionRequest)
+}
+
+::google::protobuf::uint8* ExtendSessionRequest::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.ExtendSessionRequest)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // string session_handle = 1;
+  if (this->session_handle().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->session_handle().data(), static_cast<int>(this->session_handle().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.ExtendSessionRequest.session_handle");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        1, this->session_handle(), target);
+  }
+
+  // .tensorflow.GraphDef graph_def = 2;
+  if (this->has_graph_def()) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        2, HasBitSetters::graph_def(this), deterministic, target);
+  }
+
+  // int64 current_graph_version = 3;
+  if (this->current_graph_version() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt64ToArray(3, this->current_graph_version(), target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.ExtendSessionRequest)
+  return target;
+}
+
+size_t ExtendSessionRequest::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.ExtendSessionRequest)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // string session_handle = 1;
+  if (this->session_handle().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->session_handle());
+  }
+
+  // .tensorflow.GraphDef graph_def = 2;
+  if (this->has_graph_def()) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::MessageSize(
+        *graph_def_);
+  }
+
+  // int64 current_graph_version = 3;
+  if (this->current_graph_version() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::Int64Size(
+        this->current_graph_version());
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void ExtendSessionRequest::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.ExtendSessionRequest)
+  GOOGLE_DCHECK_NE(&from, this);
+  const ExtendSessionRequest* source =
+      ::google::protobuf::DynamicCastToGenerated<ExtendSessionRequest>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.ExtendSessionRequest)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.ExtendSessionRequest)
+    MergeFrom(*source);
+  }
+}
+
+void ExtendSessionRequest::MergeFrom(const ExtendSessionRequest& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.ExtendSessionRequest)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  if (from.session_handle().size() > 0) {
+    set_session_handle(from.session_handle());
+  }
+  if (from.has_graph_def()) {
+    mutable_graph_def()->::tensorflow::GraphDef::MergeFrom(from.graph_def());
+  }
+  if (from.current_graph_version() != 0) {
+    set_current_graph_version(from.current_graph_version());
+  }
+}
+
+void ExtendSessionRequest::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.ExtendSessionRequest)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void ExtendSessionRequest::CopyFrom(const ExtendSessionRequest& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.ExtendSessionRequest)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool ExtendSessionRequest::IsInitialized() const {
+  return true;
+}
+
+void ExtendSessionRequest::Swap(ExtendSessionRequest* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    ExtendSessionRequest* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void ExtendSessionRequest::UnsafeArenaSwap(ExtendSessionRequest* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void ExtendSessionRequest::InternalSwap(ExtendSessionRequest* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  session_handle_.Swap(&other->session_handle_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+  swap(graph_def_, other->graph_def_);
+  swap(current_graph_version_, other->current_graph_version_);
+}
+
+::google::protobuf::Metadata ExtendSessionRequest::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+void ExtendSessionResponse::InitAsDefaultInstance() {
+}
+class ExtendSessionResponse::HasBitSetters {
+ public:
+};
+
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int ExtendSessionResponse::kNewGraphVersionFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+ExtendSessionResponse::ExtendSessionResponse()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.ExtendSessionResponse)
+}
+ExtendSessionResponse::ExtendSessionResponse(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.ExtendSessionResponse)
+}
+ExtendSessionResponse::ExtendSessionResponse(const ExtendSessionResponse& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  new_graph_version_ = from.new_graph_version_;
+  // @@protoc_insertion_point(copy_constructor:tensorflow.ExtendSessionResponse)
+}
+
+void ExtendSessionResponse::SharedCtor() {
+  new_graph_version_ = PROTOBUF_LONGLONG(0);
+}
+
+ExtendSessionResponse::~ExtendSessionResponse() {
+  // @@protoc_insertion_point(destructor:tensorflow.ExtendSessionResponse)
+  SharedDtor();
+}
+
+void ExtendSessionResponse::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+}
+
+void ExtendSessionResponse::ArenaDtor(void* object) {
+  ExtendSessionResponse* _this = reinterpret_cast< ExtendSessionResponse* >(object);
+  (void)_this;
+}
+void ExtendSessionResponse::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void ExtendSessionResponse::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const ExtendSessionResponse& ExtendSessionResponse::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_ExtendSessionResponse_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void ExtendSessionResponse::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.ExtendSessionResponse)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  new_graph_version_ = PROTOBUF_LONGLONG(0);
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* ExtendSessionResponse::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<ExtendSessionResponse*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // int64 new_graph_version = 4;
+      case 4: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 32) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::google::protobuf::int64 value = val;
+        msg->set_new_graph_version(value);
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool ExtendSessionResponse::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.ExtendSessionResponse)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // int64 new_graph_version = 4;
+      case 4: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (32 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>(
+                 input, &new_graph_version_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.ExtendSessionResponse)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.ExtendSessionResponse)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void ExtendSessionResponse::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.ExtendSessionResponse)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // int64 new_graph_version = 4;
+  if (this->new_graph_version() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt64(4, this->new_graph_version(), output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.ExtendSessionResponse)
+}
+
+::google::protobuf::uint8* ExtendSessionResponse::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.ExtendSessionResponse)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // int64 new_graph_version = 4;
+  if (this->new_graph_version() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt64ToArray(4, this->new_graph_version(), target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.ExtendSessionResponse)
+  return target;
+}
+
+size_t ExtendSessionResponse::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.ExtendSessionResponse)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // int64 new_graph_version = 4;
+  if (this->new_graph_version() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::Int64Size(
+        this->new_graph_version());
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void ExtendSessionResponse::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.ExtendSessionResponse)
+  GOOGLE_DCHECK_NE(&from, this);
+  const ExtendSessionResponse* source =
+      ::google::protobuf::DynamicCastToGenerated<ExtendSessionResponse>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.ExtendSessionResponse)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.ExtendSessionResponse)
+    MergeFrom(*source);
+  }
+}
+
+void ExtendSessionResponse::MergeFrom(const ExtendSessionResponse& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.ExtendSessionResponse)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  if (from.new_graph_version() != 0) {
+    set_new_graph_version(from.new_graph_version());
+  }
+}
+
+void ExtendSessionResponse::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.ExtendSessionResponse)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void ExtendSessionResponse::CopyFrom(const ExtendSessionResponse& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.ExtendSessionResponse)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool ExtendSessionResponse::IsInitialized() const {
+  return true;
+}
+
+void ExtendSessionResponse::Swap(ExtendSessionResponse* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    ExtendSessionResponse* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void ExtendSessionResponse::UnsafeArenaSwap(ExtendSessionResponse* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void ExtendSessionResponse::InternalSwap(ExtendSessionResponse* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  swap(new_graph_version_, other->new_graph_version_);
+}
+
+::google::protobuf::Metadata ExtendSessionResponse::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+void RunStepRequest::InitAsDefaultInstance() {
+  ::tensorflow::_RunStepRequest_default_instance_._instance.get_mutable()->options_ = const_cast< ::tensorflow::RunOptions*>(
+      ::tensorflow::RunOptions::internal_default_instance());
+}
+class RunStepRequest::HasBitSetters {
+ public:
+  static const ::tensorflow::RunOptions& options(const RunStepRequest* msg);
+};
+
+const ::tensorflow::RunOptions&
+RunStepRequest::HasBitSetters::options(const RunStepRequest* msg) {
+  return *msg->options_;
+}
+void RunStepRequest::clear_feed() {
+  feed_.Clear();
+}
+void RunStepRequest::unsafe_arena_set_allocated_options(
+    ::tensorflow::RunOptions* options) {
+  if (GetArenaNoVirtual() == NULL) {
+    delete options_;
+  }
+  options_ = options;
+  if (options) {
+    
+  } else {
+    
+  }
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.RunStepRequest.options)
+}
+void RunStepRequest::clear_options() {
+  if (GetArenaNoVirtual() == NULL && options_ != NULL) {
+    delete options_;
+  }
+  options_ = NULL;
+}
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int RunStepRequest::kSessionHandleFieldNumber;
+const int RunStepRequest::kFeedFieldNumber;
+const int RunStepRequest::kFetchFieldNumber;
+const int RunStepRequest::kTargetFieldNumber;
+const int RunStepRequest::kOptionsFieldNumber;
+const int RunStepRequest::kPartialRunHandleFieldNumber;
+const int RunStepRequest::kStoreErrorsInResponseBodyFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+RunStepRequest::RunStepRequest()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.RunStepRequest)
+}
+RunStepRequest::RunStepRequest(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena),
+  feed_(arena),
+  fetch_(arena),
+  target_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.RunStepRequest)
+}
+RunStepRequest::RunStepRequest(const RunStepRequest& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL),
+      feed_(from.feed_),
+      fetch_(from.fetch_),
+      target_(from.target_) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  session_handle_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.session_handle().size() > 0) {
+    session_handle_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.session_handle(),
+      GetArenaNoVirtual());
+  }
+  partial_run_handle_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.partial_run_handle().size() > 0) {
+    partial_run_handle_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.partial_run_handle(),
+      GetArenaNoVirtual());
+  }
+  if (from.has_options()) {
+    options_ = new ::tensorflow::RunOptions(*from.options_);
+  } else {
+    options_ = NULL;
+  }
+  store_errors_in_response_body_ = from.store_errors_in_response_body_;
+  // @@protoc_insertion_point(copy_constructor:tensorflow.RunStepRequest)
+}
+
+void RunStepRequest::SharedCtor() {
+  ::google::protobuf::internal::InitSCC(
+      &scc_info_RunStepRequest_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto.base);
+  session_handle_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  partial_run_handle_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  ::memset(&options_, 0, static_cast<size_t>(
+      reinterpret_cast<char*>(&store_errors_in_response_body_) -
+      reinterpret_cast<char*>(&options_)) + sizeof(store_errors_in_response_body_));
+}
+
+RunStepRequest::~RunStepRequest() {
+  // @@protoc_insertion_point(destructor:tensorflow.RunStepRequest)
+  SharedDtor();
+}
+
+void RunStepRequest::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+  session_handle_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  partial_run_handle_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (this != internal_default_instance()) delete options_;
+}
+
+void RunStepRequest::ArenaDtor(void* object) {
+  RunStepRequest* _this = reinterpret_cast< RunStepRequest* >(object);
+  (void)_this;
+}
+void RunStepRequest::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void RunStepRequest::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const RunStepRequest& RunStepRequest::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_RunStepRequest_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void RunStepRequest::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.RunStepRequest)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  feed_.Clear();
+  fetch_.Clear();
+  target_.Clear();
+  session_handle_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+  partial_run_handle_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+  if (GetArenaNoVirtual() == NULL && options_ != NULL) {
+    delete options_;
+  }
+  options_ = NULL;
+  store_errors_in_response_body_ = false;
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* RunStepRequest::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<RunStepRequest*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // string session_handle = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 10) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("tensorflow.RunStepRequest.session_handle");
+        parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+        ::std::string* str = msg->mutable_session_handle();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+        break;
+      }
+      // repeated .tensorflow.NamedTensorProto feed = 2;
+      case 2: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 18) goto handle_unusual;
+        do {
+          ptr = Varint::Parse32Inline(ptr, &size);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          parser_till_end = ::tensorflow::NamedTensorProto::_InternalParse;
+          object = msg->add_feed();
+          if (size > end - ptr) goto len_delim_till_end;
+          auto newend = ptr + size;
+          bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                         ptr, newend);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          ptr = newend;
+          if (ptr >= end) break;
+        } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 18 && (ptr += 1));
+        break;
+      }
+      // repeated string fetch = 3;
+      case 3: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 26) goto handle_unusual;
+        do {
+          ptr = Varint::Parse32Inline(ptr, &size);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          ctx->extra_parse_data().SetFieldName("tensorflow.RunStepRequest.fetch");
+          parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+          ::std::string* str = msg->add_fetch();
+          str->clear();
+          object = str;
+          if (size > end - ptr) goto len_delim_till_end;
+          auto newend = ptr + size;
+          if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+          if (ptr >= end) break;
+        } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 26 && (ptr += 1));
+        break;
+      }
+      // repeated string target = 4;
+      case 4: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 34) goto handle_unusual;
+        do {
+          ptr = Varint::Parse32Inline(ptr, &size);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          ctx->extra_parse_data().SetFieldName("tensorflow.RunStepRequest.target");
+          parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+          ::std::string* str = msg->add_target();
+          str->clear();
+          object = str;
+          if (size > end - ptr) goto len_delim_till_end;
+          auto newend = ptr + size;
+          if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+          if (ptr >= end) break;
+        } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 34 && (ptr += 1));
+        break;
+      }
+      // .tensorflow.RunOptions options = 5;
+      case 5: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 42) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        parser_till_end = ::tensorflow::RunOptions::_InternalParse;
+        object = msg->mutable_options();
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                       ptr, newend);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+        ptr = newend;
+        break;
+      }
+      // string partial_run_handle = 6;
+      case 6: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 50) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("tensorflow.RunStepRequest.partial_run_handle");
+        parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+        ::std::string* str = msg->mutable_partial_run_handle();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+        break;
+      }
+      // bool store_errors_in_response_body = 7;
+      case 7: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 56) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        bool value = val;
+        msg->set_store_errors_in_response_body(value);
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool RunStepRequest::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.RunStepRequest)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // string session_handle = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (10 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_session_handle()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->session_handle().data(), static_cast<int>(this->session_handle().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.RunStepRequest.session_handle"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // repeated .tensorflow.NamedTensorProto feed = 2;
+      case 2: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (18 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+                input, add_feed()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // repeated string fetch = 3;
+      case 3: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (26 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->add_fetch()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->fetch(this->fetch_size() - 1).data(),
+            static_cast<int>(this->fetch(this->fetch_size() - 1).length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.RunStepRequest.fetch"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // repeated string target = 4;
+      case 4: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (34 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->add_target()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->target(this->target_size() - 1).data(),
+            static_cast<int>(this->target(this->target_size() - 1).length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.RunStepRequest.target"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // .tensorflow.RunOptions options = 5;
+      case 5: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (42 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+               input, mutable_options()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // string partial_run_handle = 6;
+      case 6: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (50 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_partial_run_handle()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->partial_run_handle().data(), static_cast<int>(this->partial_run_handle().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.RunStepRequest.partial_run_handle"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // bool store_errors_in_response_body = 7;
+      case 7: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (56 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
+                 input, &store_errors_in_response_body_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.RunStepRequest)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.RunStepRequest)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void RunStepRequest::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.RunStepRequest)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // string session_handle = 1;
+  if (this->session_handle().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->session_handle().data(), static_cast<int>(this->session_handle().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.RunStepRequest.session_handle");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      1, this->session_handle(), output);
+  }
+
+  // repeated .tensorflow.NamedTensorProto feed = 2;
+  for (unsigned int i = 0,
+      n = static_cast<unsigned int>(this->feed_size()); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      2,
+      this->feed(static_cast<int>(i)),
+      output);
+  }
+
+  // repeated string fetch = 3;
+  for (int i = 0, n = this->fetch_size(); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->fetch(i).data(), static_cast<int>(this->fetch(i).length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.RunStepRequest.fetch");
+    ::google::protobuf::internal::WireFormatLite::WriteString(
+      3, this->fetch(i), output);
+  }
+
+  // repeated string target = 4;
+  for (int i = 0, n = this->target_size(); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->target(i).data(), static_cast<int>(this->target(i).length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.RunStepRequest.target");
+    ::google::protobuf::internal::WireFormatLite::WriteString(
+      4, this->target(i), output);
+  }
+
+  // .tensorflow.RunOptions options = 5;
+  if (this->has_options()) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      5, HasBitSetters::options(this), output);
+  }
+
+  // string partial_run_handle = 6;
+  if (this->partial_run_handle().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->partial_run_handle().data(), static_cast<int>(this->partial_run_handle().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.RunStepRequest.partial_run_handle");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      6, this->partial_run_handle(), output);
+  }
+
+  // bool store_errors_in_response_body = 7;
+  if (this->store_errors_in_response_body() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteBool(7, this->store_errors_in_response_body(), output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.RunStepRequest)
+}
+
+::google::protobuf::uint8* RunStepRequest::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.RunStepRequest)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // string session_handle = 1;
+  if (this->session_handle().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->session_handle().data(), static_cast<int>(this->session_handle().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.RunStepRequest.session_handle");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        1, this->session_handle(), target);
+  }
+
+  // repeated .tensorflow.NamedTensorProto feed = 2;
+  for (unsigned int i = 0,
+      n = static_cast<unsigned int>(this->feed_size()); i < n; i++) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        2, this->feed(static_cast<int>(i)), deterministic, target);
+  }
+
+  // repeated string fetch = 3;
+  for (int i = 0, n = this->fetch_size(); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->fetch(i).data(), static_cast<int>(this->fetch(i).length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.RunStepRequest.fetch");
+    target = ::google::protobuf::internal::WireFormatLite::
+      WriteStringToArray(3, this->fetch(i), target);
+  }
+
+  // repeated string target = 4;
+  for (int i = 0, n = this->target_size(); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->target(i).data(), static_cast<int>(this->target(i).length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.RunStepRequest.target");
+    target = ::google::protobuf::internal::WireFormatLite::
+      WriteStringToArray(4, this->target(i), target);
+  }
+
+  // .tensorflow.RunOptions options = 5;
+  if (this->has_options()) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        5, HasBitSetters::options(this), deterministic, target);
+  }
+
+  // string partial_run_handle = 6;
+  if (this->partial_run_handle().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->partial_run_handle().data(), static_cast<int>(this->partial_run_handle().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.RunStepRequest.partial_run_handle");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        6, this->partial_run_handle(), target);
+  }
+
+  // bool store_errors_in_response_body = 7;
+  if (this->store_errors_in_response_body() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(7, this->store_errors_in_response_body(), target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.RunStepRequest)
+  return target;
+}
+
+size_t RunStepRequest::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.RunStepRequest)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // repeated .tensorflow.NamedTensorProto feed = 2;
+  {
+    unsigned int count = static_cast<unsigned int>(this->feed_size());
+    total_size += 1UL * count;
+    for (unsigned int i = 0; i < count; i++) {
+      total_size +=
+        ::google::protobuf::internal::WireFormatLite::MessageSize(
+          this->feed(static_cast<int>(i)));
+    }
+  }
+
+  // repeated string fetch = 3;
+  total_size += 1 *
+      ::google::protobuf::internal::FromIntSize(this->fetch_size());
+  for (int i = 0, n = this->fetch_size(); i < n; i++) {
+    total_size += ::google::protobuf::internal::WireFormatLite::StringSize(
+      this->fetch(i));
+  }
+
+  // repeated string target = 4;
+  total_size += 1 *
+      ::google::protobuf::internal::FromIntSize(this->target_size());
+  for (int i = 0, n = this->target_size(); i < n; i++) {
+    total_size += ::google::protobuf::internal::WireFormatLite::StringSize(
+      this->target(i));
+  }
+
+  // string session_handle = 1;
+  if (this->session_handle().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->session_handle());
+  }
+
+  // string partial_run_handle = 6;
+  if (this->partial_run_handle().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->partial_run_handle());
+  }
+
+  // .tensorflow.RunOptions options = 5;
+  if (this->has_options()) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::MessageSize(
+        *options_);
+  }
+
+  // bool store_errors_in_response_body = 7;
+  if (this->store_errors_in_response_body() != 0) {
+    total_size += 1 + 1;
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void RunStepRequest::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.RunStepRequest)
+  GOOGLE_DCHECK_NE(&from, this);
+  const RunStepRequest* source =
+      ::google::protobuf::DynamicCastToGenerated<RunStepRequest>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.RunStepRequest)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.RunStepRequest)
+    MergeFrom(*source);
+  }
+}
+
+void RunStepRequest::MergeFrom(const RunStepRequest& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.RunStepRequest)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  feed_.MergeFrom(from.feed_);
+  fetch_.MergeFrom(from.fetch_);
+  target_.MergeFrom(from.target_);
+  if (from.session_handle().size() > 0) {
+    set_session_handle(from.session_handle());
+  }
+  if (from.partial_run_handle().size() > 0) {
+    set_partial_run_handle(from.partial_run_handle());
+  }
+  if (from.has_options()) {
+    mutable_options()->::tensorflow::RunOptions::MergeFrom(from.options());
+  }
+  if (from.store_errors_in_response_body() != 0) {
+    set_store_errors_in_response_body(from.store_errors_in_response_body());
+  }
+}
+
+void RunStepRequest::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.RunStepRequest)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void RunStepRequest::CopyFrom(const RunStepRequest& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.RunStepRequest)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool RunStepRequest::IsInitialized() const {
+  return true;
+}
+
+void RunStepRequest::Swap(RunStepRequest* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    RunStepRequest* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void RunStepRequest::UnsafeArenaSwap(RunStepRequest* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void RunStepRequest::InternalSwap(RunStepRequest* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  CastToBase(&feed_)->InternalSwap(CastToBase(&other->feed_));
+  fetch_.InternalSwap(CastToBase(&other->fetch_));
+  target_.InternalSwap(CastToBase(&other->target_));
+  session_handle_.Swap(&other->session_handle_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+  partial_run_handle_.Swap(&other->partial_run_handle_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+  swap(options_, other->options_);
+  swap(store_errors_in_response_body_, other->store_errors_in_response_body_);
+}
+
+::google::protobuf::Metadata RunStepRequest::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+void RunStepResponse::InitAsDefaultInstance() {
+  ::tensorflow::_RunStepResponse_default_instance_._instance.get_mutable()->metadata_ = const_cast< ::tensorflow::RunMetadata*>(
+      ::tensorflow::RunMetadata::internal_default_instance());
+}
+class RunStepResponse::HasBitSetters {
+ public:
+  static const ::tensorflow::RunMetadata& metadata(const RunStepResponse* msg);
+};
+
+const ::tensorflow::RunMetadata&
+RunStepResponse::HasBitSetters::metadata(const RunStepResponse* msg) {
+  return *msg->metadata_;
+}
+void RunStepResponse::clear_tensor() {
+  tensor_.Clear();
+}
+void RunStepResponse::unsafe_arena_set_allocated_metadata(
+    ::tensorflow::RunMetadata* metadata) {
+  if (GetArenaNoVirtual() == NULL) {
+    delete metadata_;
+  }
+  metadata_ = metadata;
+  if (metadata) {
+    
+  } else {
+    
+  }
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.RunStepResponse.metadata)
+}
+void RunStepResponse::clear_metadata() {
+  if (GetArenaNoVirtual() == NULL && metadata_ != NULL) {
+    delete metadata_;
+  }
+  metadata_ = NULL;
+}
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int RunStepResponse::kTensorFieldNumber;
+const int RunStepResponse::kMetadataFieldNumber;
+const int RunStepResponse::kStatusCodeFieldNumber;
+const int RunStepResponse::kStatusErrorMessageFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+RunStepResponse::RunStepResponse()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.RunStepResponse)
+}
+RunStepResponse::RunStepResponse(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena),
+  tensor_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.RunStepResponse)
+}
+RunStepResponse::RunStepResponse(const RunStepResponse& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL),
+      tensor_(from.tensor_) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  status_error_message_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.status_error_message().size() > 0) {
+    status_error_message_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.status_error_message(),
+      GetArenaNoVirtual());
+  }
+  if (from.has_metadata()) {
+    metadata_ = new ::tensorflow::RunMetadata(*from.metadata_);
+  } else {
+    metadata_ = NULL;
+  }
+  status_code_ = from.status_code_;
+  // @@protoc_insertion_point(copy_constructor:tensorflow.RunStepResponse)
+}
+
+void RunStepResponse::SharedCtor() {
+  ::google::protobuf::internal::InitSCC(
+      &scc_info_RunStepResponse_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto.base);
+  status_error_message_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  ::memset(&metadata_, 0, static_cast<size_t>(
+      reinterpret_cast<char*>(&status_code_) -
+      reinterpret_cast<char*>(&metadata_)) + sizeof(status_code_));
+}
+
+RunStepResponse::~RunStepResponse() {
+  // @@protoc_insertion_point(destructor:tensorflow.RunStepResponse)
+  SharedDtor();
+}
+
+void RunStepResponse::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+  status_error_message_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (this != internal_default_instance()) delete metadata_;
+}
+
+void RunStepResponse::ArenaDtor(void* object) {
+  RunStepResponse* _this = reinterpret_cast< RunStepResponse* >(object);
+  (void)_this;
+}
+void RunStepResponse::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void RunStepResponse::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const RunStepResponse& RunStepResponse::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_RunStepResponse_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void RunStepResponse::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.RunStepResponse)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  tensor_.Clear();
+  status_error_message_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+  if (GetArenaNoVirtual() == NULL && metadata_ != NULL) {
+    delete metadata_;
+  }
+  metadata_ = NULL;
+  status_code_ = 0;
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* RunStepResponse::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<RunStepResponse*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // repeated .tensorflow.NamedTensorProto tensor = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 10) goto handle_unusual;
+        do {
+          ptr = Varint::Parse32Inline(ptr, &size);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          parser_till_end = ::tensorflow::NamedTensorProto::_InternalParse;
+          object = msg->add_tensor();
+          if (size > end - ptr) goto len_delim_till_end;
+          auto newend = ptr + size;
+          bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                         ptr, newend);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          ptr = newend;
+          if (ptr >= end) break;
+        } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 10 && (ptr += 1));
+        break;
+      }
+      // .tensorflow.RunMetadata metadata = 2;
+      case 2: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 18) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        parser_till_end = ::tensorflow::RunMetadata::_InternalParse;
+        object = msg->mutable_metadata();
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                       ptr, newend);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+        ptr = newend;
+        break;
+      }
+      // .tensorflow.error.Code status_code = 3;
+      case 3: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 24) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::tensorflow::error::Code value = static_cast<::tensorflow::error::Code>(val);
+        msg->set_status_code(value);
+        break;
+      }
+      // string status_error_message = 4;
+      case 4: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 34) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("tensorflow.RunStepResponse.status_error_message");
+        parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+        ::std::string* str = msg->mutable_status_error_message();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool RunStepResponse::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.RunStepResponse)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // repeated .tensorflow.NamedTensorProto tensor = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (10 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+                input, add_tensor()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // .tensorflow.RunMetadata metadata = 2;
+      case 2: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (18 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+               input, mutable_metadata()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // .tensorflow.error.Code status_code = 3;
+      case 3: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (24 & 0xFF)) {
+          int value = 0;
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>(
+                 input, &value)));
+          set_status_code(static_cast< ::tensorflow::error::Code >(value));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // string status_error_message = 4;
+      case 4: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (34 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_status_error_message()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->status_error_message().data(), static_cast<int>(this->status_error_message().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.RunStepResponse.status_error_message"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.RunStepResponse)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.RunStepResponse)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void RunStepResponse::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.RunStepResponse)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // repeated .tensorflow.NamedTensorProto tensor = 1;
+  for (unsigned int i = 0,
+      n = static_cast<unsigned int>(this->tensor_size()); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      1,
+      this->tensor(static_cast<int>(i)),
+      output);
+  }
+
+  // .tensorflow.RunMetadata metadata = 2;
+  if (this->has_metadata()) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      2, HasBitSetters::metadata(this), output);
+  }
+
+  // .tensorflow.error.Code status_code = 3;
+  if (this->status_code() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteEnum(
+      3, this->status_code(), output);
+  }
+
+  // string status_error_message = 4;
+  if (this->status_error_message().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->status_error_message().data(), static_cast<int>(this->status_error_message().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.RunStepResponse.status_error_message");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      4, this->status_error_message(), output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.RunStepResponse)
+}
+
+::google::protobuf::uint8* RunStepResponse::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.RunStepResponse)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // repeated .tensorflow.NamedTensorProto tensor = 1;
+  for (unsigned int i = 0,
+      n = static_cast<unsigned int>(this->tensor_size()); i < n; i++) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        1, this->tensor(static_cast<int>(i)), deterministic, target);
+  }
+
+  // .tensorflow.RunMetadata metadata = 2;
+  if (this->has_metadata()) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        2, HasBitSetters::metadata(this), deterministic, target);
+  }
+
+  // .tensorflow.error.Code status_code = 3;
+  if (this->status_code() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteEnumToArray(
+      3, this->status_code(), target);
+  }
+
+  // string status_error_message = 4;
+  if (this->status_error_message().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->status_error_message().data(), static_cast<int>(this->status_error_message().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.RunStepResponse.status_error_message");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        4, this->status_error_message(), target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.RunStepResponse)
+  return target;
+}
+
+size_t RunStepResponse::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.RunStepResponse)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // repeated .tensorflow.NamedTensorProto tensor = 1;
+  {
+    unsigned int count = static_cast<unsigned int>(this->tensor_size());
+    total_size += 1UL * count;
+    for (unsigned int i = 0; i < count; i++) {
+      total_size +=
+        ::google::protobuf::internal::WireFormatLite::MessageSize(
+          this->tensor(static_cast<int>(i)));
+    }
+  }
+
+  // string status_error_message = 4;
+  if (this->status_error_message().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->status_error_message());
+  }
+
+  // .tensorflow.RunMetadata metadata = 2;
+  if (this->has_metadata()) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::MessageSize(
+        *metadata_);
+  }
+
+  // .tensorflow.error.Code status_code = 3;
+  if (this->status_code() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::EnumSize(this->status_code());
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void RunStepResponse::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.RunStepResponse)
+  GOOGLE_DCHECK_NE(&from, this);
+  const RunStepResponse* source =
+      ::google::protobuf::DynamicCastToGenerated<RunStepResponse>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.RunStepResponse)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.RunStepResponse)
+    MergeFrom(*source);
+  }
+}
+
+void RunStepResponse::MergeFrom(const RunStepResponse& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.RunStepResponse)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  tensor_.MergeFrom(from.tensor_);
+  if (from.status_error_message().size() > 0) {
+    set_status_error_message(from.status_error_message());
+  }
+  if (from.has_metadata()) {
+    mutable_metadata()->::tensorflow::RunMetadata::MergeFrom(from.metadata());
+  }
+  if (from.status_code() != 0) {
+    set_status_code(from.status_code());
+  }
+}
+
+void RunStepResponse::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.RunStepResponse)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void RunStepResponse::CopyFrom(const RunStepResponse& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.RunStepResponse)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool RunStepResponse::IsInitialized() const {
+  return true;
+}
+
+void RunStepResponse::Swap(RunStepResponse* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    RunStepResponse* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void RunStepResponse::UnsafeArenaSwap(RunStepResponse* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void RunStepResponse::InternalSwap(RunStepResponse* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  CastToBase(&tensor_)->InternalSwap(CastToBase(&other->tensor_));
+  status_error_message_.Swap(&other->status_error_message_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+  swap(metadata_, other->metadata_);
+  swap(status_code_, other->status_code_);
+}
+
+::google::protobuf::Metadata RunStepResponse::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+void PartialRunSetupRequest::InitAsDefaultInstance() {
+}
+class PartialRunSetupRequest::HasBitSetters {
+ public:
+};
+
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int PartialRunSetupRequest::kSessionHandleFieldNumber;
+const int PartialRunSetupRequest::kFeedFieldNumber;
+const int PartialRunSetupRequest::kFetchFieldNumber;
+const int PartialRunSetupRequest::kTargetFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+PartialRunSetupRequest::PartialRunSetupRequest()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.PartialRunSetupRequest)
+}
+PartialRunSetupRequest::PartialRunSetupRequest(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena),
+  feed_(arena),
+  fetch_(arena),
+  target_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.PartialRunSetupRequest)
+}
+PartialRunSetupRequest::PartialRunSetupRequest(const PartialRunSetupRequest& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL),
+      feed_(from.feed_),
+      fetch_(from.fetch_),
+      target_(from.target_) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  session_handle_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.session_handle().size() > 0) {
+    session_handle_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.session_handle(),
+      GetArenaNoVirtual());
+  }
+  // @@protoc_insertion_point(copy_constructor:tensorflow.PartialRunSetupRequest)
+}
+
+void PartialRunSetupRequest::SharedCtor() {
+  ::google::protobuf::internal::InitSCC(
+      &scc_info_PartialRunSetupRequest_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto.base);
+  session_handle_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+
+PartialRunSetupRequest::~PartialRunSetupRequest() {
+  // @@protoc_insertion_point(destructor:tensorflow.PartialRunSetupRequest)
+  SharedDtor();
+}
+
+void PartialRunSetupRequest::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+  session_handle_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+
+void PartialRunSetupRequest::ArenaDtor(void* object) {
+  PartialRunSetupRequest* _this = reinterpret_cast< PartialRunSetupRequest* >(object);
+  (void)_this;
+}
+void PartialRunSetupRequest::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void PartialRunSetupRequest::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const PartialRunSetupRequest& PartialRunSetupRequest::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_PartialRunSetupRequest_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void PartialRunSetupRequest::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.PartialRunSetupRequest)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  feed_.Clear();
+  fetch_.Clear();
+  target_.Clear();
+  session_handle_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* PartialRunSetupRequest::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<PartialRunSetupRequest*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // string session_handle = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 10) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("tensorflow.PartialRunSetupRequest.session_handle");
+        parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+        ::std::string* str = msg->mutable_session_handle();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+        break;
+      }
+      // repeated string feed = 2;
+      case 2: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 18) goto handle_unusual;
+        do {
+          ptr = Varint::Parse32Inline(ptr, &size);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          ctx->extra_parse_data().SetFieldName("tensorflow.PartialRunSetupRequest.feed");
+          parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+          ::std::string* str = msg->add_feed();
+          str->clear();
+          object = str;
+          if (size > end - ptr) goto len_delim_till_end;
+          auto newend = ptr + size;
+          if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+          if (ptr >= end) break;
+        } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 18 && (ptr += 1));
+        break;
+      }
+      // repeated string fetch = 3;
+      case 3: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 26) goto handle_unusual;
+        do {
+          ptr = Varint::Parse32Inline(ptr, &size);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          ctx->extra_parse_data().SetFieldName("tensorflow.PartialRunSetupRequest.fetch");
+          parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+          ::std::string* str = msg->add_fetch();
+          str->clear();
+          object = str;
+          if (size > end - ptr) goto len_delim_till_end;
+          auto newend = ptr + size;
+          if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+          if (ptr >= end) break;
+        } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 26 && (ptr += 1));
+        break;
+      }
+      // repeated string target = 4;
+      case 4: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 34) goto handle_unusual;
+        do {
+          ptr = Varint::Parse32Inline(ptr, &size);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          ctx->extra_parse_data().SetFieldName("tensorflow.PartialRunSetupRequest.target");
+          parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+          ::std::string* str = msg->add_target();
+          str->clear();
+          object = str;
+          if (size > end - ptr) goto len_delim_till_end;
+          auto newend = ptr + size;
+          if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+          if (ptr >= end) break;
+        } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 34 && (ptr += 1));
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool PartialRunSetupRequest::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.PartialRunSetupRequest)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // string session_handle = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (10 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_session_handle()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->session_handle().data(), static_cast<int>(this->session_handle().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.PartialRunSetupRequest.session_handle"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // repeated string feed = 2;
+      case 2: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (18 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->add_feed()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->feed(this->feed_size() - 1).data(),
+            static_cast<int>(this->feed(this->feed_size() - 1).length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.PartialRunSetupRequest.feed"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // repeated string fetch = 3;
+      case 3: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (26 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->add_fetch()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->fetch(this->fetch_size() - 1).data(),
+            static_cast<int>(this->fetch(this->fetch_size() - 1).length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.PartialRunSetupRequest.fetch"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // repeated string target = 4;
+      case 4: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (34 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->add_target()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->target(this->target_size() - 1).data(),
+            static_cast<int>(this->target(this->target_size() - 1).length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.PartialRunSetupRequest.target"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.PartialRunSetupRequest)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.PartialRunSetupRequest)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void PartialRunSetupRequest::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.PartialRunSetupRequest)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // string session_handle = 1;
+  if (this->session_handle().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->session_handle().data(), static_cast<int>(this->session_handle().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.PartialRunSetupRequest.session_handle");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      1, this->session_handle(), output);
+  }
+
+  // repeated string feed = 2;
+  for (int i = 0, n = this->feed_size(); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->feed(i).data(), static_cast<int>(this->feed(i).length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.PartialRunSetupRequest.feed");
+    ::google::protobuf::internal::WireFormatLite::WriteString(
+      2, this->feed(i), output);
+  }
+
+  // repeated string fetch = 3;
+  for (int i = 0, n = this->fetch_size(); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->fetch(i).data(), static_cast<int>(this->fetch(i).length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.PartialRunSetupRequest.fetch");
+    ::google::protobuf::internal::WireFormatLite::WriteString(
+      3, this->fetch(i), output);
+  }
+
+  // repeated string target = 4;
+  for (int i = 0, n = this->target_size(); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->target(i).data(), static_cast<int>(this->target(i).length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.PartialRunSetupRequest.target");
+    ::google::protobuf::internal::WireFormatLite::WriteString(
+      4, this->target(i), output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.PartialRunSetupRequest)
+}
+
+::google::protobuf::uint8* PartialRunSetupRequest::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.PartialRunSetupRequest)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // string session_handle = 1;
+  if (this->session_handle().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->session_handle().data(), static_cast<int>(this->session_handle().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.PartialRunSetupRequest.session_handle");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        1, this->session_handle(), target);
+  }
+
+  // repeated string feed = 2;
+  for (int i = 0, n = this->feed_size(); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->feed(i).data(), static_cast<int>(this->feed(i).length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.PartialRunSetupRequest.feed");
+    target = ::google::protobuf::internal::WireFormatLite::
+      WriteStringToArray(2, this->feed(i), target);
+  }
+
+  // repeated string fetch = 3;
+  for (int i = 0, n = this->fetch_size(); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->fetch(i).data(), static_cast<int>(this->fetch(i).length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.PartialRunSetupRequest.fetch");
+    target = ::google::protobuf::internal::WireFormatLite::
+      WriteStringToArray(3, this->fetch(i), target);
+  }
+
+  // repeated string target = 4;
+  for (int i = 0, n = this->target_size(); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->target(i).data(), static_cast<int>(this->target(i).length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.PartialRunSetupRequest.target");
+    target = ::google::protobuf::internal::WireFormatLite::
+      WriteStringToArray(4, this->target(i), target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.PartialRunSetupRequest)
+  return target;
+}
+
+size_t PartialRunSetupRequest::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.PartialRunSetupRequest)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // repeated string feed = 2;
+  total_size += 1 *
+      ::google::protobuf::internal::FromIntSize(this->feed_size());
+  for (int i = 0, n = this->feed_size(); i < n; i++) {
+    total_size += ::google::protobuf::internal::WireFormatLite::StringSize(
+      this->feed(i));
+  }
+
+  // repeated string fetch = 3;
+  total_size += 1 *
+      ::google::protobuf::internal::FromIntSize(this->fetch_size());
+  for (int i = 0, n = this->fetch_size(); i < n; i++) {
+    total_size += ::google::protobuf::internal::WireFormatLite::StringSize(
+      this->fetch(i));
+  }
+
+  // repeated string target = 4;
+  total_size += 1 *
+      ::google::protobuf::internal::FromIntSize(this->target_size());
+  for (int i = 0, n = this->target_size(); i < n; i++) {
+    total_size += ::google::protobuf::internal::WireFormatLite::StringSize(
+      this->target(i));
+  }
+
+  // string session_handle = 1;
+  if (this->session_handle().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->session_handle());
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void PartialRunSetupRequest::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.PartialRunSetupRequest)
+  GOOGLE_DCHECK_NE(&from, this);
+  const PartialRunSetupRequest* source =
+      ::google::protobuf::DynamicCastToGenerated<PartialRunSetupRequest>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.PartialRunSetupRequest)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.PartialRunSetupRequest)
+    MergeFrom(*source);
+  }
+}
+
+void PartialRunSetupRequest::MergeFrom(const PartialRunSetupRequest& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.PartialRunSetupRequest)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  feed_.MergeFrom(from.feed_);
+  fetch_.MergeFrom(from.fetch_);
+  target_.MergeFrom(from.target_);
+  if (from.session_handle().size() > 0) {
+    set_session_handle(from.session_handle());
+  }
+}
+
+void PartialRunSetupRequest::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.PartialRunSetupRequest)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void PartialRunSetupRequest::CopyFrom(const PartialRunSetupRequest& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.PartialRunSetupRequest)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool PartialRunSetupRequest::IsInitialized() const {
+  return true;
+}
+
+void PartialRunSetupRequest::Swap(PartialRunSetupRequest* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    PartialRunSetupRequest* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void PartialRunSetupRequest::UnsafeArenaSwap(PartialRunSetupRequest* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void PartialRunSetupRequest::InternalSwap(PartialRunSetupRequest* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  feed_.InternalSwap(CastToBase(&other->feed_));
+  fetch_.InternalSwap(CastToBase(&other->fetch_));
+  target_.InternalSwap(CastToBase(&other->target_));
+  session_handle_.Swap(&other->session_handle_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+}
+
+::google::protobuf::Metadata PartialRunSetupRequest::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+void PartialRunSetupResponse::InitAsDefaultInstance() {
+}
+class PartialRunSetupResponse::HasBitSetters {
+ public:
+};
+
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int PartialRunSetupResponse::kPartialRunHandleFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+PartialRunSetupResponse::PartialRunSetupResponse()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.PartialRunSetupResponse)
+}
+PartialRunSetupResponse::PartialRunSetupResponse(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.PartialRunSetupResponse)
+}
+PartialRunSetupResponse::PartialRunSetupResponse(const PartialRunSetupResponse& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  partial_run_handle_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.partial_run_handle().size() > 0) {
+    partial_run_handle_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.partial_run_handle(),
+      GetArenaNoVirtual());
+  }
+  // @@protoc_insertion_point(copy_constructor:tensorflow.PartialRunSetupResponse)
+}
+
+void PartialRunSetupResponse::SharedCtor() {
+  ::google::protobuf::internal::InitSCC(
+      &scc_info_PartialRunSetupResponse_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto.base);
+  partial_run_handle_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+
+PartialRunSetupResponse::~PartialRunSetupResponse() {
+  // @@protoc_insertion_point(destructor:tensorflow.PartialRunSetupResponse)
+  SharedDtor();
+}
+
+void PartialRunSetupResponse::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+  partial_run_handle_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+
+void PartialRunSetupResponse::ArenaDtor(void* object) {
+  PartialRunSetupResponse* _this = reinterpret_cast< PartialRunSetupResponse* >(object);
+  (void)_this;
+}
+void PartialRunSetupResponse::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void PartialRunSetupResponse::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const PartialRunSetupResponse& PartialRunSetupResponse::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_PartialRunSetupResponse_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void PartialRunSetupResponse::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.PartialRunSetupResponse)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  partial_run_handle_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* PartialRunSetupResponse::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<PartialRunSetupResponse*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // string partial_run_handle = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 10) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("tensorflow.PartialRunSetupResponse.partial_run_handle");
+        parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+        ::std::string* str = msg->mutable_partial_run_handle();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool PartialRunSetupResponse::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.PartialRunSetupResponse)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // string partial_run_handle = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (10 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_partial_run_handle()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->partial_run_handle().data(), static_cast<int>(this->partial_run_handle().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.PartialRunSetupResponse.partial_run_handle"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.PartialRunSetupResponse)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.PartialRunSetupResponse)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void PartialRunSetupResponse::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.PartialRunSetupResponse)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // string partial_run_handle = 1;
+  if (this->partial_run_handle().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->partial_run_handle().data(), static_cast<int>(this->partial_run_handle().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.PartialRunSetupResponse.partial_run_handle");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      1, this->partial_run_handle(), output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.PartialRunSetupResponse)
+}
+
+::google::protobuf::uint8* PartialRunSetupResponse::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.PartialRunSetupResponse)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // string partial_run_handle = 1;
+  if (this->partial_run_handle().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->partial_run_handle().data(), static_cast<int>(this->partial_run_handle().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.PartialRunSetupResponse.partial_run_handle");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        1, this->partial_run_handle(), target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.PartialRunSetupResponse)
+  return target;
+}
+
+size_t PartialRunSetupResponse::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.PartialRunSetupResponse)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // string partial_run_handle = 1;
+  if (this->partial_run_handle().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->partial_run_handle());
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void PartialRunSetupResponse::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.PartialRunSetupResponse)
+  GOOGLE_DCHECK_NE(&from, this);
+  const PartialRunSetupResponse* source =
+      ::google::protobuf::DynamicCastToGenerated<PartialRunSetupResponse>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.PartialRunSetupResponse)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.PartialRunSetupResponse)
+    MergeFrom(*source);
+  }
+}
+
+void PartialRunSetupResponse::MergeFrom(const PartialRunSetupResponse& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.PartialRunSetupResponse)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  if (from.partial_run_handle().size() > 0) {
+    set_partial_run_handle(from.partial_run_handle());
+  }
+}
+
+void PartialRunSetupResponse::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.PartialRunSetupResponse)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void PartialRunSetupResponse::CopyFrom(const PartialRunSetupResponse& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.PartialRunSetupResponse)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool PartialRunSetupResponse::IsInitialized() const {
+  return true;
+}
+
+void PartialRunSetupResponse::Swap(PartialRunSetupResponse* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    PartialRunSetupResponse* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void PartialRunSetupResponse::UnsafeArenaSwap(PartialRunSetupResponse* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void PartialRunSetupResponse::InternalSwap(PartialRunSetupResponse* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  partial_run_handle_.Swap(&other->partial_run_handle_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+}
+
+::google::protobuf::Metadata PartialRunSetupResponse::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+void CloseSessionRequest::InitAsDefaultInstance() {
+}
+class CloseSessionRequest::HasBitSetters {
+ public:
+};
+
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int CloseSessionRequest::kSessionHandleFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+CloseSessionRequest::CloseSessionRequest()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.CloseSessionRequest)
+}
+CloseSessionRequest::CloseSessionRequest(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.CloseSessionRequest)
+}
+CloseSessionRequest::CloseSessionRequest(const CloseSessionRequest& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  session_handle_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.session_handle().size() > 0) {
+    session_handle_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.session_handle(),
+      GetArenaNoVirtual());
+  }
+  // @@protoc_insertion_point(copy_constructor:tensorflow.CloseSessionRequest)
+}
+
+void CloseSessionRequest::SharedCtor() {
+  ::google::protobuf::internal::InitSCC(
+      &scc_info_CloseSessionRequest_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto.base);
+  session_handle_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+
+CloseSessionRequest::~CloseSessionRequest() {
+  // @@protoc_insertion_point(destructor:tensorflow.CloseSessionRequest)
+  SharedDtor();
+}
+
+void CloseSessionRequest::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+  session_handle_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+
+void CloseSessionRequest::ArenaDtor(void* object) {
+  CloseSessionRequest* _this = reinterpret_cast< CloseSessionRequest* >(object);
+  (void)_this;
+}
+void CloseSessionRequest::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void CloseSessionRequest::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const CloseSessionRequest& CloseSessionRequest::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_CloseSessionRequest_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void CloseSessionRequest::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.CloseSessionRequest)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  session_handle_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* CloseSessionRequest::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<CloseSessionRequest*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // string session_handle = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 10) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("tensorflow.CloseSessionRequest.session_handle");
+        parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+        ::std::string* str = msg->mutable_session_handle();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool CloseSessionRequest::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.CloseSessionRequest)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // string session_handle = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (10 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_session_handle()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->session_handle().data(), static_cast<int>(this->session_handle().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.CloseSessionRequest.session_handle"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.CloseSessionRequest)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.CloseSessionRequest)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void CloseSessionRequest::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.CloseSessionRequest)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // string session_handle = 1;
+  if (this->session_handle().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->session_handle().data(), static_cast<int>(this->session_handle().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.CloseSessionRequest.session_handle");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      1, this->session_handle(), output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.CloseSessionRequest)
+}
+
+::google::protobuf::uint8* CloseSessionRequest::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.CloseSessionRequest)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // string session_handle = 1;
+  if (this->session_handle().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->session_handle().data(), static_cast<int>(this->session_handle().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.CloseSessionRequest.session_handle");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        1, this->session_handle(), target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.CloseSessionRequest)
+  return target;
+}
+
+size_t CloseSessionRequest::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.CloseSessionRequest)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // string session_handle = 1;
+  if (this->session_handle().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->session_handle());
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void CloseSessionRequest::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.CloseSessionRequest)
+  GOOGLE_DCHECK_NE(&from, this);
+  const CloseSessionRequest* source =
+      ::google::protobuf::DynamicCastToGenerated<CloseSessionRequest>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.CloseSessionRequest)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.CloseSessionRequest)
+    MergeFrom(*source);
+  }
+}
+
+void CloseSessionRequest::MergeFrom(const CloseSessionRequest& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.CloseSessionRequest)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  if (from.session_handle().size() > 0) {
+    set_session_handle(from.session_handle());
+  }
+}
+
+void CloseSessionRequest::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.CloseSessionRequest)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void CloseSessionRequest::CopyFrom(const CloseSessionRequest& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.CloseSessionRequest)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool CloseSessionRequest::IsInitialized() const {
+  return true;
+}
+
+void CloseSessionRequest::Swap(CloseSessionRequest* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    CloseSessionRequest* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void CloseSessionRequest::UnsafeArenaSwap(CloseSessionRequest* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void CloseSessionRequest::InternalSwap(CloseSessionRequest* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  session_handle_.Swap(&other->session_handle_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+}
+
+::google::protobuf::Metadata CloseSessionRequest::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+void CloseSessionResponse::InitAsDefaultInstance() {
+}
+class CloseSessionResponse::HasBitSetters {
+ public:
+};
+
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+CloseSessionResponse::CloseSessionResponse()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.CloseSessionResponse)
+}
+CloseSessionResponse::CloseSessionResponse(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.CloseSessionResponse)
+}
+CloseSessionResponse::CloseSessionResponse(const CloseSessionResponse& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  // @@protoc_insertion_point(copy_constructor:tensorflow.CloseSessionResponse)
+}
+
+void CloseSessionResponse::SharedCtor() {
+}
+
+CloseSessionResponse::~CloseSessionResponse() {
+  // @@protoc_insertion_point(destructor:tensorflow.CloseSessionResponse)
+  SharedDtor();
+}
+
+void CloseSessionResponse::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+}
+
+void CloseSessionResponse::ArenaDtor(void* object) {
+  CloseSessionResponse* _this = reinterpret_cast< CloseSessionResponse* >(object);
+  (void)_this;
+}
+void CloseSessionResponse::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void CloseSessionResponse::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const CloseSessionResponse& CloseSessionResponse::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_CloseSessionResponse_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void CloseSessionResponse::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.CloseSessionResponse)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* CloseSessionResponse::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<CloseSessionResponse*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool CloseSessionResponse::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.CloseSessionResponse)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+  handle_unusual:
+    if (tag == 0) {
+      goto success;
+    }
+    DO_(::google::protobuf::internal::WireFormat::SkipField(
+          input, tag, _internal_metadata_.mutable_unknown_fields()));
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.CloseSessionResponse)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.CloseSessionResponse)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void CloseSessionResponse::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.CloseSessionResponse)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.CloseSessionResponse)
+}
+
+::google::protobuf::uint8* CloseSessionResponse::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.CloseSessionResponse)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.CloseSessionResponse)
+  return target;
+}
+
+size_t CloseSessionResponse::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.CloseSessionResponse)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void CloseSessionResponse::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.CloseSessionResponse)
+  GOOGLE_DCHECK_NE(&from, this);
+  const CloseSessionResponse* source =
+      ::google::protobuf::DynamicCastToGenerated<CloseSessionResponse>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.CloseSessionResponse)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.CloseSessionResponse)
+    MergeFrom(*source);
+  }
+}
+
+void CloseSessionResponse::MergeFrom(const CloseSessionResponse& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.CloseSessionResponse)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+}
+
+void CloseSessionResponse::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.CloseSessionResponse)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void CloseSessionResponse::CopyFrom(const CloseSessionResponse& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.CloseSessionResponse)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool CloseSessionResponse::IsInitialized() const {
+  return true;
+}
+
+void CloseSessionResponse::Swap(CloseSessionResponse* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    CloseSessionResponse* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void CloseSessionResponse::UnsafeArenaSwap(CloseSessionResponse* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void CloseSessionResponse::InternalSwap(CloseSessionResponse* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+}
+
+::google::protobuf::Metadata CloseSessionResponse::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+void ResetRequest::InitAsDefaultInstance() {
+}
+class ResetRequest::HasBitSetters {
+ public:
+};
+
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int ResetRequest::kContainerFieldNumber;
+const int ResetRequest::kDeviceFiltersFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+ResetRequest::ResetRequest()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.ResetRequest)
+}
+ResetRequest::ResetRequest(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena),
+  container_(arena),
+  device_filters_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.ResetRequest)
+}
+ResetRequest::ResetRequest(const ResetRequest& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL),
+      container_(from.container_),
+      device_filters_(from.device_filters_) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  // @@protoc_insertion_point(copy_constructor:tensorflow.ResetRequest)
+}
+
+void ResetRequest::SharedCtor() {
+  ::google::protobuf::internal::InitSCC(
+      &scc_info_ResetRequest_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto.base);
+}
+
+ResetRequest::~ResetRequest() {
+  // @@protoc_insertion_point(destructor:tensorflow.ResetRequest)
+  SharedDtor();
+}
+
+void ResetRequest::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+}
+
+void ResetRequest::ArenaDtor(void* object) {
+  ResetRequest* _this = reinterpret_cast< ResetRequest* >(object);
+  (void)_this;
+}
+void ResetRequest::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void ResetRequest::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const ResetRequest& ResetRequest::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_ResetRequest_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void ResetRequest::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.ResetRequest)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  container_.Clear();
+  device_filters_.Clear();
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* ResetRequest::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<ResetRequest*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // repeated string container = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 10) goto handle_unusual;
+        do {
+          ptr = Varint::Parse32Inline(ptr, &size);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          ctx->extra_parse_data().SetFieldName("tensorflow.ResetRequest.container");
+          parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+          ::std::string* str = msg->add_container();
+          str->clear();
+          object = str;
+          if (size > end - ptr) goto len_delim_till_end;
+          auto newend = ptr + size;
+          if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+          if (ptr >= end) break;
+        } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 10 && (ptr += 1));
+        break;
+      }
+      // repeated string device_filters = 2;
+      case 2: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 18) goto handle_unusual;
+        do {
+          ptr = Varint::Parse32Inline(ptr, &size);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          ctx->extra_parse_data().SetFieldName("tensorflow.ResetRequest.device_filters");
+          parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+          ::std::string* str = msg->add_device_filters();
+          str->clear();
+          object = str;
+          if (size > end - ptr) goto len_delim_till_end;
+          auto newend = ptr + size;
+          if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+          if (ptr >= end) break;
+        } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 18 && (ptr += 1));
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool ResetRequest::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.ResetRequest)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // repeated string container = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (10 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->add_container()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->container(this->container_size() - 1).data(),
+            static_cast<int>(this->container(this->container_size() - 1).length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.ResetRequest.container"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // repeated string device_filters = 2;
+      case 2: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (18 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->add_device_filters()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->device_filters(this->device_filters_size() - 1).data(),
+            static_cast<int>(this->device_filters(this->device_filters_size() - 1).length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.ResetRequest.device_filters"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.ResetRequest)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.ResetRequest)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void ResetRequest::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.ResetRequest)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // repeated string container = 1;
+  for (int i = 0, n = this->container_size(); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->container(i).data(), static_cast<int>(this->container(i).length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.ResetRequest.container");
+    ::google::protobuf::internal::WireFormatLite::WriteString(
+      1, this->container(i), output);
+  }
+
+  // repeated string device_filters = 2;
+  for (int i = 0, n = this->device_filters_size(); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->device_filters(i).data(), static_cast<int>(this->device_filters(i).length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.ResetRequest.device_filters");
+    ::google::protobuf::internal::WireFormatLite::WriteString(
+      2, this->device_filters(i), output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.ResetRequest)
+}
+
+::google::protobuf::uint8* ResetRequest::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.ResetRequest)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // repeated string container = 1;
+  for (int i = 0, n = this->container_size(); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->container(i).data(), static_cast<int>(this->container(i).length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.ResetRequest.container");
+    target = ::google::protobuf::internal::WireFormatLite::
+      WriteStringToArray(1, this->container(i), target);
+  }
+
+  // repeated string device_filters = 2;
+  for (int i = 0, n = this->device_filters_size(); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->device_filters(i).data(), static_cast<int>(this->device_filters(i).length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.ResetRequest.device_filters");
+    target = ::google::protobuf::internal::WireFormatLite::
+      WriteStringToArray(2, this->device_filters(i), target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.ResetRequest)
+  return target;
+}
+
+size_t ResetRequest::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.ResetRequest)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // repeated string container = 1;
+  total_size += 1 *
+      ::google::protobuf::internal::FromIntSize(this->container_size());
+  for (int i = 0, n = this->container_size(); i < n; i++) {
+    total_size += ::google::protobuf::internal::WireFormatLite::StringSize(
+      this->container(i));
+  }
+
+  // repeated string device_filters = 2;
+  total_size += 1 *
+      ::google::protobuf::internal::FromIntSize(this->device_filters_size());
+  for (int i = 0, n = this->device_filters_size(); i < n; i++) {
+    total_size += ::google::protobuf::internal::WireFormatLite::StringSize(
+      this->device_filters(i));
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void ResetRequest::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.ResetRequest)
+  GOOGLE_DCHECK_NE(&from, this);
+  const ResetRequest* source =
+      ::google::protobuf::DynamicCastToGenerated<ResetRequest>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.ResetRequest)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.ResetRequest)
+    MergeFrom(*source);
+  }
+}
+
+void ResetRequest::MergeFrom(const ResetRequest& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.ResetRequest)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  container_.MergeFrom(from.container_);
+  device_filters_.MergeFrom(from.device_filters_);
+}
+
+void ResetRequest::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.ResetRequest)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void ResetRequest::CopyFrom(const ResetRequest& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.ResetRequest)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool ResetRequest::IsInitialized() const {
+  return true;
+}
+
+void ResetRequest::Swap(ResetRequest* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    ResetRequest* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void ResetRequest::UnsafeArenaSwap(ResetRequest* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void ResetRequest::InternalSwap(ResetRequest* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  container_.InternalSwap(CastToBase(&other->container_));
+  device_filters_.InternalSwap(CastToBase(&other->device_filters_));
+}
+
+::google::protobuf::Metadata ResetRequest::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+void ResetResponse::InitAsDefaultInstance() {
+}
+class ResetResponse::HasBitSetters {
+ public:
+};
+
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+ResetResponse::ResetResponse()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.ResetResponse)
+}
+ResetResponse::ResetResponse(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.ResetResponse)
+}
+ResetResponse::ResetResponse(const ResetResponse& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  // @@protoc_insertion_point(copy_constructor:tensorflow.ResetResponse)
+}
+
+void ResetResponse::SharedCtor() {
+}
+
+ResetResponse::~ResetResponse() {
+  // @@protoc_insertion_point(destructor:tensorflow.ResetResponse)
+  SharedDtor();
+}
+
+void ResetResponse::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+}
+
+void ResetResponse::ArenaDtor(void* object) {
+  ResetResponse* _this = reinterpret_cast< ResetResponse* >(object);
+  (void)_this;
+}
+void ResetResponse::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void ResetResponse::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const ResetResponse& ResetResponse::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_ResetResponse_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void ResetResponse::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.ResetResponse)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* ResetResponse::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<ResetResponse*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool ResetResponse::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.ResetResponse)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+  handle_unusual:
+    if (tag == 0) {
+      goto success;
+    }
+    DO_(::google::protobuf::internal::WireFormat::SkipField(
+          input, tag, _internal_metadata_.mutable_unknown_fields()));
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.ResetResponse)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.ResetResponse)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void ResetResponse::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.ResetResponse)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.ResetResponse)
+}
+
+::google::protobuf::uint8* ResetResponse::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.ResetResponse)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.ResetResponse)
+  return target;
+}
+
+size_t ResetResponse::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.ResetResponse)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void ResetResponse::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.ResetResponse)
+  GOOGLE_DCHECK_NE(&from, this);
+  const ResetResponse* source =
+      ::google::protobuf::DynamicCastToGenerated<ResetResponse>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.ResetResponse)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.ResetResponse)
+    MergeFrom(*source);
+  }
+}
+
+void ResetResponse::MergeFrom(const ResetResponse& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.ResetResponse)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+}
+
+void ResetResponse::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.ResetResponse)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void ResetResponse::CopyFrom(const ResetResponse& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.ResetResponse)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool ResetResponse::IsInitialized() const {
+  return true;
+}
+
+void ResetResponse::Swap(ResetResponse* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    ResetResponse* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void ResetResponse::UnsafeArenaSwap(ResetResponse* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void ResetResponse::InternalSwap(ResetResponse* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+}
+
+::google::protobuf::Metadata ResetResponse::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+void ListDevicesRequest::InitAsDefaultInstance() {
+}
+class ListDevicesRequest::HasBitSetters {
+ public:
+};
+
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int ListDevicesRequest::kSessionHandleFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+ListDevicesRequest::ListDevicesRequest()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.ListDevicesRequest)
+}
+ListDevicesRequest::ListDevicesRequest(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.ListDevicesRequest)
+}
+ListDevicesRequest::ListDevicesRequest(const ListDevicesRequest& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  session_handle_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.session_handle().size() > 0) {
+    session_handle_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.session_handle(),
+      GetArenaNoVirtual());
+  }
+  // @@protoc_insertion_point(copy_constructor:tensorflow.ListDevicesRequest)
+}
+
+void ListDevicesRequest::SharedCtor() {
+  ::google::protobuf::internal::InitSCC(
+      &scc_info_ListDevicesRequest_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto.base);
+  session_handle_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+
+ListDevicesRequest::~ListDevicesRequest() {
+  // @@protoc_insertion_point(destructor:tensorflow.ListDevicesRequest)
+  SharedDtor();
+}
+
+void ListDevicesRequest::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+  session_handle_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+
+void ListDevicesRequest::ArenaDtor(void* object) {
+  ListDevicesRequest* _this = reinterpret_cast< ListDevicesRequest* >(object);
+  (void)_this;
+}
+void ListDevicesRequest::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void ListDevicesRequest::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const ListDevicesRequest& ListDevicesRequest::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_ListDevicesRequest_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void ListDevicesRequest::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.ListDevicesRequest)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  session_handle_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* ListDevicesRequest::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<ListDevicesRequest*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // string session_handle = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 10) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("tensorflow.ListDevicesRequest.session_handle");
+        parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+        ::std::string* str = msg->mutable_session_handle();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool ListDevicesRequest::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.ListDevicesRequest)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // string session_handle = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (10 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_session_handle()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->session_handle().data(), static_cast<int>(this->session_handle().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.ListDevicesRequest.session_handle"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.ListDevicesRequest)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.ListDevicesRequest)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void ListDevicesRequest::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.ListDevicesRequest)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // string session_handle = 1;
+  if (this->session_handle().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->session_handle().data(), static_cast<int>(this->session_handle().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.ListDevicesRequest.session_handle");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      1, this->session_handle(), output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.ListDevicesRequest)
+}
+
+::google::protobuf::uint8* ListDevicesRequest::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.ListDevicesRequest)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // string session_handle = 1;
+  if (this->session_handle().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->session_handle().data(), static_cast<int>(this->session_handle().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.ListDevicesRequest.session_handle");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        1, this->session_handle(), target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.ListDevicesRequest)
+  return target;
+}
+
+size_t ListDevicesRequest::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.ListDevicesRequest)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // string session_handle = 1;
+  if (this->session_handle().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->session_handle());
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void ListDevicesRequest::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.ListDevicesRequest)
+  GOOGLE_DCHECK_NE(&from, this);
+  const ListDevicesRequest* source =
+      ::google::protobuf::DynamicCastToGenerated<ListDevicesRequest>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.ListDevicesRequest)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.ListDevicesRequest)
+    MergeFrom(*source);
+  }
+}
+
+void ListDevicesRequest::MergeFrom(const ListDevicesRequest& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.ListDevicesRequest)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  if (from.session_handle().size() > 0) {
+    set_session_handle(from.session_handle());
+  }
+}
+
+void ListDevicesRequest::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.ListDevicesRequest)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void ListDevicesRequest::CopyFrom(const ListDevicesRequest& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.ListDevicesRequest)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool ListDevicesRequest::IsInitialized() const {
+  return true;
+}
+
+void ListDevicesRequest::Swap(ListDevicesRequest* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    ListDevicesRequest* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void ListDevicesRequest::UnsafeArenaSwap(ListDevicesRequest* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void ListDevicesRequest::InternalSwap(ListDevicesRequest* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  session_handle_.Swap(&other->session_handle_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+}
+
+::google::protobuf::Metadata ListDevicesRequest::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+void ListDevicesResponse::InitAsDefaultInstance() {
+}
+class ListDevicesResponse::HasBitSetters {
+ public:
+};
+
+void ListDevicesResponse::clear_local_device() {
+  local_device_.Clear();
+}
+void ListDevicesResponse::clear_remote_device() {
+  remote_device_.Clear();
+}
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int ListDevicesResponse::kLocalDeviceFieldNumber;
+const int ListDevicesResponse::kRemoteDeviceFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+ListDevicesResponse::ListDevicesResponse()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.ListDevicesResponse)
+}
+ListDevicesResponse::ListDevicesResponse(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena),
+  local_device_(arena),
+  remote_device_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.ListDevicesResponse)
+}
+ListDevicesResponse::ListDevicesResponse(const ListDevicesResponse& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL),
+      local_device_(from.local_device_),
+      remote_device_(from.remote_device_) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  // @@protoc_insertion_point(copy_constructor:tensorflow.ListDevicesResponse)
+}
+
+void ListDevicesResponse::SharedCtor() {
+  ::google::protobuf::internal::InitSCC(
+      &scc_info_ListDevicesResponse_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto.base);
+}
+
+ListDevicesResponse::~ListDevicesResponse() {
+  // @@protoc_insertion_point(destructor:tensorflow.ListDevicesResponse)
+  SharedDtor();
+}
+
+void ListDevicesResponse::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+}
+
+void ListDevicesResponse::ArenaDtor(void* object) {
+  ListDevicesResponse* _this = reinterpret_cast< ListDevicesResponse* >(object);
+  (void)_this;
+}
+void ListDevicesResponse::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void ListDevicesResponse::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const ListDevicesResponse& ListDevicesResponse::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_ListDevicesResponse_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void ListDevicesResponse::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.ListDevicesResponse)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  local_device_.Clear();
+  remote_device_.Clear();
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* ListDevicesResponse::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<ListDevicesResponse*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // repeated .tensorflow.DeviceAttributes local_device = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 10) goto handle_unusual;
+        do {
+          ptr = Varint::Parse32Inline(ptr, &size);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          parser_till_end = ::tensorflow::DeviceAttributes::_InternalParse;
+          object = msg->add_local_device();
+          if (size > end - ptr) goto len_delim_till_end;
+          auto newend = ptr + size;
+          bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                         ptr, newend);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          ptr = newend;
+          if (ptr >= end) break;
+        } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 10 && (ptr += 1));
+        break;
+      }
+      // repeated .tensorflow.DeviceAttributes remote_device = 2;
+      case 2: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 18) goto handle_unusual;
+        do {
+          ptr = Varint::Parse32Inline(ptr, &size);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          parser_till_end = ::tensorflow::DeviceAttributes::_InternalParse;
+          object = msg->add_remote_device();
+          if (size > end - ptr) goto len_delim_till_end;
+          auto newend = ptr + size;
+          bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                         ptr, newend);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          ptr = newend;
+          if (ptr >= end) break;
+        } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 18 && (ptr += 1));
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool ListDevicesResponse::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.ListDevicesResponse)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // repeated .tensorflow.DeviceAttributes local_device = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (10 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+                input, add_local_device()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // repeated .tensorflow.DeviceAttributes remote_device = 2;
+      case 2: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (18 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+                input, add_remote_device()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.ListDevicesResponse)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.ListDevicesResponse)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void ListDevicesResponse::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.ListDevicesResponse)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // repeated .tensorflow.DeviceAttributes local_device = 1;
+  for (unsigned int i = 0,
+      n = static_cast<unsigned int>(this->local_device_size()); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      1,
+      this->local_device(static_cast<int>(i)),
+      output);
+  }
+
+  // repeated .tensorflow.DeviceAttributes remote_device = 2;
+  for (unsigned int i = 0,
+      n = static_cast<unsigned int>(this->remote_device_size()); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      2,
+      this->remote_device(static_cast<int>(i)),
+      output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.ListDevicesResponse)
+}
+
+::google::protobuf::uint8* ListDevicesResponse::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.ListDevicesResponse)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // repeated .tensorflow.DeviceAttributes local_device = 1;
+  for (unsigned int i = 0,
+      n = static_cast<unsigned int>(this->local_device_size()); i < n; i++) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        1, this->local_device(static_cast<int>(i)), deterministic, target);
+  }
+
+  // repeated .tensorflow.DeviceAttributes remote_device = 2;
+  for (unsigned int i = 0,
+      n = static_cast<unsigned int>(this->remote_device_size()); i < n; i++) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        2, this->remote_device(static_cast<int>(i)), deterministic, target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.ListDevicesResponse)
+  return target;
+}
+
+size_t ListDevicesResponse::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.ListDevicesResponse)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // repeated .tensorflow.DeviceAttributes local_device = 1;
+  {
+    unsigned int count = static_cast<unsigned int>(this->local_device_size());
+    total_size += 1UL * count;
+    for (unsigned int i = 0; i < count; i++) {
+      total_size +=
+        ::google::protobuf::internal::WireFormatLite::MessageSize(
+          this->local_device(static_cast<int>(i)));
+    }
+  }
+
+  // repeated .tensorflow.DeviceAttributes remote_device = 2;
+  {
+    unsigned int count = static_cast<unsigned int>(this->remote_device_size());
+    total_size += 1UL * count;
+    for (unsigned int i = 0; i < count; i++) {
+      total_size +=
+        ::google::protobuf::internal::WireFormatLite::MessageSize(
+          this->remote_device(static_cast<int>(i)));
+    }
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void ListDevicesResponse::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.ListDevicesResponse)
+  GOOGLE_DCHECK_NE(&from, this);
+  const ListDevicesResponse* source =
+      ::google::protobuf::DynamicCastToGenerated<ListDevicesResponse>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.ListDevicesResponse)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.ListDevicesResponse)
+    MergeFrom(*source);
+  }
+}
+
+void ListDevicesResponse::MergeFrom(const ListDevicesResponse& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.ListDevicesResponse)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  local_device_.MergeFrom(from.local_device_);
+  remote_device_.MergeFrom(from.remote_device_);
+}
+
+void ListDevicesResponse::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.ListDevicesResponse)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void ListDevicesResponse::CopyFrom(const ListDevicesResponse& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.ListDevicesResponse)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool ListDevicesResponse::IsInitialized() const {
+  return true;
+}
+
+void ListDevicesResponse::Swap(ListDevicesResponse* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    ListDevicesResponse* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void ListDevicesResponse::UnsafeArenaSwap(ListDevicesResponse* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void ListDevicesResponse::InternalSwap(ListDevicesResponse* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  CastToBase(&local_device_)->InternalSwap(CastToBase(&other->local_device_));
+  CastToBase(&remote_device_)->InternalSwap(CastToBase(&other->remote_device_));
+}
+
+::google::protobuf::Metadata ListDevicesResponse::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+void MakeCallableRequest::InitAsDefaultInstance() {
+  ::tensorflow::_MakeCallableRequest_default_instance_._instance.get_mutable()->options_ = const_cast< ::tensorflow::CallableOptions*>(
+      ::tensorflow::CallableOptions::internal_default_instance());
+}
+class MakeCallableRequest::HasBitSetters {
+ public:
+  static const ::tensorflow::CallableOptions& options(const MakeCallableRequest* msg);
+};
+
+const ::tensorflow::CallableOptions&
+MakeCallableRequest::HasBitSetters::options(const MakeCallableRequest* msg) {
+  return *msg->options_;
+}
+void MakeCallableRequest::unsafe_arena_set_allocated_options(
+    ::tensorflow::CallableOptions* options) {
+  if (GetArenaNoVirtual() == NULL) {
+    delete options_;
+  }
+  options_ = options;
+  if (options) {
+    
+  } else {
+    
+  }
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.MakeCallableRequest.options)
+}
+void MakeCallableRequest::clear_options() {
+  if (GetArenaNoVirtual() == NULL && options_ != NULL) {
+    delete options_;
+  }
+  options_ = NULL;
+}
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int MakeCallableRequest::kSessionHandleFieldNumber;
+const int MakeCallableRequest::kOptionsFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+MakeCallableRequest::MakeCallableRequest()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.MakeCallableRequest)
+}
+MakeCallableRequest::MakeCallableRequest(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.MakeCallableRequest)
+}
+MakeCallableRequest::MakeCallableRequest(const MakeCallableRequest& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  session_handle_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.session_handle().size() > 0) {
+    session_handle_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.session_handle(),
+      GetArenaNoVirtual());
+  }
+  if (from.has_options()) {
+    options_ = new ::tensorflow::CallableOptions(*from.options_);
+  } else {
+    options_ = NULL;
+  }
+  // @@protoc_insertion_point(copy_constructor:tensorflow.MakeCallableRequest)
+}
+
+void MakeCallableRequest::SharedCtor() {
+  ::google::protobuf::internal::InitSCC(
+      &scc_info_MakeCallableRequest_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto.base);
+  session_handle_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  options_ = NULL;
+}
+
+MakeCallableRequest::~MakeCallableRequest() {
+  // @@protoc_insertion_point(destructor:tensorflow.MakeCallableRequest)
+  SharedDtor();
+}
+
+void MakeCallableRequest::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+  session_handle_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (this != internal_default_instance()) delete options_;
+}
+
+void MakeCallableRequest::ArenaDtor(void* object) {
+  MakeCallableRequest* _this = reinterpret_cast< MakeCallableRequest* >(object);
+  (void)_this;
+}
+void MakeCallableRequest::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void MakeCallableRequest::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const MakeCallableRequest& MakeCallableRequest::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_MakeCallableRequest_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void MakeCallableRequest::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.MakeCallableRequest)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  session_handle_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+  if (GetArenaNoVirtual() == NULL && options_ != NULL) {
+    delete options_;
+  }
+  options_ = NULL;
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* MakeCallableRequest::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<MakeCallableRequest*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // string session_handle = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 10) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("tensorflow.MakeCallableRequest.session_handle");
+        parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+        ::std::string* str = msg->mutable_session_handle();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+        break;
+      }
+      // .tensorflow.CallableOptions options = 2;
+      case 2: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 18) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        parser_till_end = ::tensorflow::CallableOptions::_InternalParse;
+        object = msg->mutable_options();
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                       ptr, newend);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+        ptr = newend;
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool MakeCallableRequest::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.MakeCallableRequest)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // string session_handle = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (10 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_session_handle()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->session_handle().data(), static_cast<int>(this->session_handle().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.MakeCallableRequest.session_handle"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // .tensorflow.CallableOptions options = 2;
+      case 2: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (18 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+               input, mutable_options()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.MakeCallableRequest)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.MakeCallableRequest)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void MakeCallableRequest::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.MakeCallableRequest)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // string session_handle = 1;
+  if (this->session_handle().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->session_handle().data(), static_cast<int>(this->session_handle().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.MakeCallableRequest.session_handle");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      1, this->session_handle(), output);
+  }
+
+  // .tensorflow.CallableOptions options = 2;
+  if (this->has_options()) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      2, HasBitSetters::options(this), output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.MakeCallableRequest)
+}
+
+::google::protobuf::uint8* MakeCallableRequest::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.MakeCallableRequest)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // string session_handle = 1;
+  if (this->session_handle().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->session_handle().data(), static_cast<int>(this->session_handle().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.MakeCallableRequest.session_handle");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        1, this->session_handle(), target);
+  }
+
+  // .tensorflow.CallableOptions options = 2;
+  if (this->has_options()) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        2, HasBitSetters::options(this), deterministic, target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.MakeCallableRequest)
+  return target;
+}
+
+size_t MakeCallableRequest::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.MakeCallableRequest)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // string session_handle = 1;
+  if (this->session_handle().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->session_handle());
+  }
+
+  // .tensorflow.CallableOptions options = 2;
+  if (this->has_options()) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::MessageSize(
+        *options_);
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void MakeCallableRequest::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.MakeCallableRequest)
+  GOOGLE_DCHECK_NE(&from, this);
+  const MakeCallableRequest* source =
+      ::google::protobuf::DynamicCastToGenerated<MakeCallableRequest>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.MakeCallableRequest)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.MakeCallableRequest)
+    MergeFrom(*source);
+  }
+}
+
+void MakeCallableRequest::MergeFrom(const MakeCallableRequest& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.MakeCallableRequest)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  if (from.session_handle().size() > 0) {
+    set_session_handle(from.session_handle());
+  }
+  if (from.has_options()) {
+    mutable_options()->::tensorflow::CallableOptions::MergeFrom(from.options());
+  }
+}
+
+void MakeCallableRequest::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.MakeCallableRequest)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void MakeCallableRequest::CopyFrom(const MakeCallableRequest& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.MakeCallableRequest)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool MakeCallableRequest::IsInitialized() const {
+  return true;
+}
+
+void MakeCallableRequest::Swap(MakeCallableRequest* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    MakeCallableRequest* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void MakeCallableRequest::UnsafeArenaSwap(MakeCallableRequest* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void MakeCallableRequest::InternalSwap(MakeCallableRequest* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  session_handle_.Swap(&other->session_handle_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+  swap(options_, other->options_);
+}
+
+::google::protobuf::Metadata MakeCallableRequest::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+void MakeCallableResponse::InitAsDefaultInstance() {
+}
+class MakeCallableResponse::HasBitSetters {
+ public:
+};
+
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int MakeCallableResponse::kHandleFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+MakeCallableResponse::MakeCallableResponse()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.MakeCallableResponse)
+}
+MakeCallableResponse::MakeCallableResponse(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.MakeCallableResponse)
+}
+MakeCallableResponse::MakeCallableResponse(const MakeCallableResponse& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  handle_ = from.handle_;
+  // @@protoc_insertion_point(copy_constructor:tensorflow.MakeCallableResponse)
+}
+
+void MakeCallableResponse::SharedCtor() {
+  handle_ = PROTOBUF_LONGLONG(0);
+}
+
+MakeCallableResponse::~MakeCallableResponse() {
+  // @@protoc_insertion_point(destructor:tensorflow.MakeCallableResponse)
+  SharedDtor();
+}
+
+void MakeCallableResponse::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+}
+
+void MakeCallableResponse::ArenaDtor(void* object) {
+  MakeCallableResponse* _this = reinterpret_cast< MakeCallableResponse* >(object);
+  (void)_this;
+}
+void MakeCallableResponse::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void MakeCallableResponse::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const MakeCallableResponse& MakeCallableResponse::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_MakeCallableResponse_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void MakeCallableResponse::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.MakeCallableResponse)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  handle_ = PROTOBUF_LONGLONG(0);
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* MakeCallableResponse::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<MakeCallableResponse*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // int64 handle = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 8) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::google::protobuf::int64 value = val;
+        msg->set_handle(value);
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool MakeCallableResponse::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.MakeCallableResponse)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // int64 handle = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (8 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>(
+                 input, &handle_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.MakeCallableResponse)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.MakeCallableResponse)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void MakeCallableResponse::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.MakeCallableResponse)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // int64 handle = 1;
+  if (this->handle() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt64(1, this->handle(), output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.MakeCallableResponse)
+}
+
+::google::protobuf::uint8* MakeCallableResponse::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.MakeCallableResponse)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // int64 handle = 1;
+  if (this->handle() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt64ToArray(1, this->handle(), target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.MakeCallableResponse)
+  return target;
+}
+
+size_t MakeCallableResponse::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.MakeCallableResponse)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // int64 handle = 1;
+  if (this->handle() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::Int64Size(
+        this->handle());
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void MakeCallableResponse::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.MakeCallableResponse)
+  GOOGLE_DCHECK_NE(&from, this);
+  const MakeCallableResponse* source =
+      ::google::protobuf::DynamicCastToGenerated<MakeCallableResponse>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.MakeCallableResponse)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.MakeCallableResponse)
+    MergeFrom(*source);
+  }
+}
+
+void MakeCallableResponse::MergeFrom(const MakeCallableResponse& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.MakeCallableResponse)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  if (from.handle() != 0) {
+    set_handle(from.handle());
+  }
+}
+
+void MakeCallableResponse::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.MakeCallableResponse)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void MakeCallableResponse::CopyFrom(const MakeCallableResponse& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.MakeCallableResponse)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool MakeCallableResponse::IsInitialized() const {
+  return true;
+}
+
+void MakeCallableResponse::Swap(MakeCallableResponse* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    MakeCallableResponse* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void MakeCallableResponse::UnsafeArenaSwap(MakeCallableResponse* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void MakeCallableResponse::InternalSwap(MakeCallableResponse* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  swap(handle_, other->handle_);
+}
+
+::google::protobuf::Metadata MakeCallableResponse::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+void RunCallableRequest::InitAsDefaultInstance() {
+}
+class RunCallableRequest::HasBitSetters {
+ public:
+};
+
+void RunCallableRequest::clear_feed() {
+  feed_.Clear();
+}
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int RunCallableRequest::kSessionHandleFieldNumber;
+const int RunCallableRequest::kHandleFieldNumber;
+const int RunCallableRequest::kFeedFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+RunCallableRequest::RunCallableRequest()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.RunCallableRequest)
+}
+RunCallableRequest::RunCallableRequest(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena),
+  feed_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.RunCallableRequest)
+}
+RunCallableRequest::RunCallableRequest(const RunCallableRequest& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL),
+      feed_(from.feed_) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  session_handle_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.session_handle().size() > 0) {
+    session_handle_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.session_handle(),
+      GetArenaNoVirtual());
+  }
+  handle_ = from.handle_;
+  // @@protoc_insertion_point(copy_constructor:tensorflow.RunCallableRequest)
+}
+
+void RunCallableRequest::SharedCtor() {
+  ::google::protobuf::internal::InitSCC(
+      &scc_info_RunCallableRequest_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto.base);
+  session_handle_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  handle_ = PROTOBUF_LONGLONG(0);
+}
+
+RunCallableRequest::~RunCallableRequest() {
+  // @@protoc_insertion_point(destructor:tensorflow.RunCallableRequest)
+  SharedDtor();
+}
+
+void RunCallableRequest::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+  session_handle_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+
+void RunCallableRequest::ArenaDtor(void* object) {
+  RunCallableRequest* _this = reinterpret_cast< RunCallableRequest* >(object);
+  (void)_this;
+}
+void RunCallableRequest::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void RunCallableRequest::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const RunCallableRequest& RunCallableRequest::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_RunCallableRequest_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void RunCallableRequest::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.RunCallableRequest)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  feed_.Clear();
+  session_handle_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+  handle_ = PROTOBUF_LONGLONG(0);
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* RunCallableRequest::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<RunCallableRequest*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // string session_handle = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 10) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("tensorflow.RunCallableRequest.session_handle");
+        parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+        ::std::string* str = msg->mutable_session_handle();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+        break;
+      }
+      // int64 handle = 2;
+      case 2: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 16) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::google::protobuf::int64 value = val;
+        msg->set_handle(value);
+        break;
+      }
+      // repeated .tensorflow.TensorProto feed = 3;
+      case 3: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 26) goto handle_unusual;
+        do {
+          ptr = Varint::Parse32Inline(ptr, &size);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          parser_till_end = ::tensorflow::TensorProto::_InternalParse;
+          object = msg->add_feed();
+          if (size > end - ptr) goto len_delim_till_end;
+          auto newend = ptr + size;
+          bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                         ptr, newend);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          ptr = newend;
+          if (ptr >= end) break;
+        } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 26 && (ptr += 1));
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool RunCallableRequest::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.RunCallableRequest)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // string session_handle = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (10 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_session_handle()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->session_handle().data(), static_cast<int>(this->session_handle().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.RunCallableRequest.session_handle"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // int64 handle = 2;
+      case 2: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (16 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>(
+                 input, &handle_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // repeated .tensorflow.TensorProto feed = 3;
+      case 3: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (26 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+                input, add_feed()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.RunCallableRequest)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.RunCallableRequest)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void RunCallableRequest::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.RunCallableRequest)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // string session_handle = 1;
+  if (this->session_handle().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->session_handle().data(), static_cast<int>(this->session_handle().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.RunCallableRequest.session_handle");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      1, this->session_handle(), output);
+  }
+
+  // int64 handle = 2;
+  if (this->handle() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt64(2, this->handle(), output);
+  }
+
+  // repeated .tensorflow.TensorProto feed = 3;
+  for (unsigned int i = 0,
+      n = static_cast<unsigned int>(this->feed_size()); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      3,
+      this->feed(static_cast<int>(i)),
+      output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.RunCallableRequest)
+}
+
+::google::protobuf::uint8* RunCallableRequest::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.RunCallableRequest)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // string session_handle = 1;
+  if (this->session_handle().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->session_handle().data(), static_cast<int>(this->session_handle().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.RunCallableRequest.session_handle");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        1, this->session_handle(), target);
+  }
+
+  // int64 handle = 2;
+  if (this->handle() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt64ToArray(2, this->handle(), target);
+  }
+
+  // repeated .tensorflow.TensorProto feed = 3;
+  for (unsigned int i = 0,
+      n = static_cast<unsigned int>(this->feed_size()); i < n; i++) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        3, this->feed(static_cast<int>(i)), deterministic, target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.RunCallableRequest)
+  return target;
+}
+
+size_t RunCallableRequest::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.RunCallableRequest)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // repeated .tensorflow.TensorProto feed = 3;
+  {
+    unsigned int count = static_cast<unsigned int>(this->feed_size());
+    total_size += 1UL * count;
+    for (unsigned int i = 0; i < count; i++) {
+      total_size +=
+        ::google::protobuf::internal::WireFormatLite::MessageSize(
+          this->feed(static_cast<int>(i)));
+    }
+  }
+
+  // string session_handle = 1;
+  if (this->session_handle().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->session_handle());
+  }
+
+  // int64 handle = 2;
+  if (this->handle() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::Int64Size(
+        this->handle());
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void RunCallableRequest::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.RunCallableRequest)
+  GOOGLE_DCHECK_NE(&from, this);
+  const RunCallableRequest* source =
+      ::google::protobuf::DynamicCastToGenerated<RunCallableRequest>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.RunCallableRequest)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.RunCallableRequest)
+    MergeFrom(*source);
+  }
+}
+
+void RunCallableRequest::MergeFrom(const RunCallableRequest& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.RunCallableRequest)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  feed_.MergeFrom(from.feed_);
+  if (from.session_handle().size() > 0) {
+    set_session_handle(from.session_handle());
+  }
+  if (from.handle() != 0) {
+    set_handle(from.handle());
+  }
+}
+
+void RunCallableRequest::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.RunCallableRequest)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void RunCallableRequest::CopyFrom(const RunCallableRequest& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.RunCallableRequest)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool RunCallableRequest::IsInitialized() const {
+  return true;
+}
+
+void RunCallableRequest::Swap(RunCallableRequest* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    RunCallableRequest* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void RunCallableRequest::UnsafeArenaSwap(RunCallableRequest* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void RunCallableRequest::InternalSwap(RunCallableRequest* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  CastToBase(&feed_)->InternalSwap(CastToBase(&other->feed_));
+  session_handle_.Swap(&other->session_handle_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+  swap(handle_, other->handle_);
+}
+
+::google::protobuf::Metadata RunCallableRequest::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+void RunCallableResponse::InitAsDefaultInstance() {
+  ::tensorflow::_RunCallableResponse_default_instance_._instance.get_mutable()->metadata_ = const_cast< ::tensorflow::RunMetadata*>(
+      ::tensorflow::RunMetadata::internal_default_instance());
+}
+class RunCallableResponse::HasBitSetters {
+ public:
+  static const ::tensorflow::RunMetadata& metadata(const RunCallableResponse* msg);
+};
+
+const ::tensorflow::RunMetadata&
+RunCallableResponse::HasBitSetters::metadata(const RunCallableResponse* msg) {
+  return *msg->metadata_;
+}
+void RunCallableResponse::clear_fetch() {
+  fetch_.Clear();
+}
+void RunCallableResponse::unsafe_arena_set_allocated_metadata(
+    ::tensorflow::RunMetadata* metadata) {
+  if (GetArenaNoVirtual() == NULL) {
+    delete metadata_;
+  }
+  metadata_ = metadata;
+  if (metadata) {
+    
+  } else {
+    
+  }
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.RunCallableResponse.metadata)
+}
+void RunCallableResponse::clear_metadata() {
+  if (GetArenaNoVirtual() == NULL && metadata_ != NULL) {
+    delete metadata_;
+  }
+  metadata_ = NULL;
+}
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int RunCallableResponse::kFetchFieldNumber;
+const int RunCallableResponse::kMetadataFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+RunCallableResponse::RunCallableResponse()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.RunCallableResponse)
+}
+RunCallableResponse::RunCallableResponse(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena),
+  fetch_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.RunCallableResponse)
+}
+RunCallableResponse::RunCallableResponse(const RunCallableResponse& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL),
+      fetch_(from.fetch_) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  if (from.has_metadata()) {
+    metadata_ = new ::tensorflow::RunMetadata(*from.metadata_);
+  } else {
+    metadata_ = NULL;
+  }
+  // @@protoc_insertion_point(copy_constructor:tensorflow.RunCallableResponse)
+}
+
+void RunCallableResponse::SharedCtor() {
+  ::google::protobuf::internal::InitSCC(
+      &scc_info_RunCallableResponse_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto.base);
+  metadata_ = NULL;
+}
+
+RunCallableResponse::~RunCallableResponse() {
+  // @@protoc_insertion_point(destructor:tensorflow.RunCallableResponse)
+  SharedDtor();
+}
+
+void RunCallableResponse::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+  if (this != internal_default_instance()) delete metadata_;
+}
+
+void RunCallableResponse::ArenaDtor(void* object) {
+  RunCallableResponse* _this = reinterpret_cast< RunCallableResponse* >(object);
+  (void)_this;
+}
+void RunCallableResponse::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void RunCallableResponse::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const RunCallableResponse& RunCallableResponse::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_RunCallableResponse_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void RunCallableResponse::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.RunCallableResponse)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  fetch_.Clear();
+  if (GetArenaNoVirtual() == NULL && metadata_ != NULL) {
+    delete metadata_;
+  }
+  metadata_ = NULL;
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* RunCallableResponse::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<RunCallableResponse*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // repeated .tensorflow.TensorProto fetch = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 10) goto handle_unusual;
+        do {
+          ptr = Varint::Parse32Inline(ptr, &size);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          parser_till_end = ::tensorflow::TensorProto::_InternalParse;
+          object = msg->add_fetch();
+          if (size > end - ptr) goto len_delim_till_end;
+          auto newend = ptr + size;
+          bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                         ptr, newend);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          ptr = newend;
+          if (ptr >= end) break;
+        } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 10 && (ptr += 1));
+        break;
+      }
+      // .tensorflow.RunMetadata metadata = 2;
+      case 2: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 18) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        parser_till_end = ::tensorflow::RunMetadata::_InternalParse;
+        object = msg->mutable_metadata();
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                       ptr, newend);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+        ptr = newend;
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool RunCallableResponse::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.RunCallableResponse)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // repeated .tensorflow.TensorProto fetch = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (10 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+                input, add_fetch()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // .tensorflow.RunMetadata metadata = 2;
+      case 2: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (18 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+               input, mutable_metadata()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.RunCallableResponse)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.RunCallableResponse)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void RunCallableResponse::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.RunCallableResponse)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // repeated .tensorflow.TensorProto fetch = 1;
+  for (unsigned int i = 0,
+      n = static_cast<unsigned int>(this->fetch_size()); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      1,
+      this->fetch(static_cast<int>(i)),
+      output);
+  }
+
+  // .tensorflow.RunMetadata metadata = 2;
+  if (this->has_metadata()) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      2, HasBitSetters::metadata(this), output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.RunCallableResponse)
+}
+
+::google::protobuf::uint8* RunCallableResponse::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.RunCallableResponse)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // repeated .tensorflow.TensorProto fetch = 1;
+  for (unsigned int i = 0,
+      n = static_cast<unsigned int>(this->fetch_size()); i < n; i++) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        1, this->fetch(static_cast<int>(i)), deterministic, target);
+  }
+
+  // .tensorflow.RunMetadata metadata = 2;
+  if (this->has_metadata()) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        2, HasBitSetters::metadata(this), deterministic, target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.RunCallableResponse)
+  return target;
+}
+
+size_t RunCallableResponse::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.RunCallableResponse)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // repeated .tensorflow.TensorProto fetch = 1;
+  {
+    unsigned int count = static_cast<unsigned int>(this->fetch_size());
+    total_size += 1UL * count;
+    for (unsigned int i = 0; i < count; i++) {
+      total_size +=
+        ::google::protobuf::internal::WireFormatLite::MessageSize(
+          this->fetch(static_cast<int>(i)));
+    }
+  }
+
+  // .tensorflow.RunMetadata metadata = 2;
+  if (this->has_metadata()) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::MessageSize(
+        *metadata_);
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void RunCallableResponse::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.RunCallableResponse)
+  GOOGLE_DCHECK_NE(&from, this);
+  const RunCallableResponse* source =
+      ::google::protobuf::DynamicCastToGenerated<RunCallableResponse>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.RunCallableResponse)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.RunCallableResponse)
+    MergeFrom(*source);
+  }
+}
+
+void RunCallableResponse::MergeFrom(const RunCallableResponse& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.RunCallableResponse)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  fetch_.MergeFrom(from.fetch_);
+  if (from.has_metadata()) {
+    mutable_metadata()->::tensorflow::RunMetadata::MergeFrom(from.metadata());
+  }
+}
+
+void RunCallableResponse::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.RunCallableResponse)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void RunCallableResponse::CopyFrom(const RunCallableResponse& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.RunCallableResponse)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool RunCallableResponse::IsInitialized() const {
+  return true;
+}
+
+void RunCallableResponse::Swap(RunCallableResponse* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    RunCallableResponse* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void RunCallableResponse::UnsafeArenaSwap(RunCallableResponse* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void RunCallableResponse::InternalSwap(RunCallableResponse* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  CastToBase(&fetch_)->InternalSwap(CastToBase(&other->fetch_));
+  swap(metadata_, other->metadata_);
+}
+
+::google::protobuf::Metadata RunCallableResponse::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+void ReleaseCallableRequest::InitAsDefaultInstance() {
+}
+class ReleaseCallableRequest::HasBitSetters {
+ public:
+};
+
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int ReleaseCallableRequest::kSessionHandleFieldNumber;
+const int ReleaseCallableRequest::kHandleFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+ReleaseCallableRequest::ReleaseCallableRequest()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.ReleaseCallableRequest)
+}
+ReleaseCallableRequest::ReleaseCallableRequest(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.ReleaseCallableRequest)
+}
+ReleaseCallableRequest::ReleaseCallableRequest(const ReleaseCallableRequest& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  session_handle_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.session_handle().size() > 0) {
+    session_handle_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.session_handle(),
+      GetArenaNoVirtual());
+  }
+  handle_ = from.handle_;
+  // @@protoc_insertion_point(copy_constructor:tensorflow.ReleaseCallableRequest)
+}
+
+void ReleaseCallableRequest::SharedCtor() {
+  ::google::protobuf::internal::InitSCC(
+      &scc_info_ReleaseCallableRequest_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto.base);
+  session_handle_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  handle_ = PROTOBUF_LONGLONG(0);
+}
+
+ReleaseCallableRequest::~ReleaseCallableRequest() {
+  // @@protoc_insertion_point(destructor:tensorflow.ReleaseCallableRequest)
+  SharedDtor();
+}
+
+void ReleaseCallableRequest::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+  session_handle_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+
+void ReleaseCallableRequest::ArenaDtor(void* object) {
+  ReleaseCallableRequest* _this = reinterpret_cast< ReleaseCallableRequest* >(object);
+  (void)_this;
+}
+void ReleaseCallableRequest::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void ReleaseCallableRequest::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const ReleaseCallableRequest& ReleaseCallableRequest::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_ReleaseCallableRequest_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void ReleaseCallableRequest::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.ReleaseCallableRequest)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  session_handle_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+  handle_ = PROTOBUF_LONGLONG(0);
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* ReleaseCallableRequest::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<ReleaseCallableRequest*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // string session_handle = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 10) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("tensorflow.ReleaseCallableRequest.session_handle");
+        parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+        ::std::string* str = msg->mutable_session_handle();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+        break;
+      }
+      // int64 handle = 2;
+      case 2: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 16) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::google::protobuf::int64 value = val;
+        msg->set_handle(value);
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool ReleaseCallableRequest::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.ReleaseCallableRequest)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // string session_handle = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (10 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_session_handle()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->session_handle().data(), static_cast<int>(this->session_handle().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.ReleaseCallableRequest.session_handle"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // int64 handle = 2;
+      case 2: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (16 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>(
+                 input, &handle_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.ReleaseCallableRequest)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.ReleaseCallableRequest)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void ReleaseCallableRequest::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.ReleaseCallableRequest)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // string session_handle = 1;
+  if (this->session_handle().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->session_handle().data(), static_cast<int>(this->session_handle().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.ReleaseCallableRequest.session_handle");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      1, this->session_handle(), output);
+  }
+
+  // int64 handle = 2;
+  if (this->handle() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt64(2, this->handle(), output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.ReleaseCallableRequest)
+}
+
+::google::protobuf::uint8* ReleaseCallableRequest::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.ReleaseCallableRequest)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // string session_handle = 1;
+  if (this->session_handle().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->session_handle().data(), static_cast<int>(this->session_handle().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.ReleaseCallableRequest.session_handle");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        1, this->session_handle(), target);
+  }
+
+  // int64 handle = 2;
+  if (this->handle() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt64ToArray(2, this->handle(), target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.ReleaseCallableRequest)
+  return target;
+}
+
+size_t ReleaseCallableRequest::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.ReleaseCallableRequest)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // string session_handle = 1;
+  if (this->session_handle().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->session_handle());
+  }
+
+  // int64 handle = 2;
+  if (this->handle() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::Int64Size(
+        this->handle());
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void ReleaseCallableRequest::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.ReleaseCallableRequest)
+  GOOGLE_DCHECK_NE(&from, this);
+  const ReleaseCallableRequest* source =
+      ::google::protobuf::DynamicCastToGenerated<ReleaseCallableRequest>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.ReleaseCallableRequest)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.ReleaseCallableRequest)
+    MergeFrom(*source);
+  }
+}
+
+void ReleaseCallableRequest::MergeFrom(const ReleaseCallableRequest& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.ReleaseCallableRequest)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  if (from.session_handle().size() > 0) {
+    set_session_handle(from.session_handle());
+  }
+  if (from.handle() != 0) {
+    set_handle(from.handle());
+  }
+}
+
+void ReleaseCallableRequest::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.ReleaseCallableRequest)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void ReleaseCallableRequest::CopyFrom(const ReleaseCallableRequest& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.ReleaseCallableRequest)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool ReleaseCallableRequest::IsInitialized() const {
+  return true;
+}
+
+void ReleaseCallableRequest::Swap(ReleaseCallableRequest* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    ReleaseCallableRequest* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void ReleaseCallableRequest::UnsafeArenaSwap(ReleaseCallableRequest* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void ReleaseCallableRequest::InternalSwap(ReleaseCallableRequest* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  session_handle_.Swap(&other->session_handle_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+  swap(handle_, other->handle_);
+}
+
+::google::protobuf::Metadata ReleaseCallableRequest::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+void ReleaseCallableResponse::InitAsDefaultInstance() {
+}
+class ReleaseCallableResponse::HasBitSetters {
+ public:
+};
+
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+ReleaseCallableResponse::ReleaseCallableResponse()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.ReleaseCallableResponse)
+}
+ReleaseCallableResponse::ReleaseCallableResponse(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.ReleaseCallableResponse)
+}
+ReleaseCallableResponse::ReleaseCallableResponse(const ReleaseCallableResponse& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  // @@protoc_insertion_point(copy_constructor:tensorflow.ReleaseCallableResponse)
+}
+
+void ReleaseCallableResponse::SharedCtor() {
+}
+
+ReleaseCallableResponse::~ReleaseCallableResponse() {
+  // @@protoc_insertion_point(destructor:tensorflow.ReleaseCallableResponse)
+  SharedDtor();
+}
+
+void ReleaseCallableResponse::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+}
+
+void ReleaseCallableResponse::ArenaDtor(void* object) {
+  ReleaseCallableResponse* _this = reinterpret_cast< ReleaseCallableResponse* >(object);
+  (void)_this;
+}
+void ReleaseCallableResponse::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void ReleaseCallableResponse::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const ReleaseCallableResponse& ReleaseCallableResponse::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_ReleaseCallableResponse_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void ReleaseCallableResponse::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.ReleaseCallableResponse)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* ReleaseCallableResponse::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<ReleaseCallableResponse*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool ReleaseCallableResponse::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.ReleaseCallableResponse)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+  handle_unusual:
+    if (tag == 0) {
+      goto success;
+    }
+    DO_(::google::protobuf::internal::WireFormat::SkipField(
+          input, tag, _internal_metadata_.mutable_unknown_fields()));
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.ReleaseCallableResponse)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.ReleaseCallableResponse)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void ReleaseCallableResponse::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.ReleaseCallableResponse)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.ReleaseCallableResponse)
+}
+
+::google::protobuf::uint8* ReleaseCallableResponse::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.ReleaseCallableResponse)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.ReleaseCallableResponse)
+  return target;
+}
+
+size_t ReleaseCallableResponse::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.ReleaseCallableResponse)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void ReleaseCallableResponse::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.ReleaseCallableResponse)
+  GOOGLE_DCHECK_NE(&from, this);
+  const ReleaseCallableResponse* source =
+      ::google::protobuf::DynamicCastToGenerated<ReleaseCallableResponse>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.ReleaseCallableResponse)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.ReleaseCallableResponse)
+    MergeFrom(*source);
+  }
+}
+
+void ReleaseCallableResponse::MergeFrom(const ReleaseCallableResponse& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.ReleaseCallableResponse)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+}
+
+void ReleaseCallableResponse::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.ReleaseCallableResponse)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void ReleaseCallableResponse::CopyFrom(const ReleaseCallableResponse& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.ReleaseCallableResponse)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool ReleaseCallableResponse::IsInitialized() const {
+  return true;
+}
+
+void ReleaseCallableResponse::Swap(ReleaseCallableResponse* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    ReleaseCallableResponse* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void ReleaseCallableResponse::UnsafeArenaSwap(ReleaseCallableResponse* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void ReleaseCallableResponse::InternalSwap(ReleaseCallableResponse* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+}
+
+::google::protobuf::Metadata ReleaseCallableResponse::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto[kIndexInFileMessages];
+}
+
+
+// @@protoc_insertion_point(namespace_scope)
+}  // namespace tensorflow
+namespace google {
+namespace protobuf {
+template<> PROTOBUF_NOINLINE ::tensorflow::CreateSessionRequest* Arena::CreateMaybeMessage< ::tensorflow::CreateSessionRequest >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::CreateSessionRequest >(arena);
+}
+template<> PROTOBUF_NOINLINE ::tensorflow::CreateSessionResponse* Arena::CreateMaybeMessage< ::tensorflow::CreateSessionResponse >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::CreateSessionResponse >(arena);
+}
+template<> PROTOBUF_NOINLINE ::tensorflow::ExtendSessionRequest* Arena::CreateMaybeMessage< ::tensorflow::ExtendSessionRequest >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::ExtendSessionRequest >(arena);
+}
+template<> PROTOBUF_NOINLINE ::tensorflow::ExtendSessionResponse* Arena::CreateMaybeMessage< ::tensorflow::ExtendSessionResponse >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::ExtendSessionResponse >(arena);
+}
+template<> PROTOBUF_NOINLINE ::tensorflow::RunStepRequest* Arena::CreateMaybeMessage< ::tensorflow::RunStepRequest >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::RunStepRequest >(arena);
+}
+template<> PROTOBUF_NOINLINE ::tensorflow::RunStepResponse* Arena::CreateMaybeMessage< ::tensorflow::RunStepResponse >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::RunStepResponse >(arena);
+}
+template<> PROTOBUF_NOINLINE ::tensorflow::PartialRunSetupRequest* Arena::CreateMaybeMessage< ::tensorflow::PartialRunSetupRequest >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::PartialRunSetupRequest >(arena);
+}
+template<> PROTOBUF_NOINLINE ::tensorflow::PartialRunSetupResponse* Arena::CreateMaybeMessage< ::tensorflow::PartialRunSetupResponse >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::PartialRunSetupResponse >(arena);
+}
+template<> PROTOBUF_NOINLINE ::tensorflow::CloseSessionRequest* Arena::CreateMaybeMessage< ::tensorflow::CloseSessionRequest >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::CloseSessionRequest >(arena);
+}
+template<> PROTOBUF_NOINLINE ::tensorflow::CloseSessionResponse* Arena::CreateMaybeMessage< ::tensorflow::CloseSessionResponse >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::CloseSessionResponse >(arena);
+}
+template<> PROTOBUF_NOINLINE ::tensorflow::ResetRequest* Arena::CreateMaybeMessage< ::tensorflow::ResetRequest >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::ResetRequest >(arena);
+}
+template<> PROTOBUF_NOINLINE ::tensorflow::ResetResponse* Arena::CreateMaybeMessage< ::tensorflow::ResetResponse >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::ResetResponse >(arena);
+}
+template<> PROTOBUF_NOINLINE ::tensorflow::ListDevicesRequest* Arena::CreateMaybeMessage< ::tensorflow::ListDevicesRequest >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::ListDevicesRequest >(arena);
+}
+template<> PROTOBUF_NOINLINE ::tensorflow::ListDevicesResponse* Arena::CreateMaybeMessage< ::tensorflow::ListDevicesResponse >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::ListDevicesResponse >(arena);
+}
+template<> PROTOBUF_NOINLINE ::tensorflow::MakeCallableRequest* Arena::CreateMaybeMessage< ::tensorflow::MakeCallableRequest >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::MakeCallableRequest >(arena);
+}
+template<> PROTOBUF_NOINLINE ::tensorflow::MakeCallableResponse* Arena::CreateMaybeMessage< ::tensorflow::MakeCallableResponse >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::MakeCallableResponse >(arena);
+}
+template<> PROTOBUF_NOINLINE ::tensorflow::RunCallableRequest* Arena::CreateMaybeMessage< ::tensorflow::RunCallableRequest >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::RunCallableRequest >(arena);
+}
+template<> PROTOBUF_NOINLINE ::tensorflow::RunCallableResponse* Arena::CreateMaybeMessage< ::tensorflow::RunCallableResponse >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::RunCallableResponse >(arena);
+}
+template<> PROTOBUF_NOINLINE ::tensorflow::ReleaseCallableRequest* Arena::CreateMaybeMessage< ::tensorflow::ReleaseCallableRequest >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::ReleaseCallableRequest >(arena);
+}
+template<> PROTOBUF_NOINLINE ::tensorflow::ReleaseCallableResponse* Arena::CreateMaybeMessage< ::tensorflow::ReleaseCallableResponse >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::ReleaseCallableResponse >(arena);
+}
+}  // namespace protobuf
+}  // namespace google
+
+// @@protoc_insertion_point(global_scope)
+#include <google/protobuf/port_undef.inc>
diff --git a/tensorflow/core/protobuf/master.pb.h b/tensorflow/core/protobuf/master.pb.h
new file mode 100644 (file)
index 0000000..a5b71fd
--- /dev/null
@@ -0,0 +1,5483 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: tensorflow/core/protobuf/master.proto
+
+#ifndef PROTOBUF_INCLUDED_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto
+#define PROTOBUF_INCLUDED_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto
+
+#include <limits>
+#include <string>
+
+#include <google/protobuf/port_def.inc>
+#if PROTOBUF_VERSION < 3006001
+#error This file was generated by a newer version of protoc which is
+#error incompatible with your Protocol Buffer headers. Please update
+#error your headers.
+#endif
+#if 3006001 < PROTOBUF_MIN_PROTOC_VERSION
+#error This file was generated by an older version of protoc which is
+#error incompatible with your Protocol Buffer headers. Please
+#error regenerate this file with a newer version of protoc.
+#endif
+
+#include <google/protobuf/port_undef.inc>
+#include <google/protobuf/io/coded_stream.h>
+#include <google/protobuf/arena.h>
+#include <google/protobuf/arenastring.h>
+#include <google/protobuf/generated_message_table_driven.h>
+#include <google/protobuf/generated_message_util.h>
+#include <google/protobuf/inlined_string_field.h>
+#include <google/protobuf/metadata.h>
+#include <google/protobuf/message.h>
+#include <google/protobuf/repeated_field.h>  // IWYU pragma: export
+#include <google/protobuf/extension_set.h>  // IWYU pragma: export
+#include <google/protobuf/unknown_field_set.h>
+#include "tensorflow/core/framework/device_attributes.pb.h"
+#include "tensorflow/core/framework/graph.pb.h"
+#include "tensorflow/core/framework/tensor.pb.h"
+#include "tensorflow/core/lib/core/error_codes.pb.h"
+#include "tensorflow/core/protobuf/config.pb.h"
+#include "tensorflow/core/protobuf/named_tensor.pb.h"
+// @@protoc_insertion_point(includes)
+#include <google/protobuf/port_def.inc>
+#define PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto
+
+// Internal implementation detail -- do not use these members.
+struct TableStruct_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto {
+  static const ::google::protobuf::internal::ParseTableField entries[]
+    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
+  static const ::google::protobuf::internal::AuxillaryParseTableField aux[]
+    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
+  static const ::google::protobuf::internal::ParseTable schema[20]
+    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
+  static const ::google::protobuf::internal::FieldMetadata field_metadata[];
+  static const ::google::protobuf::internal::SerializationTable serialization_table[];
+  static const ::google::protobuf::uint32 offsets[];
+};
+void AddDescriptors_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto();
+namespace tensorflow {
+class CloseSessionRequest;
+class CloseSessionRequestDefaultTypeInternal;
+extern CloseSessionRequestDefaultTypeInternal _CloseSessionRequest_default_instance_;
+class CloseSessionResponse;
+class CloseSessionResponseDefaultTypeInternal;
+extern CloseSessionResponseDefaultTypeInternal _CloseSessionResponse_default_instance_;
+class CreateSessionRequest;
+class CreateSessionRequestDefaultTypeInternal;
+extern CreateSessionRequestDefaultTypeInternal _CreateSessionRequest_default_instance_;
+class CreateSessionResponse;
+class CreateSessionResponseDefaultTypeInternal;
+extern CreateSessionResponseDefaultTypeInternal _CreateSessionResponse_default_instance_;
+class ExtendSessionRequest;
+class ExtendSessionRequestDefaultTypeInternal;
+extern ExtendSessionRequestDefaultTypeInternal _ExtendSessionRequest_default_instance_;
+class ExtendSessionResponse;
+class ExtendSessionResponseDefaultTypeInternal;
+extern ExtendSessionResponseDefaultTypeInternal _ExtendSessionResponse_default_instance_;
+class ListDevicesRequest;
+class ListDevicesRequestDefaultTypeInternal;
+extern ListDevicesRequestDefaultTypeInternal _ListDevicesRequest_default_instance_;
+class ListDevicesResponse;
+class ListDevicesResponseDefaultTypeInternal;
+extern ListDevicesResponseDefaultTypeInternal _ListDevicesResponse_default_instance_;
+class MakeCallableRequest;
+class MakeCallableRequestDefaultTypeInternal;
+extern MakeCallableRequestDefaultTypeInternal _MakeCallableRequest_default_instance_;
+class MakeCallableResponse;
+class MakeCallableResponseDefaultTypeInternal;
+extern MakeCallableResponseDefaultTypeInternal _MakeCallableResponse_default_instance_;
+class PartialRunSetupRequest;
+class PartialRunSetupRequestDefaultTypeInternal;
+extern PartialRunSetupRequestDefaultTypeInternal _PartialRunSetupRequest_default_instance_;
+class PartialRunSetupResponse;
+class PartialRunSetupResponseDefaultTypeInternal;
+extern PartialRunSetupResponseDefaultTypeInternal _PartialRunSetupResponse_default_instance_;
+class ReleaseCallableRequest;
+class ReleaseCallableRequestDefaultTypeInternal;
+extern ReleaseCallableRequestDefaultTypeInternal _ReleaseCallableRequest_default_instance_;
+class ReleaseCallableResponse;
+class ReleaseCallableResponseDefaultTypeInternal;
+extern ReleaseCallableResponseDefaultTypeInternal _ReleaseCallableResponse_default_instance_;
+class ResetRequest;
+class ResetRequestDefaultTypeInternal;
+extern ResetRequestDefaultTypeInternal _ResetRequest_default_instance_;
+class ResetResponse;
+class ResetResponseDefaultTypeInternal;
+extern ResetResponseDefaultTypeInternal _ResetResponse_default_instance_;
+class RunCallableRequest;
+class RunCallableRequestDefaultTypeInternal;
+extern RunCallableRequestDefaultTypeInternal _RunCallableRequest_default_instance_;
+class RunCallableResponse;
+class RunCallableResponseDefaultTypeInternal;
+extern RunCallableResponseDefaultTypeInternal _RunCallableResponse_default_instance_;
+class RunStepRequest;
+class RunStepRequestDefaultTypeInternal;
+extern RunStepRequestDefaultTypeInternal _RunStepRequest_default_instance_;
+class RunStepResponse;
+class RunStepResponseDefaultTypeInternal;
+extern RunStepResponseDefaultTypeInternal _RunStepResponse_default_instance_;
+}  // namespace tensorflow
+namespace google {
+namespace protobuf {
+template<> ::tensorflow::CloseSessionRequest* Arena::CreateMaybeMessage<::tensorflow::CloseSessionRequest>(Arena*);
+template<> ::tensorflow::CloseSessionResponse* Arena::CreateMaybeMessage<::tensorflow::CloseSessionResponse>(Arena*);
+template<> ::tensorflow::CreateSessionRequest* Arena::CreateMaybeMessage<::tensorflow::CreateSessionRequest>(Arena*);
+template<> ::tensorflow::CreateSessionResponse* Arena::CreateMaybeMessage<::tensorflow::CreateSessionResponse>(Arena*);
+template<> ::tensorflow::ExtendSessionRequest* Arena::CreateMaybeMessage<::tensorflow::ExtendSessionRequest>(Arena*);
+template<> ::tensorflow::ExtendSessionResponse* Arena::CreateMaybeMessage<::tensorflow::ExtendSessionResponse>(Arena*);
+template<> ::tensorflow::ListDevicesRequest* Arena::CreateMaybeMessage<::tensorflow::ListDevicesRequest>(Arena*);
+template<> ::tensorflow::ListDevicesResponse* Arena::CreateMaybeMessage<::tensorflow::ListDevicesResponse>(Arena*);
+template<> ::tensorflow::MakeCallableRequest* Arena::CreateMaybeMessage<::tensorflow::MakeCallableRequest>(Arena*);
+template<> ::tensorflow::MakeCallableResponse* Arena::CreateMaybeMessage<::tensorflow::MakeCallableResponse>(Arena*);
+template<> ::tensorflow::PartialRunSetupRequest* Arena::CreateMaybeMessage<::tensorflow::PartialRunSetupRequest>(Arena*);
+template<> ::tensorflow::PartialRunSetupResponse* Arena::CreateMaybeMessage<::tensorflow::PartialRunSetupResponse>(Arena*);
+template<> ::tensorflow::ReleaseCallableRequest* Arena::CreateMaybeMessage<::tensorflow::ReleaseCallableRequest>(Arena*);
+template<> ::tensorflow::ReleaseCallableResponse* Arena::CreateMaybeMessage<::tensorflow::ReleaseCallableResponse>(Arena*);
+template<> ::tensorflow::ResetRequest* Arena::CreateMaybeMessage<::tensorflow::ResetRequest>(Arena*);
+template<> ::tensorflow::ResetResponse* Arena::CreateMaybeMessage<::tensorflow::ResetResponse>(Arena*);
+template<> ::tensorflow::RunCallableRequest* Arena::CreateMaybeMessage<::tensorflow::RunCallableRequest>(Arena*);
+template<> ::tensorflow::RunCallableResponse* Arena::CreateMaybeMessage<::tensorflow::RunCallableResponse>(Arena*);
+template<> ::tensorflow::RunStepRequest* Arena::CreateMaybeMessage<::tensorflow::RunStepRequest>(Arena*);
+template<> ::tensorflow::RunStepResponse* Arena::CreateMaybeMessage<::tensorflow::RunStepResponse>(Arena*);
+}  // namespace protobuf
+}  // namespace google
+namespace tensorflow {
+
+// ===================================================================
+
+class CreateSessionRequest : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.CreateSessionRequest) */ {
+ public:
+  CreateSessionRequest();
+  virtual ~CreateSessionRequest();
+
+  CreateSessionRequest(const CreateSessionRequest& from);
+
+  inline CreateSessionRequest& operator=(const CreateSessionRequest& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  CreateSessionRequest(CreateSessionRequest&& from) noexcept
+    : CreateSessionRequest() {
+    *this = ::std::move(from);
+  }
+
+  inline CreateSessionRequest& operator=(CreateSessionRequest&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const CreateSessionRequest& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const CreateSessionRequest* internal_default_instance() {
+    return reinterpret_cast<const CreateSessionRequest*>(
+               &_CreateSessionRequest_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    0;
+
+  void UnsafeArenaSwap(CreateSessionRequest* other);
+  void Swap(CreateSessionRequest* other);
+  friend void swap(CreateSessionRequest& a, CreateSessionRequest& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline CreateSessionRequest* New() const final {
+    return CreateMaybeMessage<CreateSessionRequest>(NULL);
+  }
+
+  CreateSessionRequest* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<CreateSessionRequest>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const CreateSessionRequest& from);
+  void MergeFrom(const CreateSessionRequest& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(CreateSessionRequest* other);
+  protected:
+  explicit CreateSessionRequest(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // string target = 3;
+  void clear_target();
+  static const int kTargetFieldNumber = 3;
+  const ::std::string& target() const;
+  void set_target(const ::std::string& value);
+  #if LANG_CXX11
+  void set_target(::std::string&& value);
+  #endif
+  void set_target(const char* value);
+  void set_target(const char* value, size_t size);
+  ::std::string* mutable_target();
+  ::std::string* release_target();
+  void set_allocated_target(::std::string* target);
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  ::std::string* unsafe_arena_release_target();
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  void unsafe_arena_set_allocated_target(
+      ::std::string* target);
+
+  // .tensorflow.GraphDef graph_def = 1;
+  bool has_graph_def() const;
+  void clear_graph_def();
+  static const int kGraphDefFieldNumber = 1;
+  const ::tensorflow::GraphDef& graph_def() const;
+  ::tensorflow::GraphDef* release_graph_def();
+  ::tensorflow::GraphDef* mutable_graph_def();
+  void set_allocated_graph_def(::tensorflow::GraphDef* graph_def);
+  void unsafe_arena_set_allocated_graph_def(
+      ::tensorflow::GraphDef* graph_def);
+  ::tensorflow::GraphDef* unsafe_arena_release_graph_def();
+
+  // .tensorflow.ConfigProto config = 2;
+  bool has_config() const;
+  void clear_config();
+  static const int kConfigFieldNumber = 2;
+  const ::tensorflow::ConfigProto& config() const;
+  ::tensorflow::ConfigProto* release_config();
+  ::tensorflow::ConfigProto* mutable_config();
+  void set_allocated_config(::tensorflow::ConfigProto* config);
+  void unsafe_arena_set_allocated_config(
+      ::tensorflow::ConfigProto* config);
+  ::tensorflow::ConfigProto* unsafe_arena_release_config();
+
+  // @@protoc_insertion_point(class_scope:tensorflow.CreateSessionRequest)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  ::google::protobuf::internal::ArenaStringPtr target_;
+  ::tensorflow::GraphDef* graph_def_;
+  ::tensorflow::ConfigProto* config_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto;
+};
+// -------------------------------------------------------------------
+
+class CreateSessionResponse : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.CreateSessionResponse) */ {
+ public:
+  CreateSessionResponse();
+  virtual ~CreateSessionResponse();
+
+  CreateSessionResponse(const CreateSessionResponse& from);
+
+  inline CreateSessionResponse& operator=(const CreateSessionResponse& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  CreateSessionResponse(CreateSessionResponse&& from) noexcept
+    : CreateSessionResponse() {
+    *this = ::std::move(from);
+  }
+
+  inline CreateSessionResponse& operator=(CreateSessionResponse&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const CreateSessionResponse& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const CreateSessionResponse* internal_default_instance() {
+    return reinterpret_cast<const CreateSessionResponse*>(
+               &_CreateSessionResponse_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    1;
+
+  void UnsafeArenaSwap(CreateSessionResponse* other);
+  void Swap(CreateSessionResponse* other);
+  friend void swap(CreateSessionResponse& a, CreateSessionResponse& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline CreateSessionResponse* New() const final {
+    return CreateMaybeMessage<CreateSessionResponse>(NULL);
+  }
+
+  CreateSessionResponse* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<CreateSessionResponse>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const CreateSessionResponse& from);
+  void MergeFrom(const CreateSessionResponse& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(CreateSessionResponse* other);
+  protected:
+  explicit CreateSessionResponse(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // string session_handle = 1;
+  void clear_session_handle();
+  static const int kSessionHandleFieldNumber = 1;
+  const ::std::string& session_handle() const;
+  void set_session_handle(const ::std::string& value);
+  #if LANG_CXX11
+  void set_session_handle(::std::string&& value);
+  #endif
+  void set_session_handle(const char* value);
+  void set_session_handle(const char* value, size_t size);
+  ::std::string* mutable_session_handle();
+  ::std::string* release_session_handle();
+  void set_allocated_session_handle(::std::string* session_handle);
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  ::std::string* unsafe_arena_release_session_handle();
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  void unsafe_arena_set_allocated_session_handle(
+      ::std::string* session_handle);
+
+  // int64 graph_version = 2;
+  void clear_graph_version();
+  static const int kGraphVersionFieldNumber = 2;
+  ::google::protobuf::int64 graph_version() const;
+  void set_graph_version(::google::protobuf::int64 value);
+
+  // @@protoc_insertion_point(class_scope:tensorflow.CreateSessionResponse)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  ::google::protobuf::internal::ArenaStringPtr session_handle_;
+  ::google::protobuf::int64 graph_version_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto;
+};
+// -------------------------------------------------------------------
+
+class ExtendSessionRequest : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.ExtendSessionRequest) */ {
+ public:
+  ExtendSessionRequest();
+  virtual ~ExtendSessionRequest();
+
+  ExtendSessionRequest(const ExtendSessionRequest& from);
+
+  inline ExtendSessionRequest& operator=(const ExtendSessionRequest& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  ExtendSessionRequest(ExtendSessionRequest&& from) noexcept
+    : ExtendSessionRequest() {
+    *this = ::std::move(from);
+  }
+
+  inline ExtendSessionRequest& operator=(ExtendSessionRequest&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const ExtendSessionRequest& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const ExtendSessionRequest* internal_default_instance() {
+    return reinterpret_cast<const ExtendSessionRequest*>(
+               &_ExtendSessionRequest_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    2;
+
+  void UnsafeArenaSwap(ExtendSessionRequest* other);
+  void Swap(ExtendSessionRequest* other);
+  friend void swap(ExtendSessionRequest& a, ExtendSessionRequest& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline ExtendSessionRequest* New() const final {
+    return CreateMaybeMessage<ExtendSessionRequest>(NULL);
+  }
+
+  ExtendSessionRequest* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<ExtendSessionRequest>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const ExtendSessionRequest& from);
+  void MergeFrom(const ExtendSessionRequest& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(ExtendSessionRequest* other);
+  protected:
+  explicit ExtendSessionRequest(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // string session_handle = 1;
+  void clear_session_handle();
+  static const int kSessionHandleFieldNumber = 1;
+  const ::std::string& session_handle() const;
+  void set_session_handle(const ::std::string& value);
+  #if LANG_CXX11
+  void set_session_handle(::std::string&& value);
+  #endif
+  void set_session_handle(const char* value);
+  void set_session_handle(const char* value, size_t size);
+  ::std::string* mutable_session_handle();
+  ::std::string* release_session_handle();
+  void set_allocated_session_handle(::std::string* session_handle);
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  ::std::string* unsafe_arena_release_session_handle();
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  void unsafe_arena_set_allocated_session_handle(
+      ::std::string* session_handle);
+
+  // .tensorflow.GraphDef graph_def = 2;
+  bool has_graph_def() const;
+  void clear_graph_def();
+  static const int kGraphDefFieldNumber = 2;
+  const ::tensorflow::GraphDef& graph_def() const;
+  ::tensorflow::GraphDef* release_graph_def();
+  ::tensorflow::GraphDef* mutable_graph_def();
+  void set_allocated_graph_def(::tensorflow::GraphDef* graph_def);
+  void unsafe_arena_set_allocated_graph_def(
+      ::tensorflow::GraphDef* graph_def);
+  ::tensorflow::GraphDef* unsafe_arena_release_graph_def();
+
+  // int64 current_graph_version = 3;
+  void clear_current_graph_version();
+  static const int kCurrentGraphVersionFieldNumber = 3;
+  ::google::protobuf::int64 current_graph_version() const;
+  void set_current_graph_version(::google::protobuf::int64 value);
+
+  // @@protoc_insertion_point(class_scope:tensorflow.ExtendSessionRequest)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  ::google::protobuf::internal::ArenaStringPtr session_handle_;
+  ::tensorflow::GraphDef* graph_def_;
+  ::google::protobuf::int64 current_graph_version_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto;
+};
+// -------------------------------------------------------------------
+
+class ExtendSessionResponse : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.ExtendSessionResponse) */ {
+ public:
+  ExtendSessionResponse();
+  virtual ~ExtendSessionResponse();
+
+  ExtendSessionResponse(const ExtendSessionResponse& from);
+
+  inline ExtendSessionResponse& operator=(const ExtendSessionResponse& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  ExtendSessionResponse(ExtendSessionResponse&& from) noexcept
+    : ExtendSessionResponse() {
+    *this = ::std::move(from);
+  }
+
+  inline ExtendSessionResponse& operator=(ExtendSessionResponse&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const ExtendSessionResponse& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const ExtendSessionResponse* internal_default_instance() {
+    return reinterpret_cast<const ExtendSessionResponse*>(
+               &_ExtendSessionResponse_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    3;
+
+  void UnsafeArenaSwap(ExtendSessionResponse* other);
+  void Swap(ExtendSessionResponse* other);
+  friend void swap(ExtendSessionResponse& a, ExtendSessionResponse& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline ExtendSessionResponse* New() const final {
+    return CreateMaybeMessage<ExtendSessionResponse>(NULL);
+  }
+
+  ExtendSessionResponse* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<ExtendSessionResponse>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const ExtendSessionResponse& from);
+  void MergeFrom(const ExtendSessionResponse& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(ExtendSessionResponse* other);
+  protected:
+  explicit ExtendSessionResponse(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // int64 new_graph_version = 4;
+  void clear_new_graph_version();
+  static const int kNewGraphVersionFieldNumber = 4;
+  ::google::protobuf::int64 new_graph_version() const;
+  void set_new_graph_version(::google::protobuf::int64 value);
+
+  // @@protoc_insertion_point(class_scope:tensorflow.ExtendSessionResponse)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  ::google::protobuf::int64 new_graph_version_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto;
+};
+// -------------------------------------------------------------------
+
+class RunStepRequest : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.RunStepRequest) */ {
+ public:
+  RunStepRequest();
+  virtual ~RunStepRequest();
+
+  RunStepRequest(const RunStepRequest& from);
+
+  inline RunStepRequest& operator=(const RunStepRequest& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  RunStepRequest(RunStepRequest&& from) noexcept
+    : RunStepRequest() {
+    *this = ::std::move(from);
+  }
+
+  inline RunStepRequest& operator=(RunStepRequest&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const RunStepRequest& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const RunStepRequest* internal_default_instance() {
+    return reinterpret_cast<const RunStepRequest*>(
+               &_RunStepRequest_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    4;
+
+  void UnsafeArenaSwap(RunStepRequest* other);
+  void Swap(RunStepRequest* other);
+  friend void swap(RunStepRequest& a, RunStepRequest& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline RunStepRequest* New() const final {
+    return CreateMaybeMessage<RunStepRequest>(NULL);
+  }
+
+  RunStepRequest* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<RunStepRequest>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const RunStepRequest& from);
+  void MergeFrom(const RunStepRequest& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(RunStepRequest* other);
+  protected:
+  explicit RunStepRequest(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // repeated .tensorflow.NamedTensorProto feed = 2;
+  int feed_size() const;
+  void clear_feed();
+  static const int kFeedFieldNumber = 2;
+  ::tensorflow::NamedTensorProto* mutable_feed(int index);
+  ::google::protobuf::RepeatedPtrField< ::tensorflow::NamedTensorProto >*
+      mutable_feed();
+  const ::tensorflow::NamedTensorProto& feed(int index) const;
+  ::tensorflow::NamedTensorProto* add_feed();
+  const ::google::protobuf::RepeatedPtrField< ::tensorflow::NamedTensorProto >&
+      feed() const;
+
+  // repeated string fetch = 3;
+  int fetch_size() const;
+  void clear_fetch();
+  static const int kFetchFieldNumber = 3;
+  const ::std::string& fetch(int index) const;
+  ::std::string* mutable_fetch(int index);
+  void set_fetch(int index, const ::std::string& value);
+  #if LANG_CXX11
+  void set_fetch(int index, ::std::string&& value);
+  #endif
+  void set_fetch(int index, const char* value);
+  void set_fetch(int index, const char* value, size_t size);
+  ::std::string* add_fetch();
+  void add_fetch(const ::std::string& value);
+  #if LANG_CXX11
+  void add_fetch(::std::string&& value);
+  #endif
+  void add_fetch(const char* value);
+  void add_fetch(const char* value, size_t size);
+  const ::google::protobuf::RepeatedPtrField<::std::string>& fetch() const;
+  ::google::protobuf::RepeatedPtrField<::std::string>* mutable_fetch();
+
+  // repeated string target = 4;
+  int target_size() const;
+  void clear_target();
+  static const int kTargetFieldNumber = 4;
+  const ::std::string& target(int index) const;
+  ::std::string* mutable_target(int index);
+  void set_target(int index, const ::std::string& value);
+  #if LANG_CXX11
+  void set_target(int index, ::std::string&& value);
+  #endif
+  void set_target(int index, const char* value);
+  void set_target(int index, const char* value, size_t size);
+  ::std::string* add_target();
+  void add_target(const ::std::string& value);
+  #if LANG_CXX11
+  void add_target(::std::string&& value);
+  #endif
+  void add_target(const char* value);
+  void add_target(const char* value, size_t size);
+  const ::google::protobuf::RepeatedPtrField<::std::string>& target() const;
+  ::google::protobuf::RepeatedPtrField<::std::string>* mutable_target();
+
+  // string session_handle = 1;
+  void clear_session_handle();
+  static const int kSessionHandleFieldNumber = 1;
+  const ::std::string& session_handle() const;
+  void set_session_handle(const ::std::string& value);
+  #if LANG_CXX11
+  void set_session_handle(::std::string&& value);
+  #endif
+  void set_session_handle(const char* value);
+  void set_session_handle(const char* value, size_t size);
+  ::std::string* mutable_session_handle();
+  ::std::string* release_session_handle();
+  void set_allocated_session_handle(::std::string* session_handle);
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  ::std::string* unsafe_arena_release_session_handle();
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  void unsafe_arena_set_allocated_session_handle(
+      ::std::string* session_handle);
+
+  // string partial_run_handle = 6;
+  void clear_partial_run_handle();
+  static const int kPartialRunHandleFieldNumber = 6;
+  const ::std::string& partial_run_handle() const;
+  void set_partial_run_handle(const ::std::string& value);
+  #if LANG_CXX11
+  void set_partial_run_handle(::std::string&& value);
+  #endif
+  void set_partial_run_handle(const char* value);
+  void set_partial_run_handle(const char* value, size_t size);
+  ::std::string* mutable_partial_run_handle();
+  ::std::string* release_partial_run_handle();
+  void set_allocated_partial_run_handle(::std::string* partial_run_handle);
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  ::std::string* unsafe_arena_release_partial_run_handle();
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  void unsafe_arena_set_allocated_partial_run_handle(
+      ::std::string* partial_run_handle);
+
+  // .tensorflow.RunOptions options = 5;
+  bool has_options() const;
+  void clear_options();
+  static const int kOptionsFieldNumber = 5;
+  const ::tensorflow::RunOptions& options() const;
+  ::tensorflow::RunOptions* release_options();
+  ::tensorflow::RunOptions* mutable_options();
+  void set_allocated_options(::tensorflow::RunOptions* options);
+  void unsafe_arena_set_allocated_options(
+      ::tensorflow::RunOptions* options);
+  ::tensorflow::RunOptions* unsafe_arena_release_options();
+
+  // bool store_errors_in_response_body = 7;
+  void clear_store_errors_in_response_body();
+  static const int kStoreErrorsInResponseBodyFieldNumber = 7;
+  bool store_errors_in_response_body() const;
+  void set_store_errors_in_response_body(bool value);
+
+  // @@protoc_insertion_point(class_scope:tensorflow.RunStepRequest)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  ::google::protobuf::RepeatedPtrField< ::tensorflow::NamedTensorProto > feed_;
+  ::google::protobuf::RepeatedPtrField<::std::string> fetch_;
+  ::google::protobuf::RepeatedPtrField<::std::string> target_;
+  ::google::protobuf::internal::ArenaStringPtr session_handle_;
+  ::google::protobuf::internal::ArenaStringPtr partial_run_handle_;
+  ::tensorflow::RunOptions* options_;
+  bool store_errors_in_response_body_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto;
+};
+// -------------------------------------------------------------------
+
+class RunStepResponse : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.RunStepResponse) */ {
+ public:
+  RunStepResponse();
+  virtual ~RunStepResponse();
+
+  RunStepResponse(const RunStepResponse& from);
+
+  inline RunStepResponse& operator=(const RunStepResponse& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  RunStepResponse(RunStepResponse&& from) noexcept
+    : RunStepResponse() {
+    *this = ::std::move(from);
+  }
+
+  inline RunStepResponse& operator=(RunStepResponse&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const RunStepResponse& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const RunStepResponse* internal_default_instance() {
+    return reinterpret_cast<const RunStepResponse*>(
+               &_RunStepResponse_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    5;
+
+  void UnsafeArenaSwap(RunStepResponse* other);
+  void Swap(RunStepResponse* other);
+  friend void swap(RunStepResponse& a, RunStepResponse& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline RunStepResponse* New() const final {
+    return CreateMaybeMessage<RunStepResponse>(NULL);
+  }
+
+  RunStepResponse* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<RunStepResponse>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const RunStepResponse& from);
+  void MergeFrom(const RunStepResponse& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(RunStepResponse* other);
+  protected:
+  explicit RunStepResponse(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // repeated .tensorflow.NamedTensorProto tensor = 1;
+  int tensor_size() const;
+  void clear_tensor();
+  static const int kTensorFieldNumber = 1;
+  ::tensorflow::NamedTensorProto* mutable_tensor(int index);
+  ::google::protobuf::RepeatedPtrField< ::tensorflow::NamedTensorProto >*
+      mutable_tensor();
+  const ::tensorflow::NamedTensorProto& tensor(int index) const;
+  ::tensorflow::NamedTensorProto* add_tensor();
+  const ::google::protobuf::RepeatedPtrField< ::tensorflow::NamedTensorProto >&
+      tensor() const;
+
+  // string status_error_message = 4;
+  void clear_status_error_message();
+  static const int kStatusErrorMessageFieldNumber = 4;
+  const ::std::string& status_error_message() const;
+  void set_status_error_message(const ::std::string& value);
+  #if LANG_CXX11
+  void set_status_error_message(::std::string&& value);
+  #endif
+  void set_status_error_message(const char* value);
+  void set_status_error_message(const char* value, size_t size);
+  ::std::string* mutable_status_error_message();
+  ::std::string* release_status_error_message();
+  void set_allocated_status_error_message(::std::string* status_error_message);
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  ::std::string* unsafe_arena_release_status_error_message();
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  void unsafe_arena_set_allocated_status_error_message(
+      ::std::string* status_error_message);
+
+  // .tensorflow.RunMetadata metadata = 2;
+  bool has_metadata() const;
+  void clear_metadata();
+  static const int kMetadataFieldNumber = 2;
+  const ::tensorflow::RunMetadata& metadata() const;
+  ::tensorflow::RunMetadata* release_metadata();
+  ::tensorflow::RunMetadata* mutable_metadata();
+  void set_allocated_metadata(::tensorflow::RunMetadata* metadata);
+  void unsafe_arena_set_allocated_metadata(
+      ::tensorflow::RunMetadata* metadata);
+  ::tensorflow::RunMetadata* unsafe_arena_release_metadata();
+
+  // .tensorflow.error.Code status_code = 3;
+  void clear_status_code();
+  static const int kStatusCodeFieldNumber = 3;
+  ::tensorflow::error::Code status_code() const;
+  void set_status_code(::tensorflow::error::Code value);
+
+  // @@protoc_insertion_point(class_scope:tensorflow.RunStepResponse)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  ::google::protobuf::RepeatedPtrField< ::tensorflow::NamedTensorProto > tensor_;
+  ::google::protobuf::internal::ArenaStringPtr status_error_message_;
+  ::tensorflow::RunMetadata* metadata_;
+  int status_code_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto;
+};
+// -------------------------------------------------------------------
+
+class PartialRunSetupRequest : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.PartialRunSetupRequest) */ {
+ public:
+  PartialRunSetupRequest();
+  virtual ~PartialRunSetupRequest();
+
+  PartialRunSetupRequest(const PartialRunSetupRequest& from);
+
+  inline PartialRunSetupRequest& operator=(const PartialRunSetupRequest& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  PartialRunSetupRequest(PartialRunSetupRequest&& from) noexcept
+    : PartialRunSetupRequest() {
+    *this = ::std::move(from);
+  }
+
+  inline PartialRunSetupRequest& operator=(PartialRunSetupRequest&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const PartialRunSetupRequest& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const PartialRunSetupRequest* internal_default_instance() {
+    return reinterpret_cast<const PartialRunSetupRequest*>(
+               &_PartialRunSetupRequest_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    6;
+
+  void UnsafeArenaSwap(PartialRunSetupRequest* other);
+  void Swap(PartialRunSetupRequest* other);
+  friend void swap(PartialRunSetupRequest& a, PartialRunSetupRequest& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline PartialRunSetupRequest* New() const final {
+    return CreateMaybeMessage<PartialRunSetupRequest>(NULL);
+  }
+
+  PartialRunSetupRequest* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<PartialRunSetupRequest>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const PartialRunSetupRequest& from);
+  void MergeFrom(const PartialRunSetupRequest& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(PartialRunSetupRequest* other);
+  protected:
+  explicit PartialRunSetupRequest(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // repeated string feed = 2;
+  int feed_size() const;
+  void clear_feed();
+  static const int kFeedFieldNumber = 2;
+  const ::std::string& feed(int index) const;
+  ::std::string* mutable_feed(int index);
+  void set_feed(int index, const ::std::string& value);
+  #if LANG_CXX11
+  void set_feed(int index, ::std::string&& value);
+  #endif
+  void set_feed(int index, const char* value);
+  void set_feed(int index, const char* value, size_t size);
+  ::std::string* add_feed();
+  void add_feed(const ::std::string& value);
+  #if LANG_CXX11
+  void add_feed(::std::string&& value);
+  #endif
+  void add_feed(const char* value);
+  void add_feed(const char* value, size_t size);
+  const ::google::protobuf::RepeatedPtrField<::std::string>& feed() const;
+  ::google::protobuf::RepeatedPtrField<::std::string>* mutable_feed();
+
+  // repeated string fetch = 3;
+  int fetch_size() const;
+  void clear_fetch();
+  static const int kFetchFieldNumber = 3;
+  const ::std::string& fetch(int index) const;
+  ::std::string* mutable_fetch(int index);
+  void set_fetch(int index, const ::std::string& value);
+  #if LANG_CXX11
+  void set_fetch(int index, ::std::string&& value);
+  #endif
+  void set_fetch(int index, const char* value);
+  void set_fetch(int index, const char* value, size_t size);
+  ::std::string* add_fetch();
+  void add_fetch(const ::std::string& value);
+  #if LANG_CXX11
+  void add_fetch(::std::string&& value);
+  #endif
+  void add_fetch(const char* value);
+  void add_fetch(const char* value, size_t size);
+  const ::google::protobuf::RepeatedPtrField<::std::string>& fetch() const;
+  ::google::protobuf::RepeatedPtrField<::std::string>* mutable_fetch();
+
+  // repeated string target = 4;
+  int target_size() const;
+  void clear_target();
+  static const int kTargetFieldNumber = 4;
+  const ::std::string& target(int index) const;
+  ::std::string* mutable_target(int index);
+  void set_target(int index, const ::std::string& value);
+  #if LANG_CXX11
+  void set_target(int index, ::std::string&& value);
+  #endif
+  void set_target(int index, const char* value);
+  void set_target(int index, const char* value, size_t size);
+  ::std::string* add_target();
+  void add_target(const ::std::string& value);
+  #if LANG_CXX11
+  void add_target(::std::string&& value);
+  #endif
+  void add_target(const char* value);
+  void add_target(const char* value, size_t size);
+  const ::google::protobuf::RepeatedPtrField<::std::string>& target() const;
+  ::google::protobuf::RepeatedPtrField<::std::string>* mutable_target();
+
+  // string session_handle = 1;
+  void clear_session_handle();
+  static const int kSessionHandleFieldNumber = 1;
+  const ::std::string& session_handle() const;
+  void set_session_handle(const ::std::string& value);
+  #if LANG_CXX11
+  void set_session_handle(::std::string&& value);
+  #endif
+  void set_session_handle(const char* value);
+  void set_session_handle(const char* value, size_t size);
+  ::std::string* mutable_session_handle();
+  ::std::string* release_session_handle();
+  void set_allocated_session_handle(::std::string* session_handle);
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  ::std::string* unsafe_arena_release_session_handle();
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  void unsafe_arena_set_allocated_session_handle(
+      ::std::string* session_handle);
+
+  // @@protoc_insertion_point(class_scope:tensorflow.PartialRunSetupRequest)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  ::google::protobuf::RepeatedPtrField<::std::string> feed_;
+  ::google::protobuf::RepeatedPtrField<::std::string> fetch_;
+  ::google::protobuf::RepeatedPtrField<::std::string> target_;
+  ::google::protobuf::internal::ArenaStringPtr session_handle_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto;
+};
+// -------------------------------------------------------------------
+
+class PartialRunSetupResponse : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.PartialRunSetupResponse) */ {
+ public:
+  PartialRunSetupResponse();
+  virtual ~PartialRunSetupResponse();
+
+  PartialRunSetupResponse(const PartialRunSetupResponse& from);
+
+  inline PartialRunSetupResponse& operator=(const PartialRunSetupResponse& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  PartialRunSetupResponse(PartialRunSetupResponse&& from) noexcept
+    : PartialRunSetupResponse() {
+    *this = ::std::move(from);
+  }
+
+  inline PartialRunSetupResponse& operator=(PartialRunSetupResponse&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const PartialRunSetupResponse& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const PartialRunSetupResponse* internal_default_instance() {
+    return reinterpret_cast<const PartialRunSetupResponse*>(
+               &_PartialRunSetupResponse_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    7;
+
+  void UnsafeArenaSwap(PartialRunSetupResponse* other);
+  void Swap(PartialRunSetupResponse* other);
+  friend void swap(PartialRunSetupResponse& a, PartialRunSetupResponse& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline PartialRunSetupResponse* New() const final {
+    return CreateMaybeMessage<PartialRunSetupResponse>(NULL);
+  }
+
+  PartialRunSetupResponse* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<PartialRunSetupResponse>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const PartialRunSetupResponse& from);
+  void MergeFrom(const PartialRunSetupResponse& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(PartialRunSetupResponse* other);
+  protected:
+  explicit PartialRunSetupResponse(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // string partial_run_handle = 1;
+  void clear_partial_run_handle();
+  static const int kPartialRunHandleFieldNumber = 1;
+  const ::std::string& partial_run_handle() const;
+  void set_partial_run_handle(const ::std::string& value);
+  #if LANG_CXX11
+  void set_partial_run_handle(::std::string&& value);
+  #endif
+  void set_partial_run_handle(const char* value);
+  void set_partial_run_handle(const char* value, size_t size);
+  ::std::string* mutable_partial_run_handle();
+  ::std::string* release_partial_run_handle();
+  void set_allocated_partial_run_handle(::std::string* partial_run_handle);
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  ::std::string* unsafe_arena_release_partial_run_handle();
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  void unsafe_arena_set_allocated_partial_run_handle(
+      ::std::string* partial_run_handle);
+
+  // @@protoc_insertion_point(class_scope:tensorflow.PartialRunSetupResponse)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  ::google::protobuf::internal::ArenaStringPtr partial_run_handle_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto;
+};
+// -------------------------------------------------------------------
+
+class CloseSessionRequest : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.CloseSessionRequest) */ {
+ public:
+  CloseSessionRequest();
+  virtual ~CloseSessionRequest();
+
+  CloseSessionRequest(const CloseSessionRequest& from);
+
+  inline CloseSessionRequest& operator=(const CloseSessionRequest& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  CloseSessionRequest(CloseSessionRequest&& from) noexcept
+    : CloseSessionRequest() {
+    *this = ::std::move(from);
+  }
+
+  inline CloseSessionRequest& operator=(CloseSessionRequest&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const CloseSessionRequest& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const CloseSessionRequest* internal_default_instance() {
+    return reinterpret_cast<const CloseSessionRequest*>(
+               &_CloseSessionRequest_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    8;
+
+  void UnsafeArenaSwap(CloseSessionRequest* other);
+  void Swap(CloseSessionRequest* other);
+  friend void swap(CloseSessionRequest& a, CloseSessionRequest& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline CloseSessionRequest* New() const final {
+    return CreateMaybeMessage<CloseSessionRequest>(NULL);
+  }
+
+  CloseSessionRequest* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<CloseSessionRequest>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const CloseSessionRequest& from);
+  void MergeFrom(const CloseSessionRequest& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(CloseSessionRequest* other);
+  protected:
+  explicit CloseSessionRequest(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // string session_handle = 1;
+  void clear_session_handle();
+  static const int kSessionHandleFieldNumber = 1;
+  const ::std::string& session_handle() const;
+  void set_session_handle(const ::std::string& value);
+  #if LANG_CXX11
+  void set_session_handle(::std::string&& value);
+  #endif
+  void set_session_handle(const char* value);
+  void set_session_handle(const char* value, size_t size);
+  ::std::string* mutable_session_handle();
+  ::std::string* release_session_handle();
+  void set_allocated_session_handle(::std::string* session_handle);
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  ::std::string* unsafe_arena_release_session_handle();
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  void unsafe_arena_set_allocated_session_handle(
+      ::std::string* session_handle);
+
+  // @@protoc_insertion_point(class_scope:tensorflow.CloseSessionRequest)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  ::google::protobuf::internal::ArenaStringPtr session_handle_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto;
+};
+// -------------------------------------------------------------------
+
+class CloseSessionResponse : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.CloseSessionResponse) */ {
+ public:
+  CloseSessionResponse();
+  virtual ~CloseSessionResponse();
+
+  CloseSessionResponse(const CloseSessionResponse& from);
+
+  inline CloseSessionResponse& operator=(const CloseSessionResponse& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  CloseSessionResponse(CloseSessionResponse&& from) noexcept
+    : CloseSessionResponse() {
+    *this = ::std::move(from);
+  }
+
+  inline CloseSessionResponse& operator=(CloseSessionResponse&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const CloseSessionResponse& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const CloseSessionResponse* internal_default_instance() {
+    return reinterpret_cast<const CloseSessionResponse*>(
+               &_CloseSessionResponse_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    9;
+
+  void UnsafeArenaSwap(CloseSessionResponse* other);
+  void Swap(CloseSessionResponse* other);
+  friend void swap(CloseSessionResponse& a, CloseSessionResponse& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline CloseSessionResponse* New() const final {
+    return CreateMaybeMessage<CloseSessionResponse>(NULL);
+  }
+
+  CloseSessionResponse* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<CloseSessionResponse>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const CloseSessionResponse& from);
+  void MergeFrom(const CloseSessionResponse& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(CloseSessionResponse* other);
+  protected:
+  explicit CloseSessionResponse(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // @@protoc_insertion_point(class_scope:tensorflow.CloseSessionResponse)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto;
+};
+// -------------------------------------------------------------------
+
+class ResetRequest : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.ResetRequest) */ {
+ public:
+  ResetRequest();
+  virtual ~ResetRequest();
+
+  ResetRequest(const ResetRequest& from);
+
+  inline ResetRequest& operator=(const ResetRequest& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  ResetRequest(ResetRequest&& from) noexcept
+    : ResetRequest() {
+    *this = ::std::move(from);
+  }
+
+  inline ResetRequest& operator=(ResetRequest&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const ResetRequest& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const ResetRequest* internal_default_instance() {
+    return reinterpret_cast<const ResetRequest*>(
+               &_ResetRequest_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    10;
+
+  void UnsafeArenaSwap(ResetRequest* other);
+  void Swap(ResetRequest* other);
+  friend void swap(ResetRequest& a, ResetRequest& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline ResetRequest* New() const final {
+    return CreateMaybeMessage<ResetRequest>(NULL);
+  }
+
+  ResetRequest* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<ResetRequest>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const ResetRequest& from);
+  void MergeFrom(const ResetRequest& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(ResetRequest* other);
+  protected:
+  explicit ResetRequest(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // repeated string container = 1;
+  int container_size() const;
+  void clear_container();
+  static const int kContainerFieldNumber = 1;
+  const ::std::string& container(int index) const;
+  ::std::string* mutable_container(int index);
+  void set_container(int index, const ::std::string& value);
+  #if LANG_CXX11
+  void set_container(int index, ::std::string&& value);
+  #endif
+  void set_container(int index, const char* value);
+  void set_container(int index, const char* value, size_t size);
+  ::std::string* add_container();
+  void add_container(const ::std::string& value);
+  #if LANG_CXX11
+  void add_container(::std::string&& value);
+  #endif
+  void add_container(const char* value);
+  void add_container(const char* value, size_t size);
+  const ::google::protobuf::RepeatedPtrField<::std::string>& container() const;
+  ::google::protobuf::RepeatedPtrField<::std::string>* mutable_container();
+
+  // repeated string device_filters = 2;
+  int device_filters_size() const;
+  void clear_device_filters();
+  static const int kDeviceFiltersFieldNumber = 2;
+  const ::std::string& device_filters(int index) const;
+  ::std::string* mutable_device_filters(int index);
+  void set_device_filters(int index, const ::std::string& value);
+  #if LANG_CXX11
+  void set_device_filters(int index, ::std::string&& value);
+  #endif
+  void set_device_filters(int index, const char* value);
+  void set_device_filters(int index, const char* value, size_t size);
+  ::std::string* add_device_filters();
+  void add_device_filters(const ::std::string& value);
+  #if LANG_CXX11
+  void add_device_filters(::std::string&& value);
+  #endif
+  void add_device_filters(const char* value);
+  void add_device_filters(const char* value, size_t size);
+  const ::google::protobuf::RepeatedPtrField<::std::string>& device_filters() const;
+  ::google::protobuf::RepeatedPtrField<::std::string>* mutable_device_filters();
+
+  // @@protoc_insertion_point(class_scope:tensorflow.ResetRequest)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  ::google::protobuf::RepeatedPtrField<::std::string> container_;
+  ::google::protobuf::RepeatedPtrField<::std::string> device_filters_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto;
+};
+// -------------------------------------------------------------------
+
+class ResetResponse : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.ResetResponse) */ {
+ public:
+  ResetResponse();
+  virtual ~ResetResponse();
+
+  ResetResponse(const ResetResponse& from);
+
+  inline ResetResponse& operator=(const ResetResponse& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  ResetResponse(ResetResponse&& from) noexcept
+    : ResetResponse() {
+    *this = ::std::move(from);
+  }
+
+  inline ResetResponse& operator=(ResetResponse&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const ResetResponse& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const ResetResponse* internal_default_instance() {
+    return reinterpret_cast<const ResetResponse*>(
+               &_ResetResponse_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    11;
+
+  void UnsafeArenaSwap(ResetResponse* other);
+  void Swap(ResetResponse* other);
+  friend void swap(ResetResponse& a, ResetResponse& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline ResetResponse* New() const final {
+    return CreateMaybeMessage<ResetResponse>(NULL);
+  }
+
+  ResetResponse* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<ResetResponse>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const ResetResponse& from);
+  void MergeFrom(const ResetResponse& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(ResetResponse* other);
+  protected:
+  explicit ResetResponse(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // @@protoc_insertion_point(class_scope:tensorflow.ResetResponse)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto;
+};
+// -------------------------------------------------------------------
+
+class ListDevicesRequest : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.ListDevicesRequest) */ {
+ public:
+  ListDevicesRequest();
+  virtual ~ListDevicesRequest();
+
+  ListDevicesRequest(const ListDevicesRequest& from);
+
+  inline ListDevicesRequest& operator=(const ListDevicesRequest& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  ListDevicesRequest(ListDevicesRequest&& from) noexcept
+    : ListDevicesRequest() {
+    *this = ::std::move(from);
+  }
+
+  inline ListDevicesRequest& operator=(ListDevicesRequest&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const ListDevicesRequest& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const ListDevicesRequest* internal_default_instance() {
+    return reinterpret_cast<const ListDevicesRequest*>(
+               &_ListDevicesRequest_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    12;
+
+  void UnsafeArenaSwap(ListDevicesRequest* other);
+  void Swap(ListDevicesRequest* other);
+  friend void swap(ListDevicesRequest& a, ListDevicesRequest& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline ListDevicesRequest* New() const final {
+    return CreateMaybeMessage<ListDevicesRequest>(NULL);
+  }
+
+  ListDevicesRequest* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<ListDevicesRequest>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const ListDevicesRequest& from);
+  void MergeFrom(const ListDevicesRequest& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(ListDevicesRequest* other);
+  protected:
+  explicit ListDevicesRequest(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // string session_handle = 1;
+  void clear_session_handle();
+  static const int kSessionHandleFieldNumber = 1;
+  const ::std::string& session_handle() const;
+  void set_session_handle(const ::std::string& value);
+  #if LANG_CXX11
+  void set_session_handle(::std::string&& value);
+  #endif
+  void set_session_handle(const char* value);
+  void set_session_handle(const char* value, size_t size);
+  ::std::string* mutable_session_handle();
+  ::std::string* release_session_handle();
+  void set_allocated_session_handle(::std::string* session_handle);
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  ::std::string* unsafe_arena_release_session_handle();
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  void unsafe_arena_set_allocated_session_handle(
+      ::std::string* session_handle);
+
+  // @@protoc_insertion_point(class_scope:tensorflow.ListDevicesRequest)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  ::google::protobuf::internal::ArenaStringPtr session_handle_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto;
+};
+// -------------------------------------------------------------------
+
+class ListDevicesResponse : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.ListDevicesResponse) */ {
+ public:
+  ListDevicesResponse();
+  virtual ~ListDevicesResponse();
+
+  ListDevicesResponse(const ListDevicesResponse& from);
+
+  inline ListDevicesResponse& operator=(const ListDevicesResponse& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  ListDevicesResponse(ListDevicesResponse&& from) noexcept
+    : ListDevicesResponse() {
+    *this = ::std::move(from);
+  }
+
+  inline ListDevicesResponse& operator=(ListDevicesResponse&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const ListDevicesResponse& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const ListDevicesResponse* internal_default_instance() {
+    return reinterpret_cast<const ListDevicesResponse*>(
+               &_ListDevicesResponse_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    13;
+
+  void UnsafeArenaSwap(ListDevicesResponse* other);
+  void Swap(ListDevicesResponse* other);
+  friend void swap(ListDevicesResponse& a, ListDevicesResponse& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline ListDevicesResponse* New() const final {
+    return CreateMaybeMessage<ListDevicesResponse>(NULL);
+  }
+
+  ListDevicesResponse* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<ListDevicesResponse>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const ListDevicesResponse& from);
+  void MergeFrom(const ListDevicesResponse& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(ListDevicesResponse* other);
+  protected:
+  explicit ListDevicesResponse(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // repeated .tensorflow.DeviceAttributes local_device = 1;
+  int local_device_size() const;
+  void clear_local_device();
+  static const int kLocalDeviceFieldNumber = 1;
+  ::tensorflow::DeviceAttributes* mutable_local_device(int index);
+  ::google::protobuf::RepeatedPtrField< ::tensorflow::DeviceAttributes >*
+      mutable_local_device();
+  const ::tensorflow::DeviceAttributes& local_device(int index) const;
+  ::tensorflow::DeviceAttributes* add_local_device();
+  const ::google::protobuf::RepeatedPtrField< ::tensorflow::DeviceAttributes >&
+      local_device() const;
+
+  // repeated .tensorflow.DeviceAttributes remote_device = 2;
+  int remote_device_size() const;
+  void clear_remote_device();
+  static const int kRemoteDeviceFieldNumber = 2;
+  ::tensorflow::DeviceAttributes* mutable_remote_device(int index);
+  ::google::protobuf::RepeatedPtrField< ::tensorflow::DeviceAttributes >*
+      mutable_remote_device();
+  const ::tensorflow::DeviceAttributes& remote_device(int index) const;
+  ::tensorflow::DeviceAttributes* add_remote_device();
+  const ::google::protobuf::RepeatedPtrField< ::tensorflow::DeviceAttributes >&
+      remote_device() const;
+
+  // @@protoc_insertion_point(class_scope:tensorflow.ListDevicesResponse)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  ::google::protobuf::RepeatedPtrField< ::tensorflow::DeviceAttributes > local_device_;
+  ::google::protobuf::RepeatedPtrField< ::tensorflow::DeviceAttributes > remote_device_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto;
+};
+// -------------------------------------------------------------------
+
+class MakeCallableRequest : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.MakeCallableRequest) */ {
+ public:
+  MakeCallableRequest();
+  virtual ~MakeCallableRequest();
+
+  MakeCallableRequest(const MakeCallableRequest& from);
+
+  inline MakeCallableRequest& operator=(const MakeCallableRequest& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  MakeCallableRequest(MakeCallableRequest&& from) noexcept
+    : MakeCallableRequest() {
+    *this = ::std::move(from);
+  }
+
+  inline MakeCallableRequest& operator=(MakeCallableRequest&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const MakeCallableRequest& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const MakeCallableRequest* internal_default_instance() {
+    return reinterpret_cast<const MakeCallableRequest*>(
+               &_MakeCallableRequest_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    14;
+
+  void UnsafeArenaSwap(MakeCallableRequest* other);
+  void Swap(MakeCallableRequest* other);
+  friend void swap(MakeCallableRequest& a, MakeCallableRequest& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline MakeCallableRequest* New() const final {
+    return CreateMaybeMessage<MakeCallableRequest>(NULL);
+  }
+
+  MakeCallableRequest* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<MakeCallableRequest>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const MakeCallableRequest& from);
+  void MergeFrom(const MakeCallableRequest& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(MakeCallableRequest* other);
+  protected:
+  explicit MakeCallableRequest(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // string session_handle = 1;
+  void clear_session_handle();
+  static const int kSessionHandleFieldNumber = 1;
+  const ::std::string& session_handle() const;
+  void set_session_handle(const ::std::string& value);
+  #if LANG_CXX11
+  void set_session_handle(::std::string&& value);
+  #endif
+  void set_session_handle(const char* value);
+  void set_session_handle(const char* value, size_t size);
+  ::std::string* mutable_session_handle();
+  ::std::string* release_session_handle();
+  void set_allocated_session_handle(::std::string* session_handle);
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  ::std::string* unsafe_arena_release_session_handle();
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  void unsafe_arena_set_allocated_session_handle(
+      ::std::string* session_handle);
+
+  // .tensorflow.CallableOptions options = 2;
+  bool has_options() const;
+  void clear_options();
+  static const int kOptionsFieldNumber = 2;
+  const ::tensorflow::CallableOptions& options() const;
+  ::tensorflow::CallableOptions* release_options();
+  ::tensorflow::CallableOptions* mutable_options();
+  void set_allocated_options(::tensorflow::CallableOptions* options);
+  void unsafe_arena_set_allocated_options(
+      ::tensorflow::CallableOptions* options);
+  ::tensorflow::CallableOptions* unsafe_arena_release_options();
+
+  // @@protoc_insertion_point(class_scope:tensorflow.MakeCallableRequest)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  ::google::protobuf::internal::ArenaStringPtr session_handle_;
+  ::tensorflow::CallableOptions* options_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto;
+};
+// -------------------------------------------------------------------
+
+class MakeCallableResponse : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.MakeCallableResponse) */ {
+ public:
+  MakeCallableResponse();
+  virtual ~MakeCallableResponse();
+
+  MakeCallableResponse(const MakeCallableResponse& from);
+
+  inline MakeCallableResponse& operator=(const MakeCallableResponse& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  MakeCallableResponse(MakeCallableResponse&& from) noexcept
+    : MakeCallableResponse() {
+    *this = ::std::move(from);
+  }
+
+  inline MakeCallableResponse& operator=(MakeCallableResponse&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const MakeCallableResponse& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const MakeCallableResponse* internal_default_instance() {
+    return reinterpret_cast<const MakeCallableResponse*>(
+               &_MakeCallableResponse_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    15;
+
+  void UnsafeArenaSwap(MakeCallableResponse* other);
+  void Swap(MakeCallableResponse* other);
+  friend void swap(MakeCallableResponse& a, MakeCallableResponse& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline MakeCallableResponse* New() const final {
+    return CreateMaybeMessage<MakeCallableResponse>(NULL);
+  }
+
+  MakeCallableResponse* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<MakeCallableResponse>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const MakeCallableResponse& from);
+  void MergeFrom(const MakeCallableResponse& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(MakeCallableResponse* other);
+  protected:
+  explicit MakeCallableResponse(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // int64 handle = 1;
+  void clear_handle();
+  static const int kHandleFieldNumber = 1;
+  ::google::protobuf::int64 handle() const;
+  void set_handle(::google::protobuf::int64 value);
+
+  // @@protoc_insertion_point(class_scope:tensorflow.MakeCallableResponse)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  ::google::protobuf::int64 handle_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto;
+};
+// -------------------------------------------------------------------
+
+class RunCallableRequest : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.RunCallableRequest) */ {
+ public:
+  RunCallableRequest();
+  virtual ~RunCallableRequest();
+
+  RunCallableRequest(const RunCallableRequest& from);
+
+  inline RunCallableRequest& operator=(const RunCallableRequest& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  RunCallableRequest(RunCallableRequest&& from) noexcept
+    : RunCallableRequest() {
+    *this = ::std::move(from);
+  }
+
+  inline RunCallableRequest& operator=(RunCallableRequest&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const RunCallableRequest& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const RunCallableRequest* internal_default_instance() {
+    return reinterpret_cast<const RunCallableRequest*>(
+               &_RunCallableRequest_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    16;
+
+  void UnsafeArenaSwap(RunCallableRequest* other);
+  void Swap(RunCallableRequest* other);
+  friend void swap(RunCallableRequest& a, RunCallableRequest& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline RunCallableRequest* New() const final {
+    return CreateMaybeMessage<RunCallableRequest>(NULL);
+  }
+
+  RunCallableRequest* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<RunCallableRequest>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const RunCallableRequest& from);
+  void MergeFrom(const RunCallableRequest& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(RunCallableRequest* other);
+  protected:
+  explicit RunCallableRequest(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // repeated .tensorflow.TensorProto feed = 3;
+  int feed_size() const;
+  void clear_feed();
+  static const int kFeedFieldNumber = 3;
+  ::tensorflow::TensorProto* mutable_feed(int index);
+  ::google::protobuf::RepeatedPtrField< ::tensorflow::TensorProto >*
+      mutable_feed();
+  const ::tensorflow::TensorProto& feed(int index) const;
+  ::tensorflow::TensorProto* add_feed();
+  const ::google::protobuf::RepeatedPtrField< ::tensorflow::TensorProto >&
+      feed() const;
+
+  // string session_handle = 1;
+  void clear_session_handle();
+  static const int kSessionHandleFieldNumber = 1;
+  const ::std::string& session_handle() const;
+  void set_session_handle(const ::std::string& value);
+  #if LANG_CXX11
+  void set_session_handle(::std::string&& value);
+  #endif
+  void set_session_handle(const char* value);
+  void set_session_handle(const char* value, size_t size);
+  ::std::string* mutable_session_handle();
+  ::std::string* release_session_handle();
+  void set_allocated_session_handle(::std::string* session_handle);
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  ::std::string* unsafe_arena_release_session_handle();
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  void unsafe_arena_set_allocated_session_handle(
+      ::std::string* session_handle);
+
+  // int64 handle = 2;
+  void clear_handle();
+  static const int kHandleFieldNumber = 2;
+  ::google::protobuf::int64 handle() const;
+  void set_handle(::google::protobuf::int64 value);
+
+  // @@protoc_insertion_point(class_scope:tensorflow.RunCallableRequest)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  ::google::protobuf::RepeatedPtrField< ::tensorflow::TensorProto > feed_;
+  ::google::protobuf::internal::ArenaStringPtr session_handle_;
+  ::google::protobuf::int64 handle_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto;
+};
+// -------------------------------------------------------------------
+
+class RunCallableResponse : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.RunCallableResponse) */ {
+ public:
+  RunCallableResponse();
+  virtual ~RunCallableResponse();
+
+  RunCallableResponse(const RunCallableResponse& from);
+
+  inline RunCallableResponse& operator=(const RunCallableResponse& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  RunCallableResponse(RunCallableResponse&& from) noexcept
+    : RunCallableResponse() {
+    *this = ::std::move(from);
+  }
+
+  inline RunCallableResponse& operator=(RunCallableResponse&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const RunCallableResponse& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const RunCallableResponse* internal_default_instance() {
+    return reinterpret_cast<const RunCallableResponse*>(
+               &_RunCallableResponse_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    17;
+
+  void UnsafeArenaSwap(RunCallableResponse* other);
+  void Swap(RunCallableResponse* other);
+  friend void swap(RunCallableResponse& a, RunCallableResponse& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline RunCallableResponse* New() const final {
+    return CreateMaybeMessage<RunCallableResponse>(NULL);
+  }
+
+  RunCallableResponse* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<RunCallableResponse>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const RunCallableResponse& from);
+  void MergeFrom(const RunCallableResponse& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(RunCallableResponse* other);
+  protected:
+  explicit RunCallableResponse(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // repeated .tensorflow.TensorProto fetch = 1;
+  int fetch_size() const;
+  void clear_fetch();
+  static const int kFetchFieldNumber = 1;
+  ::tensorflow::TensorProto* mutable_fetch(int index);
+  ::google::protobuf::RepeatedPtrField< ::tensorflow::TensorProto >*
+      mutable_fetch();
+  const ::tensorflow::TensorProto& fetch(int index) const;
+  ::tensorflow::TensorProto* add_fetch();
+  const ::google::protobuf::RepeatedPtrField< ::tensorflow::TensorProto >&
+      fetch() const;
+
+  // .tensorflow.RunMetadata metadata = 2;
+  bool has_metadata() const;
+  void clear_metadata();
+  static const int kMetadataFieldNumber = 2;
+  const ::tensorflow::RunMetadata& metadata() const;
+  ::tensorflow::RunMetadata* release_metadata();
+  ::tensorflow::RunMetadata* mutable_metadata();
+  void set_allocated_metadata(::tensorflow::RunMetadata* metadata);
+  void unsafe_arena_set_allocated_metadata(
+      ::tensorflow::RunMetadata* metadata);
+  ::tensorflow::RunMetadata* unsafe_arena_release_metadata();
+
+  // @@protoc_insertion_point(class_scope:tensorflow.RunCallableResponse)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  ::google::protobuf::RepeatedPtrField< ::tensorflow::TensorProto > fetch_;
+  ::tensorflow::RunMetadata* metadata_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto;
+};
+// -------------------------------------------------------------------
+
+class ReleaseCallableRequest : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.ReleaseCallableRequest) */ {
+ public:
+  ReleaseCallableRequest();
+  virtual ~ReleaseCallableRequest();
+
+  ReleaseCallableRequest(const ReleaseCallableRequest& from);
+
+  inline ReleaseCallableRequest& operator=(const ReleaseCallableRequest& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  ReleaseCallableRequest(ReleaseCallableRequest&& from) noexcept
+    : ReleaseCallableRequest() {
+    *this = ::std::move(from);
+  }
+
+  inline ReleaseCallableRequest& operator=(ReleaseCallableRequest&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const ReleaseCallableRequest& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const ReleaseCallableRequest* internal_default_instance() {
+    return reinterpret_cast<const ReleaseCallableRequest*>(
+               &_ReleaseCallableRequest_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    18;
+
+  void UnsafeArenaSwap(ReleaseCallableRequest* other);
+  void Swap(ReleaseCallableRequest* other);
+  friend void swap(ReleaseCallableRequest& a, ReleaseCallableRequest& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline ReleaseCallableRequest* New() const final {
+    return CreateMaybeMessage<ReleaseCallableRequest>(NULL);
+  }
+
+  ReleaseCallableRequest* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<ReleaseCallableRequest>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const ReleaseCallableRequest& from);
+  void MergeFrom(const ReleaseCallableRequest& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(ReleaseCallableRequest* other);
+  protected:
+  explicit ReleaseCallableRequest(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // string session_handle = 1;
+  void clear_session_handle();
+  static const int kSessionHandleFieldNumber = 1;
+  const ::std::string& session_handle() const;
+  void set_session_handle(const ::std::string& value);
+  #if LANG_CXX11
+  void set_session_handle(::std::string&& value);
+  #endif
+  void set_session_handle(const char* value);
+  void set_session_handle(const char* value, size_t size);
+  ::std::string* mutable_session_handle();
+  ::std::string* release_session_handle();
+  void set_allocated_session_handle(::std::string* session_handle);
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  ::std::string* unsafe_arena_release_session_handle();
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  void unsafe_arena_set_allocated_session_handle(
+      ::std::string* session_handle);
+
+  // int64 handle = 2;
+  void clear_handle();
+  static const int kHandleFieldNumber = 2;
+  ::google::protobuf::int64 handle() const;
+  void set_handle(::google::protobuf::int64 value);
+
+  // @@protoc_insertion_point(class_scope:tensorflow.ReleaseCallableRequest)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  ::google::protobuf::internal::ArenaStringPtr session_handle_;
+  ::google::protobuf::int64 handle_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto;
+};
+// -------------------------------------------------------------------
+
+class ReleaseCallableResponse : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.ReleaseCallableResponse) */ {
+ public:
+  ReleaseCallableResponse();
+  virtual ~ReleaseCallableResponse();
+
+  ReleaseCallableResponse(const ReleaseCallableResponse& from);
+
+  inline ReleaseCallableResponse& operator=(const ReleaseCallableResponse& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  ReleaseCallableResponse(ReleaseCallableResponse&& from) noexcept
+    : ReleaseCallableResponse() {
+    *this = ::std::move(from);
+  }
+
+  inline ReleaseCallableResponse& operator=(ReleaseCallableResponse&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const ReleaseCallableResponse& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const ReleaseCallableResponse* internal_default_instance() {
+    return reinterpret_cast<const ReleaseCallableResponse*>(
+               &_ReleaseCallableResponse_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    19;
+
+  void UnsafeArenaSwap(ReleaseCallableResponse* other);
+  void Swap(ReleaseCallableResponse* other);
+  friend void swap(ReleaseCallableResponse& a, ReleaseCallableResponse& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline ReleaseCallableResponse* New() const final {
+    return CreateMaybeMessage<ReleaseCallableResponse>(NULL);
+  }
+
+  ReleaseCallableResponse* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<ReleaseCallableResponse>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const ReleaseCallableResponse& from);
+  void MergeFrom(const ReleaseCallableResponse& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(ReleaseCallableResponse* other);
+  protected:
+  explicit ReleaseCallableResponse(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // @@protoc_insertion_point(class_scope:tensorflow.ReleaseCallableResponse)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto;
+};
+// ===================================================================
+
+
+// ===================================================================
+
+#ifdef __GNUC__
+  #pragma GCC diagnostic push
+  #pragma GCC diagnostic ignored "-Wstrict-aliasing"
+#endif  // __GNUC__
+// CreateSessionRequest
+
+// .tensorflow.GraphDef graph_def = 1;
+inline bool CreateSessionRequest::has_graph_def() const {
+  return this != internal_default_instance() && graph_def_ != NULL;
+}
+inline const ::tensorflow::GraphDef& CreateSessionRequest::graph_def() const {
+  const ::tensorflow::GraphDef* p = graph_def_;
+  // @@protoc_insertion_point(field_get:tensorflow.CreateSessionRequest.graph_def)
+  return p != NULL ? *p : *reinterpret_cast<const ::tensorflow::GraphDef*>(
+      &::tensorflow::_GraphDef_default_instance_);
+}
+inline ::tensorflow::GraphDef* CreateSessionRequest::release_graph_def() {
+  // @@protoc_insertion_point(field_release:tensorflow.CreateSessionRequest.graph_def)
+  
+  ::tensorflow::GraphDef* temp = graph_def_;
+  if (GetArenaNoVirtual() != NULL) {
+    temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
+  }
+  graph_def_ = NULL;
+  return temp;
+}
+inline ::tensorflow::GraphDef* CreateSessionRequest::unsafe_arena_release_graph_def() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.CreateSessionRequest.graph_def)
+  
+  ::tensorflow::GraphDef* temp = graph_def_;
+  graph_def_ = NULL;
+  return temp;
+}
+inline ::tensorflow::GraphDef* CreateSessionRequest::mutable_graph_def() {
+  
+  if (graph_def_ == NULL) {
+    auto* p = CreateMaybeMessage<::tensorflow::GraphDef>(GetArenaNoVirtual());
+    graph_def_ = p;
+  }
+  // @@protoc_insertion_point(field_mutable:tensorflow.CreateSessionRequest.graph_def)
+  return graph_def_;
+}
+inline void CreateSessionRequest::set_allocated_graph_def(::tensorflow::GraphDef* graph_def) {
+  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
+  if (message_arena == NULL) {
+    delete reinterpret_cast< ::google::protobuf::MessageLite*>(graph_def_);
+  }
+  if (graph_def) {
+    ::google::protobuf::Arena* submessage_arena =
+      reinterpret_cast<::google::protobuf::MessageLite*>(graph_def)->GetArena();
+    if (message_arena != submessage_arena) {
+      graph_def = ::google::protobuf::internal::GetOwnedMessage(
+          message_arena, graph_def, submessage_arena);
+    }
+    
+  } else {
+    
+  }
+  graph_def_ = graph_def;
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.CreateSessionRequest.graph_def)
+}
+
+// .tensorflow.ConfigProto config = 2;
+inline bool CreateSessionRequest::has_config() const {
+  return this != internal_default_instance() && config_ != NULL;
+}
+inline const ::tensorflow::ConfigProto& CreateSessionRequest::config() const {
+  const ::tensorflow::ConfigProto* p = config_;
+  // @@protoc_insertion_point(field_get:tensorflow.CreateSessionRequest.config)
+  return p != NULL ? *p : *reinterpret_cast<const ::tensorflow::ConfigProto*>(
+      &::tensorflow::_ConfigProto_default_instance_);
+}
+inline ::tensorflow::ConfigProto* CreateSessionRequest::release_config() {
+  // @@protoc_insertion_point(field_release:tensorflow.CreateSessionRequest.config)
+  
+  ::tensorflow::ConfigProto* temp = config_;
+  if (GetArenaNoVirtual() != NULL) {
+    temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
+  }
+  config_ = NULL;
+  return temp;
+}
+inline ::tensorflow::ConfigProto* CreateSessionRequest::unsafe_arena_release_config() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.CreateSessionRequest.config)
+  
+  ::tensorflow::ConfigProto* temp = config_;
+  config_ = NULL;
+  return temp;
+}
+inline ::tensorflow::ConfigProto* CreateSessionRequest::mutable_config() {
+  
+  if (config_ == NULL) {
+    auto* p = CreateMaybeMessage<::tensorflow::ConfigProto>(GetArenaNoVirtual());
+    config_ = p;
+  }
+  // @@protoc_insertion_point(field_mutable:tensorflow.CreateSessionRequest.config)
+  return config_;
+}
+inline void CreateSessionRequest::set_allocated_config(::tensorflow::ConfigProto* config) {
+  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
+  if (message_arena == NULL) {
+    delete reinterpret_cast< ::google::protobuf::MessageLite*>(config_);
+  }
+  if (config) {
+    ::google::protobuf::Arena* submessage_arena =
+      reinterpret_cast<::google::protobuf::MessageLite*>(config)->GetArena();
+    if (message_arena != submessage_arena) {
+      config = ::google::protobuf::internal::GetOwnedMessage(
+          message_arena, config, submessage_arena);
+    }
+    
+  } else {
+    
+  }
+  config_ = config;
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.CreateSessionRequest.config)
+}
+
+// string target = 3;
+inline void CreateSessionRequest::clear_target() {
+  target_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline const ::std::string& CreateSessionRequest::target() const {
+  // @@protoc_insertion_point(field_get:tensorflow.CreateSessionRequest.target)
+  return target_.Get();
+}
+inline void CreateSessionRequest::set_target(const ::std::string& value) {
+  
+  target_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set:tensorflow.CreateSessionRequest.target)
+}
+#if LANG_CXX11
+inline void CreateSessionRequest::set_target(::std::string&& value) {
+  
+  target_.Set(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.CreateSessionRequest.target)
+}
+#endif
+inline void CreateSessionRequest::set_target(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  target_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
+              GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_char:tensorflow.CreateSessionRequest.target)
+}
+inline void CreateSessionRequest::set_target(const char* value,
+    size_t size) {
+  
+  target_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
+      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.CreateSessionRequest.target)
+}
+inline ::std::string* CreateSessionRequest::mutable_target() {
+  
+  // @@protoc_insertion_point(field_mutable:tensorflow.CreateSessionRequest.target)
+  return target_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline ::std::string* CreateSessionRequest::release_target() {
+  // @@protoc_insertion_point(field_release:tensorflow.CreateSessionRequest.target)
+  
+  return target_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline void CreateSessionRequest::set_allocated_target(::std::string* target) {
+  if (target != NULL) {
+    
+  } else {
+    
+  }
+  target_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), target,
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.CreateSessionRequest.target)
+}
+inline ::std::string* CreateSessionRequest::unsafe_arena_release_target() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.CreateSessionRequest.target)
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  
+  return target_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      GetArenaNoVirtual());
+}
+inline void CreateSessionRequest::unsafe_arena_set_allocated_target(
+    ::std::string* target) {
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (target != NULL) {
+    
+  } else {
+    
+  }
+  target_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      target, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.CreateSessionRequest.target)
+}
+
+// -------------------------------------------------------------------
+
+// CreateSessionResponse
+
+// string session_handle = 1;
+inline void CreateSessionResponse::clear_session_handle() {
+  session_handle_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline const ::std::string& CreateSessionResponse::session_handle() const {
+  // @@protoc_insertion_point(field_get:tensorflow.CreateSessionResponse.session_handle)
+  return session_handle_.Get();
+}
+inline void CreateSessionResponse::set_session_handle(const ::std::string& value) {
+  
+  session_handle_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set:tensorflow.CreateSessionResponse.session_handle)
+}
+#if LANG_CXX11
+inline void CreateSessionResponse::set_session_handle(::std::string&& value) {
+  
+  session_handle_.Set(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.CreateSessionResponse.session_handle)
+}
+#endif
+inline void CreateSessionResponse::set_session_handle(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  session_handle_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
+              GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_char:tensorflow.CreateSessionResponse.session_handle)
+}
+inline void CreateSessionResponse::set_session_handle(const char* value,
+    size_t size) {
+  
+  session_handle_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
+      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.CreateSessionResponse.session_handle)
+}
+inline ::std::string* CreateSessionResponse::mutable_session_handle() {
+  
+  // @@protoc_insertion_point(field_mutable:tensorflow.CreateSessionResponse.session_handle)
+  return session_handle_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline ::std::string* CreateSessionResponse::release_session_handle() {
+  // @@protoc_insertion_point(field_release:tensorflow.CreateSessionResponse.session_handle)
+  
+  return session_handle_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline void CreateSessionResponse::set_allocated_session_handle(::std::string* session_handle) {
+  if (session_handle != NULL) {
+    
+  } else {
+    
+  }
+  session_handle_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), session_handle,
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.CreateSessionResponse.session_handle)
+}
+inline ::std::string* CreateSessionResponse::unsafe_arena_release_session_handle() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.CreateSessionResponse.session_handle)
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  
+  return session_handle_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      GetArenaNoVirtual());
+}
+inline void CreateSessionResponse::unsafe_arena_set_allocated_session_handle(
+    ::std::string* session_handle) {
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (session_handle != NULL) {
+    
+  } else {
+    
+  }
+  session_handle_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      session_handle, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.CreateSessionResponse.session_handle)
+}
+
+// int64 graph_version = 2;
+inline void CreateSessionResponse::clear_graph_version() {
+  graph_version_ = PROTOBUF_LONGLONG(0);
+}
+inline ::google::protobuf::int64 CreateSessionResponse::graph_version() const {
+  // @@protoc_insertion_point(field_get:tensorflow.CreateSessionResponse.graph_version)
+  return graph_version_;
+}
+inline void CreateSessionResponse::set_graph_version(::google::protobuf::int64 value) {
+  
+  graph_version_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.CreateSessionResponse.graph_version)
+}
+
+// -------------------------------------------------------------------
+
+// ExtendSessionRequest
+
+// string session_handle = 1;
+inline void ExtendSessionRequest::clear_session_handle() {
+  session_handle_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline const ::std::string& ExtendSessionRequest::session_handle() const {
+  // @@protoc_insertion_point(field_get:tensorflow.ExtendSessionRequest.session_handle)
+  return session_handle_.Get();
+}
+inline void ExtendSessionRequest::set_session_handle(const ::std::string& value) {
+  
+  session_handle_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set:tensorflow.ExtendSessionRequest.session_handle)
+}
+#if LANG_CXX11
+inline void ExtendSessionRequest::set_session_handle(::std::string&& value) {
+  
+  session_handle_.Set(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.ExtendSessionRequest.session_handle)
+}
+#endif
+inline void ExtendSessionRequest::set_session_handle(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  session_handle_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
+              GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_char:tensorflow.ExtendSessionRequest.session_handle)
+}
+inline void ExtendSessionRequest::set_session_handle(const char* value,
+    size_t size) {
+  
+  session_handle_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
+      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.ExtendSessionRequest.session_handle)
+}
+inline ::std::string* ExtendSessionRequest::mutable_session_handle() {
+  
+  // @@protoc_insertion_point(field_mutable:tensorflow.ExtendSessionRequest.session_handle)
+  return session_handle_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline ::std::string* ExtendSessionRequest::release_session_handle() {
+  // @@protoc_insertion_point(field_release:tensorflow.ExtendSessionRequest.session_handle)
+  
+  return session_handle_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline void ExtendSessionRequest::set_allocated_session_handle(::std::string* session_handle) {
+  if (session_handle != NULL) {
+    
+  } else {
+    
+  }
+  session_handle_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), session_handle,
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.ExtendSessionRequest.session_handle)
+}
+inline ::std::string* ExtendSessionRequest::unsafe_arena_release_session_handle() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.ExtendSessionRequest.session_handle)
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  
+  return session_handle_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      GetArenaNoVirtual());
+}
+inline void ExtendSessionRequest::unsafe_arena_set_allocated_session_handle(
+    ::std::string* session_handle) {
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (session_handle != NULL) {
+    
+  } else {
+    
+  }
+  session_handle_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      session_handle, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.ExtendSessionRequest.session_handle)
+}
+
+// .tensorflow.GraphDef graph_def = 2;
+inline bool ExtendSessionRequest::has_graph_def() const {
+  return this != internal_default_instance() && graph_def_ != NULL;
+}
+inline const ::tensorflow::GraphDef& ExtendSessionRequest::graph_def() const {
+  const ::tensorflow::GraphDef* p = graph_def_;
+  // @@protoc_insertion_point(field_get:tensorflow.ExtendSessionRequest.graph_def)
+  return p != NULL ? *p : *reinterpret_cast<const ::tensorflow::GraphDef*>(
+      &::tensorflow::_GraphDef_default_instance_);
+}
+inline ::tensorflow::GraphDef* ExtendSessionRequest::release_graph_def() {
+  // @@protoc_insertion_point(field_release:tensorflow.ExtendSessionRequest.graph_def)
+  
+  ::tensorflow::GraphDef* temp = graph_def_;
+  if (GetArenaNoVirtual() != NULL) {
+    temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
+  }
+  graph_def_ = NULL;
+  return temp;
+}
+inline ::tensorflow::GraphDef* ExtendSessionRequest::unsafe_arena_release_graph_def() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.ExtendSessionRequest.graph_def)
+  
+  ::tensorflow::GraphDef* temp = graph_def_;
+  graph_def_ = NULL;
+  return temp;
+}
+inline ::tensorflow::GraphDef* ExtendSessionRequest::mutable_graph_def() {
+  
+  if (graph_def_ == NULL) {
+    auto* p = CreateMaybeMessage<::tensorflow::GraphDef>(GetArenaNoVirtual());
+    graph_def_ = p;
+  }
+  // @@protoc_insertion_point(field_mutable:tensorflow.ExtendSessionRequest.graph_def)
+  return graph_def_;
+}
+inline void ExtendSessionRequest::set_allocated_graph_def(::tensorflow::GraphDef* graph_def) {
+  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
+  if (message_arena == NULL) {
+    delete reinterpret_cast< ::google::protobuf::MessageLite*>(graph_def_);
+  }
+  if (graph_def) {
+    ::google::protobuf::Arena* submessage_arena =
+      reinterpret_cast<::google::protobuf::MessageLite*>(graph_def)->GetArena();
+    if (message_arena != submessage_arena) {
+      graph_def = ::google::protobuf::internal::GetOwnedMessage(
+          message_arena, graph_def, submessage_arena);
+    }
+    
+  } else {
+    
+  }
+  graph_def_ = graph_def;
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.ExtendSessionRequest.graph_def)
+}
+
+// int64 current_graph_version = 3;
+inline void ExtendSessionRequest::clear_current_graph_version() {
+  current_graph_version_ = PROTOBUF_LONGLONG(0);
+}
+inline ::google::protobuf::int64 ExtendSessionRequest::current_graph_version() const {
+  // @@protoc_insertion_point(field_get:tensorflow.ExtendSessionRequest.current_graph_version)
+  return current_graph_version_;
+}
+inline void ExtendSessionRequest::set_current_graph_version(::google::protobuf::int64 value) {
+  
+  current_graph_version_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.ExtendSessionRequest.current_graph_version)
+}
+
+// -------------------------------------------------------------------
+
+// ExtendSessionResponse
+
+// int64 new_graph_version = 4;
+inline void ExtendSessionResponse::clear_new_graph_version() {
+  new_graph_version_ = PROTOBUF_LONGLONG(0);
+}
+inline ::google::protobuf::int64 ExtendSessionResponse::new_graph_version() const {
+  // @@protoc_insertion_point(field_get:tensorflow.ExtendSessionResponse.new_graph_version)
+  return new_graph_version_;
+}
+inline void ExtendSessionResponse::set_new_graph_version(::google::protobuf::int64 value) {
+  
+  new_graph_version_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.ExtendSessionResponse.new_graph_version)
+}
+
+// -------------------------------------------------------------------
+
+// RunStepRequest
+
+// string session_handle = 1;
+inline void RunStepRequest::clear_session_handle() {
+  session_handle_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline const ::std::string& RunStepRequest::session_handle() const {
+  // @@protoc_insertion_point(field_get:tensorflow.RunStepRequest.session_handle)
+  return session_handle_.Get();
+}
+inline void RunStepRequest::set_session_handle(const ::std::string& value) {
+  
+  session_handle_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set:tensorflow.RunStepRequest.session_handle)
+}
+#if LANG_CXX11
+inline void RunStepRequest::set_session_handle(::std::string&& value) {
+  
+  session_handle_.Set(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.RunStepRequest.session_handle)
+}
+#endif
+inline void RunStepRequest::set_session_handle(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  session_handle_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
+              GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_char:tensorflow.RunStepRequest.session_handle)
+}
+inline void RunStepRequest::set_session_handle(const char* value,
+    size_t size) {
+  
+  session_handle_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
+      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.RunStepRequest.session_handle)
+}
+inline ::std::string* RunStepRequest::mutable_session_handle() {
+  
+  // @@protoc_insertion_point(field_mutable:tensorflow.RunStepRequest.session_handle)
+  return session_handle_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline ::std::string* RunStepRequest::release_session_handle() {
+  // @@protoc_insertion_point(field_release:tensorflow.RunStepRequest.session_handle)
+  
+  return session_handle_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline void RunStepRequest::set_allocated_session_handle(::std::string* session_handle) {
+  if (session_handle != NULL) {
+    
+  } else {
+    
+  }
+  session_handle_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), session_handle,
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.RunStepRequest.session_handle)
+}
+inline ::std::string* RunStepRequest::unsafe_arena_release_session_handle() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.RunStepRequest.session_handle)
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  
+  return session_handle_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      GetArenaNoVirtual());
+}
+inline void RunStepRequest::unsafe_arena_set_allocated_session_handle(
+    ::std::string* session_handle) {
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (session_handle != NULL) {
+    
+  } else {
+    
+  }
+  session_handle_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      session_handle, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.RunStepRequest.session_handle)
+}
+
+// repeated .tensorflow.NamedTensorProto feed = 2;
+inline int RunStepRequest::feed_size() const {
+  return feed_.size();
+}
+inline ::tensorflow::NamedTensorProto* RunStepRequest::mutable_feed(int index) {
+  // @@protoc_insertion_point(field_mutable:tensorflow.RunStepRequest.feed)
+  return feed_.Mutable(index);
+}
+inline ::google::protobuf::RepeatedPtrField< ::tensorflow::NamedTensorProto >*
+RunStepRequest::mutable_feed() {
+  // @@protoc_insertion_point(field_mutable_list:tensorflow.RunStepRequest.feed)
+  return &feed_;
+}
+inline const ::tensorflow::NamedTensorProto& RunStepRequest::feed(int index) const {
+  // @@protoc_insertion_point(field_get:tensorflow.RunStepRequest.feed)
+  return feed_.Get(index);
+}
+inline ::tensorflow::NamedTensorProto* RunStepRequest::add_feed() {
+  // @@protoc_insertion_point(field_add:tensorflow.RunStepRequest.feed)
+  return feed_.Add();
+}
+inline const ::google::protobuf::RepeatedPtrField< ::tensorflow::NamedTensorProto >&
+RunStepRequest::feed() const {
+  // @@protoc_insertion_point(field_list:tensorflow.RunStepRequest.feed)
+  return feed_;
+}
+
+// repeated string fetch = 3;
+inline int RunStepRequest::fetch_size() const {
+  return fetch_.size();
+}
+inline void RunStepRequest::clear_fetch() {
+  fetch_.Clear();
+}
+inline const ::std::string& RunStepRequest::fetch(int index) const {
+  // @@protoc_insertion_point(field_get:tensorflow.RunStepRequest.fetch)
+  return fetch_.Get(index);
+}
+inline ::std::string* RunStepRequest::mutable_fetch(int index) {
+  // @@protoc_insertion_point(field_mutable:tensorflow.RunStepRequest.fetch)
+  return fetch_.Mutable(index);
+}
+inline void RunStepRequest::set_fetch(int index, const ::std::string& value) {
+  // @@protoc_insertion_point(field_set:tensorflow.RunStepRequest.fetch)
+  fetch_.Mutable(index)->assign(value);
+}
+#if LANG_CXX11
+inline void RunStepRequest::set_fetch(int index, ::std::string&& value) {
+  // @@protoc_insertion_point(field_set:tensorflow.RunStepRequest.fetch)
+  fetch_.Mutable(index)->assign(std::move(value));
+}
+#endif
+inline void RunStepRequest::set_fetch(int index, const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  fetch_.Mutable(index)->assign(value);
+  // @@protoc_insertion_point(field_set_char:tensorflow.RunStepRequest.fetch)
+}
+inline void RunStepRequest::set_fetch(int index, const char* value, size_t size) {
+  fetch_.Mutable(index)->assign(
+    reinterpret_cast<const char*>(value), size);
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.RunStepRequest.fetch)
+}
+inline ::std::string* RunStepRequest::add_fetch() {
+  // @@protoc_insertion_point(field_add_mutable:tensorflow.RunStepRequest.fetch)
+  return fetch_.Add();
+}
+inline void RunStepRequest::add_fetch(const ::std::string& value) {
+  fetch_.Add()->assign(value);
+  // @@protoc_insertion_point(field_add:tensorflow.RunStepRequest.fetch)
+}
+#if LANG_CXX11
+inline void RunStepRequest::add_fetch(::std::string&& value) {
+  fetch_.Add(std::move(value));
+  // @@protoc_insertion_point(field_add:tensorflow.RunStepRequest.fetch)
+}
+#endif
+inline void RunStepRequest::add_fetch(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  fetch_.Add()->assign(value);
+  // @@protoc_insertion_point(field_add_char:tensorflow.RunStepRequest.fetch)
+}
+inline void RunStepRequest::add_fetch(const char* value, size_t size) {
+  fetch_.Add()->assign(reinterpret_cast<const char*>(value), size);
+  // @@protoc_insertion_point(field_add_pointer:tensorflow.RunStepRequest.fetch)
+}
+inline const ::google::protobuf::RepeatedPtrField<::std::string>&
+RunStepRequest::fetch() const {
+  // @@protoc_insertion_point(field_list:tensorflow.RunStepRequest.fetch)
+  return fetch_;
+}
+inline ::google::protobuf::RepeatedPtrField<::std::string>*
+RunStepRequest::mutable_fetch() {
+  // @@protoc_insertion_point(field_mutable_list:tensorflow.RunStepRequest.fetch)
+  return &fetch_;
+}
+
+// repeated string target = 4;
+inline int RunStepRequest::target_size() const {
+  return target_.size();
+}
+inline void RunStepRequest::clear_target() {
+  target_.Clear();
+}
+inline const ::std::string& RunStepRequest::target(int index) const {
+  // @@protoc_insertion_point(field_get:tensorflow.RunStepRequest.target)
+  return target_.Get(index);
+}
+inline ::std::string* RunStepRequest::mutable_target(int index) {
+  // @@protoc_insertion_point(field_mutable:tensorflow.RunStepRequest.target)
+  return target_.Mutable(index);
+}
+inline void RunStepRequest::set_target(int index, const ::std::string& value) {
+  // @@protoc_insertion_point(field_set:tensorflow.RunStepRequest.target)
+  target_.Mutable(index)->assign(value);
+}
+#if LANG_CXX11
+inline void RunStepRequest::set_target(int index, ::std::string&& value) {
+  // @@protoc_insertion_point(field_set:tensorflow.RunStepRequest.target)
+  target_.Mutable(index)->assign(std::move(value));
+}
+#endif
+inline void RunStepRequest::set_target(int index, const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  target_.Mutable(index)->assign(value);
+  // @@protoc_insertion_point(field_set_char:tensorflow.RunStepRequest.target)
+}
+inline void RunStepRequest::set_target(int index, const char* value, size_t size) {
+  target_.Mutable(index)->assign(
+    reinterpret_cast<const char*>(value), size);
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.RunStepRequest.target)
+}
+inline ::std::string* RunStepRequest::add_target() {
+  // @@protoc_insertion_point(field_add_mutable:tensorflow.RunStepRequest.target)
+  return target_.Add();
+}
+inline void RunStepRequest::add_target(const ::std::string& value) {
+  target_.Add()->assign(value);
+  // @@protoc_insertion_point(field_add:tensorflow.RunStepRequest.target)
+}
+#if LANG_CXX11
+inline void RunStepRequest::add_target(::std::string&& value) {
+  target_.Add(std::move(value));
+  // @@protoc_insertion_point(field_add:tensorflow.RunStepRequest.target)
+}
+#endif
+inline void RunStepRequest::add_target(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  target_.Add()->assign(value);
+  // @@protoc_insertion_point(field_add_char:tensorflow.RunStepRequest.target)
+}
+inline void RunStepRequest::add_target(const char* value, size_t size) {
+  target_.Add()->assign(reinterpret_cast<const char*>(value), size);
+  // @@protoc_insertion_point(field_add_pointer:tensorflow.RunStepRequest.target)
+}
+inline const ::google::protobuf::RepeatedPtrField<::std::string>&
+RunStepRequest::target() const {
+  // @@protoc_insertion_point(field_list:tensorflow.RunStepRequest.target)
+  return target_;
+}
+inline ::google::protobuf::RepeatedPtrField<::std::string>*
+RunStepRequest::mutable_target() {
+  // @@protoc_insertion_point(field_mutable_list:tensorflow.RunStepRequest.target)
+  return &target_;
+}
+
+// .tensorflow.RunOptions options = 5;
+inline bool RunStepRequest::has_options() const {
+  return this != internal_default_instance() && options_ != NULL;
+}
+inline const ::tensorflow::RunOptions& RunStepRequest::options() const {
+  const ::tensorflow::RunOptions* p = options_;
+  // @@protoc_insertion_point(field_get:tensorflow.RunStepRequest.options)
+  return p != NULL ? *p : *reinterpret_cast<const ::tensorflow::RunOptions*>(
+      &::tensorflow::_RunOptions_default_instance_);
+}
+inline ::tensorflow::RunOptions* RunStepRequest::release_options() {
+  // @@protoc_insertion_point(field_release:tensorflow.RunStepRequest.options)
+  
+  ::tensorflow::RunOptions* temp = options_;
+  if (GetArenaNoVirtual() != NULL) {
+    temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
+  }
+  options_ = NULL;
+  return temp;
+}
+inline ::tensorflow::RunOptions* RunStepRequest::unsafe_arena_release_options() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.RunStepRequest.options)
+  
+  ::tensorflow::RunOptions* temp = options_;
+  options_ = NULL;
+  return temp;
+}
+inline ::tensorflow::RunOptions* RunStepRequest::mutable_options() {
+  
+  if (options_ == NULL) {
+    auto* p = CreateMaybeMessage<::tensorflow::RunOptions>(GetArenaNoVirtual());
+    options_ = p;
+  }
+  // @@protoc_insertion_point(field_mutable:tensorflow.RunStepRequest.options)
+  return options_;
+}
+inline void RunStepRequest::set_allocated_options(::tensorflow::RunOptions* options) {
+  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
+  if (message_arena == NULL) {
+    delete reinterpret_cast< ::google::protobuf::MessageLite*>(options_);
+  }
+  if (options) {
+    ::google::protobuf::Arena* submessage_arena =
+      reinterpret_cast<::google::protobuf::MessageLite*>(options)->GetArena();
+    if (message_arena != submessage_arena) {
+      options = ::google::protobuf::internal::GetOwnedMessage(
+          message_arena, options, submessage_arena);
+    }
+    
+  } else {
+    
+  }
+  options_ = options;
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.RunStepRequest.options)
+}
+
+// string partial_run_handle = 6;
+inline void RunStepRequest::clear_partial_run_handle() {
+  partial_run_handle_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline const ::std::string& RunStepRequest::partial_run_handle() const {
+  // @@protoc_insertion_point(field_get:tensorflow.RunStepRequest.partial_run_handle)
+  return partial_run_handle_.Get();
+}
+inline void RunStepRequest::set_partial_run_handle(const ::std::string& value) {
+  
+  partial_run_handle_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set:tensorflow.RunStepRequest.partial_run_handle)
+}
+#if LANG_CXX11
+inline void RunStepRequest::set_partial_run_handle(::std::string&& value) {
+  
+  partial_run_handle_.Set(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.RunStepRequest.partial_run_handle)
+}
+#endif
+inline void RunStepRequest::set_partial_run_handle(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  partial_run_handle_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
+              GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_char:tensorflow.RunStepRequest.partial_run_handle)
+}
+inline void RunStepRequest::set_partial_run_handle(const char* value,
+    size_t size) {
+  
+  partial_run_handle_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
+      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.RunStepRequest.partial_run_handle)
+}
+inline ::std::string* RunStepRequest::mutable_partial_run_handle() {
+  
+  // @@protoc_insertion_point(field_mutable:tensorflow.RunStepRequest.partial_run_handle)
+  return partial_run_handle_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline ::std::string* RunStepRequest::release_partial_run_handle() {
+  // @@protoc_insertion_point(field_release:tensorflow.RunStepRequest.partial_run_handle)
+  
+  return partial_run_handle_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline void RunStepRequest::set_allocated_partial_run_handle(::std::string* partial_run_handle) {
+  if (partial_run_handle != NULL) {
+    
+  } else {
+    
+  }
+  partial_run_handle_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), partial_run_handle,
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.RunStepRequest.partial_run_handle)
+}
+inline ::std::string* RunStepRequest::unsafe_arena_release_partial_run_handle() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.RunStepRequest.partial_run_handle)
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  
+  return partial_run_handle_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      GetArenaNoVirtual());
+}
+inline void RunStepRequest::unsafe_arena_set_allocated_partial_run_handle(
+    ::std::string* partial_run_handle) {
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (partial_run_handle != NULL) {
+    
+  } else {
+    
+  }
+  partial_run_handle_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      partial_run_handle, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.RunStepRequest.partial_run_handle)
+}
+
+// bool store_errors_in_response_body = 7;
+inline void RunStepRequest::clear_store_errors_in_response_body() {
+  store_errors_in_response_body_ = false;
+}
+inline bool RunStepRequest::store_errors_in_response_body() const {
+  // @@protoc_insertion_point(field_get:tensorflow.RunStepRequest.store_errors_in_response_body)
+  return store_errors_in_response_body_;
+}
+inline void RunStepRequest::set_store_errors_in_response_body(bool value) {
+  
+  store_errors_in_response_body_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.RunStepRequest.store_errors_in_response_body)
+}
+
+// -------------------------------------------------------------------
+
+// RunStepResponse
+
+// repeated .tensorflow.NamedTensorProto tensor = 1;
+inline int RunStepResponse::tensor_size() const {
+  return tensor_.size();
+}
+inline ::tensorflow::NamedTensorProto* RunStepResponse::mutable_tensor(int index) {
+  // @@protoc_insertion_point(field_mutable:tensorflow.RunStepResponse.tensor)
+  return tensor_.Mutable(index);
+}
+inline ::google::protobuf::RepeatedPtrField< ::tensorflow::NamedTensorProto >*
+RunStepResponse::mutable_tensor() {
+  // @@protoc_insertion_point(field_mutable_list:tensorflow.RunStepResponse.tensor)
+  return &tensor_;
+}
+inline const ::tensorflow::NamedTensorProto& RunStepResponse::tensor(int index) const {
+  // @@protoc_insertion_point(field_get:tensorflow.RunStepResponse.tensor)
+  return tensor_.Get(index);
+}
+inline ::tensorflow::NamedTensorProto* RunStepResponse::add_tensor() {
+  // @@protoc_insertion_point(field_add:tensorflow.RunStepResponse.tensor)
+  return tensor_.Add();
+}
+inline const ::google::protobuf::RepeatedPtrField< ::tensorflow::NamedTensorProto >&
+RunStepResponse::tensor() const {
+  // @@protoc_insertion_point(field_list:tensorflow.RunStepResponse.tensor)
+  return tensor_;
+}
+
+// .tensorflow.RunMetadata metadata = 2;
+inline bool RunStepResponse::has_metadata() const {
+  return this != internal_default_instance() && metadata_ != NULL;
+}
+inline const ::tensorflow::RunMetadata& RunStepResponse::metadata() const {
+  const ::tensorflow::RunMetadata* p = metadata_;
+  // @@protoc_insertion_point(field_get:tensorflow.RunStepResponse.metadata)
+  return p != NULL ? *p : *reinterpret_cast<const ::tensorflow::RunMetadata*>(
+      &::tensorflow::_RunMetadata_default_instance_);
+}
+inline ::tensorflow::RunMetadata* RunStepResponse::release_metadata() {
+  // @@protoc_insertion_point(field_release:tensorflow.RunStepResponse.metadata)
+  
+  ::tensorflow::RunMetadata* temp = metadata_;
+  if (GetArenaNoVirtual() != NULL) {
+    temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
+  }
+  metadata_ = NULL;
+  return temp;
+}
+inline ::tensorflow::RunMetadata* RunStepResponse::unsafe_arena_release_metadata() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.RunStepResponse.metadata)
+  
+  ::tensorflow::RunMetadata* temp = metadata_;
+  metadata_ = NULL;
+  return temp;
+}
+inline ::tensorflow::RunMetadata* RunStepResponse::mutable_metadata() {
+  
+  if (metadata_ == NULL) {
+    auto* p = CreateMaybeMessage<::tensorflow::RunMetadata>(GetArenaNoVirtual());
+    metadata_ = p;
+  }
+  // @@protoc_insertion_point(field_mutable:tensorflow.RunStepResponse.metadata)
+  return metadata_;
+}
+inline void RunStepResponse::set_allocated_metadata(::tensorflow::RunMetadata* metadata) {
+  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
+  if (message_arena == NULL) {
+    delete reinterpret_cast< ::google::protobuf::MessageLite*>(metadata_);
+  }
+  if (metadata) {
+    ::google::protobuf::Arena* submessage_arena =
+      reinterpret_cast<::google::protobuf::MessageLite*>(metadata)->GetArena();
+    if (message_arena != submessage_arena) {
+      metadata = ::google::protobuf::internal::GetOwnedMessage(
+          message_arena, metadata, submessage_arena);
+    }
+    
+  } else {
+    
+  }
+  metadata_ = metadata;
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.RunStepResponse.metadata)
+}
+
+// .tensorflow.error.Code status_code = 3;
+inline void RunStepResponse::clear_status_code() {
+  status_code_ = 0;
+}
+inline ::tensorflow::error::Code RunStepResponse::status_code() const {
+  // @@protoc_insertion_point(field_get:tensorflow.RunStepResponse.status_code)
+  return static_cast< ::tensorflow::error::Code >(status_code_);
+}
+inline void RunStepResponse::set_status_code(::tensorflow::error::Code value) {
+  
+  status_code_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.RunStepResponse.status_code)
+}
+
+// string status_error_message = 4;
+inline void RunStepResponse::clear_status_error_message() {
+  status_error_message_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline const ::std::string& RunStepResponse::status_error_message() const {
+  // @@protoc_insertion_point(field_get:tensorflow.RunStepResponse.status_error_message)
+  return status_error_message_.Get();
+}
+inline void RunStepResponse::set_status_error_message(const ::std::string& value) {
+  
+  status_error_message_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set:tensorflow.RunStepResponse.status_error_message)
+}
+#if LANG_CXX11
+inline void RunStepResponse::set_status_error_message(::std::string&& value) {
+  
+  status_error_message_.Set(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.RunStepResponse.status_error_message)
+}
+#endif
+inline void RunStepResponse::set_status_error_message(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  status_error_message_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
+              GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_char:tensorflow.RunStepResponse.status_error_message)
+}
+inline void RunStepResponse::set_status_error_message(const char* value,
+    size_t size) {
+  
+  status_error_message_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
+      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.RunStepResponse.status_error_message)
+}
+inline ::std::string* RunStepResponse::mutable_status_error_message() {
+  
+  // @@protoc_insertion_point(field_mutable:tensorflow.RunStepResponse.status_error_message)
+  return status_error_message_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline ::std::string* RunStepResponse::release_status_error_message() {
+  // @@protoc_insertion_point(field_release:tensorflow.RunStepResponse.status_error_message)
+  
+  return status_error_message_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline void RunStepResponse::set_allocated_status_error_message(::std::string* status_error_message) {
+  if (status_error_message != NULL) {
+    
+  } else {
+    
+  }
+  status_error_message_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), status_error_message,
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.RunStepResponse.status_error_message)
+}
+inline ::std::string* RunStepResponse::unsafe_arena_release_status_error_message() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.RunStepResponse.status_error_message)
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  
+  return status_error_message_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      GetArenaNoVirtual());
+}
+inline void RunStepResponse::unsafe_arena_set_allocated_status_error_message(
+    ::std::string* status_error_message) {
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (status_error_message != NULL) {
+    
+  } else {
+    
+  }
+  status_error_message_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      status_error_message, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.RunStepResponse.status_error_message)
+}
+
+// -------------------------------------------------------------------
+
+// PartialRunSetupRequest
+
+// string session_handle = 1;
+inline void PartialRunSetupRequest::clear_session_handle() {
+  session_handle_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline const ::std::string& PartialRunSetupRequest::session_handle() const {
+  // @@protoc_insertion_point(field_get:tensorflow.PartialRunSetupRequest.session_handle)
+  return session_handle_.Get();
+}
+inline void PartialRunSetupRequest::set_session_handle(const ::std::string& value) {
+  
+  session_handle_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set:tensorflow.PartialRunSetupRequest.session_handle)
+}
+#if LANG_CXX11
+inline void PartialRunSetupRequest::set_session_handle(::std::string&& value) {
+  
+  session_handle_.Set(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.PartialRunSetupRequest.session_handle)
+}
+#endif
+inline void PartialRunSetupRequest::set_session_handle(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  session_handle_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
+              GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_char:tensorflow.PartialRunSetupRequest.session_handle)
+}
+inline void PartialRunSetupRequest::set_session_handle(const char* value,
+    size_t size) {
+  
+  session_handle_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
+      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.PartialRunSetupRequest.session_handle)
+}
+inline ::std::string* PartialRunSetupRequest::mutable_session_handle() {
+  
+  // @@protoc_insertion_point(field_mutable:tensorflow.PartialRunSetupRequest.session_handle)
+  return session_handle_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline ::std::string* PartialRunSetupRequest::release_session_handle() {
+  // @@protoc_insertion_point(field_release:tensorflow.PartialRunSetupRequest.session_handle)
+  
+  return session_handle_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline void PartialRunSetupRequest::set_allocated_session_handle(::std::string* session_handle) {
+  if (session_handle != NULL) {
+    
+  } else {
+    
+  }
+  session_handle_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), session_handle,
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.PartialRunSetupRequest.session_handle)
+}
+inline ::std::string* PartialRunSetupRequest::unsafe_arena_release_session_handle() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.PartialRunSetupRequest.session_handle)
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  
+  return session_handle_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      GetArenaNoVirtual());
+}
+inline void PartialRunSetupRequest::unsafe_arena_set_allocated_session_handle(
+    ::std::string* session_handle) {
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (session_handle != NULL) {
+    
+  } else {
+    
+  }
+  session_handle_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      session_handle, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.PartialRunSetupRequest.session_handle)
+}
+
+// repeated string feed = 2;
+inline int PartialRunSetupRequest::feed_size() const {
+  return feed_.size();
+}
+inline void PartialRunSetupRequest::clear_feed() {
+  feed_.Clear();
+}
+inline const ::std::string& PartialRunSetupRequest::feed(int index) const {
+  // @@protoc_insertion_point(field_get:tensorflow.PartialRunSetupRequest.feed)
+  return feed_.Get(index);
+}
+inline ::std::string* PartialRunSetupRequest::mutable_feed(int index) {
+  // @@protoc_insertion_point(field_mutable:tensorflow.PartialRunSetupRequest.feed)
+  return feed_.Mutable(index);
+}
+inline void PartialRunSetupRequest::set_feed(int index, const ::std::string& value) {
+  // @@protoc_insertion_point(field_set:tensorflow.PartialRunSetupRequest.feed)
+  feed_.Mutable(index)->assign(value);
+}
+#if LANG_CXX11
+inline void PartialRunSetupRequest::set_feed(int index, ::std::string&& value) {
+  // @@protoc_insertion_point(field_set:tensorflow.PartialRunSetupRequest.feed)
+  feed_.Mutable(index)->assign(std::move(value));
+}
+#endif
+inline void PartialRunSetupRequest::set_feed(int index, const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  feed_.Mutable(index)->assign(value);
+  // @@protoc_insertion_point(field_set_char:tensorflow.PartialRunSetupRequest.feed)
+}
+inline void PartialRunSetupRequest::set_feed(int index, const char* value, size_t size) {
+  feed_.Mutable(index)->assign(
+    reinterpret_cast<const char*>(value), size);
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.PartialRunSetupRequest.feed)
+}
+inline ::std::string* PartialRunSetupRequest::add_feed() {
+  // @@protoc_insertion_point(field_add_mutable:tensorflow.PartialRunSetupRequest.feed)
+  return feed_.Add();
+}
+inline void PartialRunSetupRequest::add_feed(const ::std::string& value) {
+  feed_.Add()->assign(value);
+  // @@protoc_insertion_point(field_add:tensorflow.PartialRunSetupRequest.feed)
+}
+#if LANG_CXX11
+inline void PartialRunSetupRequest::add_feed(::std::string&& value) {
+  feed_.Add(std::move(value));
+  // @@protoc_insertion_point(field_add:tensorflow.PartialRunSetupRequest.feed)
+}
+#endif
+inline void PartialRunSetupRequest::add_feed(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  feed_.Add()->assign(value);
+  // @@protoc_insertion_point(field_add_char:tensorflow.PartialRunSetupRequest.feed)
+}
+inline void PartialRunSetupRequest::add_feed(const char* value, size_t size) {
+  feed_.Add()->assign(reinterpret_cast<const char*>(value), size);
+  // @@protoc_insertion_point(field_add_pointer:tensorflow.PartialRunSetupRequest.feed)
+}
+inline const ::google::protobuf::RepeatedPtrField<::std::string>&
+PartialRunSetupRequest::feed() const {
+  // @@protoc_insertion_point(field_list:tensorflow.PartialRunSetupRequest.feed)
+  return feed_;
+}
+inline ::google::protobuf::RepeatedPtrField<::std::string>*
+PartialRunSetupRequest::mutable_feed() {
+  // @@protoc_insertion_point(field_mutable_list:tensorflow.PartialRunSetupRequest.feed)
+  return &feed_;
+}
+
+// repeated string fetch = 3;
+inline int PartialRunSetupRequest::fetch_size() const {
+  return fetch_.size();
+}
+inline void PartialRunSetupRequest::clear_fetch() {
+  fetch_.Clear();
+}
+inline const ::std::string& PartialRunSetupRequest::fetch(int index) const {
+  // @@protoc_insertion_point(field_get:tensorflow.PartialRunSetupRequest.fetch)
+  return fetch_.Get(index);
+}
+inline ::std::string* PartialRunSetupRequest::mutable_fetch(int index) {
+  // @@protoc_insertion_point(field_mutable:tensorflow.PartialRunSetupRequest.fetch)
+  return fetch_.Mutable(index);
+}
+inline void PartialRunSetupRequest::set_fetch(int index, const ::std::string& value) {
+  // @@protoc_insertion_point(field_set:tensorflow.PartialRunSetupRequest.fetch)
+  fetch_.Mutable(index)->assign(value);
+}
+#if LANG_CXX11
+inline void PartialRunSetupRequest::set_fetch(int index, ::std::string&& value) {
+  // @@protoc_insertion_point(field_set:tensorflow.PartialRunSetupRequest.fetch)
+  fetch_.Mutable(index)->assign(std::move(value));
+}
+#endif
+inline void PartialRunSetupRequest::set_fetch(int index, const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  fetch_.Mutable(index)->assign(value);
+  // @@protoc_insertion_point(field_set_char:tensorflow.PartialRunSetupRequest.fetch)
+}
+inline void PartialRunSetupRequest::set_fetch(int index, const char* value, size_t size) {
+  fetch_.Mutable(index)->assign(
+    reinterpret_cast<const char*>(value), size);
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.PartialRunSetupRequest.fetch)
+}
+inline ::std::string* PartialRunSetupRequest::add_fetch() {
+  // @@protoc_insertion_point(field_add_mutable:tensorflow.PartialRunSetupRequest.fetch)
+  return fetch_.Add();
+}
+inline void PartialRunSetupRequest::add_fetch(const ::std::string& value) {
+  fetch_.Add()->assign(value);
+  // @@protoc_insertion_point(field_add:tensorflow.PartialRunSetupRequest.fetch)
+}
+#if LANG_CXX11
+inline void PartialRunSetupRequest::add_fetch(::std::string&& value) {
+  fetch_.Add(std::move(value));
+  // @@protoc_insertion_point(field_add:tensorflow.PartialRunSetupRequest.fetch)
+}
+#endif
+inline void PartialRunSetupRequest::add_fetch(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  fetch_.Add()->assign(value);
+  // @@protoc_insertion_point(field_add_char:tensorflow.PartialRunSetupRequest.fetch)
+}
+inline void PartialRunSetupRequest::add_fetch(const char* value, size_t size) {
+  fetch_.Add()->assign(reinterpret_cast<const char*>(value), size);
+  // @@protoc_insertion_point(field_add_pointer:tensorflow.PartialRunSetupRequest.fetch)
+}
+inline const ::google::protobuf::RepeatedPtrField<::std::string>&
+PartialRunSetupRequest::fetch() const {
+  // @@protoc_insertion_point(field_list:tensorflow.PartialRunSetupRequest.fetch)
+  return fetch_;
+}
+inline ::google::protobuf::RepeatedPtrField<::std::string>*
+PartialRunSetupRequest::mutable_fetch() {
+  // @@protoc_insertion_point(field_mutable_list:tensorflow.PartialRunSetupRequest.fetch)
+  return &fetch_;
+}
+
+// repeated string target = 4;
+inline int PartialRunSetupRequest::target_size() const {
+  return target_.size();
+}
+inline void PartialRunSetupRequest::clear_target() {
+  target_.Clear();
+}
+inline const ::std::string& PartialRunSetupRequest::target(int index) const {
+  // @@protoc_insertion_point(field_get:tensorflow.PartialRunSetupRequest.target)
+  return target_.Get(index);
+}
+inline ::std::string* PartialRunSetupRequest::mutable_target(int index) {
+  // @@protoc_insertion_point(field_mutable:tensorflow.PartialRunSetupRequest.target)
+  return target_.Mutable(index);
+}
+inline void PartialRunSetupRequest::set_target(int index, const ::std::string& value) {
+  // @@protoc_insertion_point(field_set:tensorflow.PartialRunSetupRequest.target)
+  target_.Mutable(index)->assign(value);
+}
+#if LANG_CXX11
+inline void PartialRunSetupRequest::set_target(int index, ::std::string&& value) {
+  // @@protoc_insertion_point(field_set:tensorflow.PartialRunSetupRequest.target)
+  target_.Mutable(index)->assign(std::move(value));
+}
+#endif
+inline void PartialRunSetupRequest::set_target(int index, const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  target_.Mutable(index)->assign(value);
+  // @@protoc_insertion_point(field_set_char:tensorflow.PartialRunSetupRequest.target)
+}
+inline void PartialRunSetupRequest::set_target(int index, const char* value, size_t size) {
+  target_.Mutable(index)->assign(
+    reinterpret_cast<const char*>(value), size);
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.PartialRunSetupRequest.target)
+}
+inline ::std::string* PartialRunSetupRequest::add_target() {
+  // @@protoc_insertion_point(field_add_mutable:tensorflow.PartialRunSetupRequest.target)
+  return target_.Add();
+}
+inline void PartialRunSetupRequest::add_target(const ::std::string& value) {
+  target_.Add()->assign(value);
+  // @@protoc_insertion_point(field_add:tensorflow.PartialRunSetupRequest.target)
+}
+#if LANG_CXX11
+inline void PartialRunSetupRequest::add_target(::std::string&& value) {
+  target_.Add(std::move(value));
+  // @@protoc_insertion_point(field_add:tensorflow.PartialRunSetupRequest.target)
+}
+#endif
+inline void PartialRunSetupRequest::add_target(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  target_.Add()->assign(value);
+  // @@protoc_insertion_point(field_add_char:tensorflow.PartialRunSetupRequest.target)
+}
+inline void PartialRunSetupRequest::add_target(const char* value, size_t size) {
+  target_.Add()->assign(reinterpret_cast<const char*>(value), size);
+  // @@protoc_insertion_point(field_add_pointer:tensorflow.PartialRunSetupRequest.target)
+}
+inline const ::google::protobuf::RepeatedPtrField<::std::string>&
+PartialRunSetupRequest::target() const {
+  // @@protoc_insertion_point(field_list:tensorflow.PartialRunSetupRequest.target)
+  return target_;
+}
+inline ::google::protobuf::RepeatedPtrField<::std::string>*
+PartialRunSetupRequest::mutable_target() {
+  // @@protoc_insertion_point(field_mutable_list:tensorflow.PartialRunSetupRequest.target)
+  return &target_;
+}
+
+// -------------------------------------------------------------------
+
+// PartialRunSetupResponse
+
+// string partial_run_handle = 1;
+inline void PartialRunSetupResponse::clear_partial_run_handle() {
+  partial_run_handle_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline const ::std::string& PartialRunSetupResponse::partial_run_handle() const {
+  // @@protoc_insertion_point(field_get:tensorflow.PartialRunSetupResponse.partial_run_handle)
+  return partial_run_handle_.Get();
+}
+inline void PartialRunSetupResponse::set_partial_run_handle(const ::std::string& value) {
+  
+  partial_run_handle_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set:tensorflow.PartialRunSetupResponse.partial_run_handle)
+}
+#if LANG_CXX11
+inline void PartialRunSetupResponse::set_partial_run_handle(::std::string&& value) {
+  
+  partial_run_handle_.Set(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.PartialRunSetupResponse.partial_run_handle)
+}
+#endif
+inline void PartialRunSetupResponse::set_partial_run_handle(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  partial_run_handle_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
+              GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_char:tensorflow.PartialRunSetupResponse.partial_run_handle)
+}
+inline void PartialRunSetupResponse::set_partial_run_handle(const char* value,
+    size_t size) {
+  
+  partial_run_handle_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
+      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.PartialRunSetupResponse.partial_run_handle)
+}
+inline ::std::string* PartialRunSetupResponse::mutable_partial_run_handle() {
+  
+  // @@protoc_insertion_point(field_mutable:tensorflow.PartialRunSetupResponse.partial_run_handle)
+  return partial_run_handle_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline ::std::string* PartialRunSetupResponse::release_partial_run_handle() {
+  // @@protoc_insertion_point(field_release:tensorflow.PartialRunSetupResponse.partial_run_handle)
+  
+  return partial_run_handle_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline void PartialRunSetupResponse::set_allocated_partial_run_handle(::std::string* partial_run_handle) {
+  if (partial_run_handle != NULL) {
+    
+  } else {
+    
+  }
+  partial_run_handle_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), partial_run_handle,
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.PartialRunSetupResponse.partial_run_handle)
+}
+inline ::std::string* PartialRunSetupResponse::unsafe_arena_release_partial_run_handle() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.PartialRunSetupResponse.partial_run_handle)
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  
+  return partial_run_handle_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      GetArenaNoVirtual());
+}
+inline void PartialRunSetupResponse::unsafe_arena_set_allocated_partial_run_handle(
+    ::std::string* partial_run_handle) {
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (partial_run_handle != NULL) {
+    
+  } else {
+    
+  }
+  partial_run_handle_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      partial_run_handle, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.PartialRunSetupResponse.partial_run_handle)
+}
+
+// -------------------------------------------------------------------
+
+// CloseSessionRequest
+
+// string session_handle = 1;
+inline void CloseSessionRequest::clear_session_handle() {
+  session_handle_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline const ::std::string& CloseSessionRequest::session_handle() const {
+  // @@protoc_insertion_point(field_get:tensorflow.CloseSessionRequest.session_handle)
+  return session_handle_.Get();
+}
+inline void CloseSessionRequest::set_session_handle(const ::std::string& value) {
+  
+  session_handle_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set:tensorflow.CloseSessionRequest.session_handle)
+}
+#if LANG_CXX11
+inline void CloseSessionRequest::set_session_handle(::std::string&& value) {
+  
+  session_handle_.Set(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.CloseSessionRequest.session_handle)
+}
+#endif
+inline void CloseSessionRequest::set_session_handle(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  session_handle_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
+              GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_char:tensorflow.CloseSessionRequest.session_handle)
+}
+inline void CloseSessionRequest::set_session_handle(const char* value,
+    size_t size) {
+  
+  session_handle_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
+      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.CloseSessionRequest.session_handle)
+}
+inline ::std::string* CloseSessionRequest::mutable_session_handle() {
+  
+  // @@protoc_insertion_point(field_mutable:tensorflow.CloseSessionRequest.session_handle)
+  return session_handle_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline ::std::string* CloseSessionRequest::release_session_handle() {
+  // @@protoc_insertion_point(field_release:tensorflow.CloseSessionRequest.session_handle)
+  
+  return session_handle_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline void CloseSessionRequest::set_allocated_session_handle(::std::string* session_handle) {
+  if (session_handle != NULL) {
+    
+  } else {
+    
+  }
+  session_handle_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), session_handle,
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.CloseSessionRequest.session_handle)
+}
+inline ::std::string* CloseSessionRequest::unsafe_arena_release_session_handle() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.CloseSessionRequest.session_handle)
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  
+  return session_handle_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      GetArenaNoVirtual());
+}
+inline void CloseSessionRequest::unsafe_arena_set_allocated_session_handle(
+    ::std::string* session_handle) {
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (session_handle != NULL) {
+    
+  } else {
+    
+  }
+  session_handle_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      session_handle, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.CloseSessionRequest.session_handle)
+}
+
+// -------------------------------------------------------------------
+
+// CloseSessionResponse
+
+// -------------------------------------------------------------------
+
+// ResetRequest
+
+// repeated string container = 1;
+inline int ResetRequest::container_size() const {
+  return container_.size();
+}
+inline void ResetRequest::clear_container() {
+  container_.Clear();
+}
+inline const ::std::string& ResetRequest::container(int index) const {
+  // @@protoc_insertion_point(field_get:tensorflow.ResetRequest.container)
+  return container_.Get(index);
+}
+inline ::std::string* ResetRequest::mutable_container(int index) {
+  // @@protoc_insertion_point(field_mutable:tensorflow.ResetRequest.container)
+  return container_.Mutable(index);
+}
+inline void ResetRequest::set_container(int index, const ::std::string& value) {
+  // @@protoc_insertion_point(field_set:tensorflow.ResetRequest.container)
+  container_.Mutable(index)->assign(value);
+}
+#if LANG_CXX11
+inline void ResetRequest::set_container(int index, ::std::string&& value) {
+  // @@protoc_insertion_point(field_set:tensorflow.ResetRequest.container)
+  container_.Mutable(index)->assign(std::move(value));
+}
+#endif
+inline void ResetRequest::set_container(int index, const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  container_.Mutable(index)->assign(value);
+  // @@protoc_insertion_point(field_set_char:tensorflow.ResetRequest.container)
+}
+inline void ResetRequest::set_container(int index, const char* value, size_t size) {
+  container_.Mutable(index)->assign(
+    reinterpret_cast<const char*>(value), size);
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.ResetRequest.container)
+}
+inline ::std::string* ResetRequest::add_container() {
+  // @@protoc_insertion_point(field_add_mutable:tensorflow.ResetRequest.container)
+  return container_.Add();
+}
+inline void ResetRequest::add_container(const ::std::string& value) {
+  container_.Add()->assign(value);
+  // @@protoc_insertion_point(field_add:tensorflow.ResetRequest.container)
+}
+#if LANG_CXX11
+inline void ResetRequest::add_container(::std::string&& value) {
+  container_.Add(std::move(value));
+  // @@protoc_insertion_point(field_add:tensorflow.ResetRequest.container)
+}
+#endif
+inline void ResetRequest::add_container(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  container_.Add()->assign(value);
+  // @@protoc_insertion_point(field_add_char:tensorflow.ResetRequest.container)
+}
+inline void ResetRequest::add_container(const char* value, size_t size) {
+  container_.Add()->assign(reinterpret_cast<const char*>(value), size);
+  // @@protoc_insertion_point(field_add_pointer:tensorflow.ResetRequest.container)
+}
+inline const ::google::protobuf::RepeatedPtrField<::std::string>&
+ResetRequest::container() const {
+  // @@protoc_insertion_point(field_list:tensorflow.ResetRequest.container)
+  return container_;
+}
+inline ::google::protobuf::RepeatedPtrField<::std::string>*
+ResetRequest::mutable_container() {
+  // @@protoc_insertion_point(field_mutable_list:tensorflow.ResetRequest.container)
+  return &container_;
+}
+
+// repeated string device_filters = 2;
+inline int ResetRequest::device_filters_size() const {
+  return device_filters_.size();
+}
+inline void ResetRequest::clear_device_filters() {
+  device_filters_.Clear();
+}
+inline const ::std::string& ResetRequest::device_filters(int index) const {
+  // @@protoc_insertion_point(field_get:tensorflow.ResetRequest.device_filters)
+  return device_filters_.Get(index);
+}
+inline ::std::string* ResetRequest::mutable_device_filters(int index) {
+  // @@protoc_insertion_point(field_mutable:tensorflow.ResetRequest.device_filters)
+  return device_filters_.Mutable(index);
+}
+inline void ResetRequest::set_device_filters(int index, const ::std::string& value) {
+  // @@protoc_insertion_point(field_set:tensorflow.ResetRequest.device_filters)
+  device_filters_.Mutable(index)->assign(value);
+}
+#if LANG_CXX11
+inline void ResetRequest::set_device_filters(int index, ::std::string&& value) {
+  // @@protoc_insertion_point(field_set:tensorflow.ResetRequest.device_filters)
+  device_filters_.Mutable(index)->assign(std::move(value));
+}
+#endif
+inline void ResetRequest::set_device_filters(int index, const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  device_filters_.Mutable(index)->assign(value);
+  // @@protoc_insertion_point(field_set_char:tensorflow.ResetRequest.device_filters)
+}
+inline void ResetRequest::set_device_filters(int index, const char* value, size_t size) {
+  device_filters_.Mutable(index)->assign(
+    reinterpret_cast<const char*>(value), size);
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.ResetRequest.device_filters)
+}
+inline ::std::string* ResetRequest::add_device_filters() {
+  // @@protoc_insertion_point(field_add_mutable:tensorflow.ResetRequest.device_filters)
+  return device_filters_.Add();
+}
+inline void ResetRequest::add_device_filters(const ::std::string& value) {
+  device_filters_.Add()->assign(value);
+  // @@protoc_insertion_point(field_add:tensorflow.ResetRequest.device_filters)
+}
+#if LANG_CXX11
+inline void ResetRequest::add_device_filters(::std::string&& value) {
+  device_filters_.Add(std::move(value));
+  // @@protoc_insertion_point(field_add:tensorflow.ResetRequest.device_filters)
+}
+#endif
+inline void ResetRequest::add_device_filters(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  device_filters_.Add()->assign(value);
+  // @@protoc_insertion_point(field_add_char:tensorflow.ResetRequest.device_filters)
+}
+inline void ResetRequest::add_device_filters(const char* value, size_t size) {
+  device_filters_.Add()->assign(reinterpret_cast<const char*>(value), size);
+  // @@protoc_insertion_point(field_add_pointer:tensorflow.ResetRequest.device_filters)
+}
+inline const ::google::protobuf::RepeatedPtrField<::std::string>&
+ResetRequest::device_filters() const {
+  // @@protoc_insertion_point(field_list:tensorflow.ResetRequest.device_filters)
+  return device_filters_;
+}
+inline ::google::protobuf::RepeatedPtrField<::std::string>*
+ResetRequest::mutable_device_filters() {
+  // @@protoc_insertion_point(field_mutable_list:tensorflow.ResetRequest.device_filters)
+  return &device_filters_;
+}
+
+// -------------------------------------------------------------------
+
+// ResetResponse
+
+// -------------------------------------------------------------------
+
+// ListDevicesRequest
+
+// string session_handle = 1;
+inline void ListDevicesRequest::clear_session_handle() {
+  session_handle_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline const ::std::string& ListDevicesRequest::session_handle() const {
+  // @@protoc_insertion_point(field_get:tensorflow.ListDevicesRequest.session_handle)
+  return session_handle_.Get();
+}
+inline void ListDevicesRequest::set_session_handle(const ::std::string& value) {
+  
+  session_handle_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set:tensorflow.ListDevicesRequest.session_handle)
+}
+#if LANG_CXX11
+inline void ListDevicesRequest::set_session_handle(::std::string&& value) {
+  
+  session_handle_.Set(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.ListDevicesRequest.session_handle)
+}
+#endif
+inline void ListDevicesRequest::set_session_handle(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  session_handle_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
+              GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_char:tensorflow.ListDevicesRequest.session_handle)
+}
+inline void ListDevicesRequest::set_session_handle(const char* value,
+    size_t size) {
+  
+  session_handle_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
+      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.ListDevicesRequest.session_handle)
+}
+inline ::std::string* ListDevicesRequest::mutable_session_handle() {
+  
+  // @@protoc_insertion_point(field_mutable:tensorflow.ListDevicesRequest.session_handle)
+  return session_handle_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline ::std::string* ListDevicesRequest::release_session_handle() {
+  // @@protoc_insertion_point(field_release:tensorflow.ListDevicesRequest.session_handle)
+  
+  return session_handle_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline void ListDevicesRequest::set_allocated_session_handle(::std::string* session_handle) {
+  if (session_handle != NULL) {
+    
+  } else {
+    
+  }
+  session_handle_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), session_handle,
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.ListDevicesRequest.session_handle)
+}
+inline ::std::string* ListDevicesRequest::unsafe_arena_release_session_handle() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.ListDevicesRequest.session_handle)
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  
+  return session_handle_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      GetArenaNoVirtual());
+}
+inline void ListDevicesRequest::unsafe_arena_set_allocated_session_handle(
+    ::std::string* session_handle) {
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (session_handle != NULL) {
+    
+  } else {
+    
+  }
+  session_handle_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      session_handle, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.ListDevicesRequest.session_handle)
+}
+
+// -------------------------------------------------------------------
+
+// ListDevicesResponse
+
+// repeated .tensorflow.DeviceAttributes local_device = 1;
+inline int ListDevicesResponse::local_device_size() const {
+  return local_device_.size();
+}
+inline ::tensorflow::DeviceAttributes* ListDevicesResponse::mutable_local_device(int index) {
+  // @@protoc_insertion_point(field_mutable:tensorflow.ListDevicesResponse.local_device)
+  return local_device_.Mutable(index);
+}
+inline ::google::protobuf::RepeatedPtrField< ::tensorflow::DeviceAttributes >*
+ListDevicesResponse::mutable_local_device() {
+  // @@protoc_insertion_point(field_mutable_list:tensorflow.ListDevicesResponse.local_device)
+  return &local_device_;
+}
+inline const ::tensorflow::DeviceAttributes& ListDevicesResponse::local_device(int index) const {
+  // @@protoc_insertion_point(field_get:tensorflow.ListDevicesResponse.local_device)
+  return local_device_.Get(index);
+}
+inline ::tensorflow::DeviceAttributes* ListDevicesResponse::add_local_device() {
+  // @@protoc_insertion_point(field_add:tensorflow.ListDevicesResponse.local_device)
+  return local_device_.Add();
+}
+inline const ::google::protobuf::RepeatedPtrField< ::tensorflow::DeviceAttributes >&
+ListDevicesResponse::local_device() const {
+  // @@protoc_insertion_point(field_list:tensorflow.ListDevicesResponse.local_device)
+  return local_device_;
+}
+
+// repeated .tensorflow.DeviceAttributes remote_device = 2;
+inline int ListDevicesResponse::remote_device_size() const {
+  return remote_device_.size();
+}
+inline ::tensorflow::DeviceAttributes* ListDevicesResponse::mutable_remote_device(int index) {
+  // @@protoc_insertion_point(field_mutable:tensorflow.ListDevicesResponse.remote_device)
+  return remote_device_.Mutable(index);
+}
+inline ::google::protobuf::RepeatedPtrField< ::tensorflow::DeviceAttributes >*
+ListDevicesResponse::mutable_remote_device() {
+  // @@protoc_insertion_point(field_mutable_list:tensorflow.ListDevicesResponse.remote_device)
+  return &remote_device_;
+}
+inline const ::tensorflow::DeviceAttributes& ListDevicesResponse::remote_device(int index) const {
+  // @@protoc_insertion_point(field_get:tensorflow.ListDevicesResponse.remote_device)
+  return remote_device_.Get(index);
+}
+inline ::tensorflow::DeviceAttributes* ListDevicesResponse::add_remote_device() {
+  // @@protoc_insertion_point(field_add:tensorflow.ListDevicesResponse.remote_device)
+  return remote_device_.Add();
+}
+inline const ::google::protobuf::RepeatedPtrField< ::tensorflow::DeviceAttributes >&
+ListDevicesResponse::remote_device() const {
+  // @@protoc_insertion_point(field_list:tensorflow.ListDevicesResponse.remote_device)
+  return remote_device_;
+}
+
+// -------------------------------------------------------------------
+
+// MakeCallableRequest
+
+// string session_handle = 1;
+inline void MakeCallableRequest::clear_session_handle() {
+  session_handle_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline const ::std::string& MakeCallableRequest::session_handle() const {
+  // @@protoc_insertion_point(field_get:tensorflow.MakeCallableRequest.session_handle)
+  return session_handle_.Get();
+}
+inline void MakeCallableRequest::set_session_handle(const ::std::string& value) {
+  
+  session_handle_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set:tensorflow.MakeCallableRequest.session_handle)
+}
+#if LANG_CXX11
+inline void MakeCallableRequest::set_session_handle(::std::string&& value) {
+  
+  session_handle_.Set(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.MakeCallableRequest.session_handle)
+}
+#endif
+inline void MakeCallableRequest::set_session_handle(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  session_handle_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
+              GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_char:tensorflow.MakeCallableRequest.session_handle)
+}
+inline void MakeCallableRequest::set_session_handle(const char* value,
+    size_t size) {
+  
+  session_handle_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
+      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.MakeCallableRequest.session_handle)
+}
+inline ::std::string* MakeCallableRequest::mutable_session_handle() {
+  
+  // @@protoc_insertion_point(field_mutable:tensorflow.MakeCallableRequest.session_handle)
+  return session_handle_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline ::std::string* MakeCallableRequest::release_session_handle() {
+  // @@protoc_insertion_point(field_release:tensorflow.MakeCallableRequest.session_handle)
+  
+  return session_handle_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline void MakeCallableRequest::set_allocated_session_handle(::std::string* session_handle) {
+  if (session_handle != NULL) {
+    
+  } else {
+    
+  }
+  session_handle_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), session_handle,
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.MakeCallableRequest.session_handle)
+}
+inline ::std::string* MakeCallableRequest::unsafe_arena_release_session_handle() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.MakeCallableRequest.session_handle)
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  
+  return session_handle_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      GetArenaNoVirtual());
+}
+inline void MakeCallableRequest::unsafe_arena_set_allocated_session_handle(
+    ::std::string* session_handle) {
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (session_handle != NULL) {
+    
+  } else {
+    
+  }
+  session_handle_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      session_handle, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.MakeCallableRequest.session_handle)
+}
+
+// .tensorflow.CallableOptions options = 2;
+inline bool MakeCallableRequest::has_options() const {
+  return this != internal_default_instance() && options_ != NULL;
+}
+inline const ::tensorflow::CallableOptions& MakeCallableRequest::options() const {
+  const ::tensorflow::CallableOptions* p = options_;
+  // @@protoc_insertion_point(field_get:tensorflow.MakeCallableRequest.options)
+  return p != NULL ? *p : *reinterpret_cast<const ::tensorflow::CallableOptions*>(
+      &::tensorflow::_CallableOptions_default_instance_);
+}
+inline ::tensorflow::CallableOptions* MakeCallableRequest::release_options() {
+  // @@protoc_insertion_point(field_release:tensorflow.MakeCallableRequest.options)
+  
+  ::tensorflow::CallableOptions* temp = options_;
+  if (GetArenaNoVirtual() != NULL) {
+    temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
+  }
+  options_ = NULL;
+  return temp;
+}
+inline ::tensorflow::CallableOptions* MakeCallableRequest::unsafe_arena_release_options() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.MakeCallableRequest.options)
+  
+  ::tensorflow::CallableOptions* temp = options_;
+  options_ = NULL;
+  return temp;
+}
+inline ::tensorflow::CallableOptions* MakeCallableRequest::mutable_options() {
+  
+  if (options_ == NULL) {
+    auto* p = CreateMaybeMessage<::tensorflow::CallableOptions>(GetArenaNoVirtual());
+    options_ = p;
+  }
+  // @@protoc_insertion_point(field_mutable:tensorflow.MakeCallableRequest.options)
+  return options_;
+}
+inline void MakeCallableRequest::set_allocated_options(::tensorflow::CallableOptions* options) {
+  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
+  if (message_arena == NULL) {
+    delete reinterpret_cast< ::google::protobuf::MessageLite*>(options_);
+  }
+  if (options) {
+    ::google::protobuf::Arena* submessage_arena =
+      reinterpret_cast<::google::protobuf::MessageLite*>(options)->GetArena();
+    if (message_arena != submessage_arena) {
+      options = ::google::protobuf::internal::GetOwnedMessage(
+          message_arena, options, submessage_arena);
+    }
+    
+  } else {
+    
+  }
+  options_ = options;
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.MakeCallableRequest.options)
+}
+
+// -------------------------------------------------------------------
+
+// MakeCallableResponse
+
+// int64 handle = 1;
+inline void MakeCallableResponse::clear_handle() {
+  handle_ = PROTOBUF_LONGLONG(0);
+}
+inline ::google::protobuf::int64 MakeCallableResponse::handle() const {
+  // @@protoc_insertion_point(field_get:tensorflow.MakeCallableResponse.handle)
+  return handle_;
+}
+inline void MakeCallableResponse::set_handle(::google::protobuf::int64 value) {
+  
+  handle_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.MakeCallableResponse.handle)
+}
+
+// -------------------------------------------------------------------
+
+// RunCallableRequest
+
+// string session_handle = 1;
+inline void RunCallableRequest::clear_session_handle() {
+  session_handle_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline const ::std::string& RunCallableRequest::session_handle() const {
+  // @@protoc_insertion_point(field_get:tensorflow.RunCallableRequest.session_handle)
+  return session_handle_.Get();
+}
+inline void RunCallableRequest::set_session_handle(const ::std::string& value) {
+  
+  session_handle_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set:tensorflow.RunCallableRequest.session_handle)
+}
+#if LANG_CXX11
+inline void RunCallableRequest::set_session_handle(::std::string&& value) {
+  
+  session_handle_.Set(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.RunCallableRequest.session_handle)
+}
+#endif
+inline void RunCallableRequest::set_session_handle(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  session_handle_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
+              GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_char:tensorflow.RunCallableRequest.session_handle)
+}
+inline void RunCallableRequest::set_session_handle(const char* value,
+    size_t size) {
+  
+  session_handle_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
+      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.RunCallableRequest.session_handle)
+}
+inline ::std::string* RunCallableRequest::mutable_session_handle() {
+  
+  // @@protoc_insertion_point(field_mutable:tensorflow.RunCallableRequest.session_handle)
+  return session_handle_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline ::std::string* RunCallableRequest::release_session_handle() {
+  // @@protoc_insertion_point(field_release:tensorflow.RunCallableRequest.session_handle)
+  
+  return session_handle_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline void RunCallableRequest::set_allocated_session_handle(::std::string* session_handle) {
+  if (session_handle != NULL) {
+    
+  } else {
+    
+  }
+  session_handle_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), session_handle,
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.RunCallableRequest.session_handle)
+}
+inline ::std::string* RunCallableRequest::unsafe_arena_release_session_handle() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.RunCallableRequest.session_handle)
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  
+  return session_handle_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      GetArenaNoVirtual());
+}
+inline void RunCallableRequest::unsafe_arena_set_allocated_session_handle(
+    ::std::string* session_handle) {
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (session_handle != NULL) {
+    
+  } else {
+    
+  }
+  session_handle_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      session_handle, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.RunCallableRequest.session_handle)
+}
+
+// int64 handle = 2;
+inline void RunCallableRequest::clear_handle() {
+  handle_ = PROTOBUF_LONGLONG(0);
+}
+inline ::google::protobuf::int64 RunCallableRequest::handle() const {
+  // @@protoc_insertion_point(field_get:tensorflow.RunCallableRequest.handle)
+  return handle_;
+}
+inline void RunCallableRequest::set_handle(::google::protobuf::int64 value) {
+  
+  handle_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.RunCallableRequest.handle)
+}
+
+// repeated .tensorflow.TensorProto feed = 3;
+inline int RunCallableRequest::feed_size() const {
+  return feed_.size();
+}
+inline ::tensorflow::TensorProto* RunCallableRequest::mutable_feed(int index) {
+  // @@protoc_insertion_point(field_mutable:tensorflow.RunCallableRequest.feed)
+  return feed_.Mutable(index);
+}
+inline ::google::protobuf::RepeatedPtrField< ::tensorflow::TensorProto >*
+RunCallableRequest::mutable_feed() {
+  // @@protoc_insertion_point(field_mutable_list:tensorflow.RunCallableRequest.feed)
+  return &feed_;
+}
+inline const ::tensorflow::TensorProto& RunCallableRequest::feed(int index) const {
+  // @@protoc_insertion_point(field_get:tensorflow.RunCallableRequest.feed)
+  return feed_.Get(index);
+}
+inline ::tensorflow::TensorProto* RunCallableRequest::add_feed() {
+  // @@protoc_insertion_point(field_add:tensorflow.RunCallableRequest.feed)
+  return feed_.Add();
+}
+inline const ::google::protobuf::RepeatedPtrField< ::tensorflow::TensorProto >&
+RunCallableRequest::feed() const {
+  // @@protoc_insertion_point(field_list:tensorflow.RunCallableRequest.feed)
+  return feed_;
+}
+
+// -------------------------------------------------------------------
+
+// RunCallableResponse
+
+// repeated .tensorflow.TensorProto fetch = 1;
+inline int RunCallableResponse::fetch_size() const {
+  return fetch_.size();
+}
+inline ::tensorflow::TensorProto* RunCallableResponse::mutable_fetch(int index) {
+  // @@protoc_insertion_point(field_mutable:tensorflow.RunCallableResponse.fetch)
+  return fetch_.Mutable(index);
+}
+inline ::google::protobuf::RepeatedPtrField< ::tensorflow::TensorProto >*
+RunCallableResponse::mutable_fetch() {
+  // @@protoc_insertion_point(field_mutable_list:tensorflow.RunCallableResponse.fetch)
+  return &fetch_;
+}
+inline const ::tensorflow::TensorProto& RunCallableResponse::fetch(int index) const {
+  // @@protoc_insertion_point(field_get:tensorflow.RunCallableResponse.fetch)
+  return fetch_.Get(index);
+}
+inline ::tensorflow::TensorProto* RunCallableResponse::add_fetch() {
+  // @@protoc_insertion_point(field_add:tensorflow.RunCallableResponse.fetch)
+  return fetch_.Add();
+}
+inline const ::google::protobuf::RepeatedPtrField< ::tensorflow::TensorProto >&
+RunCallableResponse::fetch() const {
+  // @@protoc_insertion_point(field_list:tensorflow.RunCallableResponse.fetch)
+  return fetch_;
+}
+
+// .tensorflow.RunMetadata metadata = 2;
+inline bool RunCallableResponse::has_metadata() const {
+  return this != internal_default_instance() && metadata_ != NULL;
+}
+inline const ::tensorflow::RunMetadata& RunCallableResponse::metadata() const {
+  const ::tensorflow::RunMetadata* p = metadata_;
+  // @@protoc_insertion_point(field_get:tensorflow.RunCallableResponse.metadata)
+  return p != NULL ? *p : *reinterpret_cast<const ::tensorflow::RunMetadata*>(
+      &::tensorflow::_RunMetadata_default_instance_);
+}
+inline ::tensorflow::RunMetadata* RunCallableResponse::release_metadata() {
+  // @@protoc_insertion_point(field_release:tensorflow.RunCallableResponse.metadata)
+  
+  ::tensorflow::RunMetadata* temp = metadata_;
+  if (GetArenaNoVirtual() != NULL) {
+    temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
+  }
+  metadata_ = NULL;
+  return temp;
+}
+inline ::tensorflow::RunMetadata* RunCallableResponse::unsafe_arena_release_metadata() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.RunCallableResponse.metadata)
+  
+  ::tensorflow::RunMetadata* temp = metadata_;
+  metadata_ = NULL;
+  return temp;
+}
+inline ::tensorflow::RunMetadata* RunCallableResponse::mutable_metadata() {
+  
+  if (metadata_ == NULL) {
+    auto* p = CreateMaybeMessage<::tensorflow::RunMetadata>(GetArenaNoVirtual());
+    metadata_ = p;
+  }
+  // @@protoc_insertion_point(field_mutable:tensorflow.RunCallableResponse.metadata)
+  return metadata_;
+}
+inline void RunCallableResponse::set_allocated_metadata(::tensorflow::RunMetadata* metadata) {
+  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
+  if (message_arena == NULL) {
+    delete reinterpret_cast< ::google::protobuf::MessageLite*>(metadata_);
+  }
+  if (metadata) {
+    ::google::protobuf::Arena* submessage_arena =
+      reinterpret_cast<::google::protobuf::MessageLite*>(metadata)->GetArena();
+    if (message_arena != submessage_arena) {
+      metadata = ::google::protobuf::internal::GetOwnedMessage(
+          message_arena, metadata, submessage_arena);
+    }
+    
+  } else {
+    
+  }
+  metadata_ = metadata;
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.RunCallableResponse.metadata)
+}
+
+// -------------------------------------------------------------------
+
+// ReleaseCallableRequest
+
+// string session_handle = 1;
+inline void ReleaseCallableRequest::clear_session_handle() {
+  session_handle_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline const ::std::string& ReleaseCallableRequest::session_handle() const {
+  // @@protoc_insertion_point(field_get:tensorflow.ReleaseCallableRequest.session_handle)
+  return session_handle_.Get();
+}
+inline void ReleaseCallableRequest::set_session_handle(const ::std::string& value) {
+  
+  session_handle_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set:tensorflow.ReleaseCallableRequest.session_handle)
+}
+#if LANG_CXX11
+inline void ReleaseCallableRequest::set_session_handle(::std::string&& value) {
+  
+  session_handle_.Set(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.ReleaseCallableRequest.session_handle)
+}
+#endif
+inline void ReleaseCallableRequest::set_session_handle(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  session_handle_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
+              GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_char:tensorflow.ReleaseCallableRequest.session_handle)
+}
+inline void ReleaseCallableRequest::set_session_handle(const char* value,
+    size_t size) {
+  
+  session_handle_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
+      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.ReleaseCallableRequest.session_handle)
+}
+inline ::std::string* ReleaseCallableRequest::mutable_session_handle() {
+  
+  // @@protoc_insertion_point(field_mutable:tensorflow.ReleaseCallableRequest.session_handle)
+  return session_handle_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline ::std::string* ReleaseCallableRequest::release_session_handle() {
+  // @@protoc_insertion_point(field_release:tensorflow.ReleaseCallableRequest.session_handle)
+  
+  return session_handle_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline void ReleaseCallableRequest::set_allocated_session_handle(::std::string* session_handle) {
+  if (session_handle != NULL) {
+    
+  } else {
+    
+  }
+  session_handle_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), session_handle,
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.ReleaseCallableRequest.session_handle)
+}
+inline ::std::string* ReleaseCallableRequest::unsafe_arena_release_session_handle() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.ReleaseCallableRequest.session_handle)
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  
+  return session_handle_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      GetArenaNoVirtual());
+}
+inline void ReleaseCallableRequest::unsafe_arena_set_allocated_session_handle(
+    ::std::string* session_handle) {
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (session_handle != NULL) {
+    
+  } else {
+    
+  }
+  session_handle_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      session_handle, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.ReleaseCallableRequest.session_handle)
+}
+
+// int64 handle = 2;
+inline void ReleaseCallableRequest::clear_handle() {
+  handle_ = PROTOBUF_LONGLONG(0);
+}
+inline ::google::protobuf::int64 ReleaseCallableRequest::handle() const {
+  // @@protoc_insertion_point(field_get:tensorflow.ReleaseCallableRequest.handle)
+  return handle_;
+}
+inline void ReleaseCallableRequest::set_handle(::google::protobuf::int64 value) {
+  
+  handle_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.ReleaseCallableRequest.handle)
+}
+
+// -------------------------------------------------------------------
+
+// ReleaseCallableResponse
+
+#ifdef __GNUC__
+  #pragma GCC diagnostic pop
+#endif  // __GNUC__
+// -------------------------------------------------------------------
+
+// -------------------------------------------------------------------
+
+// -------------------------------------------------------------------
+
+// -------------------------------------------------------------------
+
+// -------------------------------------------------------------------
+
+// -------------------------------------------------------------------
+
+// -------------------------------------------------------------------
+
+// -------------------------------------------------------------------
+
+// -------------------------------------------------------------------
+
+// -------------------------------------------------------------------
+
+// -------------------------------------------------------------------
+
+// -------------------------------------------------------------------
+
+// -------------------------------------------------------------------
+
+// -------------------------------------------------------------------
+
+// -------------------------------------------------------------------
+
+// -------------------------------------------------------------------
+
+// -------------------------------------------------------------------
+
+// -------------------------------------------------------------------
+
+// -------------------------------------------------------------------
+
+
+// @@protoc_insertion_point(namespace_scope)
+
+}  // namespace tensorflow
+
+// @@protoc_insertion_point(global_scope)
+
+#include <google/protobuf/port_undef.inc>
+#endif  // PROTOBUF_INCLUDED_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto
diff --git a/tensorflow/core/protobuf/master.proto b/tensorflow/core/protobuf/master.proto
new file mode 100644 (file)
index 0000000..0302287
--- /dev/null
@@ -0,0 +1,334 @@
+/* Copyright 2016 The TensorFlow Authors. All Rights Reserved.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+==============================================================================*/
+
+syntax = "proto3";
+
+package tensorflow;
+option cc_enable_arenas = true;
+option java_outer_classname = "DistributedRuntimeProtos";
+option java_multiple_files = true;
+option java_package = "org.tensorflow.distruntime";
+option go_package = "github.com/tensorflow/tensorflow/tensorflow/go/core/protobuf";
+import "tensorflow/core/framework/device_attributes.proto";
+import "tensorflow/core/framework/graph.proto";
+import "tensorflow/core/framework/tensor.proto";
+import "tensorflow/core/lib/core/error_codes.proto";
+import "tensorflow/core/protobuf/config.proto";
+import "tensorflow/core/protobuf/named_tensor.proto";
+
+////////////////////////////////////////////////////////////////////////////////
+//
+// CreateSession method request/response protos.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+message CreateSessionRequest {
+  // The initial graph definition.
+  GraphDef graph_def = 1;
+
+  // Configuration options.
+  ConfigProto config = 2;
+
+  // The target string used from the client's perspective.
+  string target = 3;
+}
+
+message CreateSessionResponse {
+  // The session handle to be used in subsequent calls for the created session.
+  //
+  // The client must arrange to call CloseSession with this returned
+  // session handle to close the session.
+  string session_handle = 1;
+
+  // The initial version number for the graph, to be used in the next call
+  // to ExtendSession.
+  int64 graph_version = 2;
+}
+
+////////////////////////////////////////////////////////////////////////////////
+//
+// ExtendSession method request/response protos.
+//
+// The "graph_def" specifies a set of nodes to be added to the session's graph.
+//
+// A typical "graph_def" will contain:
+//
+// * Zero or more new nodes with names that do not exist in the server-side
+//   graph. These will be added to the graph.
+//
+// PRECONDITION: The server-side current version is req.current_version.
+//   None of the names in req.graph_def appeared in previous successful calls to
+//   CreateSession or ExtendSession with the same session_handle.
+// POSTCONDITION: The server-side current version is resp.new_version.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+message ExtendSessionRequest {
+  // REQUIRED: session_handle must be returned by a CreateSession call
+  // to the same master service.
+  string session_handle = 1;
+
+  // REQUIRED: The nodes to be added to the session's graph. If any node has
+  // the same name as an existing node, the operation will fail with
+  // ILLEGAL_ARGUMENT.
+  GraphDef graph_def = 2;
+
+  // REQUIRED: The version number of the graph to be extended. This will be
+  // tested against the current server-side version number, and the operation
+  // will fail with FAILED_PRECONDITION if they do not match.
+  int64 current_graph_version = 3;
+}
+
+message ExtendSessionResponse {
+  // TODO(mrry): Return something about the operation?
+
+  // The new version number for the extended graph, to be used in the next call
+  // to ExtendSession.
+  int64 new_graph_version = 4;
+}
+
+////////////////////////////////////////////////////////////////////////////////
+//
+// RunStep method request/response protos.
+//
+// The caller should provide the feeds needed by the graph and specify
+// what nodes should be fetched.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+message RunStepRequest {
+  // REQUIRED: session_handle must be returned by a CreateSession call
+  // to the same master service.
+  string session_handle = 1;
+
+  // Tensors to be fed in the step. Each feed is a named tensor.
+  repeated NamedTensorProto feed = 2;
+
+  // Fetches. A list of tensor names. The caller expects a tensor to
+  // be returned for each fetch[i] (see RunStepResponse.tensor). The
+  // order of specified fetches does not change the execution order.
+  repeated string fetch = 3;
+
+  // Target Nodes. A list of node names. The named nodes will be run
+  // to but their outputs will not be fetched.
+  repeated string target = 4;
+
+  // Options for the run call.
+  RunOptions options = 5;
+
+  // Partial run handle (optional). If specified, this will be a partial run
+  // execution, run up to the specified fetches.
+  string partial_run_handle = 6;
+
+  // If true then some errors, e.g., execution errors that have long
+  // error messages, may return an OK RunStepResponse with the actual
+  // error saved in the status_code/status_error_message fields of the
+  // response body. This is a workaround since the RPC subsystem may
+  // truncate long metadata messages.
+  bool store_errors_in_response_body = 7;
+}
+
+message RunStepResponse {
+  // NOTE: The order of the returned tensors may or may not match
+  // the fetch order specified in RunStepRequest.
+  repeated NamedTensorProto tensor = 1;
+
+  // Returned metadata if requested in the options.
+  RunMetadata metadata = 2;
+
+  // If store_errors_in_response_body is true in the request, then
+  // optionally the server may return an OK status for the RPC and
+  // fill the true status into the fields below, to allow for messages
+  // that are too long to fit in metadata.
+  error.Code status_code = 3;
+  string status_error_message = 4;
+}
+
+////////////////////////////////////////////////////////////////////////////////
+//
+// PartialRunSetup method request/response protos.
+//
+// The caller should provide the future partial run feeds, fetches, and targets.
+// Then the caller can use RunStepRequest with is_partial set to make partial
+// run calls.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+message PartialRunSetupRequest {
+  // REQUIRED: session_handle must be returned by a CreateSession call
+  // to the same master service.
+  string session_handle = 1;
+
+  // Tensors to be fed in future steps.
+  repeated string feed = 2;
+
+  // Fetches. A list of tensor names. The caller expects a tensor to be returned
+  // for each fetch[i] (see RunStepResponse.tensor), for corresponding partial
+  // RunStepRequests. The order of specified fetches does not change the
+  // execution order.
+  repeated string fetch = 3;
+
+  // Target Nodes. A list of node names. The named nodes will be run in future
+  // steps, but their outputs will not be fetched.
+  repeated string target = 4;
+}
+
+message PartialRunSetupResponse {
+  // The unique handle corresponding to the ongoing partial run call setup by
+  // the invocation to PartialRunSetup. This handle may be passed to
+  // RunStepRequest to send and receive tensors for this partial run.
+  string partial_run_handle = 1;
+}
+
+////////////////////////////////////////////////////////////////////////////////
+//
+// CloseSession method request/response protos.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+message CloseSessionRequest {
+  // REQUIRED: session_handle must be returned by a CreateSession call
+  // to the same master service.
+  string session_handle = 1;
+}
+
+message CloseSessionResponse {
+}
+
+// Reset() allows misbehaving or slow sessions to be aborted and closed, and
+// causes their resources eventually to be released.  Reset() does not wait
+// for the computations in old sessions to cease; it merely starts the
+// process of tearing them down.  However, if a new session is started after
+// a Reset(), the new session is isolated from changes that old sessions
+// (started prior to the Reset()) may continue to make to resources, provided
+// all those resources are in containers listed in "containers".
+//
+// Old sessions may continue to have side-effects on resources not in
+// containers listed in "containers", and thus may affect future
+// sessions' results in ways that are hard to predict.  Thus, if well-defined
+// behavior is desired, is it recommended that all containers be listed in
+// "containers".  Similarly, if a device_filter is specified, results may be
+// hard to predict.
+message ResetRequest {
+  // A list of container names, which may be empty.
+  //
+  // If 'container' is not empty, releases resoures in the given
+  // containers in all devices.
+  //
+  // If 'container' is empty, releases resources in the default
+  // container in all devices.
+  repeated string container = 1;
+
+  // When any filters are present, only devices that match the filters
+  // will be reset. Each filter can be partially specified,
+  // e.g. "/job:ps" "/job:worker/replica:3", etc.
+  repeated string device_filters = 2;
+}
+
+message ResetResponse {
+}
+
+////////////////////////////////////////////////////////////////////////////////
+//
+// ListDevices method request/response protos.
+//
+// Returns information about the TensorFlow devices that are available
+// to this master.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+message ListDevicesRequest {
+  // Optional: session_handle must be returned by a CreateSession call to the
+  // same master service.
+  //
+  // When session_handle is empty, the ClusterSpec provided when the master was
+  // started is used to compute the available devices. If the session_handle is
+  // provided but not recognized, an error is returned. Finally, if a valid
+  // session_handle is provided, the cluster configuration for that session is
+  // used when computing the response.
+  string session_handle = 1;
+}
+
+message ListDevicesResponse {
+  repeated DeviceAttributes local_device = 1;
+  repeated DeviceAttributes remote_device = 2;
+}
+
+////////////////////////////////////////////////////////////////////////////////
+//
+// MakeCallable method request/response protos.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+message MakeCallableRequest {
+  // REQUIRED: session_handle must be returned by a CreateSession call
+  // to the same master service.
+  string session_handle = 1;
+
+  // Options that define the behavior of the created callable.
+  CallableOptions options = 2;
+}
+
+message MakeCallableResponse {
+  // A handle to the created callable.
+  int64 handle = 1;
+}
+
+////////////////////////////////////////////////////////////////////////////////
+//
+// RunCallable method request/response protos.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+message RunCallableRequest {
+  // REQUIRED: session_handle must be returned by a CreateSession call
+  // to the same master service.
+  string session_handle = 1;
+  // REQUIRED: handle must be returned by a MakeCallable call to the same
+  // master service.
+  int64 handle = 2;
+
+  // Values of the tensors passed as arguments to the callable, in the order
+  // defined in the CallableOptions.feed field passed to MakeCallable.
+  repeated TensorProto feed = 3;
+}
+
+message RunCallableResponse {
+  // Values of the tensors returned by the callable, in the order defined in the
+  // CallableOptions.fetch field passed to MakeCallable.
+  repeated TensorProto fetch = 1;
+
+  // Returned metadata if requested in the options.
+  RunMetadata metadata = 2;
+}
+
+////////////////////////////////////////////////////////////////////////////////
+//
+// ReleaseCallable method request/response protos.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+message ReleaseCallableRequest {
+  // REQUIRED: session_handle must be returned by a CreateSession call
+  // to the same master service.
+  string session_handle = 1;
+
+  // REQUIRED: handle must be returned by a MakeCallable call to the same
+  // master service.
+  int64 handle = 2;
+}
+
+message ReleaseCallableResponse {
+}
diff --git a/tensorflow/core/protobuf/master_service.pb.cc b/tensorflow/core/protobuf/master_service.pb.cc
new file mode 100644 (file)
index 0000000..4877ac0
--- /dev/null
@@ -0,0 +1,94 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: tensorflow/core/protobuf/master_service.proto
+
+#include "tensorflow/core/protobuf/master_service.pb.h"
+
+#include <algorithm>
+
+#include <google/protobuf/stubs/common.h>
+#include <google/protobuf/io/coded_stream.h>
+#include <google/protobuf/extension_set.h>
+#include <google/protobuf/wire_format_lite_inl.h>
+#include <google/protobuf/descriptor.h>
+#include <google/protobuf/generated_message_reflection.h>
+#include <google/protobuf/reflection_ops.h>
+#include <google/protobuf/wire_format.h>
+// @@protoc_insertion_point(includes)
+#include <google/protobuf/port_def.inc>
+
+namespace tensorflow {
+namespace grpc {
+}  // namespace grpc
+}  // namespace tensorflow
+void InitDefaults_tensorflow_2fcore_2fprotobuf_2fmaster_5fservice_2eproto() {
+}
+
+constexpr ::google::protobuf::Metadata* file_level_metadata_tensorflow_2fcore_2fprotobuf_2fmaster_5fservice_2eproto = nullptr;
+constexpr ::google::protobuf::EnumDescriptor const** file_level_enum_descriptors_tensorflow_2fcore_2fprotobuf_2fmaster_5fservice_2eproto = nullptr;
+constexpr ::google::protobuf::ServiceDescriptor const** file_level_service_descriptors_tensorflow_2fcore_2fprotobuf_2fmaster_5fservice_2eproto = nullptr;
+const ::google::protobuf::uint32 TableStruct_tensorflow_2fcore_2fprotobuf_2fmaster_5fservice_2eproto::offsets[1] = {};
+static constexpr ::google::protobuf::internal::MigrationSchema* schemas = NULL;
+static constexpr ::google::protobuf::Message* const* file_default_instances = NULL;
+
+::google::protobuf::internal::AssignDescriptorsTable assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2fmaster_5fservice_2eproto = {
+  {}, AddDescriptors_tensorflow_2fcore_2fprotobuf_2fmaster_5fservice_2eproto, "tensorflow/core/protobuf/master_service.proto", schemas,
+  file_default_instances, TableStruct_tensorflow_2fcore_2fprotobuf_2fmaster_5fservice_2eproto::offsets,
+  file_level_metadata_tensorflow_2fcore_2fprotobuf_2fmaster_5fservice_2eproto, 0, file_level_enum_descriptors_tensorflow_2fcore_2fprotobuf_2fmaster_5fservice_2eproto, file_level_service_descriptors_tensorflow_2fcore_2fprotobuf_2fmaster_5fservice_2eproto,
+};
+
+::google::protobuf::internal::DescriptorTable descriptor_table_tensorflow_2fcore_2fprotobuf_2fmaster_5fservice_2eproto = {
+  false, InitDefaults_tensorflow_2fcore_2fprotobuf_2fmaster_5fservice_2eproto, 
+  "\n-tensorflow/core/protobuf/master_servic"
+  "e.proto\022\017tensorflow.grpc\032%tensorflow/cor"
+  "e/protobuf/master.proto2\273\006\n\rMasterServic"
+  "e\022T\n\rCreateSession\022 .tensorflow.CreateSe"
+  "ssionRequest\032!.tensorflow.CreateSessionR"
+  "esponse\022T\n\rExtendSession\022 .tensorflow.Ex"
+  "tendSessionRequest\032!.tensorflow.ExtendSe"
+  "ssionResponse\022Z\n\017PartialRunSetup\022\".tenso"
+  "rflow.PartialRunSetupRequest\032#.tensorflo"
+  "w.PartialRunSetupResponse\022B\n\007RunStep\022\032.t"
+  "ensorflow.RunStepRequest\032\033.tensorflow.Ru"
+  "nStepResponse\022Q\n\014CloseSession\022\037.tensorfl"
+  "ow.CloseSessionRequest\032 .tensorflow.Clos"
+  "eSessionResponse\022N\n\013ListDevices\022\036.tensor"
+  "flow.ListDevicesRequest\032\037.tensorflow.Lis"
+  "tDevicesResponse\022<\n\005Reset\022\030.tensorflow.R"
+  "esetRequest\032\031.tensorflow.ResetResponse\022Q"
+  "\n\014MakeCallable\022\037.tensorflow.MakeCallable"
+  "Request\032 .tensorflow.MakeCallableRespons"
+  "e\022N\n\013RunCallable\022\036.tensorflow.RunCallabl"
+  "eRequest\032\037.tensorflow.RunCallableRespons"
+  "e\022Z\n\017ReleaseCallable\022\".tensorflow.Releas"
+  "eCallableRequest\032#.tensorflow.ReleaseCal"
+  "lableResponseBq\n\032org.tensorflow.distrunt"
+  "imeB\023MasterServiceProtosP\001Z<github.com/t"
+  "ensorflow/tensorflow/tensorflow/go/core/"
+  "protobufb\006proto3"
+,
+  "tensorflow/core/protobuf/master_service.proto", &assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2fmaster_5fservice_2eproto, 1056,
+};
+
+void AddDescriptors_tensorflow_2fcore_2fprotobuf_2fmaster_5fservice_2eproto() {
+  static constexpr ::google::protobuf::internal::InitFunc deps[1] =
+  {
+    ::AddDescriptors_tensorflow_2fcore_2fprotobuf_2fmaster_2eproto,
+  };
+ ::google::protobuf::internal::AddDescriptors(&descriptor_table_tensorflow_2fcore_2fprotobuf_2fmaster_5fservice_2eproto, deps, 1);
+}
+
+// Force running AddDescriptors() at dynamic initialization time.
+static bool dynamic_init_dummy_tensorflow_2fcore_2fprotobuf_2fmaster_5fservice_2eproto = []() { AddDescriptors_tensorflow_2fcore_2fprotobuf_2fmaster_5fservice_2eproto(); return true; }();
+namespace tensorflow {
+namespace grpc {
+
+// @@protoc_insertion_point(namespace_scope)
+}  // namespace grpc
+}  // namespace tensorflow
+namespace google {
+namespace protobuf {
+}  // namespace protobuf
+}  // namespace google
+
+// @@protoc_insertion_point(global_scope)
+#include <google/protobuf/port_undef.inc>
diff --git a/tensorflow/core/protobuf/master_service.pb.h b/tensorflow/core/protobuf/master_service.pb.h
new file mode 100644 (file)
index 0000000..290d987
--- /dev/null
@@ -0,0 +1,81 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: tensorflow/core/protobuf/master_service.proto
+
+#ifndef PROTOBUF_INCLUDED_tensorflow_2fcore_2fprotobuf_2fmaster_5fservice_2eproto
+#define PROTOBUF_INCLUDED_tensorflow_2fcore_2fprotobuf_2fmaster_5fservice_2eproto
+
+#include <limits>
+#include <string>
+
+#include <google/protobuf/port_def.inc>
+#if PROTOBUF_VERSION < 3006001
+#error This file was generated by a newer version of protoc which is
+#error incompatible with your Protocol Buffer headers. Please update
+#error your headers.
+#endif
+#if 3006001 < PROTOBUF_MIN_PROTOC_VERSION
+#error This file was generated by an older version of protoc which is
+#error incompatible with your Protocol Buffer headers. Please
+#error regenerate this file with a newer version of protoc.
+#endif
+
+#include <google/protobuf/port_undef.inc>
+#include <google/protobuf/io/coded_stream.h>
+#include <google/protobuf/arena.h>
+#include <google/protobuf/arenastring.h>
+#include <google/protobuf/generated_message_table_driven.h>
+#include <google/protobuf/generated_message_util.h>
+#include <google/protobuf/inlined_string_field.h>
+#include <google/protobuf/metadata.h>
+#include <google/protobuf/repeated_field.h>  // IWYU pragma: export
+#include <google/protobuf/extension_set.h>  // IWYU pragma: export
+#include "tensorflow/core/protobuf/master.pb.h"
+// @@protoc_insertion_point(includes)
+#include <google/protobuf/port_def.inc>
+#define PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fprotobuf_2fmaster_5fservice_2eproto
+
+// Internal implementation detail -- do not use these members.
+struct TableStruct_tensorflow_2fcore_2fprotobuf_2fmaster_5fservice_2eproto {
+  static const ::google::protobuf::internal::ParseTableField entries[]
+    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
+  static const ::google::protobuf::internal::AuxillaryParseTableField aux[]
+    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
+  static const ::google::protobuf::internal::ParseTable schema[1]
+    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
+  static const ::google::protobuf::internal::FieldMetadata field_metadata[];
+  static const ::google::protobuf::internal::SerializationTable serialization_table[];
+  static const ::google::protobuf::uint32 offsets[];
+};
+void AddDescriptors_tensorflow_2fcore_2fprotobuf_2fmaster_5fservice_2eproto();
+namespace google {
+namespace protobuf {
+}  // namespace protobuf
+}  // namespace google
+namespace tensorflow {
+namespace grpc {
+
+// ===================================================================
+
+
+// ===================================================================
+
+
+// ===================================================================
+
+#ifdef __GNUC__
+  #pragma GCC diagnostic push
+  #pragma GCC diagnostic ignored "-Wstrict-aliasing"
+#endif  // __GNUC__
+#ifdef __GNUC__
+  #pragma GCC diagnostic pop
+#endif  // __GNUC__
+
+// @@protoc_insertion_point(namespace_scope)
+
+}  // namespace grpc
+}  // namespace tensorflow
+
+// @@protoc_insertion_point(global_scope)
+
+#include <google/protobuf/port_undef.inc>
+#endif  // PROTOBUF_INCLUDED_tensorflow_2fcore_2fprotobuf_2fmaster_5fservice_2eproto
diff --git a/tensorflow/core/protobuf/master_service.proto b/tensorflow/core/protobuf/master_service.proto
new file mode 100644 (file)
index 0000000..ce0e4f6
--- /dev/null
@@ -0,0 +1,119 @@
+/* Copyright 2016 The TensorFlow Authors. All Rights Reserved.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+==============================================================================*/
+
+syntax = "proto3";
+
+package tensorflow.grpc;
+option java_outer_classname = "MasterServiceProtos";
+option java_multiple_files = true;
+option java_package = "org.tensorflow.distruntime";
+option go_package = "github.com/tensorflow/tensorflow/tensorflow/go/core/protobuf";
+import "tensorflow/core/protobuf/master.proto";
+
+////////////////////////////////////////////////////////////////////////////////
+//
+// MasterService defines a TensorFlow service with which a client can
+// interact to execute a distributed TensorFlow computation.
+//
+// A master service keeps track of multiple "master sessions". Each
+// session encapsulates a computation graph and its associated state,
+// and typically corresponds to a single "client session" (e.g. a
+// `tensorflow::Session` instance).
+//
+// A session is responsible for the following:
+// * assigning each node to a device (locally or remotely) using a
+//   placement algorithm. This may make decisions based on collected
+//   statistics from the workers in the system (e.g., memory usage,
+//   bandwidth consumption, etc.)
+//
+// * inserting intermediate nodes and edges to support cross-device
+//   and cross-process data flows and resource management.
+//
+// * issuing commands to workers to execute the subgraphs associated
+//   with those workers.
+//
+// Typically, a client carries out an iterative computation
+// (e.g. training) by invoking RPCs against the master in a
+// client-side loop. The client first creates a client session that
+// connects to a particular master (using gRPC for example). The
+// master creates a corresponding master session that is hosted on
+// the master and caches state between the client's invocations.
+//
+// After the session is established, the master returns an opaque
+// handle to the client that can be used to associate the client and
+// master sessions.
+//
+// The client may send an initial graph to the master in the
+// CreateSession call, and add nodes to the graph using ExtendSession.
+//
+// The most frequent operation a master is "RunStep", which implements
+// the `Session::Run()` API. It supports feeding in arguments,
+// executing a dataflow computation, and fetching arguments.
+//
+// Finally, when the client no longer needs the session, it should
+// close the session by invoking CloseSession, which allows the master
+// to reclaim resources associated with the session. The master may
+// implement a garbage collection scheme that closes sessions that
+// have been inactive for some time.
+//
+// For example, the following pseudo-code illustrates how a client
+// interacts with a master:
+//
+// stub = NewStub("/job:mnist/replica:0/task:0")
+// {handle} = stub->CreateSession({graph_def})
+// do {
+//   stub->RunStep({handle, {feeds}, {fetches}})
+//   // The client can evaluate a predicate locally, based on the
+//   // result of `fetches`, to determine whether to terminate. For
+//   // example, it might fetch the loss and evaluate whether it is less
+//   // than some threshold.
+// } while (!should_stop({fetches}));
+// stub->CloseSession({handle})
+//
+////////////////////////////////////////////////////////////////////////////////
+
+service MasterService {
+  // Creates a session.
+  rpc CreateSession(CreateSessionRequest) returns (CreateSessionResponse);
+
+  // Extends a session.
+  rpc ExtendSession(ExtendSessionRequest) returns (ExtendSessionResponse);
+
+  // Prepares future partial run calls.
+  rpc PartialRunSetup(PartialRunSetupRequest) returns (PartialRunSetupResponse);
+
+  // Drives the graph computation.
+  rpc RunStep(RunStepRequest) returns (RunStepResponse);
+
+  // Closes a session.
+  rpc CloseSession(CloseSessionRequest) returns (CloseSessionResponse);
+
+  // List the devices usable by the master.
+  rpc ListDevices(ListDevicesRequest) returns (ListDevicesResponse);
+
+  // Close and abandon all existing sessions.  Ongoing computations
+  // will no longer affect fresh ones via the resources in containers listed in
+  // the ResetRequest.  See ResetRequest for more details.
+  rpc Reset(ResetRequest) returns (ResetResponse);
+
+  // Registers a callable for execution with RunCallable.
+  rpc MakeCallable(MakeCallableRequest) returns (MakeCallableResponse);
+
+  // Executes a callable registered with MakeCallable.
+  rpc RunCallable(RunCallableRequest) returns (RunCallableResponse);
+
+  // Frees resources associated with a callable registered with MakeCallable.
+  rpc ReleaseCallable(ReleaseCallableRequest) returns (ReleaseCallableResponse);
+}
diff --git a/tensorflow/core/protobuf/meta_graph.pb.cc b/tensorflow/core/protobuf/meta_graph.pb.cc
new file mode 100644 (file)
index 0000000..ed62041
--- /dev/null
@@ -0,0 +1,6974 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: tensorflow/core/protobuf/meta_graph.proto
+
+#include "tensorflow/core/protobuf/meta_graph.pb.h"
+
+#include <algorithm>
+
+#include <google/protobuf/stubs/common.h>
+#include <google/protobuf/io/coded_stream.h>
+#include <google/protobuf/extension_set.h>
+#include <google/protobuf/wire_format_lite_inl.h>
+#include <google/protobuf/descriptor.h>
+#include <google/protobuf/generated_message_reflection.h>
+#include <google/protobuf/reflection_ops.h>
+#include <google/protobuf/wire_format.h>
+// @@protoc_insertion_point(includes)
+#include <google/protobuf/port_def.inc>
+
+extern PROTOBUF_INTERNAL_EXPORT_google_2fprotobuf_2fany_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_Any_google_2fprotobuf_2fany_2eproto;
+extern PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fframework_2fgraph_2eproto ::google::protobuf::internal::SCCInfo<3> scc_info_GraphDef_tensorflow_2fcore_2fframework_2fgraph_2eproto;
+extern PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fframework_2fop_5fdef_2eproto ::google::protobuf::internal::SCCInfo<1> scc_info_OpList_tensorflow_2fcore_2fframework_2fop_5fdef_2eproto;
+extern PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fframework_2ftensor_5fshape_2eproto ::google::protobuf::internal::SCCInfo<1> scc_info_TensorShapeProto_tensorflow_2fcore_2fframework_2ftensor_5fshape_2eproto;
+extern PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_CollectionDef_BytesList_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto;
+extern PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_CollectionDef_FloatList_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto;
+extern PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_CollectionDef_Int64List_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto;
+extern PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_CollectionDef_NodeList_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto;
+extern PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_TensorInfo_CooSparse_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto;
+extern PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto ::google::protobuf::internal::SCCInfo<1> scc_info_AssetFileDef_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto;
+extern PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto ::google::protobuf::internal::SCCInfo<1> scc_info_CollectionDef_AnyList_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto;
+extern PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto ::google::protobuf::internal::SCCInfo<1> scc_info_MetaGraphDef_CollectionDefEntry_DoNotUse_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto;
+extern PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto ::google::protobuf::internal::SCCInfo<1> scc_info_MetaGraphDef_SignatureDefEntry_DoNotUse_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto;
+extern PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto ::google::protobuf::internal::SCCInfo<1> scc_info_SignatureDef_InputsEntry_DoNotUse_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto;
+extern PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto ::google::protobuf::internal::SCCInfo<1> scc_info_SignatureDef_OutputsEntry_DoNotUse_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto;
+extern PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto ::google::protobuf::internal::SCCInfo<2> scc_info_MetaGraphDef_MetaInfoDef_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto;
+extern PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto ::google::protobuf::internal::SCCInfo<2> scc_info_SignatureDef_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto;
+extern PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto ::google::protobuf::internal::SCCInfo<2> scc_info_TensorInfo_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto;
+extern PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto ::google::protobuf::internal::SCCInfo<5> scc_info_CollectionDef_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto;
+extern PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fprotobuf_2fsaver_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_SaverDef_tensorflow_2fcore_2fprotobuf_2fsaver_2eproto;
+namespace tensorflow {
+class MetaGraphDef_MetaInfoDefDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<MetaGraphDef_MetaInfoDef> _instance;
+} _MetaGraphDef_MetaInfoDef_default_instance_;
+class MetaGraphDef_CollectionDefEntry_DoNotUseDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<MetaGraphDef_CollectionDefEntry_DoNotUse> _instance;
+} _MetaGraphDef_CollectionDefEntry_DoNotUse_default_instance_;
+class MetaGraphDef_SignatureDefEntry_DoNotUseDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<MetaGraphDef_SignatureDefEntry_DoNotUse> _instance;
+} _MetaGraphDef_SignatureDefEntry_DoNotUse_default_instance_;
+class MetaGraphDefDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<MetaGraphDef> _instance;
+} _MetaGraphDef_default_instance_;
+class CollectionDef_NodeListDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<CollectionDef_NodeList> _instance;
+} _CollectionDef_NodeList_default_instance_;
+class CollectionDef_BytesListDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<CollectionDef_BytesList> _instance;
+} _CollectionDef_BytesList_default_instance_;
+class CollectionDef_Int64ListDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<CollectionDef_Int64List> _instance;
+} _CollectionDef_Int64List_default_instance_;
+class CollectionDef_FloatListDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<CollectionDef_FloatList> _instance;
+} _CollectionDef_FloatList_default_instance_;
+class CollectionDef_AnyListDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<CollectionDef_AnyList> _instance;
+} _CollectionDef_AnyList_default_instance_;
+class CollectionDefDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<CollectionDef> _instance;
+  const ::tensorflow::CollectionDef_NodeList* node_list_;
+  const ::tensorflow::CollectionDef_BytesList* bytes_list_;
+  const ::tensorflow::CollectionDef_Int64List* int64_list_;
+  const ::tensorflow::CollectionDef_FloatList* float_list_;
+  const ::tensorflow::CollectionDef_AnyList* any_list_;
+} _CollectionDef_default_instance_;
+class TensorInfo_CooSparseDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<TensorInfo_CooSparse> _instance;
+} _TensorInfo_CooSparse_default_instance_;
+class TensorInfoDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<TensorInfo> _instance;
+  ::google::protobuf::internal::ArenaStringPtr name_;
+  const ::tensorflow::TensorInfo_CooSparse* coo_sparse_;
+} _TensorInfo_default_instance_;
+class SignatureDef_InputsEntry_DoNotUseDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<SignatureDef_InputsEntry_DoNotUse> _instance;
+} _SignatureDef_InputsEntry_DoNotUse_default_instance_;
+class SignatureDef_OutputsEntry_DoNotUseDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<SignatureDef_OutputsEntry_DoNotUse> _instance;
+} _SignatureDef_OutputsEntry_DoNotUse_default_instance_;
+class SignatureDefDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<SignatureDef> _instance;
+} _SignatureDef_default_instance_;
+class AssetFileDefDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<AssetFileDef> _instance;
+} _AssetFileDef_default_instance_;
+}  // namespace tensorflow
+static void InitDefaultsMetaGraphDef_MetaInfoDef_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_MetaGraphDef_MetaInfoDef_default_instance_;
+    new (ptr) ::tensorflow::MetaGraphDef_MetaInfoDef();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::MetaGraphDef_MetaInfoDef::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<2> scc_info_MetaGraphDef_MetaInfoDef_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 2, InitDefaultsMetaGraphDef_MetaInfoDef_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto}, {
+      &scc_info_OpList_tensorflow_2fcore_2fframework_2fop_5fdef_2eproto.base,
+      &scc_info_Any_google_2fprotobuf_2fany_2eproto.base,}};
+
+static void InitDefaultsMetaGraphDef_CollectionDefEntry_DoNotUse_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_MetaGraphDef_CollectionDefEntry_DoNotUse_default_instance_;
+    new (ptr) ::tensorflow::MetaGraphDef_CollectionDefEntry_DoNotUse();
+  }
+  ::tensorflow::MetaGraphDef_CollectionDefEntry_DoNotUse::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<1> scc_info_MetaGraphDef_CollectionDefEntry_DoNotUse_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsMetaGraphDef_CollectionDefEntry_DoNotUse_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto}, {
+      &scc_info_CollectionDef_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto.base,}};
+
+static void InitDefaultsMetaGraphDef_SignatureDefEntry_DoNotUse_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_MetaGraphDef_SignatureDefEntry_DoNotUse_default_instance_;
+    new (ptr) ::tensorflow::MetaGraphDef_SignatureDefEntry_DoNotUse();
+  }
+  ::tensorflow::MetaGraphDef_SignatureDefEntry_DoNotUse::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<1> scc_info_MetaGraphDef_SignatureDefEntry_DoNotUse_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsMetaGraphDef_SignatureDefEntry_DoNotUse_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto}, {
+      &scc_info_SignatureDef_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto.base,}};
+
+static void InitDefaultsMetaGraphDef_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_MetaGraphDef_default_instance_;
+    new (ptr) ::tensorflow::MetaGraphDef();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::MetaGraphDef::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<6> scc_info_MetaGraphDef_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 6, InitDefaultsMetaGraphDef_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto}, {
+      &scc_info_MetaGraphDef_MetaInfoDef_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto.base,
+      &scc_info_GraphDef_tensorflow_2fcore_2fframework_2fgraph_2eproto.base,
+      &scc_info_SaverDef_tensorflow_2fcore_2fprotobuf_2fsaver_2eproto.base,
+      &scc_info_MetaGraphDef_CollectionDefEntry_DoNotUse_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto.base,
+      &scc_info_MetaGraphDef_SignatureDefEntry_DoNotUse_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto.base,
+      &scc_info_AssetFileDef_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto.base,}};
+
+static void InitDefaultsCollectionDef_NodeList_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_CollectionDef_NodeList_default_instance_;
+    new (ptr) ::tensorflow::CollectionDef_NodeList();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::CollectionDef_NodeList::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<0> scc_info_CollectionDef_NodeList_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsCollectionDef_NodeList_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto}, {}};
+
+static void InitDefaultsCollectionDef_BytesList_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_CollectionDef_BytesList_default_instance_;
+    new (ptr) ::tensorflow::CollectionDef_BytesList();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::CollectionDef_BytesList::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<0> scc_info_CollectionDef_BytesList_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsCollectionDef_BytesList_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto}, {}};
+
+static void InitDefaultsCollectionDef_Int64List_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_CollectionDef_Int64List_default_instance_;
+    new (ptr) ::tensorflow::CollectionDef_Int64List();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::CollectionDef_Int64List::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<0> scc_info_CollectionDef_Int64List_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsCollectionDef_Int64List_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto}, {}};
+
+static void InitDefaultsCollectionDef_FloatList_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_CollectionDef_FloatList_default_instance_;
+    new (ptr) ::tensorflow::CollectionDef_FloatList();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::CollectionDef_FloatList::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<0> scc_info_CollectionDef_FloatList_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsCollectionDef_FloatList_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto}, {}};
+
+static void InitDefaultsCollectionDef_AnyList_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_CollectionDef_AnyList_default_instance_;
+    new (ptr) ::tensorflow::CollectionDef_AnyList();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::CollectionDef_AnyList::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<1> scc_info_CollectionDef_AnyList_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsCollectionDef_AnyList_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto}, {
+      &scc_info_Any_google_2fprotobuf_2fany_2eproto.base,}};
+
+static void InitDefaultsCollectionDef_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_CollectionDef_default_instance_;
+    new (ptr) ::tensorflow::CollectionDef();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::CollectionDef::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<5> scc_info_CollectionDef_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 5, InitDefaultsCollectionDef_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto}, {
+      &scc_info_CollectionDef_NodeList_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto.base,
+      &scc_info_CollectionDef_BytesList_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto.base,
+      &scc_info_CollectionDef_Int64List_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto.base,
+      &scc_info_CollectionDef_FloatList_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto.base,
+      &scc_info_CollectionDef_AnyList_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto.base,}};
+
+static void InitDefaultsTensorInfo_CooSparse_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_TensorInfo_CooSparse_default_instance_;
+    new (ptr) ::tensorflow::TensorInfo_CooSparse();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::TensorInfo_CooSparse::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<0> scc_info_TensorInfo_CooSparse_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsTensorInfo_CooSparse_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto}, {}};
+
+static void InitDefaultsTensorInfo_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_TensorInfo_default_instance_;
+    new (ptr) ::tensorflow::TensorInfo();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::TensorInfo::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<2> scc_info_TensorInfo_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 2, InitDefaultsTensorInfo_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto}, {
+      &scc_info_TensorInfo_CooSparse_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto.base,
+      &scc_info_TensorShapeProto_tensorflow_2fcore_2fframework_2ftensor_5fshape_2eproto.base,}};
+
+static void InitDefaultsSignatureDef_InputsEntry_DoNotUse_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_SignatureDef_InputsEntry_DoNotUse_default_instance_;
+    new (ptr) ::tensorflow::SignatureDef_InputsEntry_DoNotUse();
+  }
+  ::tensorflow::SignatureDef_InputsEntry_DoNotUse::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<1> scc_info_SignatureDef_InputsEntry_DoNotUse_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsSignatureDef_InputsEntry_DoNotUse_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto}, {
+      &scc_info_TensorInfo_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto.base,}};
+
+static void InitDefaultsSignatureDef_OutputsEntry_DoNotUse_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_SignatureDef_OutputsEntry_DoNotUse_default_instance_;
+    new (ptr) ::tensorflow::SignatureDef_OutputsEntry_DoNotUse();
+  }
+  ::tensorflow::SignatureDef_OutputsEntry_DoNotUse::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<1> scc_info_SignatureDef_OutputsEntry_DoNotUse_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsSignatureDef_OutputsEntry_DoNotUse_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto}, {
+      &scc_info_TensorInfo_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto.base,}};
+
+static void InitDefaultsSignatureDef_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_SignatureDef_default_instance_;
+    new (ptr) ::tensorflow::SignatureDef();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::SignatureDef::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<2> scc_info_SignatureDef_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 2, InitDefaultsSignatureDef_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto}, {
+      &scc_info_SignatureDef_InputsEntry_DoNotUse_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto.base,
+      &scc_info_SignatureDef_OutputsEntry_DoNotUse_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto.base,}};
+
+static void InitDefaultsAssetFileDef_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_AssetFileDef_default_instance_;
+    new (ptr) ::tensorflow::AssetFileDef();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::AssetFileDef::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<1> scc_info_AssetFileDef_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsAssetFileDef_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto}, {
+      &scc_info_TensorInfo_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto.base,}};
+
+void InitDefaults_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto() {
+  ::google::protobuf::internal::InitSCC(&scc_info_MetaGraphDef_MetaInfoDef_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_MetaGraphDef_CollectionDefEntry_DoNotUse_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_MetaGraphDef_SignatureDefEntry_DoNotUse_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_MetaGraphDef_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_CollectionDef_NodeList_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_CollectionDef_BytesList_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_CollectionDef_Int64List_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_CollectionDef_FloatList_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_CollectionDef_AnyList_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_CollectionDef_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_TensorInfo_CooSparse_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_TensorInfo_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_SignatureDef_InputsEntry_DoNotUse_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_SignatureDef_OutputsEntry_DoNotUse_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_SignatureDef_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_AssetFileDef_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto.base);
+}
+
+::google::protobuf::Metadata file_level_metadata_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto[16];
+constexpr ::google::protobuf::EnumDescriptor const** file_level_enum_descriptors_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto = nullptr;
+constexpr ::google::protobuf::ServiceDescriptor const** file_level_service_descriptors_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto = nullptr;
+
+const ::google::protobuf::uint32 TableStruct_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto::offsets[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = {
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::MetaGraphDef_MetaInfoDef, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::MetaGraphDef_MetaInfoDef, meta_graph_version_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::MetaGraphDef_MetaInfoDef, stripped_op_list_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::MetaGraphDef_MetaInfoDef, any_info_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::MetaGraphDef_MetaInfoDef, tags_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::MetaGraphDef_MetaInfoDef, tensorflow_version_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::MetaGraphDef_MetaInfoDef, tensorflow_git_version_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::MetaGraphDef_MetaInfoDef, stripped_default_attrs_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::MetaGraphDef_CollectionDefEntry_DoNotUse, _has_bits_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::MetaGraphDef_CollectionDefEntry_DoNotUse, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::MetaGraphDef_CollectionDefEntry_DoNotUse, key_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::MetaGraphDef_CollectionDefEntry_DoNotUse, value_),
+  0,
+  1,
+  PROTOBUF_FIELD_OFFSET(::tensorflow::MetaGraphDef_SignatureDefEntry_DoNotUse, _has_bits_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::MetaGraphDef_SignatureDefEntry_DoNotUse, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::MetaGraphDef_SignatureDefEntry_DoNotUse, key_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::MetaGraphDef_SignatureDefEntry_DoNotUse, value_),
+  0,
+  1,
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::MetaGraphDef, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::MetaGraphDef, meta_info_def_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::MetaGraphDef, graph_def_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::MetaGraphDef, saver_def_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::MetaGraphDef, collection_def_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::MetaGraphDef, signature_def_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::MetaGraphDef, asset_file_def_),
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::CollectionDef_NodeList, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::CollectionDef_NodeList, value_),
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::CollectionDef_BytesList, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::CollectionDef_BytesList, value_),
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::CollectionDef_Int64List, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::CollectionDef_Int64List, value_),
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::CollectionDef_FloatList, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::CollectionDef_FloatList, value_),
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::CollectionDef_AnyList, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::CollectionDef_AnyList, value_),
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::CollectionDef, _internal_metadata_),
+  ~0u,  // no _extensions_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::CollectionDef, _oneof_case_[0]),
+  ~0u,  // no _weak_field_map_
+  offsetof(::tensorflow::CollectionDefDefaultTypeInternal, node_list_),
+  offsetof(::tensorflow::CollectionDefDefaultTypeInternal, bytes_list_),
+  offsetof(::tensorflow::CollectionDefDefaultTypeInternal, int64_list_),
+  offsetof(::tensorflow::CollectionDefDefaultTypeInternal, float_list_),
+  offsetof(::tensorflow::CollectionDefDefaultTypeInternal, any_list_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::CollectionDef, kind_),
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::TensorInfo_CooSparse, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::TensorInfo_CooSparse, values_tensor_name_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::TensorInfo_CooSparse, indices_tensor_name_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::TensorInfo_CooSparse, dense_shape_tensor_name_),
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::TensorInfo, _internal_metadata_),
+  ~0u,  // no _extensions_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::TensorInfo, _oneof_case_[0]),
+  ~0u,  // no _weak_field_map_
+  offsetof(::tensorflow::TensorInfoDefaultTypeInternal, name_),
+  offsetof(::tensorflow::TensorInfoDefaultTypeInternal, coo_sparse_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::TensorInfo, dtype_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::TensorInfo, tensor_shape_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::TensorInfo, encoding_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::SignatureDef_InputsEntry_DoNotUse, _has_bits_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::SignatureDef_InputsEntry_DoNotUse, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::SignatureDef_InputsEntry_DoNotUse, key_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::SignatureDef_InputsEntry_DoNotUse, value_),
+  0,
+  1,
+  PROTOBUF_FIELD_OFFSET(::tensorflow::SignatureDef_OutputsEntry_DoNotUse, _has_bits_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::SignatureDef_OutputsEntry_DoNotUse, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::SignatureDef_OutputsEntry_DoNotUse, key_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::SignatureDef_OutputsEntry_DoNotUse, value_),
+  0,
+  1,
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::SignatureDef, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::SignatureDef, inputs_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::SignatureDef, outputs_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::SignatureDef, method_name_),
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::AssetFileDef, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::AssetFileDef, tensor_info_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::AssetFileDef, filename_),
+};
+static const ::google::protobuf::internal::MigrationSchema schemas[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = {
+  { 0, -1, sizeof(::tensorflow::MetaGraphDef_MetaInfoDef)},
+  { 12, 19, sizeof(::tensorflow::MetaGraphDef_CollectionDefEntry_DoNotUse)},
+  { 21, 28, sizeof(::tensorflow::MetaGraphDef_SignatureDefEntry_DoNotUse)},
+  { 30, -1, sizeof(::tensorflow::MetaGraphDef)},
+  { 41, -1, sizeof(::tensorflow::CollectionDef_NodeList)},
+  { 47, -1, sizeof(::tensorflow::CollectionDef_BytesList)},
+  { 53, -1, sizeof(::tensorflow::CollectionDef_Int64List)},
+  { 59, -1, sizeof(::tensorflow::CollectionDef_FloatList)},
+  { 65, -1, sizeof(::tensorflow::CollectionDef_AnyList)},
+  { 71, -1, sizeof(::tensorflow::CollectionDef)},
+  { 82, -1, sizeof(::tensorflow::TensorInfo_CooSparse)},
+  { 90, -1, sizeof(::tensorflow::TensorInfo)},
+  { 100, 107, sizeof(::tensorflow::SignatureDef_InputsEntry_DoNotUse)},
+  { 109, 116, sizeof(::tensorflow::SignatureDef_OutputsEntry_DoNotUse)},
+  { 118, -1, sizeof(::tensorflow::SignatureDef)},
+  { 126, -1, sizeof(::tensorflow::AssetFileDef)},
+};
+
+static ::google::protobuf::Message const * const file_default_instances[] = {
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_MetaGraphDef_MetaInfoDef_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_MetaGraphDef_CollectionDefEntry_DoNotUse_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_MetaGraphDef_SignatureDefEntry_DoNotUse_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_MetaGraphDef_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_CollectionDef_NodeList_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_CollectionDef_BytesList_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_CollectionDef_Int64List_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_CollectionDef_FloatList_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_CollectionDef_AnyList_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_CollectionDef_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_TensorInfo_CooSparse_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_TensorInfo_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_SignatureDef_InputsEntry_DoNotUse_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_SignatureDef_OutputsEntry_DoNotUse_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_SignatureDef_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_AssetFileDef_default_instance_),
+};
+
+::google::protobuf::internal::AssignDescriptorsTable assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto = {
+  {}, AddDescriptors_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto, "tensorflow/core/protobuf/meta_graph.proto", schemas,
+  file_default_instances, TableStruct_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto::offsets,
+  file_level_metadata_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto, 16, file_level_enum_descriptors_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto, file_level_service_descriptors_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto,
+};
+
+::google::protobuf::internal::DescriptorTable descriptor_table_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto = {
+  false, InitDefaults_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto, 
+  "\n)tensorflow/core/protobuf/meta_graph.pr"
+  "oto\022\ntensorflow\032\031google/protobuf/any.pro"
+  "to\032%tensorflow/core/framework/graph.prot"
+  "o\032&tensorflow/core/framework/op_def.prot"
+  "o\032,tensorflow/core/framework/tensor_shap"
+  "e.proto\032%tensorflow/core/framework/types"
+  ".proto\032$tensorflow/core/protobuf/saver.p"
+  "roto\"\343\005\n\014MetaGraphDef\022;\n\rmeta_info_def\030\001"
+  " \001(\0132$.tensorflow.MetaGraphDef.MetaInfoD"
+  "ef\022\'\n\tgraph_def\030\002 \001(\0132\024.tensorflow.Graph"
+  "Def\022\'\n\tsaver_def\030\003 \001(\0132\024.tensorflow.Save"
+  "rDef\022C\n\016collection_def\030\004 \003(\0132+.tensorflo"
+  "w.MetaGraphDef.CollectionDefEntry\022A\n\rsig"
+  "nature_def\030\005 \003(\0132*.tensorflow.MetaGraphD"
+  "ef.SignatureDefEntry\0220\n\016asset_file_def\030\006"
+  " \003(\0132\030.tensorflow.AssetFileDef\032\351\001\n\013MetaI"
+  "nfoDef\022\032\n\022meta_graph_version\030\001 \001(\t\022,\n\020st"
+  "ripped_op_list\030\002 \001(\0132\022.tensorflow.OpList"
+  "\022&\n\010any_info\030\003 \001(\0132\024.google.protobuf.Any"
+  "\022\014\n\004tags\030\004 \003(\t\022\032\n\022tensorflow_version\030\005 \001"
+  "(\t\022\036\n\026tensorflow_git_version\030\006 \001(\t\022\036\n\026st"
+  "ripped_default_attrs\030\007 \001(\010\032O\n\022Collection"
+  "DefEntry\022\013\n\003key\030\001 \001(\t\022(\n\005value\030\002 \001(\0132\031.t"
+  "ensorflow.CollectionDef:\0028\001\032M\n\021Signature"
+  "DefEntry\022\013\n\003key\030\001 \001(\t\022\'\n\005value\030\002 \001(\0132\030.t"
+  "ensorflow.SignatureDef:\0028\001\"\337\003\n\rCollectio"
+  "nDef\0227\n\tnode_list\030\001 \001(\0132\".tensorflow.Col"
+  "lectionDef.NodeListH\000\0229\n\nbytes_list\030\002 \001("
+  "\0132#.tensorflow.CollectionDef.BytesListH\000"
+  "\0229\n\nint64_list\030\003 \001(\0132#.tensorflow.Collec"
+  "tionDef.Int64ListH\000\0229\n\nfloat_list\030\004 \001(\0132"
+  "#.tensorflow.CollectionDef.FloatListH\000\0225"
+  "\n\010any_list\030\005 \001(\0132!.tensorflow.Collection"
+  "Def.AnyListH\000\032\031\n\010NodeList\022\r\n\005value\030\001 \003(\t"
+  "\032\032\n\tBytesList\022\r\n\005value\030\001 \003(\014\032\036\n\tInt64Lis"
+  "t\022\021\n\005value\030\001 \003(\003B\002\020\001\032\036\n\tFloatList\022\021\n\005val"
+  "ue\030\001 \003(\002B\002\020\001\032.\n\007AnyList\022#\n\005value\030\001 \003(\0132\024"
+  ".google.protobuf.AnyB\006\n\004kind\"\240\002\n\nTensorI"
+  "nfo\022\016\n\004name\030\001 \001(\tH\000\0226\n\ncoo_sparse\030\004 \001(\0132"
+  " .tensorflow.TensorInfo.CooSparseH\000\022#\n\005d"
+  "type\030\002 \001(\0162\024.tensorflow.DataType\0222\n\014tens"
+  "or_shape\030\003 \001(\0132\034.tensorflow.TensorShapeP"
+  "roto\032e\n\tCooSparse\022\032\n\022values_tensor_name\030"
+  "\001 \001(\t\022\033\n\023indices_tensor_name\030\002 \001(\t\022\037\n\027de"
+  "nse_shape_tensor_name\030\003 \001(\tB\n\n\010encoding\""
+  "\240\002\n\014SignatureDef\0224\n\006inputs\030\001 \003(\0132$.tenso"
+  "rflow.SignatureDef.InputsEntry\0226\n\007output"
+  "s\030\002 \003(\0132%.tensorflow.SignatureDef.Output"
+  "sEntry\022\023\n\013method_name\030\003 \001(\t\032E\n\013InputsEnt"
+  "ry\022\013\n\003key\030\001 \001(\t\022%\n\005value\030\002 \001(\0132\026.tensorf"
+  "low.TensorInfo:\0028\001\032F\n\014OutputsEntry\022\013\n\003ke"
+  "y\030\001 \001(\t\022%\n\005value\030\002 \001(\0132\026.tensorflow.Tens"
+  "orInfo:\0028\001\"M\n\014AssetFileDef\022+\n\013tensor_inf"
+  "o\030\001 \001(\0132\026.tensorflow.TensorInfo\022\020\n\010filen"
+  "ame\030\002 \001(\tBn\n\030org.tensorflow.frameworkB\017M"
+  "etaGraphProtosP\001Z<github.com/tensorflow/"
+  "tensorflow/tensorflow/go/core/protobuf\370\001"
+  "\001b\006proto3"
+,
+  "tensorflow/core/protobuf/meta_graph.proto", &assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto, 2289,
+};
+
+void AddDescriptors_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto() {
+  static constexpr ::google::protobuf::internal::InitFunc deps[6] =
+  {
+    ::AddDescriptors_google_2fprotobuf_2fany_2eproto,
+    ::AddDescriptors_tensorflow_2fcore_2fframework_2fgraph_2eproto,
+    ::AddDescriptors_tensorflow_2fcore_2fframework_2fop_5fdef_2eproto,
+    ::AddDescriptors_tensorflow_2fcore_2fframework_2ftensor_5fshape_2eproto,
+    ::AddDescriptors_tensorflow_2fcore_2fframework_2ftypes_2eproto,
+    ::AddDescriptors_tensorflow_2fcore_2fprotobuf_2fsaver_2eproto,
+  };
+ ::google::protobuf::internal::AddDescriptors(&descriptor_table_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto, deps, 6);
+}
+
+// Force running AddDescriptors() at dynamic initialization time.
+static bool dynamic_init_dummy_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto = []() { AddDescriptors_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto(); return true; }();
+namespace tensorflow {
+
+// ===================================================================
+
+void MetaGraphDef_MetaInfoDef::InitAsDefaultInstance() {
+  ::tensorflow::_MetaGraphDef_MetaInfoDef_default_instance_._instance.get_mutable()->stripped_op_list_ = const_cast< ::tensorflow::OpList*>(
+      ::tensorflow::OpList::internal_default_instance());
+  ::tensorflow::_MetaGraphDef_MetaInfoDef_default_instance_._instance.get_mutable()->any_info_ = const_cast< ::google::protobuf::Any*>(
+      ::google::protobuf::Any::internal_default_instance());
+}
+class MetaGraphDef_MetaInfoDef::HasBitSetters {
+ public:
+  static const ::tensorflow::OpList& stripped_op_list(const MetaGraphDef_MetaInfoDef* msg);
+  static const ::google::protobuf::Any& any_info(const MetaGraphDef_MetaInfoDef* msg);
+};
+
+const ::tensorflow::OpList&
+MetaGraphDef_MetaInfoDef::HasBitSetters::stripped_op_list(const MetaGraphDef_MetaInfoDef* msg) {
+  return *msg->stripped_op_list_;
+}
+const ::google::protobuf::Any&
+MetaGraphDef_MetaInfoDef::HasBitSetters::any_info(const MetaGraphDef_MetaInfoDef* msg) {
+  return *msg->any_info_;
+}
+void MetaGraphDef_MetaInfoDef::unsafe_arena_set_allocated_stripped_op_list(
+    ::tensorflow::OpList* stripped_op_list) {
+  if (GetArenaNoVirtual() == NULL) {
+    delete stripped_op_list_;
+  }
+  stripped_op_list_ = stripped_op_list;
+  if (stripped_op_list) {
+    
+  } else {
+    
+  }
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.MetaGraphDef.MetaInfoDef.stripped_op_list)
+}
+void MetaGraphDef_MetaInfoDef::clear_stripped_op_list() {
+  if (GetArenaNoVirtual() == NULL && stripped_op_list_ != NULL) {
+    delete stripped_op_list_;
+  }
+  stripped_op_list_ = NULL;
+}
+void MetaGraphDef_MetaInfoDef::unsafe_arena_set_allocated_any_info(
+    ::google::protobuf::Any* any_info) {
+  if (GetArenaNoVirtual() == NULL) {
+    delete any_info_;
+  }
+  any_info_ = any_info;
+  if (any_info) {
+    
+  } else {
+    
+  }
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.MetaGraphDef.MetaInfoDef.any_info)
+}
+void MetaGraphDef_MetaInfoDef::clear_any_info() {
+  if (GetArenaNoVirtual() == NULL && any_info_ != NULL) {
+    delete any_info_;
+  }
+  any_info_ = NULL;
+}
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int MetaGraphDef_MetaInfoDef::kMetaGraphVersionFieldNumber;
+const int MetaGraphDef_MetaInfoDef::kStrippedOpListFieldNumber;
+const int MetaGraphDef_MetaInfoDef::kAnyInfoFieldNumber;
+const int MetaGraphDef_MetaInfoDef::kTagsFieldNumber;
+const int MetaGraphDef_MetaInfoDef::kTensorflowVersionFieldNumber;
+const int MetaGraphDef_MetaInfoDef::kTensorflowGitVersionFieldNumber;
+const int MetaGraphDef_MetaInfoDef::kStrippedDefaultAttrsFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+MetaGraphDef_MetaInfoDef::MetaGraphDef_MetaInfoDef()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.MetaGraphDef.MetaInfoDef)
+}
+MetaGraphDef_MetaInfoDef::MetaGraphDef_MetaInfoDef(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena),
+  tags_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.MetaGraphDef.MetaInfoDef)
+}
+MetaGraphDef_MetaInfoDef::MetaGraphDef_MetaInfoDef(const MetaGraphDef_MetaInfoDef& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL),
+      tags_(from.tags_) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  meta_graph_version_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.meta_graph_version().size() > 0) {
+    meta_graph_version_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.meta_graph_version(),
+      GetArenaNoVirtual());
+  }
+  tensorflow_version_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.tensorflow_version().size() > 0) {
+    tensorflow_version_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.tensorflow_version(),
+      GetArenaNoVirtual());
+  }
+  tensorflow_git_version_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.tensorflow_git_version().size() > 0) {
+    tensorflow_git_version_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.tensorflow_git_version(),
+      GetArenaNoVirtual());
+  }
+  if (from.has_stripped_op_list()) {
+    stripped_op_list_ = new ::tensorflow::OpList(*from.stripped_op_list_);
+  } else {
+    stripped_op_list_ = NULL;
+  }
+  if (from.has_any_info()) {
+    any_info_ = new ::google::protobuf::Any(*from.any_info_);
+  } else {
+    any_info_ = NULL;
+  }
+  stripped_default_attrs_ = from.stripped_default_attrs_;
+  // @@protoc_insertion_point(copy_constructor:tensorflow.MetaGraphDef.MetaInfoDef)
+}
+
+void MetaGraphDef_MetaInfoDef::SharedCtor() {
+  ::google::protobuf::internal::InitSCC(
+      &scc_info_MetaGraphDef_MetaInfoDef_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto.base);
+  meta_graph_version_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  tensorflow_version_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  tensorflow_git_version_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  ::memset(&stripped_op_list_, 0, static_cast<size_t>(
+      reinterpret_cast<char*>(&stripped_default_attrs_) -
+      reinterpret_cast<char*>(&stripped_op_list_)) + sizeof(stripped_default_attrs_));
+}
+
+MetaGraphDef_MetaInfoDef::~MetaGraphDef_MetaInfoDef() {
+  // @@protoc_insertion_point(destructor:tensorflow.MetaGraphDef.MetaInfoDef)
+  SharedDtor();
+}
+
+void MetaGraphDef_MetaInfoDef::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+  meta_graph_version_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  tensorflow_version_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  tensorflow_git_version_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (this != internal_default_instance()) delete stripped_op_list_;
+  if (this != internal_default_instance()) delete any_info_;
+}
+
+void MetaGraphDef_MetaInfoDef::ArenaDtor(void* object) {
+  MetaGraphDef_MetaInfoDef* _this = reinterpret_cast< MetaGraphDef_MetaInfoDef* >(object);
+  (void)_this;
+}
+void MetaGraphDef_MetaInfoDef::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void MetaGraphDef_MetaInfoDef::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const MetaGraphDef_MetaInfoDef& MetaGraphDef_MetaInfoDef::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_MetaGraphDef_MetaInfoDef_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void MetaGraphDef_MetaInfoDef::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.MetaGraphDef.MetaInfoDef)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  tags_.Clear();
+  meta_graph_version_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+  tensorflow_version_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+  tensorflow_git_version_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+  if (GetArenaNoVirtual() == NULL && stripped_op_list_ != NULL) {
+    delete stripped_op_list_;
+  }
+  stripped_op_list_ = NULL;
+  if (GetArenaNoVirtual() == NULL && any_info_ != NULL) {
+    delete any_info_;
+  }
+  any_info_ = NULL;
+  stripped_default_attrs_ = false;
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* MetaGraphDef_MetaInfoDef::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<MetaGraphDef_MetaInfoDef*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // string meta_graph_version = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 10) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("tensorflow.MetaGraphDef.MetaInfoDef.meta_graph_version");
+        parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+        ::std::string* str = msg->mutable_meta_graph_version();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+        break;
+      }
+      // .tensorflow.OpList stripped_op_list = 2;
+      case 2: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 18) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        parser_till_end = ::tensorflow::OpList::_InternalParse;
+        object = msg->mutable_stripped_op_list();
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                       ptr, newend);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+        ptr = newend;
+        break;
+      }
+      // .google.protobuf.Any any_info = 3;
+      case 3: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 26) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        parser_till_end = ::google::protobuf::Any::_InternalParse;
+        object = msg->mutable_any_info();
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                       ptr, newend);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+        ptr = newend;
+        break;
+      }
+      // repeated string tags = 4;
+      case 4: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 34) goto handle_unusual;
+        do {
+          ptr = Varint::Parse32Inline(ptr, &size);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          ctx->extra_parse_data().SetFieldName("tensorflow.MetaGraphDef.MetaInfoDef.tags");
+          parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+          ::std::string* str = msg->add_tags();
+          str->clear();
+          object = str;
+          if (size > end - ptr) goto len_delim_till_end;
+          auto newend = ptr + size;
+          if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+          if (ptr >= end) break;
+        } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 34 && (ptr += 1));
+        break;
+      }
+      // string tensorflow_version = 5;
+      case 5: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 42) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("tensorflow.MetaGraphDef.MetaInfoDef.tensorflow_version");
+        parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+        ::std::string* str = msg->mutable_tensorflow_version();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+        break;
+      }
+      // string tensorflow_git_version = 6;
+      case 6: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 50) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("tensorflow.MetaGraphDef.MetaInfoDef.tensorflow_git_version");
+        parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+        ::std::string* str = msg->mutable_tensorflow_git_version();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+        break;
+      }
+      // bool stripped_default_attrs = 7;
+      case 7: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 56) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        bool value = val;
+        msg->set_stripped_default_attrs(value);
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool MetaGraphDef_MetaInfoDef::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.MetaGraphDef.MetaInfoDef)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // string meta_graph_version = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (10 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_meta_graph_version()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->meta_graph_version().data(), static_cast<int>(this->meta_graph_version().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.MetaGraphDef.MetaInfoDef.meta_graph_version"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // .tensorflow.OpList stripped_op_list = 2;
+      case 2: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (18 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+               input, mutable_stripped_op_list()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // .google.protobuf.Any any_info = 3;
+      case 3: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (26 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+               input, mutable_any_info()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // repeated string tags = 4;
+      case 4: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (34 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->add_tags()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->tags(this->tags_size() - 1).data(),
+            static_cast<int>(this->tags(this->tags_size() - 1).length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.MetaGraphDef.MetaInfoDef.tags"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // string tensorflow_version = 5;
+      case 5: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (42 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_tensorflow_version()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->tensorflow_version().data(), static_cast<int>(this->tensorflow_version().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.MetaGraphDef.MetaInfoDef.tensorflow_version"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // string tensorflow_git_version = 6;
+      case 6: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (50 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_tensorflow_git_version()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->tensorflow_git_version().data(), static_cast<int>(this->tensorflow_git_version().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.MetaGraphDef.MetaInfoDef.tensorflow_git_version"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // bool stripped_default_attrs = 7;
+      case 7: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (56 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
+                 input, &stripped_default_attrs_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.MetaGraphDef.MetaInfoDef)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.MetaGraphDef.MetaInfoDef)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void MetaGraphDef_MetaInfoDef::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.MetaGraphDef.MetaInfoDef)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // string meta_graph_version = 1;
+  if (this->meta_graph_version().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->meta_graph_version().data(), static_cast<int>(this->meta_graph_version().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.MetaGraphDef.MetaInfoDef.meta_graph_version");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      1, this->meta_graph_version(), output);
+  }
+
+  // .tensorflow.OpList stripped_op_list = 2;
+  if (this->has_stripped_op_list()) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      2, HasBitSetters::stripped_op_list(this), output);
+  }
+
+  // .google.protobuf.Any any_info = 3;
+  if (this->has_any_info()) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      3, HasBitSetters::any_info(this), output);
+  }
+
+  // repeated string tags = 4;
+  for (int i = 0, n = this->tags_size(); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->tags(i).data(), static_cast<int>(this->tags(i).length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.MetaGraphDef.MetaInfoDef.tags");
+    ::google::protobuf::internal::WireFormatLite::WriteString(
+      4, this->tags(i), output);
+  }
+
+  // string tensorflow_version = 5;
+  if (this->tensorflow_version().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->tensorflow_version().data(), static_cast<int>(this->tensorflow_version().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.MetaGraphDef.MetaInfoDef.tensorflow_version");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      5, this->tensorflow_version(), output);
+  }
+
+  // string tensorflow_git_version = 6;
+  if (this->tensorflow_git_version().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->tensorflow_git_version().data(), static_cast<int>(this->tensorflow_git_version().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.MetaGraphDef.MetaInfoDef.tensorflow_git_version");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      6, this->tensorflow_git_version(), output);
+  }
+
+  // bool stripped_default_attrs = 7;
+  if (this->stripped_default_attrs() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteBool(7, this->stripped_default_attrs(), output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.MetaGraphDef.MetaInfoDef)
+}
+
+::google::protobuf::uint8* MetaGraphDef_MetaInfoDef::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.MetaGraphDef.MetaInfoDef)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // string meta_graph_version = 1;
+  if (this->meta_graph_version().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->meta_graph_version().data(), static_cast<int>(this->meta_graph_version().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.MetaGraphDef.MetaInfoDef.meta_graph_version");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        1, this->meta_graph_version(), target);
+  }
+
+  // .tensorflow.OpList stripped_op_list = 2;
+  if (this->has_stripped_op_list()) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        2, HasBitSetters::stripped_op_list(this), deterministic, target);
+  }
+
+  // .google.protobuf.Any any_info = 3;
+  if (this->has_any_info()) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        3, HasBitSetters::any_info(this), deterministic, target);
+  }
+
+  // repeated string tags = 4;
+  for (int i = 0, n = this->tags_size(); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->tags(i).data(), static_cast<int>(this->tags(i).length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.MetaGraphDef.MetaInfoDef.tags");
+    target = ::google::protobuf::internal::WireFormatLite::
+      WriteStringToArray(4, this->tags(i), target);
+  }
+
+  // string tensorflow_version = 5;
+  if (this->tensorflow_version().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->tensorflow_version().data(), static_cast<int>(this->tensorflow_version().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.MetaGraphDef.MetaInfoDef.tensorflow_version");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        5, this->tensorflow_version(), target);
+  }
+
+  // string tensorflow_git_version = 6;
+  if (this->tensorflow_git_version().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->tensorflow_git_version().data(), static_cast<int>(this->tensorflow_git_version().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.MetaGraphDef.MetaInfoDef.tensorflow_git_version");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        6, this->tensorflow_git_version(), target);
+  }
+
+  // bool stripped_default_attrs = 7;
+  if (this->stripped_default_attrs() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(7, this->stripped_default_attrs(), target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.MetaGraphDef.MetaInfoDef)
+  return target;
+}
+
+size_t MetaGraphDef_MetaInfoDef::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.MetaGraphDef.MetaInfoDef)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // repeated string tags = 4;
+  total_size += 1 *
+      ::google::protobuf::internal::FromIntSize(this->tags_size());
+  for (int i = 0, n = this->tags_size(); i < n; i++) {
+    total_size += ::google::protobuf::internal::WireFormatLite::StringSize(
+      this->tags(i));
+  }
+
+  // string meta_graph_version = 1;
+  if (this->meta_graph_version().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->meta_graph_version());
+  }
+
+  // string tensorflow_version = 5;
+  if (this->tensorflow_version().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->tensorflow_version());
+  }
+
+  // string tensorflow_git_version = 6;
+  if (this->tensorflow_git_version().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->tensorflow_git_version());
+  }
+
+  // .tensorflow.OpList stripped_op_list = 2;
+  if (this->has_stripped_op_list()) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::MessageSize(
+        *stripped_op_list_);
+  }
+
+  // .google.protobuf.Any any_info = 3;
+  if (this->has_any_info()) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::MessageSize(
+        *any_info_);
+  }
+
+  // bool stripped_default_attrs = 7;
+  if (this->stripped_default_attrs() != 0) {
+    total_size += 1 + 1;
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void MetaGraphDef_MetaInfoDef::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.MetaGraphDef.MetaInfoDef)
+  GOOGLE_DCHECK_NE(&from, this);
+  const MetaGraphDef_MetaInfoDef* source =
+      ::google::protobuf::DynamicCastToGenerated<MetaGraphDef_MetaInfoDef>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.MetaGraphDef.MetaInfoDef)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.MetaGraphDef.MetaInfoDef)
+    MergeFrom(*source);
+  }
+}
+
+void MetaGraphDef_MetaInfoDef::MergeFrom(const MetaGraphDef_MetaInfoDef& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.MetaGraphDef.MetaInfoDef)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  tags_.MergeFrom(from.tags_);
+  if (from.meta_graph_version().size() > 0) {
+    set_meta_graph_version(from.meta_graph_version());
+  }
+  if (from.tensorflow_version().size() > 0) {
+    set_tensorflow_version(from.tensorflow_version());
+  }
+  if (from.tensorflow_git_version().size() > 0) {
+    set_tensorflow_git_version(from.tensorflow_git_version());
+  }
+  if (from.has_stripped_op_list()) {
+    mutable_stripped_op_list()->::tensorflow::OpList::MergeFrom(from.stripped_op_list());
+  }
+  if (from.has_any_info()) {
+    mutable_any_info()->::google::protobuf::Any::MergeFrom(from.any_info());
+  }
+  if (from.stripped_default_attrs() != 0) {
+    set_stripped_default_attrs(from.stripped_default_attrs());
+  }
+}
+
+void MetaGraphDef_MetaInfoDef::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.MetaGraphDef.MetaInfoDef)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void MetaGraphDef_MetaInfoDef::CopyFrom(const MetaGraphDef_MetaInfoDef& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.MetaGraphDef.MetaInfoDef)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool MetaGraphDef_MetaInfoDef::IsInitialized() const {
+  return true;
+}
+
+void MetaGraphDef_MetaInfoDef::Swap(MetaGraphDef_MetaInfoDef* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    MetaGraphDef_MetaInfoDef* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void MetaGraphDef_MetaInfoDef::UnsafeArenaSwap(MetaGraphDef_MetaInfoDef* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void MetaGraphDef_MetaInfoDef::InternalSwap(MetaGraphDef_MetaInfoDef* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  tags_.InternalSwap(CastToBase(&other->tags_));
+  meta_graph_version_.Swap(&other->meta_graph_version_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+  tensorflow_version_.Swap(&other->tensorflow_version_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+  tensorflow_git_version_.Swap(&other->tensorflow_git_version_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+  swap(stripped_op_list_, other->stripped_op_list_);
+  swap(any_info_, other->any_info_);
+  swap(stripped_default_attrs_, other->stripped_default_attrs_);
+}
+
+::google::protobuf::Metadata MetaGraphDef_MetaInfoDef::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+MetaGraphDef_CollectionDefEntry_DoNotUse::MetaGraphDef_CollectionDefEntry_DoNotUse() {}
+MetaGraphDef_CollectionDefEntry_DoNotUse::MetaGraphDef_CollectionDefEntry_DoNotUse(::google::protobuf::Arena* arena)
+    : SuperType(arena) {}
+void MetaGraphDef_CollectionDefEntry_DoNotUse::MergeFrom(const MetaGraphDef_CollectionDefEntry_DoNotUse& other) {
+  MergeFromInternal(other);
+}
+::google::protobuf::Metadata MetaGraphDef_CollectionDefEntry_DoNotUse::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto[1];
+}
+void MetaGraphDef_CollectionDefEntry_DoNotUse::MergeFrom(
+    const ::google::protobuf::Message& other) {
+  ::google::protobuf::Message::MergeFrom(other);
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool MetaGraphDef_CollectionDefEntry_DoNotUse::_ParseMap(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx) {
+  using MF = ::google::protobuf::internal::MapField<
+      MetaGraphDef_CollectionDefEntry_DoNotUse, EntryKeyType, EntryValueType,
+      kEntryKeyFieldType, kEntryValueFieldType,
+      kEntryDefaultEnumValue>;
+  auto mf = static_cast<MF*>(object);
+  Parser<MF, ::google::protobuf::Map<EntryKeyType, EntryValueType>> parser(mf);
+#define DO_(x) if (!(x)) return false
+  DO_(parser.ParseMap(begin, end));
+  DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+    parser.key().data(), static_cast<int>(parser.key().length()),
+    ::google::protobuf::internal::WireFormatLite::PARSE,
+    "tensorflow.MetaGraphDef.CollectionDefEntry.key"));
+#undef DO_
+  return true;
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+
+// ===================================================================
+
+MetaGraphDef_SignatureDefEntry_DoNotUse::MetaGraphDef_SignatureDefEntry_DoNotUse() {}
+MetaGraphDef_SignatureDefEntry_DoNotUse::MetaGraphDef_SignatureDefEntry_DoNotUse(::google::protobuf::Arena* arena)
+    : SuperType(arena) {}
+void MetaGraphDef_SignatureDefEntry_DoNotUse::MergeFrom(const MetaGraphDef_SignatureDefEntry_DoNotUse& other) {
+  MergeFromInternal(other);
+}
+::google::protobuf::Metadata MetaGraphDef_SignatureDefEntry_DoNotUse::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto[2];
+}
+void MetaGraphDef_SignatureDefEntry_DoNotUse::MergeFrom(
+    const ::google::protobuf::Message& other) {
+  ::google::protobuf::Message::MergeFrom(other);
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool MetaGraphDef_SignatureDefEntry_DoNotUse::_ParseMap(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx) {
+  using MF = ::google::protobuf::internal::MapField<
+      MetaGraphDef_SignatureDefEntry_DoNotUse, EntryKeyType, EntryValueType,
+      kEntryKeyFieldType, kEntryValueFieldType,
+      kEntryDefaultEnumValue>;
+  auto mf = static_cast<MF*>(object);
+  Parser<MF, ::google::protobuf::Map<EntryKeyType, EntryValueType>> parser(mf);
+#define DO_(x) if (!(x)) return false
+  DO_(parser.ParseMap(begin, end));
+  DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+    parser.key().data(), static_cast<int>(parser.key().length()),
+    ::google::protobuf::internal::WireFormatLite::PARSE,
+    "tensorflow.MetaGraphDef.SignatureDefEntry.key"));
+#undef DO_
+  return true;
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+
+// ===================================================================
+
+void MetaGraphDef::InitAsDefaultInstance() {
+  ::tensorflow::_MetaGraphDef_default_instance_._instance.get_mutable()->meta_info_def_ = const_cast< ::tensorflow::MetaGraphDef_MetaInfoDef*>(
+      ::tensorflow::MetaGraphDef_MetaInfoDef::internal_default_instance());
+  ::tensorflow::_MetaGraphDef_default_instance_._instance.get_mutable()->graph_def_ = const_cast< ::tensorflow::GraphDef*>(
+      ::tensorflow::GraphDef::internal_default_instance());
+  ::tensorflow::_MetaGraphDef_default_instance_._instance.get_mutable()->saver_def_ = const_cast< ::tensorflow::SaverDef*>(
+      ::tensorflow::SaverDef::internal_default_instance());
+}
+class MetaGraphDef::HasBitSetters {
+ public:
+  static const ::tensorflow::MetaGraphDef_MetaInfoDef& meta_info_def(const MetaGraphDef* msg);
+  static const ::tensorflow::GraphDef& graph_def(const MetaGraphDef* msg);
+  static const ::tensorflow::SaverDef& saver_def(const MetaGraphDef* msg);
+};
+
+const ::tensorflow::MetaGraphDef_MetaInfoDef&
+MetaGraphDef::HasBitSetters::meta_info_def(const MetaGraphDef* msg) {
+  return *msg->meta_info_def_;
+}
+const ::tensorflow::GraphDef&
+MetaGraphDef::HasBitSetters::graph_def(const MetaGraphDef* msg) {
+  return *msg->graph_def_;
+}
+const ::tensorflow::SaverDef&
+MetaGraphDef::HasBitSetters::saver_def(const MetaGraphDef* msg) {
+  return *msg->saver_def_;
+}
+void MetaGraphDef::unsafe_arena_set_allocated_meta_info_def(
+    ::tensorflow::MetaGraphDef_MetaInfoDef* meta_info_def) {
+  if (GetArenaNoVirtual() == NULL) {
+    delete meta_info_def_;
+  }
+  meta_info_def_ = meta_info_def;
+  if (meta_info_def) {
+    
+  } else {
+    
+  }
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.MetaGraphDef.meta_info_def)
+}
+void MetaGraphDef::unsafe_arena_set_allocated_graph_def(
+    ::tensorflow::GraphDef* graph_def) {
+  if (GetArenaNoVirtual() == NULL) {
+    delete graph_def_;
+  }
+  graph_def_ = graph_def;
+  if (graph_def) {
+    
+  } else {
+    
+  }
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.MetaGraphDef.graph_def)
+}
+void MetaGraphDef::clear_graph_def() {
+  if (GetArenaNoVirtual() == NULL && graph_def_ != NULL) {
+    delete graph_def_;
+  }
+  graph_def_ = NULL;
+}
+void MetaGraphDef::unsafe_arena_set_allocated_saver_def(
+    ::tensorflow::SaverDef* saver_def) {
+  if (GetArenaNoVirtual() == NULL) {
+    delete saver_def_;
+  }
+  saver_def_ = saver_def;
+  if (saver_def) {
+    
+  } else {
+    
+  }
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.MetaGraphDef.saver_def)
+}
+void MetaGraphDef::clear_saver_def() {
+  if (GetArenaNoVirtual() == NULL && saver_def_ != NULL) {
+    delete saver_def_;
+  }
+  saver_def_ = NULL;
+}
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int MetaGraphDef::kMetaInfoDefFieldNumber;
+const int MetaGraphDef::kGraphDefFieldNumber;
+const int MetaGraphDef::kSaverDefFieldNumber;
+const int MetaGraphDef::kCollectionDefFieldNumber;
+const int MetaGraphDef::kSignatureDefFieldNumber;
+const int MetaGraphDef::kAssetFileDefFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+MetaGraphDef::MetaGraphDef()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.MetaGraphDef)
+}
+MetaGraphDef::MetaGraphDef(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena),
+  collection_def_(arena),
+  signature_def_(arena),
+  asset_file_def_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.MetaGraphDef)
+}
+MetaGraphDef::MetaGraphDef(const MetaGraphDef& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL),
+      asset_file_def_(from.asset_file_def_) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  collection_def_.MergeFrom(from.collection_def_);
+  signature_def_.MergeFrom(from.signature_def_);
+  if (from.has_meta_info_def()) {
+    meta_info_def_ = new ::tensorflow::MetaGraphDef_MetaInfoDef(*from.meta_info_def_);
+  } else {
+    meta_info_def_ = NULL;
+  }
+  if (from.has_graph_def()) {
+    graph_def_ = new ::tensorflow::GraphDef(*from.graph_def_);
+  } else {
+    graph_def_ = NULL;
+  }
+  if (from.has_saver_def()) {
+    saver_def_ = new ::tensorflow::SaverDef(*from.saver_def_);
+  } else {
+    saver_def_ = NULL;
+  }
+  // @@protoc_insertion_point(copy_constructor:tensorflow.MetaGraphDef)
+}
+
+void MetaGraphDef::SharedCtor() {
+  ::google::protobuf::internal::InitSCC(
+      &scc_info_MetaGraphDef_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto.base);
+  ::memset(&meta_info_def_, 0, static_cast<size_t>(
+      reinterpret_cast<char*>(&saver_def_) -
+      reinterpret_cast<char*>(&meta_info_def_)) + sizeof(saver_def_));
+}
+
+MetaGraphDef::~MetaGraphDef() {
+  // @@protoc_insertion_point(destructor:tensorflow.MetaGraphDef)
+  SharedDtor();
+}
+
+void MetaGraphDef::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+  if (this != internal_default_instance()) delete meta_info_def_;
+  if (this != internal_default_instance()) delete graph_def_;
+  if (this != internal_default_instance()) delete saver_def_;
+}
+
+void MetaGraphDef::ArenaDtor(void* object) {
+  MetaGraphDef* _this = reinterpret_cast< MetaGraphDef* >(object);
+  (void)_this;
+}
+void MetaGraphDef::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void MetaGraphDef::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const MetaGraphDef& MetaGraphDef::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_MetaGraphDef_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void MetaGraphDef::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.MetaGraphDef)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  collection_def_.Clear();
+  signature_def_.Clear();
+  asset_file_def_.Clear();
+  if (GetArenaNoVirtual() == NULL && meta_info_def_ != NULL) {
+    delete meta_info_def_;
+  }
+  meta_info_def_ = NULL;
+  if (GetArenaNoVirtual() == NULL && graph_def_ != NULL) {
+    delete graph_def_;
+  }
+  graph_def_ = NULL;
+  if (GetArenaNoVirtual() == NULL && saver_def_ != NULL) {
+    delete saver_def_;
+  }
+  saver_def_ = NULL;
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* MetaGraphDef::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<MetaGraphDef*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // .tensorflow.MetaGraphDef.MetaInfoDef meta_info_def = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 10) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        parser_till_end = ::tensorflow::MetaGraphDef_MetaInfoDef::_InternalParse;
+        object = msg->mutable_meta_info_def();
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                       ptr, newend);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+        ptr = newend;
+        break;
+      }
+      // .tensorflow.GraphDef graph_def = 2;
+      case 2: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 18) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        parser_till_end = ::tensorflow::GraphDef::_InternalParse;
+        object = msg->mutable_graph_def();
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                       ptr, newend);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+        ptr = newend;
+        break;
+      }
+      // .tensorflow.SaverDef saver_def = 3;
+      case 3: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 26) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        parser_till_end = ::tensorflow::SaverDef::_InternalParse;
+        object = msg->mutable_saver_def();
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                       ptr, newend);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+        ptr = newend;
+        break;
+      }
+      // map<string, .tensorflow.CollectionDef> collection_def = 4;
+      case 4: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 34) goto handle_unusual;
+        do {
+          ptr = Varint::Parse32Inline(ptr, &size);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          parser_till_end = ::google::protobuf::internal::SlowMapEntryParser;
+          auto parse_map = ::tensorflow::MetaGraphDef_CollectionDefEntry_DoNotUse::_ParseMap;
+          ctx->extra_parse_data().payload.clear();
+          ctx->extra_parse_data().parse_map = parse_map;
+          object = &msg->collection_def_;
+          if (size > end - ptr) goto len_delim_till_end;
+          auto newend = ptr + size;
+          GOOGLE_PROTOBUF_PARSER_ASSERT(parse_map(ptr, newend, object, ctx));
+          ptr = newend;
+          if (ptr >= end) break;
+        } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 34 && (ptr += 1));
+        break;
+      }
+      // map<string, .tensorflow.SignatureDef> signature_def = 5;
+      case 5: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 42) goto handle_unusual;
+        do {
+          ptr = Varint::Parse32Inline(ptr, &size);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          parser_till_end = ::google::protobuf::internal::SlowMapEntryParser;
+          auto parse_map = ::tensorflow::MetaGraphDef_SignatureDefEntry_DoNotUse::_ParseMap;
+          ctx->extra_parse_data().payload.clear();
+          ctx->extra_parse_data().parse_map = parse_map;
+          object = &msg->signature_def_;
+          if (size > end - ptr) goto len_delim_till_end;
+          auto newend = ptr + size;
+          GOOGLE_PROTOBUF_PARSER_ASSERT(parse_map(ptr, newend, object, ctx));
+          ptr = newend;
+          if (ptr >= end) break;
+        } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 42 && (ptr += 1));
+        break;
+      }
+      // repeated .tensorflow.AssetFileDef asset_file_def = 6;
+      case 6: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 50) goto handle_unusual;
+        do {
+          ptr = Varint::Parse32Inline(ptr, &size);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          parser_till_end = ::tensorflow::AssetFileDef::_InternalParse;
+          object = msg->add_asset_file_def();
+          if (size > end - ptr) goto len_delim_till_end;
+          auto newend = ptr + size;
+          bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                         ptr, newend);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          ptr = newend;
+          if (ptr >= end) break;
+        } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 50 && (ptr += 1));
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool MetaGraphDef::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.MetaGraphDef)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // .tensorflow.MetaGraphDef.MetaInfoDef meta_info_def = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (10 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+               input, mutable_meta_info_def()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // .tensorflow.GraphDef graph_def = 2;
+      case 2: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (18 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+               input, mutable_graph_def()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // .tensorflow.SaverDef saver_def = 3;
+      case 3: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (26 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+               input, mutable_saver_def()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // map<string, .tensorflow.CollectionDef> collection_def = 4;
+      case 4: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (34 & 0xFF)) {
+          MetaGraphDef_CollectionDefEntry_DoNotUse::Parser< ::google::protobuf::internal::MapField<
+              MetaGraphDef_CollectionDefEntry_DoNotUse,
+              ::std::string, ::tensorflow::CollectionDef,
+              ::google::protobuf::internal::WireFormatLite::TYPE_STRING,
+              ::google::protobuf::internal::WireFormatLite::TYPE_MESSAGE,
+              0 >,
+            ::google::protobuf::Map< ::std::string, ::tensorflow::CollectionDef > > parser(&collection_def_);
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
+              input, &parser));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            parser.key().data(), static_cast<int>(parser.key().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.MetaGraphDef.CollectionDefEntry.key"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // map<string, .tensorflow.SignatureDef> signature_def = 5;
+      case 5: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (42 & 0xFF)) {
+          MetaGraphDef_SignatureDefEntry_DoNotUse::Parser< ::google::protobuf::internal::MapField<
+              MetaGraphDef_SignatureDefEntry_DoNotUse,
+              ::std::string, ::tensorflow::SignatureDef,
+              ::google::protobuf::internal::WireFormatLite::TYPE_STRING,
+              ::google::protobuf::internal::WireFormatLite::TYPE_MESSAGE,
+              0 >,
+            ::google::protobuf::Map< ::std::string, ::tensorflow::SignatureDef > > parser(&signature_def_);
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
+              input, &parser));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            parser.key().data(), static_cast<int>(parser.key().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.MetaGraphDef.SignatureDefEntry.key"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // repeated .tensorflow.AssetFileDef asset_file_def = 6;
+      case 6: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (50 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+                input, add_asset_file_def()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.MetaGraphDef)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.MetaGraphDef)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void MetaGraphDef::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.MetaGraphDef)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // .tensorflow.MetaGraphDef.MetaInfoDef meta_info_def = 1;
+  if (this->has_meta_info_def()) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      1, HasBitSetters::meta_info_def(this), output);
+  }
+
+  // .tensorflow.GraphDef graph_def = 2;
+  if (this->has_graph_def()) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      2, HasBitSetters::graph_def(this), output);
+  }
+
+  // .tensorflow.SaverDef saver_def = 3;
+  if (this->has_saver_def()) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      3, HasBitSetters::saver_def(this), output);
+  }
+
+  // map<string, .tensorflow.CollectionDef> collection_def = 4;
+  if (!this->collection_def().empty()) {
+    typedef ::google::protobuf::Map< ::std::string, ::tensorflow::CollectionDef >::const_pointer
+        ConstPtr;
+    typedef ConstPtr SortItem;
+    typedef ::google::protobuf::internal::CompareByDerefFirst<SortItem> Less;
+    struct Utf8Check {
+      static void Check(ConstPtr p) {
+        ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+          p->first.data(), static_cast<int>(p->first.length()),
+          ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+          "tensorflow.MetaGraphDef.CollectionDefEntry.key");
+      }
+    };
+
+    if (output->IsSerializationDeterministic() &&
+        this->collection_def().size() > 1) {
+      ::std::unique_ptr<SortItem[]> items(
+          new SortItem[this->collection_def().size()]);
+      typedef ::google::protobuf::Map< ::std::string, ::tensorflow::CollectionDef >::size_type size_type;
+      size_type n = 0;
+      for (::google::protobuf::Map< ::std::string, ::tensorflow::CollectionDef >::const_iterator
+          it = this->collection_def().begin();
+          it != this->collection_def().end(); ++it, ++n) {
+        items[static_cast<ptrdiff_t>(n)] = SortItem(&*it);
+      }
+      ::std::sort(&items[0], &items[static_cast<ptrdiff_t>(n)], Less());
+      ::std::unique_ptr<MetaGraphDef_CollectionDefEntry_DoNotUse> entry;
+      for (size_type i = 0; i < n; i++) {
+        entry.reset(collection_def_.NewEntryWrapper(items[static_cast<ptrdiff_t>(i)]->first, items[static_cast<ptrdiff_t>(i)]->second));
+        ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(4, *entry, output);
+        if (entry->GetArena() != NULL) {
+          entry.release();
+        }
+        Utf8Check::Check(&(*items[static_cast<ptrdiff_t>(i)]));
+      }
+    } else {
+      ::std::unique_ptr<MetaGraphDef_CollectionDefEntry_DoNotUse> entry;
+      for (::google::protobuf::Map< ::std::string, ::tensorflow::CollectionDef >::const_iterator
+          it = this->collection_def().begin();
+          it != this->collection_def().end(); ++it) {
+        entry.reset(collection_def_.NewEntryWrapper(it->first, it->second));
+        ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(4, *entry, output);
+        if (entry->GetArena() != NULL) {
+          entry.release();
+        }
+        Utf8Check::Check(&(*it));
+      }
+    }
+  }
+
+  // map<string, .tensorflow.SignatureDef> signature_def = 5;
+  if (!this->signature_def().empty()) {
+    typedef ::google::protobuf::Map< ::std::string, ::tensorflow::SignatureDef >::const_pointer
+        ConstPtr;
+    typedef ConstPtr SortItem;
+    typedef ::google::protobuf::internal::CompareByDerefFirst<SortItem> Less;
+    struct Utf8Check {
+      static void Check(ConstPtr p) {
+        ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+          p->first.data(), static_cast<int>(p->first.length()),
+          ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+          "tensorflow.MetaGraphDef.SignatureDefEntry.key");
+      }
+    };
+
+    if (output->IsSerializationDeterministic() &&
+        this->signature_def().size() > 1) {
+      ::std::unique_ptr<SortItem[]> items(
+          new SortItem[this->signature_def().size()]);
+      typedef ::google::protobuf::Map< ::std::string, ::tensorflow::SignatureDef >::size_type size_type;
+      size_type n = 0;
+      for (::google::protobuf::Map< ::std::string, ::tensorflow::SignatureDef >::const_iterator
+          it = this->signature_def().begin();
+          it != this->signature_def().end(); ++it, ++n) {
+        items[static_cast<ptrdiff_t>(n)] = SortItem(&*it);
+      }
+      ::std::sort(&items[0], &items[static_cast<ptrdiff_t>(n)], Less());
+      ::std::unique_ptr<MetaGraphDef_SignatureDefEntry_DoNotUse> entry;
+      for (size_type i = 0; i < n; i++) {
+        entry.reset(signature_def_.NewEntryWrapper(items[static_cast<ptrdiff_t>(i)]->first, items[static_cast<ptrdiff_t>(i)]->second));
+        ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(5, *entry, output);
+        if (entry->GetArena() != NULL) {
+          entry.release();
+        }
+        Utf8Check::Check(&(*items[static_cast<ptrdiff_t>(i)]));
+      }
+    } else {
+      ::std::unique_ptr<MetaGraphDef_SignatureDefEntry_DoNotUse> entry;
+      for (::google::protobuf::Map< ::std::string, ::tensorflow::SignatureDef >::const_iterator
+          it = this->signature_def().begin();
+          it != this->signature_def().end(); ++it) {
+        entry.reset(signature_def_.NewEntryWrapper(it->first, it->second));
+        ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(5, *entry, output);
+        if (entry->GetArena() != NULL) {
+          entry.release();
+        }
+        Utf8Check::Check(&(*it));
+      }
+    }
+  }
+
+  // repeated .tensorflow.AssetFileDef asset_file_def = 6;
+  for (unsigned int i = 0,
+      n = static_cast<unsigned int>(this->asset_file_def_size()); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      6,
+      this->asset_file_def(static_cast<int>(i)),
+      output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.MetaGraphDef)
+}
+
+::google::protobuf::uint8* MetaGraphDef::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.MetaGraphDef)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // .tensorflow.MetaGraphDef.MetaInfoDef meta_info_def = 1;
+  if (this->has_meta_info_def()) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        1, HasBitSetters::meta_info_def(this), deterministic, target);
+  }
+
+  // .tensorflow.GraphDef graph_def = 2;
+  if (this->has_graph_def()) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        2, HasBitSetters::graph_def(this), deterministic, target);
+  }
+
+  // .tensorflow.SaverDef saver_def = 3;
+  if (this->has_saver_def()) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        3, HasBitSetters::saver_def(this), deterministic, target);
+  }
+
+  // map<string, .tensorflow.CollectionDef> collection_def = 4;
+  if (!this->collection_def().empty()) {
+    typedef ::google::protobuf::Map< ::std::string, ::tensorflow::CollectionDef >::const_pointer
+        ConstPtr;
+    typedef ConstPtr SortItem;
+    typedef ::google::protobuf::internal::CompareByDerefFirst<SortItem> Less;
+    struct Utf8Check {
+      static void Check(ConstPtr p) {
+        ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+          p->first.data(), static_cast<int>(p->first.length()),
+          ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+          "tensorflow.MetaGraphDef.CollectionDefEntry.key");
+      }
+    };
+
+    if (deterministic &&
+        this->collection_def().size() > 1) {
+      ::std::unique_ptr<SortItem[]> items(
+          new SortItem[this->collection_def().size()]);
+      typedef ::google::protobuf::Map< ::std::string, ::tensorflow::CollectionDef >::size_type size_type;
+      size_type n = 0;
+      for (::google::protobuf::Map< ::std::string, ::tensorflow::CollectionDef >::const_iterator
+          it = this->collection_def().begin();
+          it != this->collection_def().end(); ++it, ++n) {
+        items[static_cast<ptrdiff_t>(n)] = SortItem(&*it);
+      }
+      ::std::sort(&items[0], &items[static_cast<ptrdiff_t>(n)], Less());
+      ::std::unique_ptr<MetaGraphDef_CollectionDefEntry_DoNotUse> entry;
+      for (size_type i = 0; i < n; i++) {
+        entry.reset(collection_def_.NewEntryWrapper(items[static_cast<ptrdiff_t>(i)]->first, items[static_cast<ptrdiff_t>(i)]->second));
+        target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessageNoVirtualToArray(4, *entry, deterministic, target);
+        if (entry->GetArena() != NULL) {
+          entry.release();
+        }
+        Utf8Check::Check(&(*items[static_cast<ptrdiff_t>(i)]));
+      }
+    } else {
+      ::std::unique_ptr<MetaGraphDef_CollectionDefEntry_DoNotUse> entry;
+      for (::google::protobuf::Map< ::std::string, ::tensorflow::CollectionDef >::const_iterator
+          it = this->collection_def().begin();
+          it != this->collection_def().end(); ++it) {
+        entry.reset(collection_def_.NewEntryWrapper(it->first, it->second));
+        target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessageNoVirtualToArray(4, *entry, deterministic, target);
+        if (entry->GetArena() != NULL) {
+          entry.release();
+        }
+        Utf8Check::Check(&(*it));
+      }
+    }
+  }
+
+  // map<string, .tensorflow.SignatureDef> signature_def = 5;
+  if (!this->signature_def().empty()) {
+    typedef ::google::protobuf::Map< ::std::string, ::tensorflow::SignatureDef >::const_pointer
+        ConstPtr;
+    typedef ConstPtr SortItem;
+    typedef ::google::protobuf::internal::CompareByDerefFirst<SortItem> Less;
+    struct Utf8Check {
+      static void Check(ConstPtr p) {
+        ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+          p->first.data(), static_cast<int>(p->first.length()),
+          ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+          "tensorflow.MetaGraphDef.SignatureDefEntry.key");
+      }
+    };
+
+    if (deterministic &&
+        this->signature_def().size() > 1) {
+      ::std::unique_ptr<SortItem[]> items(
+          new SortItem[this->signature_def().size()]);
+      typedef ::google::protobuf::Map< ::std::string, ::tensorflow::SignatureDef >::size_type size_type;
+      size_type n = 0;
+      for (::google::protobuf::Map< ::std::string, ::tensorflow::SignatureDef >::const_iterator
+          it = this->signature_def().begin();
+          it != this->signature_def().end(); ++it, ++n) {
+        items[static_cast<ptrdiff_t>(n)] = SortItem(&*it);
+      }
+      ::std::sort(&items[0], &items[static_cast<ptrdiff_t>(n)], Less());
+      ::std::unique_ptr<MetaGraphDef_SignatureDefEntry_DoNotUse> entry;
+      for (size_type i = 0; i < n; i++) {
+        entry.reset(signature_def_.NewEntryWrapper(items[static_cast<ptrdiff_t>(i)]->first, items[static_cast<ptrdiff_t>(i)]->second));
+        target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessageNoVirtualToArray(5, *entry, deterministic, target);
+        if (entry->GetArena() != NULL) {
+          entry.release();
+        }
+        Utf8Check::Check(&(*items[static_cast<ptrdiff_t>(i)]));
+      }
+    } else {
+      ::std::unique_ptr<MetaGraphDef_SignatureDefEntry_DoNotUse> entry;
+      for (::google::protobuf::Map< ::std::string, ::tensorflow::SignatureDef >::const_iterator
+          it = this->signature_def().begin();
+          it != this->signature_def().end(); ++it) {
+        entry.reset(signature_def_.NewEntryWrapper(it->first, it->second));
+        target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessageNoVirtualToArray(5, *entry, deterministic, target);
+        if (entry->GetArena() != NULL) {
+          entry.release();
+        }
+        Utf8Check::Check(&(*it));
+      }
+    }
+  }
+
+  // repeated .tensorflow.AssetFileDef asset_file_def = 6;
+  for (unsigned int i = 0,
+      n = static_cast<unsigned int>(this->asset_file_def_size()); i < n; i++) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        6, this->asset_file_def(static_cast<int>(i)), deterministic, target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.MetaGraphDef)
+  return target;
+}
+
+size_t MetaGraphDef::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.MetaGraphDef)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // map<string, .tensorflow.CollectionDef> collection_def = 4;
+  total_size += 1 *
+      ::google::protobuf::internal::FromIntSize(this->collection_def_size());
+  {
+    ::std::unique_ptr<MetaGraphDef_CollectionDefEntry_DoNotUse> entry;
+    for (::google::protobuf::Map< ::std::string, ::tensorflow::CollectionDef >::const_iterator
+        it = this->collection_def().begin();
+        it != this->collection_def().end(); ++it) {
+      if (entry.get() != NULL && entry->GetArena() != NULL) {
+        entry.release();
+      }
+      entry.reset(collection_def_.NewEntryWrapper(it->first, it->second));
+      total_size += ::google::protobuf::internal::WireFormatLite::
+          MessageSizeNoVirtual(*entry);
+    }
+    if (entry.get() != NULL && entry->GetArena() != NULL) {
+      entry.release();
+    }
+  }
+
+  // map<string, .tensorflow.SignatureDef> signature_def = 5;
+  total_size += 1 *
+      ::google::protobuf::internal::FromIntSize(this->signature_def_size());
+  {
+    ::std::unique_ptr<MetaGraphDef_SignatureDefEntry_DoNotUse> entry;
+    for (::google::protobuf::Map< ::std::string, ::tensorflow::SignatureDef >::const_iterator
+        it = this->signature_def().begin();
+        it != this->signature_def().end(); ++it) {
+      if (entry.get() != NULL && entry->GetArena() != NULL) {
+        entry.release();
+      }
+      entry.reset(signature_def_.NewEntryWrapper(it->first, it->second));
+      total_size += ::google::protobuf::internal::WireFormatLite::
+          MessageSizeNoVirtual(*entry);
+    }
+    if (entry.get() != NULL && entry->GetArena() != NULL) {
+      entry.release();
+    }
+  }
+
+  // repeated .tensorflow.AssetFileDef asset_file_def = 6;
+  {
+    unsigned int count = static_cast<unsigned int>(this->asset_file_def_size());
+    total_size += 1UL * count;
+    for (unsigned int i = 0; i < count; i++) {
+      total_size +=
+        ::google::protobuf::internal::WireFormatLite::MessageSize(
+          this->asset_file_def(static_cast<int>(i)));
+    }
+  }
+
+  // .tensorflow.MetaGraphDef.MetaInfoDef meta_info_def = 1;
+  if (this->has_meta_info_def()) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::MessageSize(
+        *meta_info_def_);
+  }
+
+  // .tensorflow.GraphDef graph_def = 2;
+  if (this->has_graph_def()) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::MessageSize(
+        *graph_def_);
+  }
+
+  // .tensorflow.SaverDef saver_def = 3;
+  if (this->has_saver_def()) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::MessageSize(
+        *saver_def_);
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void MetaGraphDef::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.MetaGraphDef)
+  GOOGLE_DCHECK_NE(&from, this);
+  const MetaGraphDef* source =
+      ::google::protobuf::DynamicCastToGenerated<MetaGraphDef>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.MetaGraphDef)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.MetaGraphDef)
+    MergeFrom(*source);
+  }
+}
+
+void MetaGraphDef::MergeFrom(const MetaGraphDef& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.MetaGraphDef)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  collection_def_.MergeFrom(from.collection_def_);
+  signature_def_.MergeFrom(from.signature_def_);
+  asset_file_def_.MergeFrom(from.asset_file_def_);
+  if (from.has_meta_info_def()) {
+    mutable_meta_info_def()->::tensorflow::MetaGraphDef_MetaInfoDef::MergeFrom(from.meta_info_def());
+  }
+  if (from.has_graph_def()) {
+    mutable_graph_def()->::tensorflow::GraphDef::MergeFrom(from.graph_def());
+  }
+  if (from.has_saver_def()) {
+    mutable_saver_def()->::tensorflow::SaverDef::MergeFrom(from.saver_def());
+  }
+}
+
+void MetaGraphDef::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.MetaGraphDef)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void MetaGraphDef::CopyFrom(const MetaGraphDef& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.MetaGraphDef)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool MetaGraphDef::IsInitialized() const {
+  return true;
+}
+
+void MetaGraphDef::Swap(MetaGraphDef* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    MetaGraphDef* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void MetaGraphDef::UnsafeArenaSwap(MetaGraphDef* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void MetaGraphDef::InternalSwap(MetaGraphDef* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  collection_def_.Swap(&other->collection_def_);
+  signature_def_.Swap(&other->signature_def_);
+  CastToBase(&asset_file_def_)->InternalSwap(CastToBase(&other->asset_file_def_));
+  swap(meta_info_def_, other->meta_info_def_);
+  swap(graph_def_, other->graph_def_);
+  swap(saver_def_, other->saver_def_);
+}
+
+::google::protobuf::Metadata MetaGraphDef::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+void CollectionDef_NodeList::InitAsDefaultInstance() {
+}
+class CollectionDef_NodeList::HasBitSetters {
+ public:
+};
+
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int CollectionDef_NodeList::kValueFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+CollectionDef_NodeList::CollectionDef_NodeList()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.CollectionDef.NodeList)
+}
+CollectionDef_NodeList::CollectionDef_NodeList(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena),
+  value_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.CollectionDef.NodeList)
+}
+CollectionDef_NodeList::CollectionDef_NodeList(const CollectionDef_NodeList& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL),
+      value_(from.value_) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  // @@protoc_insertion_point(copy_constructor:tensorflow.CollectionDef.NodeList)
+}
+
+void CollectionDef_NodeList::SharedCtor() {
+  ::google::protobuf::internal::InitSCC(
+      &scc_info_CollectionDef_NodeList_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto.base);
+}
+
+CollectionDef_NodeList::~CollectionDef_NodeList() {
+  // @@protoc_insertion_point(destructor:tensorflow.CollectionDef.NodeList)
+  SharedDtor();
+}
+
+void CollectionDef_NodeList::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+}
+
+void CollectionDef_NodeList::ArenaDtor(void* object) {
+  CollectionDef_NodeList* _this = reinterpret_cast< CollectionDef_NodeList* >(object);
+  (void)_this;
+}
+void CollectionDef_NodeList::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void CollectionDef_NodeList::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const CollectionDef_NodeList& CollectionDef_NodeList::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_CollectionDef_NodeList_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void CollectionDef_NodeList::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.CollectionDef.NodeList)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  value_.Clear();
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* CollectionDef_NodeList::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<CollectionDef_NodeList*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // repeated string value = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 10) goto handle_unusual;
+        do {
+          ptr = Varint::Parse32Inline(ptr, &size);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          ctx->extra_parse_data().SetFieldName("tensorflow.CollectionDef.NodeList.value");
+          parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+          ::std::string* str = msg->add_value();
+          str->clear();
+          object = str;
+          if (size > end - ptr) goto len_delim_till_end;
+          auto newend = ptr + size;
+          if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+          if (ptr >= end) break;
+        } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 10 && (ptr += 1));
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool CollectionDef_NodeList::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.CollectionDef.NodeList)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // repeated string value = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (10 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->add_value()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->value(this->value_size() - 1).data(),
+            static_cast<int>(this->value(this->value_size() - 1).length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.CollectionDef.NodeList.value"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.CollectionDef.NodeList)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.CollectionDef.NodeList)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void CollectionDef_NodeList::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.CollectionDef.NodeList)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // repeated string value = 1;
+  for (int i = 0, n = this->value_size(); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->value(i).data(), static_cast<int>(this->value(i).length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.CollectionDef.NodeList.value");
+    ::google::protobuf::internal::WireFormatLite::WriteString(
+      1, this->value(i), output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.CollectionDef.NodeList)
+}
+
+::google::protobuf::uint8* CollectionDef_NodeList::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.CollectionDef.NodeList)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // repeated string value = 1;
+  for (int i = 0, n = this->value_size(); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->value(i).data(), static_cast<int>(this->value(i).length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.CollectionDef.NodeList.value");
+    target = ::google::protobuf::internal::WireFormatLite::
+      WriteStringToArray(1, this->value(i), target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.CollectionDef.NodeList)
+  return target;
+}
+
+size_t CollectionDef_NodeList::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.CollectionDef.NodeList)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // repeated string value = 1;
+  total_size += 1 *
+      ::google::protobuf::internal::FromIntSize(this->value_size());
+  for (int i = 0, n = this->value_size(); i < n; i++) {
+    total_size += ::google::protobuf::internal::WireFormatLite::StringSize(
+      this->value(i));
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void CollectionDef_NodeList::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.CollectionDef.NodeList)
+  GOOGLE_DCHECK_NE(&from, this);
+  const CollectionDef_NodeList* source =
+      ::google::protobuf::DynamicCastToGenerated<CollectionDef_NodeList>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.CollectionDef.NodeList)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.CollectionDef.NodeList)
+    MergeFrom(*source);
+  }
+}
+
+void CollectionDef_NodeList::MergeFrom(const CollectionDef_NodeList& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.CollectionDef.NodeList)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  value_.MergeFrom(from.value_);
+}
+
+void CollectionDef_NodeList::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.CollectionDef.NodeList)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void CollectionDef_NodeList::CopyFrom(const CollectionDef_NodeList& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.CollectionDef.NodeList)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool CollectionDef_NodeList::IsInitialized() const {
+  return true;
+}
+
+void CollectionDef_NodeList::Swap(CollectionDef_NodeList* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    CollectionDef_NodeList* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void CollectionDef_NodeList::UnsafeArenaSwap(CollectionDef_NodeList* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void CollectionDef_NodeList::InternalSwap(CollectionDef_NodeList* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  value_.InternalSwap(CastToBase(&other->value_));
+}
+
+::google::protobuf::Metadata CollectionDef_NodeList::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+void CollectionDef_BytesList::InitAsDefaultInstance() {
+}
+class CollectionDef_BytesList::HasBitSetters {
+ public:
+};
+
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int CollectionDef_BytesList::kValueFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+CollectionDef_BytesList::CollectionDef_BytesList()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.CollectionDef.BytesList)
+}
+CollectionDef_BytesList::CollectionDef_BytesList(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena),
+  value_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.CollectionDef.BytesList)
+}
+CollectionDef_BytesList::CollectionDef_BytesList(const CollectionDef_BytesList& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL),
+      value_(from.value_) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  // @@protoc_insertion_point(copy_constructor:tensorflow.CollectionDef.BytesList)
+}
+
+void CollectionDef_BytesList::SharedCtor() {
+  ::google::protobuf::internal::InitSCC(
+      &scc_info_CollectionDef_BytesList_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto.base);
+}
+
+CollectionDef_BytesList::~CollectionDef_BytesList() {
+  // @@protoc_insertion_point(destructor:tensorflow.CollectionDef.BytesList)
+  SharedDtor();
+}
+
+void CollectionDef_BytesList::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+}
+
+void CollectionDef_BytesList::ArenaDtor(void* object) {
+  CollectionDef_BytesList* _this = reinterpret_cast< CollectionDef_BytesList* >(object);
+  (void)_this;
+}
+void CollectionDef_BytesList::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void CollectionDef_BytesList::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const CollectionDef_BytesList& CollectionDef_BytesList::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_CollectionDef_BytesList_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void CollectionDef_BytesList::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.CollectionDef.BytesList)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  value_.Clear();
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* CollectionDef_BytesList::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<CollectionDef_BytesList*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // repeated bytes value = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 10) goto handle_unusual;
+        do {
+          ptr = Varint::Parse32Inline(ptr, &size);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          parser_till_end = ::google::protobuf::internal::StringParser;
+          ::std::string* str = msg->add_value();
+          str->clear();
+          object = str;
+          if (size > end - ptr) goto len_delim_till_end;
+          str->append(ptr, size);
+          ptr += size;
+          if (ptr >= end) break;
+        } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 10 && (ptr += 1));
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool CollectionDef_BytesList::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.CollectionDef.BytesList)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // repeated bytes value = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (10 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadBytes(
+                input, this->add_value()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.CollectionDef.BytesList)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.CollectionDef.BytesList)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void CollectionDef_BytesList::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.CollectionDef.BytesList)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // repeated bytes value = 1;
+  for (int i = 0, n = this->value_size(); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::WriteBytes(
+      1, this->value(i), output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.CollectionDef.BytesList)
+}
+
+::google::protobuf::uint8* CollectionDef_BytesList::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.CollectionDef.BytesList)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // repeated bytes value = 1;
+  for (int i = 0, n = this->value_size(); i < n; i++) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      WriteBytesToArray(1, this->value(i), target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.CollectionDef.BytesList)
+  return target;
+}
+
+size_t CollectionDef_BytesList::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.CollectionDef.BytesList)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // repeated bytes value = 1;
+  total_size += 1 *
+      ::google::protobuf::internal::FromIntSize(this->value_size());
+  for (int i = 0, n = this->value_size(); i < n; i++) {
+    total_size += ::google::protobuf::internal::WireFormatLite::BytesSize(
+      this->value(i));
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void CollectionDef_BytesList::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.CollectionDef.BytesList)
+  GOOGLE_DCHECK_NE(&from, this);
+  const CollectionDef_BytesList* source =
+      ::google::protobuf::DynamicCastToGenerated<CollectionDef_BytesList>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.CollectionDef.BytesList)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.CollectionDef.BytesList)
+    MergeFrom(*source);
+  }
+}
+
+void CollectionDef_BytesList::MergeFrom(const CollectionDef_BytesList& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.CollectionDef.BytesList)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  value_.MergeFrom(from.value_);
+}
+
+void CollectionDef_BytesList::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.CollectionDef.BytesList)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void CollectionDef_BytesList::CopyFrom(const CollectionDef_BytesList& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.CollectionDef.BytesList)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool CollectionDef_BytesList::IsInitialized() const {
+  return true;
+}
+
+void CollectionDef_BytesList::Swap(CollectionDef_BytesList* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    CollectionDef_BytesList* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void CollectionDef_BytesList::UnsafeArenaSwap(CollectionDef_BytesList* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void CollectionDef_BytesList::InternalSwap(CollectionDef_BytesList* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  value_.InternalSwap(CastToBase(&other->value_));
+}
+
+::google::protobuf::Metadata CollectionDef_BytesList::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+void CollectionDef_Int64List::InitAsDefaultInstance() {
+}
+class CollectionDef_Int64List::HasBitSetters {
+ public:
+};
+
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int CollectionDef_Int64List::kValueFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+CollectionDef_Int64List::CollectionDef_Int64List()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.CollectionDef.Int64List)
+}
+CollectionDef_Int64List::CollectionDef_Int64List(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena),
+  value_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.CollectionDef.Int64List)
+}
+CollectionDef_Int64List::CollectionDef_Int64List(const CollectionDef_Int64List& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL),
+      value_(from.value_) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  // @@protoc_insertion_point(copy_constructor:tensorflow.CollectionDef.Int64List)
+}
+
+void CollectionDef_Int64List::SharedCtor() {
+}
+
+CollectionDef_Int64List::~CollectionDef_Int64List() {
+  // @@protoc_insertion_point(destructor:tensorflow.CollectionDef.Int64List)
+  SharedDtor();
+}
+
+void CollectionDef_Int64List::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+}
+
+void CollectionDef_Int64List::ArenaDtor(void* object) {
+  CollectionDef_Int64List* _this = reinterpret_cast< CollectionDef_Int64List* >(object);
+  (void)_this;
+}
+void CollectionDef_Int64List::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void CollectionDef_Int64List::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const CollectionDef_Int64List& CollectionDef_Int64List::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_CollectionDef_Int64List_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void CollectionDef_Int64List::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.CollectionDef.Int64List)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  value_.Clear();
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* CollectionDef_Int64List::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<CollectionDef_Int64List*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // repeated int64 value = 1 [packed = true];
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) == 10) {
+          ptr = Varint::Parse32Inline(ptr, &size);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          parser_till_end = ::google::protobuf::internal::PackedInt64Parser;
+          object = msg->mutable_value();
+          if (size > end - ptr) goto len_delim_till_end;
+          auto newend = ptr + size;
+          if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+          break;
+        } else if (static_cast<::google::protobuf::uint8>(tag) != 8) goto handle_unusual;
+        do {
+          ::google::protobuf::uint64 val;
+          ptr = Varint::Parse64(ptr, &val);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          ::google::protobuf::int64 value = val;
+          msg->add_value(value);
+          if (ptr >= end) break;
+        } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 8 && (ptr += 1));
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool CollectionDef_Int64List::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.CollectionDef.Int64List)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // repeated int64 value = 1 [packed = true];
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (10 & 0xFF)) {
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPackedPrimitive<
+                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>(
+                 input, this->mutable_value())));
+        } else if (static_cast< ::google::protobuf::uint8>(tag) == (8 & 0xFF)) {
+          DO_((::google::protobuf::internal::WireFormatLite::ReadRepeatedPrimitiveNoInline<
+                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>(
+                 1, 10u, input, this->mutable_value())));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.CollectionDef.Int64List)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.CollectionDef.Int64List)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void CollectionDef_Int64List::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.CollectionDef.Int64List)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // repeated int64 value = 1 [packed = true];
+  if (this->value_size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteTag(1, ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED, output);
+    output->WriteVarint32(_value_cached_byte_size_.load(
+        std::memory_order_relaxed));
+  }
+  for (int i = 0, n = this->value_size(); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt64NoTag(
+      this->value(i), output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.CollectionDef.Int64List)
+}
+
+::google::protobuf::uint8* CollectionDef_Int64List::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.CollectionDef.Int64List)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // repeated int64 value = 1 [packed = true];
+  if (this->value_size() > 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteTagToArray(
+      1,
+      ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED,
+      target);
+    target = ::google::protobuf::io::CodedOutputStream::WriteVarint32ToArray(
+        _value_cached_byte_size_.load(std::memory_order_relaxed),
+         target);
+    target = ::google::protobuf::internal::WireFormatLite::
+      WriteInt64NoTagToArray(this->value_, target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.CollectionDef.Int64List)
+  return target;
+}
+
+size_t CollectionDef_Int64List::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.CollectionDef.Int64List)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // repeated int64 value = 1 [packed = true];
+  {
+    size_t data_size = ::google::protobuf::internal::WireFormatLite::
+      Int64Size(this->value_);
+    if (data_size > 0) {
+      total_size += 1 +
+        ::google::protobuf::internal::WireFormatLite::Int32Size(
+            static_cast<::google::protobuf::int32>(data_size));
+    }
+    int cached_size = ::google::protobuf::internal::ToCachedSize(data_size);
+    _value_cached_byte_size_.store(cached_size,
+                                    std::memory_order_relaxed);
+    total_size += data_size;
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void CollectionDef_Int64List::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.CollectionDef.Int64List)
+  GOOGLE_DCHECK_NE(&from, this);
+  const CollectionDef_Int64List* source =
+      ::google::protobuf::DynamicCastToGenerated<CollectionDef_Int64List>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.CollectionDef.Int64List)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.CollectionDef.Int64List)
+    MergeFrom(*source);
+  }
+}
+
+void CollectionDef_Int64List::MergeFrom(const CollectionDef_Int64List& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.CollectionDef.Int64List)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  value_.MergeFrom(from.value_);
+}
+
+void CollectionDef_Int64List::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.CollectionDef.Int64List)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void CollectionDef_Int64List::CopyFrom(const CollectionDef_Int64List& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.CollectionDef.Int64List)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool CollectionDef_Int64List::IsInitialized() const {
+  return true;
+}
+
+void CollectionDef_Int64List::Swap(CollectionDef_Int64List* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    CollectionDef_Int64List* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void CollectionDef_Int64List::UnsafeArenaSwap(CollectionDef_Int64List* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void CollectionDef_Int64List::InternalSwap(CollectionDef_Int64List* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  value_.InternalSwap(&other->value_);
+}
+
+::google::protobuf::Metadata CollectionDef_Int64List::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+void CollectionDef_FloatList::InitAsDefaultInstance() {
+}
+class CollectionDef_FloatList::HasBitSetters {
+ public:
+};
+
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int CollectionDef_FloatList::kValueFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+CollectionDef_FloatList::CollectionDef_FloatList()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.CollectionDef.FloatList)
+}
+CollectionDef_FloatList::CollectionDef_FloatList(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena),
+  value_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.CollectionDef.FloatList)
+}
+CollectionDef_FloatList::CollectionDef_FloatList(const CollectionDef_FloatList& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL),
+      value_(from.value_) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  // @@protoc_insertion_point(copy_constructor:tensorflow.CollectionDef.FloatList)
+}
+
+void CollectionDef_FloatList::SharedCtor() {
+}
+
+CollectionDef_FloatList::~CollectionDef_FloatList() {
+  // @@protoc_insertion_point(destructor:tensorflow.CollectionDef.FloatList)
+  SharedDtor();
+}
+
+void CollectionDef_FloatList::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+}
+
+void CollectionDef_FloatList::ArenaDtor(void* object) {
+  CollectionDef_FloatList* _this = reinterpret_cast< CollectionDef_FloatList* >(object);
+  (void)_this;
+}
+void CollectionDef_FloatList::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void CollectionDef_FloatList::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const CollectionDef_FloatList& CollectionDef_FloatList::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_CollectionDef_FloatList_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void CollectionDef_FloatList::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.CollectionDef.FloatList)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  value_.Clear();
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* CollectionDef_FloatList::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<CollectionDef_FloatList*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // repeated float value = 1 [packed = true];
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) == 10) {
+          ptr = Varint::Parse32Inline(ptr, &size);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          parser_till_end = ::google::protobuf::internal::PackedFloatParser;
+          object = msg->mutable_value();
+          if (size > end - ptr) goto len_delim_till_end;
+          auto newend = ptr + size;
+          if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+          break;
+        } else if (static_cast<::google::protobuf::uint8>(tag) != 13) goto handle_unusual;
+        do {
+          float val;
+          std::memcpy(&val, ptr, 4);
+          ptr += 4;
+          msg->add_value(val);
+          if (ptr >= end) break;
+        } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 13 && (ptr += 1));
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool CollectionDef_FloatList::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.CollectionDef.FloatList)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // repeated float value = 1 [packed = true];
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (10 & 0xFF)) {
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPackedPrimitive<
+                   float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>(
+                 input, this->mutable_value())));
+        } else if (static_cast< ::google::protobuf::uint8>(tag) == (13 & 0xFF)) {
+          DO_((::google::protobuf::internal::WireFormatLite::ReadRepeatedPrimitiveNoInline<
+                   float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>(
+                 1, 10u, input, this->mutable_value())));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.CollectionDef.FloatList)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.CollectionDef.FloatList)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void CollectionDef_FloatList::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.CollectionDef.FloatList)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // repeated float value = 1 [packed = true];
+  if (this->value_size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteTag(1, ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED, output);
+    output->WriteVarint32(_value_cached_byte_size_.load(
+        std::memory_order_relaxed));
+    ::google::protobuf::internal::WireFormatLite::WriteFloatArray(
+      this->value().data(), this->value_size(), output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.CollectionDef.FloatList)
+}
+
+::google::protobuf::uint8* CollectionDef_FloatList::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.CollectionDef.FloatList)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // repeated float value = 1 [packed = true];
+  if (this->value_size() > 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteTagToArray(
+      1,
+      ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED,
+      target);
+    target = ::google::protobuf::io::CodedOutputStream::WriteVarint32ToArray(
+        _value_cached_byte_size_.load(std::memory_order_relaxed),
+         target);
+    target = ::google::protobuf::internal::WireFormatLite::
+      WriteFloatNoTagToArray(this->value_, target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.CollectionDef.FloatList)
+  return target;
+}
+
+size_t CollectionDef_FloatList::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.CollectionDef.FloatList)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // repeated float value = 1 [packed = true];
+  {
+    unsigned int count = static_cast<unsigned int>(this->value_size());
+    size_t data_size = 4UL * count;
+    if (data_size > 0) {
+      total_size += 1 +
+        ::google::protobuf::internal::WireFormatLite::Int32Size(
+            static_cast<::google::protobuf::int32>(data_size));
+    }
+    int cached_size = ::google::protobuf::internal::ToCachedSize(data_size);
+    _value_cached_byte_size_.store(cached_size,
+                                    std::memory_order_relaxed);
+    total_size += data_size;
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void CollectionDef_FloatList::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.CollectionDef.FloatList)
+  GOOGLE_DCHECK_NE(&from, this);
+  const CollectionDef_FloatList* source =
+      ::google::protobuf::DynamicCastToGenerated<CollectionDef_FloatList>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.CollectionDef.FloatList)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.CollectionDef.FloatList)
+    MergeFrom(*source);
+  }
+}
+
+void CollectionDef_FloatList::MergeFrom(const CollectionDef_FloatList& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.CollectionDef.FloatList)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  value_.MergeFrom(from.value_);
+}
+
+void CollectionDef_FloatList::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.CollectionDef.FloatList)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void CollectionDef_FloatList::CopyFrom(const CollectionDef_FloatList& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.CollectionDef.FloatList)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool CollectionDef_FloatList::IsInitialized() const {
+  return true;
+}
+
+void CollectionDef_FloatList::Swap(CollectionDef_FloatList* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    CollectionDef_FloatList* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void CollectionDef_FloatList::UnsafeArenaSwap(CollectionDef_FloatList* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void CollectionDef_FloatList::InternalSwap(CollectionDef_FloatList* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  value_.InternalSwap(&other->value_);
+}
+
+::google::protobuf::Metadata CollectionDef_FloatList::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+void CollectionDef_AnyList::InitAsDefaultInstance() {
+}
+class CollectionDef_AnyList::HasBitSetters {
+ public:
+};
+
+void CollectionDef_AnyList::clear_value() {
+  value_.Clear();
+}
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int CollectionDef_AnyList::kValueFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+CollectionDef_AnyList::CollectionDef_AnyList()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.CollectionDef.AnyList)
+}
+CollectionDef_AnyList::CollectionDef_AnyList(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena),
+  value_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.CollectionDef.AnyList)
+}
+CollectionDef_AnyList::CollectionDef_AnyList(const CollectionDef_AnyList& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL),
+      value_(from.value_) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  // @@protoc_insertion_point(copy_constructor:tensorflow.CollectionDef.AnyList)
+}
+
+void CollectionDef_AnyList::SharedCtor() {
+  ::google::protobuf::internal::InitSCC(
+      &scc_info_CollectionDef_AnyList_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto.base);
+}
+
+CollectionDef_AnyList::~CollectionDef_AnyList() {
+  // @@protoc_insertion_point(destructor:tensorflow.CollectionDef.AnyList)
+  SharedDtor();
+}
+
+void CollectionDef_AnyList::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+}
+
+void CollectionDef_AnyList::ArenaDtor(void* object) {
+  CollectionDef_AnyList* _this = reinterpret_cast< CollectionDef_AnyList* >(object);
+  (void)_this;
+}
+void CollectionDef_AnyList::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void CollectionDef_AnyList::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const CollectionDef_AnyList& CollectionDef_AnyList::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_CollectionDef_AnyList_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void CollectionDef_AnyList::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.CollectionDef.AnyList)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  value_.Clear();
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* CollectionDef_AnyList::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<CollectionDef_AnyList*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // repeated .google.protobuf.Any value = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 10) goto handle_unusual;
+        do {
+          ptr = Varint::Parse32Inline(ptr, &size);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          parser_till_end = ::google::protobuf::Any::_InternalParse;
+          object = msg->add_value();
+          if (size > end - ptr) goto len_delim_till_end;
+          auto newend = ptr + size;
+          bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                         ptr, newend);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          ptr = newend;
+          if (ptr >= end) break;
+        } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 10 && (ptr += 1));
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool CollectionDef_AnyList::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.CollectionDef.AnyList)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // repeated .google.protobuf.Any value = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (10 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+                input, add_value()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.CollectionDef.AnyList)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.CollectionDef.AnyList)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void CollectionDef_AnyList::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.CollectionDef.AnyList)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // repeated .google.protobuf.Any value = 1;
+  for (unsigned int i = 0,
+      n = static_cast<unsigned int>(this->value_size()); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      1,
+      this->value(static_cast<int>(i)),
+      output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.CollectionDef.AnyList)
+}
+
+::google::protobuf::uint8* CollectionDef_AnyList::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.CollectionDef.AnyList)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // repeated .google.protobuf.Any value = 1;
+  for (unsigned int i = 0,
+      n = static_cast<unsigned int>(this->value_size()); i < n; i++) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        1, this->value(static_cast<int>(i)), deterministic, target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.CollectionDef.AnyList)
+  return target;
+}
+
+size_t CollectionDef_AnyList::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.CollectionDef.AnyList)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // repeated .google.protobuf.Any value = 1;
+  {
+    unsigned int count = static_cast<unsigned int>(this->value_size());
+    total_size += 1UL * count;
+    for (unsigned int i = 0; i < count; i++) {
+      total_size +=
+        ::google::protobuf::internal::WireFormatLite::MessageSize(
+          this->value(static_cast<int>(i)));
+    }
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void CollectionDef_AnyList::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.CollectionDef.AnyList)
+  GOOGLE_DCHECK_NE(&from, this);
+  const CollectionDef_AnyList* source =
+      ::google::protobuf::DynamicCastToGenerated<CollectionDef_AnyList>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.CollectionDef.AnyList)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.CollectionDef.AnyList)
+    MergeFrom(*source);
+  }
+}
+
+void CollectionDef_AnyList::MergeFrom(const CollectionDef_AnyList& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.CollectionDef.AnyList)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  value_.MergeFrom(from.value_);
+}
+
+void CollectionDef_AnyList::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.CollectionDef.AnyList)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void CollectionDef_AnyList::CopyFrom(const CollectionDef_AnyList& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.CollectionDef.AnyList)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool CollectionDef_AnyList::IsInitialized() const {
+  return true;
+}
+
+void CollectionDef_AnyList::Swap(CollectionDef_AnyList* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    CollectionDef_AnyList* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void CollectionDef_AnyList::UnsafeArenaSwap(CollectionDef_AnyList* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void CollectionDef_AnyList::InternalSwap(CollectionDef_AnyList* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  CastToBase(&value_)->InternalSwap(CastToBase(&other->value_));
+}
+
+::google::protobuf::Metadata CollectionDef_AnyList::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+void CollectionDef::InitAsDefaultInstance() {
+  ::tensorflow::_CollectionDef_default_instance_.node_list_ = const_cast< ::tensorflow::CollectionDef_NodeList*>(
+      ::tensorflow::CollectionDef_NodeList::internal_default_instance());
+  ::tensorflow::_CollectionDef_default_instance_.bytes_list_ = const_cast< ::tensorflow::CollectionDef_BytesList*>(
+      ::tensorflow::CollectionDef_BytesList::internal_default_instance());
+  ::tensorflow::_CollectionDef_default_instance_.int64_list_ = const_cast< ::tensorflow::CollectionDef_Int64List*>(
+      ::tensorflow::CollectionDef_Int64List::internal_default_instance());
+  ::tensorflow::_CollectionDef_default_instance_.float_list_ = const_cast< ::tensorflow::CollectionDef_FloatList*>(
+      ::tensorflow::CollectionDef_FloatList::internal_default_instance());
+  ::tensorflow::_CollectionDef_default_instance_.any_list_ = const_cast< ::tensorflow::CollectionDef_AnyList*>(
+      ::tensorflow::CollectionDef_AnyList::internal_default_instance());
+}
+class CollectionDef::HasBitSetters {
+ public:
+  static const ::tensorflow::CollectionDef_NodeList& node_list(const CollectionDef* msg);
+  static const ::tensorflow::CollectionDef_BytesList& bytes_list(const CollectionDef* msg);
+  static const ::tensorflow::CollectionDef_Int64List& int64_list(const CollectionDef* msg);
+  static const ::tensorflow::CollectionDef_FloatList& float_list(const CollectionDef* msg);
+  static const ::tensorflow::CollectionDef_AnyList& any_list(const CollectionDef* msg);
+};
+
+const ::tensorflow::CollectionDef_NodeList&
+CollectionDef::HasBitSetters::node_list(const CollectionDef* msg) {
+  return *msg->kind_.node_list_;
+}
+const ::tensorflow::CollectionDef_BytesList&
+CollectionDef::HasBitSetters::bytes_list(const CollectionDef* msg) {
+  return *msg->kind_.bytes_list_;
+}
+const ::tensorflow::CollectionDef_Int64List&
+CollectionDef::HasBitSetters::int64_list(const CollectionDef* msg) {
+  return *msg->kind_.int64_list_;
+}
+const ::tensorflow::CollectionDef_FloatList&
+CollectionDef::HasBitSetters::float_list(const CollectionDef* msg) {
+  return *msg->kind_.float_list_;
+}
+const ::tensorflow::CollectionDef_AnyList&
+CollectionDef::HasBitSetters::any_list(const CollectionDef* msg) {
+  return *msg->kind_.any_list_;
+}
+void CollectionDef::set_allocated_node_list(::tensorflow::CollectionDef_NodeList* node_list) {
+  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
+  clear_kind();
+  if (node_list) {
+    ::google::protobuf::Arena* submessage_arena =
+      ::google::protobuf::Arena::GetArena(node_list);
+    if (message_arena != submessage_arena) {
+      node_list = ::google::protobuf::internal::GetOwnedMessage(
+          message_arena, node_list, submessage_arena);
+    }
+    set_has_node_list();
+    kind_.node_list_ = node_list;
+  }
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.CollectionDef.node_list)
+}
+void CollectionDef::set_allocated_bytes_list(::tensorflow::CollectionDef_BytesList* bytes_list) {
+  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
+  clear_kind();
+  if (bytes_list) {
+    ::google::protobuf::Arena* submessage_arena =
+      ::google::protobuf::Arena::GetArena(bytes_list);
+    if (message_arena != submessage_arena) {
+      bytes_list = ::google::protobuf::internal::GetOwnedMessage(
+          message_arena, bytes_list, submessage_arena);
+    }
+    set_has_bytes_list();
+    kind_.bytes_list_ = bytes_list;
+  }
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.CollectionDef.bytes_list)
+}
+void CollectionDef::set_allocated_int64_list(::tensorflow::CollectionDef_Int64List* int64_list) {
+  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
+  clear_kind();
+  if (int64_list) {
+    ::google::protobuf::Arena* submessage_arena =
+      ::google::protobuf::Arena::GetArena(int64_list);
+    if (message_arena != submessage_arena) {
+      int64_list = ::google::protobuf::internal::GetOwnedMessage(
+          message_arena, int64_list, submessage_arena);
+    }
+    set_has_int64_list();
+    kind_.int64_list_ = int64_list;
+  }
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.CollectionDef.int64_list)
+}
+void CollectionDef::set_allocated_float_list(::tensorflow::CollectionDef_FloatList* float_list) {
+  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
+  clear_kind();
+  if (float_list) {
+    ::google::protobuf::Arena* submessage_arena =
+      ::google::protobuf::Arena::GetArena(float_list);
+    if (message_arena != submessage_arena) {
+      float_list = ::google::protobuf::internal::GetOwnedMessage(
+          message_arena, float_list, submessage_arena);
+    }
+    set_has_float_list();
+    kind_.float_list_ = float_list;
+  }
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.CollectionDef.float_list)
+}
+void CollectionDef::set_allocated_any_list(::tensorflow::CollectionDef_AnyList* any_list) {
+  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
+  clear_kind();
+  if (any_list) {
+    ::google::protobuf::Arena* submessage_arena =
+      ::google::protobuf::Arena::GetArena(any_list);
+    if (message_arena != submessage_arena) {
+      any_list = ::google::protobuf::internal::GetOwnedMessage(
+          message_arena, any_list, submessage_arena);
+    }
+    set_has_any_list();
+    kind_.any_list_ = any_list;
+  }
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.CollectionDef.any_list)
+}
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int CollectionDef::kNodeListFieldNumber;
+const int CollectionDef::kBytesListFieldNumber;
+const int CollectionDef::kInt64ListFieldNumber;
+const int CollectionDef::kFloatListFieldNumber;
+const int CollectionDef::kAnyListFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+CollectionDef::CollectionDef()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.CollectionDef)
+}
+CollectionDef::CollectionDef(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.CollectionDef)
+}
+CollectionDef::CollectionDef(const CollectionDef& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  clear_has_kind();
+  switch (from.kind_case()) {
+    case kNodeList: {
+      mutable_node_list()->::tensorflow::CollectionDef_NodeList::MergeFrom(from.node_list());
+      break;
+    }
+    case kBytesList: {
+      mutable_bytes_list()->::tensorflow::CollectionDef_BytesList::MergeFrom(from.bytes_list());
+      break;
+    }
+    case kInt64List: {
+      mutable_int64_list()->::tensorflow::CollectionDef_Int64List::MergeFrom(from.int64_list());
+      break;
+    }
+    case kFloatList: {
+      mutable_float_list()->::tensorflow::CollectionDef_FloatList::MergeFrom(from.float_list());
+      break;
+    }
+    case kAnyList: {
+      mutable_any_list()->::tensorflow::CollectionDef_AnyList::MergeFrom(from.any_list());
+      break;
+    }
+    case KIND_NOT_SET: {
+      break;
+    }
+  }
+  // @@protoc_insertion_point(copy_constructor:tensorflow.CollectionDef)
+}
+
+void CollectionDef::SharedCtor() {
+  ::google::protobuf::internal::InitSCC(
+      &scc_info_CollectionDef_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto.base);
+  clear_has_kind();
+}
+
+CollectionDef::~CollectionDef() {
+  // @@protoc_insertion_point(destructor:tensorflow.CollectionDef)
+  SharedDtor();
+}
+
+void CollectionDef::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+  if (has_kind()) {
+    clear_kind();
+  }
+}
+
+void CollectionDef::ArenaDtor(void* object) {
+  CollectionDef* _this = reinterpret_cast< CollectionDef* >(object);
+  (void)_this;
+}
+void CollectionDef::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void CollectionDef::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const CollectionDef& CollectionDef::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_CollectionDef_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void CollectionDef::clear_kind() {
+// @@protoc_insertion_point(one_of_clear_start:tensorflow.CollectionDef)
+  switch (kind_case()) {
+    case kNodeList: {
+      if (GetArenaNoVirtual() == NULL) {
+        delete kind_.node_list_;
+      }
+      break;
+    }
+    case kBytesList: {
+      if (GetArenaNoVirtual() == NULL) {
+        delete kind_.bytes_list_;
+      }
+      break;
+    }
+    case kInt64List: {
+      if (GetArenaNoVirtual() == NULL) {
+        delete kind_.int64_list_;
+      }
+      break;
+    }
+    case kFloatList: {
+      if (GetArenaNoVirtual() == NULL) {
+        delete kind_.float_list_;
+      }
+      break;
+    }
+    case kAnyList: {
+      if (GetArenaNoVirtual() == NULL) {
+        delete kind_.any_list_;
+      }
+      break;
+    }
+    case KIND_NOT_SET: {
+      break;
+    }
+  }
+  _oneof_case_[0] = KIND_NOT_SET;
+}
+
+
+void CollectionDef::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.CollectionDef)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  clear_kind();
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* CollectionDef::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<CollectionDef*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // .tensorflow.CollectionDef.NodeList node_list = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 10) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        parser_till_end = ::tensorflow::CollectionDef_NodeList::_InternalParse;
+        object = msg->mutable_node_list();
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                       ptr, newend);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+        ptr = newend;
+        break;
+      }
+      // .tensorflow.CollectionDef.BytesList bytes_list = 2;
+      case 2: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 18) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        parser_till_end = ::tensorflow::CollectionDef_BytesList::_InternalParse;
+        object = msg->mutable_bytes_list();
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                       ptr, newend);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+        ptr = newend;
+        break;
+      }
+      // .tensorflow.CollectionDef.Int64List int64_list = 3;
+      case 3: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 26) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        parser_till_end = ::tensorflow::CollectionDef_Int64List::_InternalParse;
+        object = msg->mutable_int64_list();
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                       ptr, newend);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+        ptr = newend;
+        break;
+      }
+      // .tensorflow.CollectionDef.FloatList float_list = 4;
+      case 4: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 34) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        parser_till_end = ::tensorflow::CollectionDef_FloatList::_InternalParse;
+        object = msg->mutable_float_list();
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                       ptr, newend);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+        ptr = newend;
+        break;
+      }
+      // .tensorflow.CollectionDef.AnyList any_list = 5;
+      case 5: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 42) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        parser_till_end = ::tensorflow::CollectionDef_AnyList::_InternalParse;
+        object = msg->mutable_any_list();
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                       ptr, newend);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+        ptr = newend;
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool CollectionDef::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.CollectionDef)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // .tensorflow.CollectionDef.NodeList node_list = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (10 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+               input, mutable_node_list()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // .tensorflow.CollectionDef.BytesList bytes_list = 2;
+      case 2: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (18 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+               input, mutable_bytes_list()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // .tensorflow.CollectionDef.Int64List int64_list = 3;
+      case 3: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (26 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+               input, mutable_int64_list()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // .tensorflow.CollectionDef.FloatList float_list = 4;
+      case 4: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (34 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+               input, mutable_float_list()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // .tensorflow.CollectionDef.AnyList any_list = 5;
+      case 5: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (42 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+               input, mutable_any_list()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.CollectionDef)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.CollectionDef)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void CollectionDef::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.CollectionDef)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // .tensorflow.CollectionDef.NodeList node_list = 1;
+  if (has_node_list()) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      1, HasBitSetters::node_list(this), output);
+  }
+
+  // .tensorflow.CollectionDef.BytesList bytes_list = 2;
+  if (has_bytes_list()) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      2, HasBitSetters::bytes_list(this), output);
+  }
+
+  // .tensorflow.CollectionDef.Int64List int64_list = 3;
+  if (has_int64_list()) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      3, HasBitSetters::int64_list(this), output);
+  }
+
+  // .tensorflow.CollectionDef.FloatList float_list = 4;
+  if (has_float_list()) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      4, HasBitSetters::float_list(this), output);
+  }
+
+  // .tensorflow.CollectionDef.AnyList any_list = 5;
+  if (has_any_list()) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      5, HasBitSetters::any_list(this), output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.CollectionDef)
+}
+
+::google::protobuf::uint8* CollectionDef::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.CollectionDef)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // .tensorflow.CollectionDef.NodeList node_list = 1;
+  if (has_node_list()) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        1, HasBitSetters::node_list(this), deterministic, target);
+  }
+
+  // .tensorflow.CollectionDef.BytesList bytes_list = 2;
+  if (has_bytes_list()) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        2, HasBitSetters::bytes_list(this), deterministic, target);
+  }
+
+  // .tensorflow.CollectionDef.Int64List int64_list = 3;
+  if (has_int64_list()) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        3, HasBitSetters::int64_list(this), deterministic, target);
+  }
+
+  // .tensorflow.CollectionDef.FloatList float_list = 4;
+  if (has_float_list()) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        4, HasBitSetters::float_list(this), deterministic, target);
+  }
+
+  // .tensorflow.CollectionDef.AnyList any_list = 5;
+  if (has_any_list()) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        5, HasBitSetters::any_list(this), deterministic, target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.CollectionDef)
+  return target;
+}
+
+size_t CollectionDef::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.CollectionDef)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  switch (kind_case()) {
+    // .tensorflow.CollectionDef.NodeList node_list = 1;
+    case kNodeList: {
+      total_size += 1 +
+        ::google::protobuf::internal::WireFormatLite::MessageSize(
+          *kind_.node_list_);
+      break;
+    }
+    // .tensorflow.CollectionDef.BytesList bytes_list = 2;
+    case kBytesList: {
+      total_size += 1 +
+        ::google::protobuf::internal::WireFormatLite::MessageSize(
+          *kind_.bytes_list_);
+      break;
+    }
+    // .tensorflow.CollectionDef.Int64List int64_list = 3;
+    case kInt64List: {
+      total_size += 1 +
+        ::google::protobuf::internal::WireFormatLite::MessageSize(
+          *kind_.int64_list_);
+      break;
+    }
+    // .tensorflow.CollectionDef.FloatList float_list = 4;
+    case kFloatList: {
+      total_size += 1 +
+        ::google::protobuf::internal::WireFormatLite::MessageSize(
+          *kind_.float_list_);
+      break;
+    }
+    // .tensorflow.CollectionDef.AnyList any_list = 5;
+    case kAnyList: {
+      total_size += 1 +
+        ::google::protobuf::internal::WireFormatLite::MessageSize(
+          *kind_.any_list_);
+      break;
+    }
+    case KIND_NOT_SET: {
+      break;
+    }
+  }
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void CollectionDef::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.CollectionDef)
+  GOOGLE_DCHECK_NE(&from, this);
+  const CollectionDef* source =
+      ::google::protobuf::DynamicCastToGenerated<CollectionDef>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.CollectionDef)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.CollectionDef)
+    MergeFrom(*source);
+  }
+}
+
+void CollectionDef::MergeFrom(const CollectionDef& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.CollectionDef)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  switch (from.kind_case()) {
+    case kNodeList: {
+      mutable_node_list()->::tensorflow::CollectionDef_NodeList::MergeFrom(from.node_list());
+      break;
+    }
+    case kBytesList: {
+      mutable_bytes_list()->::tensorflow::CollectionDef_BytesList::MergeFrom(from.bytes_list());
+      break;
+    }
+    case kInt64List: {
+      mutable_int64_list()->::tensorflow::CollectionDef_Int64List::MergeFrom(from.int64_list());
+      break;
+    }
+    case kFloatList: {
+      mutable_float_list()->::tensorflow::CollectionDef_FloatList::MergeFrom(from.float_list());
+      break;
+    }
+    case kAnyList: {
+      mutable_any_list()->::tensorflow::CollectionDef_AnyList::MergeFrom(from.any_list());
+      break;
+    }
+    case KIND_NOT_SET: {
+      break;
+    }
+  }
+}
+
+void CollectionDef::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.CollectionDef)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void CollectionDef::CopyFrom(const CollectionDef& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.CollectionDef)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool CollectionDef::IsInitialized() const {
+  return true;
+}
+
+void CollectionDef::Swap(CollectionDef* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    CollectionDef* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void CollectionDef::UnsafeArenaSwap(CollectionDef* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void CollectionDef::InternalSwap(CollectionDef* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  swap(kind_, other->kind_);
+  swap(_oneof_case_[0], other->_oneof_case_[0]);
+}
+
+::google::protobuf::Metadata CollectionDef::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+void TensorInfo_CooSparse::InitAsDefaultInstance() {
+}
+class TensorInfo_CooSparse::HasBitSetters {
+ public:
+};
+
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int TensorInfo_CooSparse::kValuesTensorNameFieldNumber;
+const int TensorInfo_CooSparse::kIndicesTensorNameFieldNumber;
+const int TensorInfo_CooSparse::kDenseShapeTensorNameFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+TensorInfo_CooSparse::TensorInfo_CooSparse()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.TensorInfo.CooSparse)
+}
+TensorInfo_CooSparse::TensorInfo_CooSparse(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.TensorInfo.CooSparse)
+}
+TensorInfo_CooSparse::TensorInfo_CooSparse(const TensorInfo_CooSparse& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  values_tensor_name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.values_tensor_name().size() > 0) {
+    values_tensor_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.values_tensor_name(),
+      GetArenaNoVirtual());
+  }
+  indices_tensor_name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.indices_tensor_name().size() > 0) {
+    indices_tensor_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.indices_tensor_name(),
+      GetArenaNoVirtual());
+  }
+  dense_shape_tensor_name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.dense_shape_tensor_name().size() > 0) {
+    dense_shape_tensor_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.dense_shape_tensor_name(),
+      GetArenaNoVirtual());
+  }
+  // @@protoc_insertion_point(copy_constructor:tensorflow.TensorInfo.CooSparse)
+}
+
+void TensorInfo_CooSparse::SharedCtor() {
+  ::google::protobuf::internal::InitSCC(
+      &scc_info_TensorInfo_CooSparse_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto.base);
+  values_tensor_name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  indices_tensor_name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  dense_shape_tensor_name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+
+TensorInfo_CooSparse::~TensorInfo_CooSparse() {
+  // @@protoc_insertion_point(destructor:tensorflow.TensorInfo.CooSparse)
+  SharedDtor();
+}
+
+void TensorInfo_CooSparse::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+  values_tensor_name_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  indices_tensor_name_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  dense_shape_tensor_name_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+
+void TensorInfo_CooSparse::ArenaDtor(void* object) {
+  TensorInfo_CooSparse* _this = reinterpret_cast< TensorInfo_CooSparse* >(object);
+  (void)_this;
+}
+void TensorInfo_CooSparse::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void TensorInfo_CooSparse::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const TensorInfo_CooSparse& TensorInfo_CooSparse::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_TensorInfo_CooSparse_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void TensorInfo_CooSparse::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.TensorInfo.CooSparse)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  values_tensor_name_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+  indices_tensor_name_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+  dense_shape_tensor_name_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* TensorInfo_CooSparse::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<TensorInfo_CooSparse*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // string values_tensor_name = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 10) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("tensorflow.TensorInfo.CooSparse.values_tensor_name");
+        parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+        ::std::string* str = msg->mutable_values_tensor_name();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+        break;
+      }
+      // string indices_tensor_name = 2;
+      case 2: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 18) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("tensorflow.TensorInfo.CooSparse.indices_tensor_name");
+        parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+        ::std::string* str = msg->mutable_indices_tensor_name();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+        break;
+      }
+      // string dense_shape_tensor_name = 3;
+      case 3: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 26) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("tensorflow.TensorInfo.CooSparse.dense_shape_tensor_name");
+        parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+        ::std::string* str = msg->mutable_dense_shape_tensor_name();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool TensorInfo_CooSparse::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.TensorInfo.CooSparse)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // string values_tensor_name = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (10 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_values_tensor_name()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->values_tensor_name().data(), static_cast<int>(this->values_tensor_name().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.TensorInfo.CooSparse.values_tensor_name"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // string indices_tensor_name = 2;
+      case 2: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (18 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_indices_tensor_name()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->indices_tensor_name().data(), static_cast<int>(this->indices_tensor_name().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.TensorInfo.CooSparse.indices_tensor_name"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // string dense_shape_tensor_name = 3;
+      case 3: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (26 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_dense_shape_tensor_name()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->dense_shape_tensor_name().data(), static_cast<int>(this->dense_shape_tensor_name().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.TensorInfo.CooSparse.dense_shape_tensor_name"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.TensorInfo.CooSparse)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.TensorInfo.CooSparse)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void TensorInfo_CooSparse::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.TensorInfo.CooSparse)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // string values_tensor_name = 1;
+  if (this->values_tensor_name().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->values_tensor_name().data(), static_cast<int>(this->values_tensor_name().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.TensorInfo.CooSparse.values_tensor_name");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      1, this->values_tensor_name(), output);
+  }
+
+  // string indices_tensor_name = 2;
+  if (this->indices_tensor_name().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->indices_tensor_name().data(), static_cast<int>(this->indices_tensor_name().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.TensorInfo.CooSparse.indices_tensor_name");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      2, this->indices_tensor_name(), output);
+  }
+
+  // string dense_shape_tensor_name = 3;
+  if (this->dense_shape_tensor_name().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->dense_shape_tensor_name().data(), static_cast<int>(this->dense_shape_tensor_name().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.TensorInfo.CooSparse.dense_shape_tensor_name");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      3, this->dense_shape_tensor_name(), output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.TensorInfo.CooSparse)
+}
+
+::google::protobuf::uint8* TensorInfo_CooSparse::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.TensorInfo.CooSparse)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // string values_tensor_name = 1;
+  if (this->values_tensor_name().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->values_tensor_name().data(), static_cast<int>(this->values_tensor_name().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.TensorInfo.CooSparse.values_tensor_name");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        1, this->values_tensor_name(), target);
+  }
+
+  // string indices_tensor_name = 2;
+  if (this->indices_tensor_name().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->indices_tensor_name().data(), static_cast<int>(this->indices_tensor_name().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.TensorInfo.CooSparse.indices_tensor_name");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        2, this->indices_tensor_name(), target);
+  }
+
+  // string dense_shape_tensor_name = 3;
+  if (this->dense_shape_tensor_name().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->dense_shape_tensor_name().data(), static_cast<int>(this->dense_shape_tensor_name().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.TensorInfo.CooSparse.dense_shape_tensor_name");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        3, this->dense_shape_tensor_name(), target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.TensorInfo.CooSparse)
+  return target;
+}
+
+size_t TensorInfo_CooSparse::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.TensorInfo.CooSparse)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // string values_tensor_name = 1;
+  if (this->values_tensor_name().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->values_tensor_name());
+  }
+
+  // string indices_tensor_name = 2;
+  if (this->indices_tensor_name().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->indices_tensor_name());
+  }
+
+  // string dense_shape_tensor_name = 3;
+  if (this->dense_shape_tensor_name().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->dense_shape_tensor_name());
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void TensorInfo_CooSparse::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.TensorInfo.CooSparse)
+  GOOGLE_DCHECK_NE(&from, this);
+  const TensorInfo_CooSparse* source =
+      ::google::protobuf::DynamicCastToGenerated<TensorInfo_CooSparse>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.TensorInfo.CooSparse)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.TensorInfo.CooSparse)
+    MergeFrom(*source);
+  }
+}
+
+void TensorInfo_CooSparse::MergeFrom(const TensorInfo_CooSparse& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.TensorInfo.CooSparse)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  if (from.values_tensor_name().size() > 0) {
+    set_values_tensor_name(from.values_tensor_name());
+  }
+  if (from.indices_tensor_name().size() > 0) {
+    set_indices_tensor_name(from.indices_tensor_name());
+  }
+  if (from.dense_shape_tensor_name().size() > 0) {
+    set_dense_shape_tensor_name(from.dense_shape_tensor_name());
+  }
+}
+
+void TensorInfo_CooSparse::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.TensorInfo.CooSparse)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void TensorInfo_CooSparse::CopyFrom(const TensorInfo_CooSparse& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.TensorInfo.CooSparse)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool TensorInfo_CooSparse::IsInitialized() const {
+  return true;
+}
+
+void TensorInfo_CooSparse::Swap(TensorInfo_CooSparse* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    TensorInfo_CooSparse* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void TensorInfo_CooSparse::UnsafeArenaSwap(TensorInfo_CooSparse* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void TensorInfo_CooSparse::InternalSwap(TensorInfo_CooSparse* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  values_tensor_name_.Swap(&other->values_tensor_name_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+  indices_tensor_name_.Swap(&other->indices_tensor_name_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+  dense_shape_tensor_name_.Swap(&other->dense_shape_tensor_name_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+}
+
+::google::protobuf::Metadata TensorInfo_CooSparse::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+void TensorInfo::InitAsDefaultInstance() {
+  ::tensorflow::_TensorInfo_default_instance_.name_.UnsafeSetDefault(
+      &::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  ::tensorflow::_TensorInfo_default_instance_.coo_sparse_ = const_cast< ::tensorflow::TensorInfo_CooSparse*>(
+      ::tensorflow::TensorInfo_CooSparse::internal_default_instance());
+  ::tensorflow::_TensorInfo_default_instance_._instance.get_mutable()->tensor_shape_ = const_cast< ::tensorflow::TensorShapeProto*>(
+      ::tensorflow::TensorShapeProto::internal_default_instance());
+}
+class TensorInfo::HasBitSetters {
+ public:
+  static const ::tensorflow::TensorInfo_CooSparse& coo_sparse(const TensorInfo* msg);
+  static const ::tensorflow::TensorShapeProto& tensor_shape(const TensorInfo* msg);
+};
+
+const ::tensorflow::TensorInfo_CooSparse&
+TensorInfo::HasBitSetters::coo_sparse(const TensorInfo* msg) {
+  return *msg->encoding_.coo_sparse_;
+}
+const ::tensorflow::TensorShapeProto&
+TensorInfo::HasBitSetters::tensor_shape(const TensorInfo* msg) {
+  return *msg->tensor_shape_;
+}
+void TensorInfo::set_allocated_coo_sparse(::tensorflow::TensorInfo_CooSparse* coo_sparse) {
+  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
+  clear_encoding();
+  if (coo_sparse) {
+    ::google::protobuf::Arena* submessage_arena =
+      ::google::protobuf::Arena::GetArena(coo_sparse);
+    if (message_arena != submessage_arena) {
+      coo_sparse = ::google::protobuf::internal::GetOwnedMessage(
+          message_arena, coo_sparse, submessage_arena);
+    }
+    set_has_coo_sparse();
+    encoding_.coo_sparse_ = coo_sparse;
+  }
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.TensorInfo.coo_sparse)
+}
+void TensorInfo::unsafe_arena_set_allocated_tensor_shape(
+    ::tensorflow::TensorShapeProto* tensor_shape) {
+  if (GetArenaNoVirtual() == NULL) {
+    delete tensor_shape_;
+  }
+  tensor_shape_ = tensor_shape;
+  if (tensor_shape) {
+    
+  } else {
+    
+  }
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.TensorInfo.tensor_shape)
+}
+void TensorInfo::clear_tensor_shape() {
+  if (GetArenaNoVirtual() == NULL && tensor_shape_ != NULL) {
+    delete tensor_shape_;
+  }
+  tensor_shape_ = NULL;
+}
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int TensorInfo::kNameFieldNumber;
+const int TensorInfo::kCooSparseFieldNumber;
+const int TensorInfo::kDtypeFieldNumber;
+const int TensorInfo::kTensorShapeFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+TensorInfo::TensorInfo()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.TensorInfo)
+}
+TensorInfo::TensorInfo(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.TensorInfo)
+}
+TensorInfo::TensorInfo(const TensorInfo& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  if (from.has_tensor_shape()) {
+    tensor_shape_ = new ::tensorflow::TensorShapeProto(*from.tensor_shape_);
+  } else {
+    tensor_shape_ = NULL;
+  }
+  dtype_ = from.dtype_;
+  clear_has_encoding();
+  switch (from.encoding_case()) {
+    case kName: {
+      set_name(from.name());
+      break;
+    }
+    case kCooSparse: {
+      mutable_coo_sparse()->::tensorflow::TensorInfo_CooSparse::MergeFrom(from.coo_sparse());
+      break;
+    }
+    case ENCODING_NOT_SET: {
+      break;
+    }
+  }
+  // @@protoc_insertion_point(copy_constructor:tensorflow.TensorInfo)
+}
+
+void TensorInfo::SharedCtor() {
+  ::google::protobuf::internal::InitSCC(
+      &scc_info_TensorInfo_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto.base);
+  ::memset(&tensor_shape_, 0, static_cast<size_t>(
+      reinterpret_cast<char*>(&dtype_) -
+      reinterpret_cast<char*>(&tensor_shape_)) + sizeof(dtype_));
+  clear_has_encoding();
+}
+
+TensorInfo::~TensorInfo() {
+  // @@protoc_insertion_point(destructor:tensorflow.TensorInfo)
+  SharedDtor();
+}
+
+void TensorInfo::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+  if (this != internal_default_instance()) delete tensor_shape_;
+  if (has_encoding()) {
+    clear_encoding();
+  }
+}
+
+void TensorInfo::ArenaDtor(void* object) {
+  TensorInfo* _this = reinterpret_cast< TensorInfo* >(object);
+  (void)_this;
+}
+void TensorInfo::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void TensorInfo::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const TensorInfo& TensorInfo::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_TensorInfo_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void TensorInfo::clear_encoding() {
+// @@protoc_insertion_point(one_of_clear_start:tensorflow.TensorInfo)
+  switch (encoding_case()) {
+    case kName: {
+      encoding_.name_.Destroy(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+          GetArenaNoVirtual());
+      break;
+    }
+    case kCooSparse: {
+      if (GetArenaNoVirtual() == NULL) {
+        delete encoding_.coo_sparse_;
+      }
+      break;
+    }
+    case ENCODING_NOT_SET: {
+      break;
+    }
+  }
+  _oneof_case_[0] = ENCODING_NOT_SET;
+}
+
+
+void TensorInfo::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.TensorInfo)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  if (GetArenaNoVirtual() == NULL && tensor_shape_ != NULL) {
+    delete tensor_shape_;
+  }
+  tensor_shape_ = NULL;
+  dtype_ = 0;
+  clear_encoding();
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* TensorInfo::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<TensorInfo*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // string name = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 10) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("tensorflow.TensorInfo.name");
+        parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+        ::std::string* str = msg->mutable_name();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+        break;
+      }
+      // .tensorflow.DataType dtype = 2;
+      case 2: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 16) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::tensorflow::DataType value = static_cast<::tensorflow::DataType>(val);
+        msg->set_dtype(value);
+        break;
+      }
+      // .tensorflow.TensorShapeProto tensor_shape = 3;
+      case 3: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 26) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        parser_till_end = ::tensorflow::TensorShapeProto::_InternalParse;
+        object = msg->mutable_tensor_shape();
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                       ptr, newend);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+        ptr = newend;
+        break;
+      }
+      // .tensorflow.TensorInfo.CooSparse coo_sparse = 4;
+      case 4: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 34) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        parser_till_end = ::tensorflow::TensorInfo_CooSparse::_InternalParse;
+        object = msg->mutable_coo_sparse();
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                       ptr, newend);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+        ptr = newend;
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool TensorInfo::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.TensorInfo)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // string name = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (10 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_name()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->name().data(), static_cast<int>(this->name().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.TensorInfo.name"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // .tensorflow.DataType dtype = 2;
+      case 2: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (16 & 0xFF)) {
+          int value = 0;
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>(
+                 input, &value)));
+          set_dtype(static_cast< ::tensorflow::DataType >(value));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // .tensorflow.TensorShapeProto tensor_shape = 3;
+      case 3: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (26 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+               input, mutable_tensor_shape()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // .tensorflow.TensorInfo.CooSparse coo_sparse = 4;
+      case 4: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (34 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+               input, mutable_coo_sparse()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.TensorInfo)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.TensorInfo)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void TensorInfo::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.TensorInfo)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // string name = 1;
+  if (has_name()) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->name().data(), static_cast<int>(this->name().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.TensorInfo.name");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      1, this->name(), output);
+  }
+
+  // .tensorflow.DataType dtype = 2;
+  if (this->dtype() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteEnum(
+      2, this->dtype(), output);
+  }
+
+  // .tensorflow.TensorShapeProto tensor_shape = 3;
+  if (this->has_tensor_shape()) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      3, HasBitSetters::tensor_shape(this), output);
+  }
+
+  // .tensorflow.TensorInfo.CooSparse coo_sparse = 4;
+  if (has_coo_sparse()) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      4, HasBitSetters::coo_sparse(this), output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.TensorInfo)
+}
+
+::google::protobuf::uint8* TensorInfo::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.TensorInfo)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // string name = 1;
+  if (has_name()) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->name().data(), static_cast<int>(this->name().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.TensorInfo.name");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        1, this->name(), target);
+  }
+
+  // .tensorflow.DataType dtype = 2;
+  if (this->dtype() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteEnumToArray(
+      2, this->dtype(), target);
+  }
+
+  // .tensorflow.TensorShapeProto tensor_shape = 3;
+  if (this->has_tensor_shape()) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        3, HasBitSetters::tensor_shape(this), deterministic, target);
+  }
+
+  // .tensorflow.TensorInfo.CooSparse coo_sparse = 4;
+  if (has_coo_sparse()) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        4, HasBitSetters::coo_sparse(this), deterministic, target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.TensorInfo)
+  return target;
+}
+
+size_t TensorInfo::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.TensorInfo)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // .tensorflow.TensorShapeProto tensor_shape = 3;
+  if (this->has_tensor_shape()) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::MessageSize(
+        *tensor_shape_);
+  }
+
+  // .tensorflow.DataType dtype = 2;
+  if (this->dtype() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::EnumSize(this->dtype());
+  }
+
+  switch (encoding_case()) {
+    // string name = 1;
+    case kName: {
+      total_size += 1 +
+        ::google::protobuf::internal::WireFormatLite::StringSize(
+          this->name());
+      break;
+    }
+    // .tensorflow.TensorInfo.CooSparse coo_sparse = 4;
+    case kCooSparse: {
+      total_size += 1 +
+        ::google::protobuf::internal::WireFormatLite::MessageSize(
+          *encoding_.coo_sparse_);
+      break;
+    }
+    case ENCODING_NOT_SET: {
+      break;
+    }
+  }
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void TensorInfo::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.TensorInfo)
+  GOOGLE_DCHECK_NE(&from, this);
+  const TensorInfo* source =
+      ::google::protobuf::DynamicCastToGenerated<TensorInfo>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.TensorInfo)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.TensorInfo)
+    MergeFrom(*source);
+  }
+}
+
+void TensorInfo::MergeFrom(const TensorInfo& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.TensorInfo)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  if (from.has_tensor_shape()) {
+    mutable_tensor_shape()->::tensorflow::TensorShapeProto::MergeFrom(from.tensor_shape());
+  }
+  if (from.dtype() != 0) {
+    set_dtype(from.dtype());
+  }
+  switch (from.encoding_case()) {
+    case kName: {
+      set_name(from.name());
+      break;
+    }
+    case kCooSparse: {
+      mutable_coo_sparse()->::tensorflow::TensorInfo_CooSparse::MergeFrom(from.coo_sparse());
+      break;
+    }
+    case ENCODING_NOT_SET: {
+      break;
+    }
+  }
+}
+
+void TensorInfo::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.TensorInfo)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void TensorInfo::CopyFrom(const TensorInfo& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.TensorInfo)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool TensorInfo::IsInitialized() const {
+  return true;
+}
+
+void TensorInfo::Swap(TensorInfo* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    TensorInfo* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void TensorInfo::UnsafeArenaSwap(TensorInfo* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void TensorInfo::InternalSwap(TensorInfo* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  swap(tensor_shape_, other->tensor_shape_);
+  swap(dtype_, other->dtype_);
+  swap(encoding_, other->encoding_);
+  swap(_oneof_case_[0], other->_oneof_case_[0]);
+}
+
+::google::protobuf::Metadata TensorInfo::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+SignatureDef_InputsEntry_DoNotUse::SignatureDef_InputsEntry_DoNotUse() {}
+SignatureDef_InputsEntry_DoNotUse::SignatureDef_InputsEntry_DoNotUse(::google::protobuf::Arena* arena)
+    : SuperType(arena) {}
+void SignatureDef_InputsEntry_DoNotUse::MergeFrom(const SignatureDef_InputsEntry_DoNotUse& other) {
+  MergeFromInternal(other);
+}
+::google::protobuf::Metadata SignatureDef_InputsEntry_DoNotUse::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto[12];
+}
+void SignatureDef_InputsEntry_DoNotUse::MergeFrom(
+    const ::google::protobuf::Message& other) {
+  ::google::protobuf::Message::MergeFrom(other);
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool SignatureDef_InputsEntry_DoNotUse::_ParseMap(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx) {
+  using MF = ::google::protobuf::internal::MapField<
+      SignatureDef_InputsEntry_DoNotUse, EntryKeyType, EntryValueType,
+      kEntryKeyFieldType, kEntryValueFieldType,
+      kEntryDefaultEnumValue>;
+  auto mf = static_cast<MF*>(object);
+  Parser<MF, ::google::protobuf::Map<EntryKeyType, EntryValueType>> parser(mf);
+#define DO_(x) if (!(x)) return false
+  DO_(parser.ParseMap(begin, end));
+  DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+    parser.key().data(), static_cast<int>(parser.key().length()),
+    ::google::protobuf::internal::WireFormatLite::PARSE,
+    "tensorflow.SignatureDef.InputsEntry.key"));
+#undef DO_
+  return true;
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+
+// ===================================================================
+
+SignatureDef_OutputsEntry_DoNotUse::SignatureDef_OutputsEntry_DoNotUse() {}
+SignatureDef_OutputsEntry_DoNotUse::SignatureDef_OutputsEntry_DoNotUse(::google::protobuf::Arena* arena)
+    : SuperType(arena) {}
+void SignatureDef_OutputsEntry_DoNotUse::MergeFrom(const SignatureDef_OutputsEntry_DoNotUse& other) {
+  MergeFromInternal(other);
+}
+::google::protobuf::Metadata SignatureDef_OutputsEntry_DoNotUse::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto[13];
+}
+void SignatureDef_OutputsEntry_DoNotUse::MergeFrom(
+    const ::google::protobuf::Message& other) {
+  ::google::protobuf::Message::MergeFrom(other);
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool SignatureDef_OutputsEntry_DoNotUse::_ParseMap(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx) {
+  using MF = ::google::protobuf::internal::MapField<
+      SignatureDef_OutputsEntry_DoNotUse, EntryKeyType, EntryValueType,
+      kEntryKeyFieldType, kEntryValueFieldType,
+      kEntryDefaultEnumValue>;
+  auto mf = static_cast<MF*>(object);
+  Parser<MF, ::google::protobuf::Map<EntryKeyType, EntryValueType>> parser(mf);
+#define DO_(x) if (!(x)) return false
+  DO_(parser.ParseMap(begin, end));
+  DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+    parser.key().data(), static_cast<int>(parser.key().length()),
+    ::google::protobuf::internal::WireFormatLite::PARSE,
+    "tensorflow.SignatureDef.OutputsEntry.key"));
+#undef DO_
+  return true;
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+
+// ===================================================================
+
+void SignatureDef::InitAsDefaultInstance() {
+}
+class SignatureDef::HasBitSetters {
+ public:
+};
+
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int SignatureDef::kInputsFieldNumber;
+const int SignatureDef::kOutputsFieldNumber;
+const int SignatureDef::kMethodNameFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+SignatureDef::SignatureDef()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.SignatureDef)
+}
+SignatureDef::SignatureDef(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena),
+  inputs_(arena),
+  outputs_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.SignatureDef)
+}
+SignatureDef::SignatureDef(const SignatureDef& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  inputs_.MergeFrom(from.inputs_);
+  outputs_.MergeFrom(from.outputs_);
+  method_name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.method_name().size() > 0) {
+    method_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.method_name(),
+      GetArenaNoVirtual());
+  }
+  // @@protoc_insertion_point(copy_constructor:tensorflow.SignatureDef)
+}
+
+void SignatureDef::SharedCtor() {
+  ::google::protobuf::internal::InitSCC(
+      &scc_info_SignatureDef_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto.base);
+  method_name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+
+SignatureDef::~SignatureDef() {
+  // @@protoc_insertion_point(destructor:tensorflow.SignatureDef)
+  SharedDtor();
+}
+
+void SignatureDef::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+  method_name_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+
+void SignatureDef::ArenaDtor(void* object) {
+  SignatureDef* _this = reinterpret_cast< SignatureDef* >(object);
+  (void)_this;
+}
+void SignatureDef::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void SignatureDef::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const SignatureDef& SignatureDef::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_SignatureDef_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void SignatureDef::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.SignatureDef)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  inputs_.Clear();
+  outputs_.Clear();
+  method_name_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* SignatureDef::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<SignatureDef*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // map<string, .tensorflow.TensorInfo> inputs = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 10) goto handle_unusual;
+        do {
+          ptr = Varint::Parse32Inline(ptr, &size);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          parser_till_end = ::google::protobuf::internal::SlowMapEntryParser;
+          auto parse_map = ::tensorflow::SignatureDef_InputsEntry_DoNotUse::_ParseMap;
+          ctx->extra_parse_data().payload.clear();
+          ctx->extra_parse_data().parse_map = parse_map;
+          object = &msg->inputs_;
+          if (size > end - ptr) goto len_delim_till_end;
+          auto newend = ptr + size;
+          GOOGLE_PROTOBUF_PARSER_ASSERT(parse_map(ptr, newend, object, ctx));
+          ptr = newend;
+          if (ptr >= end) break;
+        } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 10 && (ptr += 1));
+        break;
+      }
+      // map<string, .tensorflow.TensorInfo> outputs = 2;
+      case 2: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 18) goto handle_unusual;
+        do {
+          ptr = Varint::Parse32Inline(ptr, &size);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          parser_till_end = ::google::protobuf::internal::SlowMapEntryParser;
+          auto parse_map = ::tensorflow::SignatureDef_OutputsEntry_DoNotUse::_ParseMap;
+          ctx->extra_parse_data().payload.clear();
+          ctx->extra_parse_data().parse_map = parse_map;
+          object = &msg->outputs_;
+          if (size > end - ptr) goto len_delim_till_end;
+          auto newend = ptr + size;
+          GOOGLE_PROTOBUF_PARSER_ASSERT(parse_map(ptr, newend, object, ctx));
+          ptr = newend;
+          if (ptr >= end) break;
+        } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 18 && (ptr += 1));
+        break;
+      }
+      // string method_name = 3;
+      case 3: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 26) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("tensorflow.SignatureDef.method_name");
+        parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+        ::std::string* str = msg->mutable_method_name();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool SignatureDef::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.SignatureDef)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // map<string, .tensorflow.TensorInfo> inputs = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (10 & 0xFF)) {
+          SignatureDef_InputsEntry_DoNotUse::Parser< ::google::protobuf::internal::MapField<
+              SignatureDef_InputsEntry_DoNotUse,
+              ::std::string, ::tensorflow::TensorInfo,
+              ::google::protobuf::internal::WireFormatLite::TYPE_STRING,
+              ::google::protobuf::internal::WireFormatLite::TYPE_MESSAGE,
+              0 >,
+            ::google::protobuf::Map< ::std::string, ::tensorflow::TensorInfo > > parser(&inputs_);
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
+              input, &parser));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            parser.key().data(), static_cast<int>(parser.key().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.SignatureDef.InputsEntry.key"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // map<string, .tensorflow.TensorInfo> outputs = 2;
+      case 2: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (18 & 0xFF)) {
+          SignatureDef_OutputsEntry_DoNotUse::Parser< ::google::protobuf::internal::MapField<
+              SignatureDef_OutputsEntry_DoNotUse,
+              ::std::string, ::tensorflow::TensorInfo,
+              ::google::protobuf::internal::WireFormatLite::TYPE_STRING,
+              ::google::protobuf::internal::WireFormatLite::TYPE_MESSAGE,
+              0 >,
+            ::google::protobuf::Map< ::std::string, ::tensorflow::TensorInfo > > parser(&outputs_);
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
+              input, &parser));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            parser.key().data(), static_cast<int>(parser.key().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.SignatureDef.OutputsEntry.key"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // string method_name = 3;
+      case 3: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (26 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_method_name()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->method_name().data(), static_cast<int>(this->method_name().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.SignatureDef.method_name"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.SignatureDef)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.SignatureDef)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void SignatureDef::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.SignatureDef)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // map<string, .tensorflow.TensorInfo> inputs = 1;
+  if (!this->inputs().empty()) {
+    typedef ::google::protobuf::Map< ::std::string, ::tensorflow::TensorInfo >::const_pointer
+        ConstPtr;
+    typedef ConstPtr SortItem;
+    typedef ::google::protobuf::internal::CompareByDerefFirst<SortItem> Less;
+    struct Utf8Check {
+      static void Check(ConstPtr p) {
+        ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+          p->first.data(), static_cast<int>(p->first.length()),
+          ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+          "tensorflow.SignatureDef.InputsEntry.key");
+      }
+    };
+
+    if (output->IsSerializationDeterministic() &&
+        this->inputs().size() > 1) {
+      ::std::unique_ptr<SortItem[]> items(
+          new SortItem[this->inputs().size()]);
+      typedef ::google::protobuf::Map< ::std::string, ::tensorflow::TensorInfo >::size_type size_type;
+      size_type n = 0;
+      for (::google::protobuf::Map< ::std::string, ::tensorflow::TensorInfo >::const_iterator
+          it = this->inputs().begin();
+          it != this->inputs().end(); ++it, ++n) {
+        items[static_cast<ptrdiff_t>(n)] = SortItem(&*it);
+      }
+      ::std::sort(&items[0], &items[static_cast<ptrdiff_t>(n)], Less());
+      ::std::unique_ptr<SignatureDef_InputsEntry_DoNotUse> entry;
+      for (size_type i = 0; i < n; i++) {
+        entry.reset(inputs_.NewEntryWrapper(items[static_cast<ptrdiff_t>(i)]->first, items[static_cast<ptrdiff_t>(i)]->second));
+        ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(1, *entry, output);
+        if (entry->GetArena() != NULL) {
+          entry.release();
+        }
+        Utf8Check::Check(&(*items[static_cast<ptrdiff_t>(i)]));
+      }
+    } else {
+      ::std::unique_ptr<SignatureDef_InputsEntry_DoNotUse> entry;
+      for (::google::protobuf::Map< ::std::string, ::tensorflow::TensorInfo >::const_iterator
+          it = this->inputs().begin();
+          it != this->inputs().end(); ++it) {
+        entry.reset(inputs_.NewEntryWrapper(it->first, it->second));
+        ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(1, *entry, output);
+        if (entry->GetArena() != NULL) {
+          entry.release();
+        }
+        Utf8Check::Check(&(*it));
+      }
+    }
+  }
+
+  // map<string, .tensorflow.TensorInfo> outputs = 2;
+  if (!this->outputs().empty()) {
+    typedef ::google::protobuf::Map< ::std::string, ::tensorflow::TensorInfo >::const_pointer
+        ConstPtr;
+    typedef ConstPtr SortItem;
+    typedef ::google::protobuf::internal::CompareByDerefFirst<SortItem> Less;
+    struct Utf8Check {
+      static void Check(ConstPtr p) {
+        ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+          p->first.data(), static_cast<int>(p->first.length()),
+          ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+          "tensorflow.SignatureDef.OutputsEntry.key");
+      }
+    };
+
+    if (output->IsSerializationDeterministic() &&
+        this->outputs().size() > 1) {
+      ::std::unique_ptr<SortItem[]> items(
+          new SortItem[this->outputs().size()]);
+      typedef ::google::protobuf::Map< ::std::string, ::tensorflow::TensorInfo >::size_type size_type;
+      size_type n = 0;
+      for (::google::protobuf::Map< ::std::string, ::tensorflow::TensorInfo >::const_iterator
+          it = this->outputs().begin();
+          it != this->outputs().end(); ++it, ++n) {
+        items[static_cast<ptrdiff_t>(n)] = SortItem(&*it);
+      }
+      ::std::sort(&items[0], &items[static_cast<ptrdiff_t>(n)], Less());
+      ::std::unique_ptr<SignatureDef_OutputsEntry_DoNotUse> entry;
+      for (size_type i = 0; i < n; i++) {
+        entry.reset(outputs_.NewEntryWrapper(items[static_cast<ptrdiff_t>(i)]->first, items[static_cast<ptrdiff_t>(i)]->second));
+        ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(2, *entry, output);
+        if (entry->GetArena() != NULL) {
+          entry.release();
+        }
+        Utf8Check::Check(&(*items[static_cast<ptrdiff_t>(i)]));
+      }
+    } else {
+      ::std::unique_ptr<SignatureDef_OutputsEntry_DoNotUse> entry;
+      for (::google::protobuf::Map< ::std::string, ::tensorflow::TensorInfo >::const_iterator
+          it = this->outputs().begin();
+          it != this->outputs().end(); ++it) {
+        entry.reset(outputs_.NewEntryWrapper(it->first, it->second));
+        ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(2, *entry, output);
+        if (entry->GetArena() != NULL) {
+          entry.release();
+        }
+        Utf8Check::Check(&(*it));
+      }
+    }
+  }
+
+  // string method_name = 3;
+  if (this->method_name().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->method_name().data(), static_cast<int>(this->method_name().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.SignatureDef.method_name");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      3, this->method_name(), output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.SignatureDef)
+}
+
+::google::protobuf::uint8* SignatureDef::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.SignatureDef)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // map<string, .tensorflow.TensorInfo> inputs = 1;
+  if (!this->inputs().empty()) {
+    typedef ::google::protobuf::Map< ::std::string, ::tensorflow::TensorInfo >::const_pointer
+        ConstPtr;
+    typedef ConstPtr SortItem;
+    typedef ::google::protobuf::internal::CompareByDerefFirst<SortItem> Less;
+    struct Utf8Check {
+      static void Check(ConstPtr p) {
+        ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+          p->first.data(), static_cast<int>(p->first.length()),
+          ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+          "tensorflow.SignatureDef.InputsEntry.key");
+      }
+    };
+
+    if (deterministic &&
+        this->inputs().size() > 1) {
+      ::std::unique_ptr<SortItem[]> items(
+          new SortItem[this->inputs().size()]);
+      typedef ::google::protobuf::Map< ::std::string, ::tensorflow::TensorInfo >::size_type size_type;
+      size_type n = 0;
+      for (::google::protobuf::Map< ::std::string, ::tensorflow::TensorInfo >::const_iterator
+          it = this->inputs().begin();
+          it != this->inputs().end(); ++it, ++n) {
+        items[static_cast<ptrdiff_t>(n)] = SortItem(&*it);
+      }
+      ::std::sort(&items[0], &items[static_cast<ptrdiff_t>(n)], Less());
+      ::std::unique_ptr<SignatureDef_InputsEntry_DoNotUse> entry;
+      for (size_type i = 0; i < n; i++) {
+        entry.reset(inputs_.NewEntryWrapper(items[static_cast<ptrdiff_t>(i)]->first, items[static_cast<ptrdiff_t>(i)]->second));
+        target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessageNoVirtualToArray(1, *entry, deterministic, target);
+        if (entry->GetArena() != NULL) {
+          entry.release();
+        }
+        Utf8Check::Check(&(*items[static_cast<ptrdiff_t>(i)]));
+      }
+    } else {
+      ::std::unique_ptr<SignatureDef_InputsEntry_DoNotUse> entry;
+      for (::google::protobuf::Map< ::std::string, ::tensorflow::TensorInfo >::const_iterator
+          it = this->inputs().begin();
+          it != this->inputs().end(); ++it) {
+        entry.reset(inputs_.NewEntryWrapper(it->first, it->second));
+        target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessageNoVirtualToArray(1, *entry, deterministic, target);
+        if (entry->GetArena() != NULL) {
+          entry.release();
+        }
+        Utf8Check::Check(&(*it));
+      }
+    }
+  }
+
+  // map<string, .tensorflow.TensorInfo> outputs = 2;
+  if (!this->outputs().empty()) {
+    typedef ::google::protobuf::Map< ::std::string, ::tensorflow::TensorInfo >::const_pointer
+        ConstPtr;
+    typedef ConstPtr SortItem;
+    typedef ::google::protobuf::internal::CompareByDerefFirst<SortItem> Less;
+    struct Utf8Check {
+      static void Check(ConstPtr p) {
+        ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+          p->first.data(), static_cast<int>(p->first.length()),
+          ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+          "tensorflow.SignatureDef.OutputsEntry.key");
+      }
+    };
+
+    if (deterministic &&
+        this->outputs().size() > 1) {
+      ::std::unique_ptr<SortItem[]> items(
+          new SortItem[this->outputs().size()]);
+      typedef ::google::protobuf::Map< ::std::string, ::tensorflow::TensorInfo >::size_type size_type;
+      size_type n = 0;
+      for (::google::protobuf::Map< ::std::string, ::tensorflow::TensorInfo >::const_iterator
+          it = this->outputs().begin();
+          it != this->outputs().end(); ++it, ++n) {
+        items[static_cast<ptrdiff_t>(n)] = SortItem(&*it);
+      }
+      ::std::sort(&items[0], &items[static_cast<ptrdiff_t>(n)], Less());
+      ::std::unique_ptr<SignatureDef_OutputsEntry_DoNotUse> entry;
+      for (size_type i = 0; i < n; i++) {
+        entry.reset(outputs_.NewEntryWrapper(items[static_cast<ptrdiff_t>(i)]->first, items[static_cast<ptrdiff_t>(i)]->second));
+        target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessageNoVirtualToArray(2, *entry, deterministic, target);
+        if (entry->GetArena() != NULL) {
+          entry.release();
+        }
+        Utf8Check::Check(&(*items[static_cast<ptrdiff_t>(i)]));
+      }
+    } else {
+      ::std::unique_ptr<SignatureDef_OutputsEntry_DoNotUse> entry;
+      for (::google::protobuf::Map< ::std::string, ::tensorflow::TensorInfo >::const_iterator
+          it = this->outputs().begin();
+          it != this->outputs().end(); ++it) {
+        entry.reset(outputs_.NewEntryWrapper(it->first, it->second));
+        target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessageNoVirtualToArray(2, *entry, deterministic, target);
+        if (entry->GetArena() != NULL) {
+          entry.release();
+        }
+        Utf8Check::Check(&(*it));
+      }
+    }
+  }
+
+  // string method_name = 3;
+  if (this->method_name().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->method_name().data(), static_cast<int>(this->method_name().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.SignatureDef.method_name");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        3, this->method_name(), target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.SignatureDef)
+  return target;
+}
+
+size_t SignatureDef::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.SignatureDef)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // map<string, .tensorflow.TensorInfo> inputs = 1;
+  total_size += 1 *
+      ::google::protobuf::internal::FromIntSize(this->inputs_size());
+  {
+    ::std::unique_ptr<SignatureDef_InputsEntry_DoNotUse> entry;
+    for (::google::protobuf::Map< ::std::string, ::tensorflow::TensorInfo >::const_iterator
+        it = this->inputs().begin();
+        it != this->inputs().end(); ++it) {
+      if (entry.get() != NULL && entry->GetArena() != NULL) {
+        entry.release();
+      }
+      entry.reset(inputs_.NewEntryWrapper(it->first, it->second));
+      total_size += ::google::protobuf::internal::WireFormatLite::
+          MessageSizeNoVirtual(*entry);
+    }
+    if (entry.get() != NULL && entry->GetArena() != NULL) {
+      entry.release();
+    }
+  }
+
+  // map<string, .tensorflow.TensorInfo> outputs = 2;
+  total_size += 1 *
+      ::google::protobuf::internal::FromIntSize(this->outputs_size());
+  {
+    ::std::unique_ptr<SignatureDef_OutputsEntry_DoNotUse> entry;
+    for (::google::protobuf::Map< ::std::string, ::tensorflow::TensorInfo >::const_iterator
+        it = this->outputs().begin();
+        it != this->outputs().end(); ++it) {
+      if (entry.get() != NULL && entry->GetArena() != NULL) {
+        entry.release();
+      }
+      entry.reset(outputs_.NewEntryWrapper(it->first, it->second));
+      total_size += ::google::protobuf::internal::WireFormatLite::
+          MessageSizeNoVirtual(*entry);
+    }
+    if (entry.get() != NULL && entry->GetArena() != NULL) {
+      entry.release();
+    }
+  }
+
+  // string method_name = 3;
+  if (this->method_name().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->method_name());
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void SignatureDef::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.SignatureDef)
+  GOOGLE_DCHECK_NE(&from, this);
+  const SignatureDef* source =
+      ::google::protobuf::DynamicCastToGenerated<SignatureDef>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.SignatureDef)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.SignatureDef)
+    MergeFrom(*source);
+  }
+}
+
+void SignatureDef::MergeFrom(const SignatureDef& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.SignatureDef)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  inputs_.MergeFrom(from.inputs_);
+  outputs_.MergeFrom(from.outputs_);
+  if (from.method_name().size() > 0) {
+    set_method_name(from.method_name());
+  }
+}
+
+void SignatureDef::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.SignatureDef)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void SignatureDef::CopyFrom(const SignatureDef& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.SignatureDef)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool SignatureDef::IsInitialized() const {
+  return true;
+}
+
+void SignatureDef::Swap(SignatureDef* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    SignatureDef* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void SignatureDef::UnsafeArenaSwap(SignatureDef* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void SignatureDef::InternalSwap(SignatureDef* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  inputs_.Swap(&other->inputs_);
+  outputs_.Swap(&other->outputs_);
+  method_name_.Swap(&other->method_name_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+}
+
+::google::protobuf::Metadata SignatureDef::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+void AssetFileDef::InitAsDefaultInstance() {
+  ::tensorflow::_AssetFileDef_default_instance_._instance.get_mutable()->tensor_info_ = const_cast< ::tensorflow::TensorInfo*>(
+      ::tensorflow::TensorInfo::internal_default_instance());
+}
+class AssetFileDef::HasBitSetters {
+ public:
+  static const ::tensorflow::TensorInfo& tensor_info(const AssetFileDef* msg);
+};
+
+const ::tensorflow::TensorInfo&
+AssetFileDef::HasBitSetters::tensor_info(const AssetFileDef* msg) {
+  return *msg->tensor_info_;
+}
+void AssetFileDef::unsafe_arena_set_allocated_tensor_info(
+    ::tensorflow::TensorInfo* tensor_info) {
+  if (GetArenaNoVirtual() == NULL) {
+    delete tensor_info_;
+  }
+  tensor_info_ = tensor_info;
+  if (tensor_info) {
+    
+  } else {
+    
+  }
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.AssetFileDef.tensor_info)
+}
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int AssetFileDef::kTensorInfoFieldNumber;
+const int AssetFileDef::kFilenameFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+AssetFileDef::AssetFileDef()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.AssetFileDef)
+}
+AssetFileDef::AssetFileDef(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.AssetFileDef)
+}
+AssetFileDef::AssetFileDef(const AssetFileDef& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  filename_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.filename().size() > 0) {
+    filename_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.filename(),
+      GetArenaNoVirtual());
+  }
+  if (from.has_tensor_info()) {
+    tensor_info_ = new ::tensorflow::TensorInfo(*from.tensor_info_);
+  } else {
+    tensor_info_ = NULL;
+  }
+  // @@protoc_insertion_point(copy_constructor:tensorflow.AssetFileDef)
+}
+
+void AssetFileDef::SharedCtor() {
+  ::google::protobuf::internal::InitSCC(
+      &scc_info_AssetFileDef_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto.base);
+  filename_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  tensor_info_ = NULL;
+}
+
+AssetFileDef::~AssetFileDef() {
+  // @@protoc_insertion_point(destructor:tensorflow.AssetFileDef)
+  SharedDtor();
+}
+
+void AssetFileDef::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+  filename_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (this != internal_default_instance()) delete tensor_info_;
+}
+
+void AssetFileDef::ArenaDtor(void* object) {
+  AssetFileDef* _this = reinterpret_cast< AssetFileDef* >(object);
+  (void)_this;
+}
+void AssetFileDef::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void AssetFileDef::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const AssetFileDef& AssetFileDef::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_AssetFileDef_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void AssetFileDef::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.AssetFileDef)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  filename_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+  if (GetArenaNoVirtual() == NULL && tensor_info_ != NULL) {
+    delete tensor_info_;
+  }
+  tensor_info_ = NULL;
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* AssetFileDef::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<AssetFileDef*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // .tensorflow.TensorInfo tensor_info = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 10) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        parser_till_end = ::tensorflow::TensorInfo::_InternalParse;
+        object = msg->mutable_tensor_info();
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                       ptr, newend);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+        ptr = newend;
+        break;
+      }
+      // string filename = 2;
+      case 2: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 18) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("tensorflow.AssetFileDef.filename");
+        parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+        ::std::string* str = msg->mutable_filename();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool AssetFileDef::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.AssetFileDef)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // .tensorflow.TensorInfo tensor_info = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (10 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+               input, mutable_tensor_info()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // string filename = 2;
+      case 2: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (18 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_filename()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->filename().data(), static_cast<int>(this->filename().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.AssetFileDef.filename"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.AssetFileDef)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.AssetFileDef)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void AssetFileDef::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.AssetFileDef)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // .tensorflow.TensorInfo tensor_info = 1;
+  if (this->has_tensor_info()) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      1, HasBitSetters::tensor_info(this), output);
+  }
+
+  // string filename = 2;
+  if (this->filename().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->filename().data(), static_cast<int>(this->filename().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.AssetFileDef.filename");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      2, this->filename(), output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.AssetFileDef)
+}
+
+::google::protobuf::uint8* AssetFileDef::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.AssetFileDef)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // .tensorflow.TensorInfo tensor_info = 1;
+  if (this->has_tensor_info()) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        1, HasBitSetters::tensor_info(this), deterministic, target);
+  }
+
+  // string filename = 2;
+  if (this->filename().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->filename().data(), static_cast<int>(this->filename().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.AssetFileDef.filename");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        2, this->filename(), target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.AssetFileDef)
+  return target;
+}
+
+size_t AssetFileDef::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.AssetFileDef)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // string filename = 2;
+  if (this->filename().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->filename());
+  }
+
+  // .tensorflow.TensorInfo tensor_info = 1;
+  if (this->has_tensor_info()) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::MessageSize(
+        *tensor_info_);
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void AssetFileDef::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.AssetFileDef)
+  GOOGLE_DCHECK_NE(&from, this);
+  const AssetFileDef* source =
+      ::google::protobuf::DynamicCastToGenerated<AssetFileDef>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.AssetFileDef)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.AssetFileDef)
+    MergeFrom(*source);
+  }
+}
+
+void AssetFileDef::MergeFrom(const AssetFileDef& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.AssetFileDef)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  if (from.filename().size() > 0) {
+    set_filename(from.filename());
+  }
+  if (from.has_tensor_info()) {
+    mutable_tensor_info()->::tensorflow::TensorInfo::MergeFrom(from.tensor_info());
+  }
+}
+
+void AssetFileDef::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.AssetFileDef)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void AssetFileDef::CopyFrom(const AssetFileDef& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.AssetFileDef)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool AssetFileDef::IsInitialized() const {
+  return true;
+}
+
+void AssetFileDef::Swap(AssetFileDef* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    AssetFileDef* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void AssetFileDef::UnsafeArenaSwap(AssetFileDef* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void AssetFileDef::InternalSwap(AssetFileDef* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  filename_.Swap(&other->filename_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+  swap(tensor_info_, other->tensor_info_);
+}
+
+::google::protobuf::Metadata AssetFileDef::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto[kIndexInFileMessages];
+}
+
+
+// @@protoc_insertion_point(namespace_scope)
+}  // namespace tensorflow
+namespace google {
+namespace protobuf {
+template<> PROTOBUF_NOINLINE ::tensorflow::MetaGraphDef_MetaInfoDef* Arena::CreateMaybeMessage< ::tensorflow::MetaGraphDef_MetaInfoDef >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::MetaGraphDef_MetaInfoDef >(arena);
+}
+template<> PROTOBUF_NOINLINE ::tensorflow::MetaGraphDef_CollectionDefEntry_DoNotUse* Arena::CreateMaybeMessage< ::tensorflow::MetaGraphDef_CollectionDefEntry_DoNotUse >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::MetaGraphDef_CollectionDefEntry_DoNotUse >(arena);
+}
+template<> PROTOBUF_NOINLINE ::tensorflow::MetaGraphDef_SignatureDefEntry_DoNotUse* Arena::CreateMaybeMessage< ::tensorflow::MetaGraphDef_SignatureDefEntry_DoNotUse >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::MetaGraphDef_SignatureDefEntry_DoNotUse >(arena);
+}
+template<> PROTOBUF_NOINLINE ::tensorflow::MetaGraphDef* Arena::CreateMaybeMessage< ::tensorflow::MetaGraphDef >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::MetaGraphDef >(arena);
+}
+template<> PROTOBUF_NOINLINE ::tensorflow::CollectionDef_NodeList* Arena::CreateMaybeMessage< ::tensorflow::CollectionDef_NodeList >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::CollectionDef_NodeList >(arena);
+}
+template<> PROTOBUF_NOINLINE ::tensorflow::CollectionDef_BytesList* Arena::CreateMaybeMessage< ::tensorflow::CollectionDef_BytesList >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::CollectionDef_BytesList >(arena);
+}
+template<> PROTOBUF_NOINLINE ::tensorflow::CollectionDef_Int64List* Arena::CreateMaybeMessage< ::tensorflow::CollectionDef_Int64List >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::CollectionDef_Int64List >(arena);
+}
+template<> PROTOBUF_NOINLINE ::tensorflow::CollectionDef_FloatList* Arena::CreateMaybeMessage< ::tensorflow::CollectionDef_FloatList >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::CollectionDef_FloatList >(arena);
+}
+template<> PROTOBUF_NOINLINE ::tensorflow::CollectionDef_AnyList* Arena::CreateMaybeMessage< ::tensorflow::CollectionDef_AnyList >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::CollectionDef_AnyList >(arena);
+}
+template<> PROTOBUF_NOINLINE ::tensorflow::CollectionDef* Arena::CreateMaybeMessage< ::tensorflow::CollectionDef >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::CollectionDef >(arena);
+}
+template<> PROTOBUF_NOINLINE ::tensorflow::TensorInfo_CooSparse* Arena::CreateMaybeMessage< ::tensorflow::TensorInfo_CooSparse >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::TensorInfo_CooSparse >(arena);
+}
+template<> PROTOBUF_NOINLINE ::tensorflow::TensorInfo* Arena::CreateMaybeMessage< ::tensorflow::TensorInfo >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::TensorInfo >(arena);
+}
+template<> PROTOBUF_NOINLINE ::tensorflow::SignatureDef_InputsEntry_DoNotUse* Arena::CreateMaybeMessage< ::tensorflow::SignatureDef_InputsEntry_DoNotUse >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::SignatureDef_InputsEntry_DoNotUse >(arena);
+}
+template<> PROTOBUF_NOINLINE ::tensorflow::SignatureDef_OutputsEntry_DoNotUse* Arena::CreateMaybeMessage< ::tensorflow::SignatureDef_OutputsEntry_DoNotUse >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::SignatureDef_OutputsEntry_DoNotUse >(arena);
+}
+template<> PROTOBUF_NOINLINE ::tensorflow::SignatureDef* Arena::CreateMaybeMessage< ::tensorflow::SignatureDef >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::SignatureDef >(arena);
+}
+template<> PROTOBUF_NOINLINE ::tensorflow::AssetFileDef* Arena::CreateMaybeMessage< ::tensorflow::AssetFileDef >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::AssetFileDef >(arena);
+}
+}  // namespace protobuf
+}  // namespace google
+
+// @@protoc_insertion_point(global_scope)
+#include <google/protobuf/port_undef.inc>
diff --git a/tensorflow/core/protobuf/meta_graph.pb.h b/tensorflow/core/protobuf/meta_graph.pb.h
new file mode 100644 (file)
index 0000000..967e1f7
--- /dev/null
@@ -0,0 +1,4355 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: tensorflow/core/protobuf/meta_graph.proto
+
+#ifndef PROTOBUF_INCLUDED_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto
+#define PROTOBUF_INCLUDED_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto
+
+#include <limits>
+#include <string>
+
+#include <google/protobuf/port_def.inc>
+#if PROTOBUF_VERSION < 3006001
+#error This file was generated by a newer version of protoc which is
+#error incompatible with your Protocol Buffer headers. Please update
+#error your headers.
+#endif
+#if 3006001 < PROTOBUF_MIN_PROTOC_VERSION
+#error This file was generated by an older version of protoc which is
+#error incompatible with your Protocol Buffer headers. Please
+#error regenerate this file with a newer version of protoc.
+#endif
+
+#include <google/protobuf/port_undef.inc>
+#include <google/protobuf/io/coded_stream.h>
+#include <google/protobuf/arena.h>
+#include <google/protobuf/arenastring.h>
+#include <google/protobuf/generated_message_table_driven.h>
+#include <google/protobuf/generated_message_util.h>
+#include <google/protobuf/inlined_string_field.h>
+#include <google/protobuf/metadata.h>
+#include <google/protobuf/message.h>
+#include <google/protobuf/repeated_field.h>  // IWYU pragma: export
+#include <google/protobuf/extension_set.h>  // IWYU pragma: export
+#include <google/protobuf/map.h>  // IWYU pragma: export
+#include <google/protobuf/map_entry.h>
+#include <google/protobuf/map_field_inl.h>
+#include <google/protobuf/unknown_field_set.h>
+#include <google/protobuf/any.pb.h>
+#include "tensorflow/core/framework/graph.pb.h"
+#include "tensorflow/core/framework/op_def.pb.h"
+#include "tensorflow/core/framework/tensor_shape.pb.h"
+#include "tensorflow/core/framework/types.pb.h"
+#include "tensorflow/core/protobuf/saver.pb.h"
+// @@protoc_insertion_point(includes)
+#include <google/protobuf/port_def.inc>
+#define PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto
+
+// Internal implementation detail -- do not use these members.
+struct TableStruct_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto {
+  static const ::google::protobuf::internal::ParseTableField entries[]
+    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
+  static const ::google::protobuf::internal::AuxillaryParseTableField aux[]
+    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
+  static const ::google::protobuf::internal::ParseTable schema[16]
+    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
+  static const ::google::protobuf::internal::FieldMetadata field_metadata[];
+  static const ::google::protobuf::internal::SerializationTable serialization_table[];
+  static const ::google::protobuf::uint32 offsets[];
+};
+void AddDescriptors_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto();
+namespace tensorflow {
+class AssetFileDef;
+class AssetFileDefDefaultTypeInternal;
+extern AssetFileDefDefaultTypeInternal _AssetFileDef_default_instance_;
+class CollectionDef;
+class CollectionDefDefaultTypeInternal;
+extern CollectionDefDefaultTypeInternal _CollectionDef_default_instance_;
+class CollectionDef_AnyList;
+class CollectionDef_AnyListDefaultTypeInternal;
+extern CollectionDef_AnyListDefaultTypeInternal _CollectionDef_AnyList_default_instance_;
+class CollectionDef_BytesList;
+class CollectionDef_BytesListDefaultTypeInternal;
+extern CollectionDef_BytesListDefaultTypeInternal _CollectionDef_BytesList_default_instance_;
+class CollectionDef_FloatList;
+class CollectionDef_FloatListDefaultTypeInternal;
+extern CollectionDef_FloatListDefaultTypeInternal _CollectionDef_FloatList_default_instance_;
+class CollectionDef_Int64List;
+class CollectionDef_Int64ListDefaultTypeInternal;
+extern CollectionDef_Int64ListDefaultTypeInternal _CollectionDef_Int64List_default_instance_;
+class CollectionDef_NodeList;
+class CollectionDef_NodeListDefaultTypeInternal;
+extern CollectionDef_NodeListDefaultTypeInternal _CollectionDef_NodeList_default_instance_;
+class MetaGraphDef;
+class MetaGraphDefDefaultTypeInternal;
+extern MetaGraphDefDefaultTypeInternal _MetaGraphDef_default_instance_;
+class MetaGraphDef_CollectionDefEntry_DoNotUse;
+class MetaGraphDef_CollectionDefEntry_DoNotUseDefaultTypeInternal;
+extern MetaGraphDef_CollectionDefEntry_DoNotUseDefaultTypeInternal _MetaGraphDef_CollectionDefEntry_DoNotUse_default_instance_;
+class MetaGraphDef_MetaInfoDef;
+class MetaGraphDef_MetaInfoDefDefaultTypeInternal;
+extern MetaGraphDef_MetaInfoDefDefaultTypeInternal _MetaGraphDef_MetaInfoDef_default_instance_;
+class MetaGraphDef_SignatureDefEntry_DoNotUse;
+class MetaGraphDef_SignatureDefEntry_DoNotUseDefaultTypeInternal;
+extern MetaGraphDef_SignatureDefEntry_DoNotUseDefaultTypeInternal _MetaGraphDef_SignatureDefEntry_DoNotUse_default_instance_;
+class SignatureDef;
+class SignatureDefDefaultTypeInternal;
+extern SignatureDefDefaultTypeInternal _SignatureDef_default_instance_;
+class SignatureDef_InputsEntry_DoNotUse;
+class SignatureDef_InputsEntry_DoNotUseDefaultTypeInternal;
+extern SignatureDef_InputsEntry_DoNotUseDefaultTypeInternal _SignatureDef_InputsEntry_DoNotUse_default_instance_;
+class SignatureDef_OutputsEntry_DoNotUse;
+class SignatureDef_OutputsEntry_DoNotUseDefaultTypeInternal;
+extern SignatureDef_OutputsEntry_DoNotUseDefaultTypeInternal _SignatureDef_OutputsEntry_DoNotUse_default_instance_;
+class TensorInfo;
+class TensorInfoDefaultTypeInternal;
+extern TensorInfoDefaultTypeInternal _TensorInfo_default_instance_;
+class TensorInfo_CooSparse;
+class TensorInfo_CooSparseDefaultTypeInternal;
+extern TensorInfo_CooSparseDefaultTypeInternal _TensorInfo_CooSparse_default_instance_;
+}  // namespace tensorflow
+namespace google {
+namespace protobuf {
+template<> ::tensorflow::AssetFileDef* Arena::CreateMaybeMessage<::tensorflow::AssetFileDef>(Arena*);
+template<> ::tensorflow::CollectionDef* Arena::CreateMaybeMessage<::tensorflow::CollectionDef>(Arena*);
+template<> ::tensorflow::CollectionDef_AnyList* Arena::CreateMaybeMessage<::tensorflow::CollectionDef_AnyList>(Arena*);
+template<> ::tensorflow::CollectionDef_BytesList* Arena::CreateMaybeMessage<::tensorflow::CollectionDef_BytesList>(Arena*);
+template<> ::tensorflow::CollectionDef_FloatList* Arena::CreateMaybeMessage<::tensorflow::CollectionDef_FloatList>(Arena*);
+template<> ::tensorflow::CollectionDef_Int64List* Arena::CreateMaybeMessage<::tensorflow::CollectionDef_Int64List>(Arena*);
+template<> ::tensorflow::CollectionDef_NodeList* Arena::CreateMaybeMessage<::tensorflow::CollectionDef_NodeList>(Arena*);
+template<> ::tensorflow::MetaGraphDef* Arena::CreateMaybeMessage<::tensorflow::MetaGraphDef>(Arena*);
+template<> ::tensorflow::MetaGraphDef_CollectionDefEntry_DoNotUse* Arena::CreateMaybeMessage<::tensorflow::MetaGraphDef_CollectionDefEntry_DoNotUse>(Arena*);
+template<> ::tensorflow::MetaGraphDef_MetaInfoDef* Arena::CreateMaybeMessage<::tensorflow::MetaGraphDef_MetaInfoDef>(Arena*);
+template<> ::tensorflow::MetaGraphDef_SignatureDefEntry_DoNotUse* Arena::CreateMaybeMessage<::tensorflow::MetaGraphDef_SignatureDefEntry_DoNotUse>(Arena*);
+template<> ::tensorflow::SignatureDef* Arena::CreateMaybeMessage<::tensorflow::SignatureDef>(Arena*);
+template<> ::tensorflow::SignatureDef_InputsEntry_DoNotUse* Arena::CreateMaybeMessage<::tensorflow::SignatureDef_InputsEntry_DoNotUse>(Arena*);
+template<> ::tensorflow::SignatureDef_OutputsEntry_DoNotUse* Arena::CreateMaybeMessage<::tensorflow::SignatureDef_OutputsEntry_DoNotUse>(Arena*);
+template<> ::tensorflow::TensorInfo* Arena::CreateMaybeMessage<::tensorflow::TensorInfo>(Arena*);
+template<> ::tensorflow::TensorInfo_CooSparse* Arena::CreateMaybeMessage<::tensorflow::TensorInfo_CooSparse>(Arena*);
+}  // namespace protobuf
+}  // namespace google
+namespace tensorflow {
+
+// ===================================================================
+
+class MetaGraphDef_MetaInfoDef : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.MetaGraphDef.MetaInfoDef) */ {
+ public:
+  MetaGraphDef_MetaInfoDef();
+  virtual ~MetaGraphDef_MetaInfoDef();
+
+  MetaGraphDef_MetaInfoDef(const MetaGraphDef_MetaInfoDef& from);
+
+  inline MetaGraphDef_MetaInfoDef& operator=(const MetaGraphDef_MetaInfoDef& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  MetaGraphDef_MetaInfoDef(MetaGraphDef_MetaInfoDef&& from) noexcept
+    : MetaGraphDef_MetaInfoDef() {
+    *this = ::std::move(from);
+  }
+
+  inline MetaGraphDef_MetaInfoDef& operator=(MetaGraphDef_MetaInfoDef&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const MetaGraphDef_MetaInfoDef& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const MetaGraphDef_MetaInfoDef* internal_default_instance() {
+    return reinterpret_cast<const MetaGraphDef_MetaInfoDef*>(
+               &_MetaGraphDef_MetaInfoDef_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    0;
+
+  void UnsafeArenaSwap(MetaGraphDef_MetaInfoDef* other);
+  void Swap(MetaGraphDef_MetaInfoDef* other);
+  friend void swap(MetaGraphDef_MetaInfoDef& a, MetaGraphDef_MetaInfoDef& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline MetaGraphDef_MetaInfoDef* New() const final {
+    return CreateMaybeMessage<MetaGraphDef_MetaInfoDef>(NULL);
+  }
+
+  MetaGraphDef_MetaInfoDef* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<MetaGraphDef_MetaInfoDef>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const MetaGraphDef_MetaInfoDef& from);
+  void MergeFrom(const MetaGraphDef_MetaInfoDef& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(MetaGraphDef_MetaInfoDef* other);
+  protected:
+  explicit MetaGraphDef_MetaInfoDef(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // repeated string tags = 4;
+  int tags_size() const;
+  void clear_tags();
+  static const int kTagsFieldNumber = 4;
+  const ::std::string& tags(int index) const;
+  ::std::string* mutable_tags(int index);
+  void set_tags(int index, const ::std::string& value);
+  #if LANG_CXX11
+  void set_tags(int index, ::std::string&& value);
+  #endif
+  void set_tags(int index, const char* value);
+  void set_tags(int index, const char* value, size_t size);
+  ::std::string* add_tags();
+  void add_tags(const ::std::string& value);
+  #if LANG_CXX11
+  void add_tags(::std::string&& value);
+  #endif
+  void add_tags(const char* value);
+  void add_tags(const char* value, size_t size);
+  const ::google::protobuf::RepeatedPtrField<::std::string>& tags() const;
+  ::google::protobuf::RepeatedPtrField<::std::string>* mutable_tags();
+
+  // string meta_graph_version = 1;
+  void clear_meta_graph_version();
+  static const int kMetaGraphVersionFieldNumber = 1;
+  const ::std::string& meta_graph_version() const;
+  void set_meta_graph_version(const ::std::string& value);
+  #if LANG_CXX11
+  void set_meta_graph_version(::std::string&& value);
+  #endif
+  void set_meta_graph_version(const char* value);
+  void set_meta_graph_version(const char* value, size_t size);
+  ::std::string* mutable_meta_graph_version();
+  ::std::string* release_meta_graph_version();
+  void set_allocated_meta_graph_version(::std::string* meta_graph_version);
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  ::std::string* unsafe_arena_release_meta_graph_version();
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  void unsafe_arena_set_allocated_meta_graph_version(
+      ::std::string* meta_graph_version);
+
+  // string tensorflow_version = 5;
+  void clear_tensorflow_version();
+  static const int kTensorflowVersionFieldNumber = 5;
+  const ::std::string& tensorflow_version() const;
+  void set_tensorflow_version(const ::std::string& value);
+  #if LANG_CXX11
+  void set_tensorflow_version(::std::string&& value);
+  #endif
+  void set_tensorflow_version(const char* value);
+  void set_tensorflow_version(const char* value, size_t size);
+  ::std::string* mutable_tensorflow_version();
+  ::std::string* release_tensorflow_version();
+  void set_allocated_tensorflow_version(::std::string* tensorflow_version);
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  ::std::string* unsafe_arena_release_tensorflow_version();
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  void unsafe_arena_set_allocated_tensorflow_version(
+      ::std::string* tensorflow_version);
+
+  // string tensorflow_git_version = 6;
+  void clear_tensorflow_git_version();
+  static const int kTensorflowGitVersionFieldNumber = 6;
+  const ::std::string& tensorflow_git_version() const;
+  void set_tensorflow_git_version(const ::std::string& value);
+  #if LANG_CXX11
+  void set_tensorflow_git_version(::std::string&& value);
+  #endif
+  void set_tensorflow_git_version(const char* value);
+  void set_tensorflow_git_version(const char* value, size_t size);
+  ::std::string* mutable_tensorflow_git_version();
+  ::std::string* release_tensorflow_git_version();
+  void set_allocated_tensorflow_git_version(::std::string* tensorflow_git_version);
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  ::std::string* unsafe_arena_release_tensorflow_git_version();
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  void unsafe_arena_set_allocated_tensorflow_git_version(
+      ::std::string* tensorflow_git_version);
+
+  // .tensorflow.OpList stripped_op_list = 2;
+  bool has_stripped_op_list() const;
+  void clear_stripped_op_list();
+  static const int kStrippedOpListFieldNumber = 2;
+  const ::tensorflow::OpList& stripped_op_list() const;
+  ::tensorflow::OpList* release_stripped_op_list();
+  ::tensorflow::OpList* mutable_stripped_op_list();
+  void set_allocated_stripped_op_list(::tensorflow::OpList* stripped_op_list);
+  void unsafe_arena_set_allocated_stripped_op_list(
+      ::tensorflow::OpList* stripped_op_list);
+  ::tensorflow::OpList* unsafe_arena_release_stripped_op_list();
+
+  // .google.protobuf.Any any_info = 3;
+  bool has_any_info() const;
+  void clear_any_info();
+  static const int kAnyInfoFieldNumber = 3;
+  const ::google::protobuf::Any& any_info() const;
+  ::google::protobuf::Any* release_any_info();
+  ::google::protobuf::Any* mutable_any_info();
+  void set_allocated_any_info(::google::protobuf::Any* any_info);
+  void unsafe_arena_set_allocated_any_info(
+      ::google::protobuf::Any* any_info);
+  ::google::protobuf::Any* unsafe_arena_release_any_info();
+
+  // bool stripped_default_attrs = 7;
+  void clear_stripped_default_attrs();
+  static const int kStrippedDefaultAttrsFieldNumber = 7;
+  bool stripped_default_attrs() const;
+  void set_stripped_default_attrs(bool value);
+
+  // @@protoc_insertion_point(class_scope:tensorflow.MetaGraphDef.MetaInfoDef)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  ::google::protobuf::RepeatedPtrField<::std::string> tags_;
+  ::google::protobuf::internal::ArenaStringPtr meta_graph_version_;
+  ::google::protobuf::internal::ArenaStringPtr tensorflow_version_;
+  ::google::protobuf::internal::ArenaStringPtr tensorflow_git_version_;
+  ::tensorflow::OpList* stripped_op_list_;
+  ::google::protobuf::Any* any_info_;
+  bool stripped_default_attrs_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto;
+};
+// -------------------------------------------------------------------
+
+class MetaGraphDef_CollectionDefEntry_DoNotUse : public ::google::protobuf::internal::MapEntry<MetaGraphDef_CollectionDefEntry_DoNotUse, 
+    ::std::string, ::tensorflow::CollectionDef,
+    ::google::protobuf::internal::WireFormatLite::TYPE_STRING,
+    ::google::protobuf::internal::WireFormatLite::TYPE_MESSAGE,
+    0 > {
+public:
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+static bool _ParseMap(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  typedef ::google::protobuf::internal::MapEntry<MetaGraphDef_CollectionDefEntry_DoNotUse, 
+    ::std::string, ::tensorflow::CollectionDef,
+    ::google::protobuf::internal::WireFormatLite::TYPE_STRING,
+    ::google::protobuf::internal::WireFormatLite::TYPE_MESSAGE,
+    0 > SuperType;
+  MetaGraphDef_CollectionDefEntry_DoNotUse();
+  MetaGraphDef_CollectionDefEntry_DoNotUse(::google::protobuf::Arena* arena);
+  void MergeFrom(const MetaGraphDef_CollectionDefEntry_DoNotUse& other);
+  static const MetaGraphDef_CollectionDefEntry_DoNotUse* internal_default_instance() { return reinterpret_cast<const MetaGraphDef_CollectionDefEntry_DoNotUse*>(&_MetaGraphDef_CollectionDefEntry_DoNotUse_default_instance_); }
+  void MergeFrom(const ::google::protobuf::Message& other) final;
+  ::google::protobuf::Metadata GetMetadata() const;
+};
+
+// -------------------------------------------------------------------
+
+class MetaGraphDef_SignatureDefEntry_DoNotUse : public ::google::protobuf::internal::MapEntry<MetaGraphDef_SignatureDefEntry_DoNotUse, 
+    ::std::string, ::tensorflow::SignatureDef,
+    ::google::protobuf::internal::WireFormatLite::TYPE_STRING,
+    ::google::protobuf::internal::WireFormatLite::TYPE_MESSAGE,
+    0 > {
+public:
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+static bool _ParseMap(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  typedef ::google::protobuf::internal::MapEntry<MetaGraphDef_SignatureDefEntry_DoNotUse, 
+    ::std::string, ::tensorflow::SignatureDef,
+    ::google::protobuf::internal::WireFormatLite::TYPE_STRING,
+    ::google::protobuf::internal::WireFormatLite::TYPE_MESSAGE,
+    0 > SuperType;
+  MetaGraphDef_SignatureDefEntry_DoNotUse();
+  MetaGraphDef_SignatureDefEntry_DoNotUse(::google::protobuf::Arena* arena);
+  void MergeFrom(const MetaGraphDef_SignatureDefEntry_DoNotUse& other);
+  static const MetaGraphDef_SignatureDefEntry_DoNotUse* internal_default_instance() { return reinterpret_cast<const MetaGraphDef_SignatureDefEntry_DoNotUse*>(&_MetaGraphDef_SignatureDefEntry_DoNotUse_default_instance_); }
+  void MergeFrom(const ::google::protobuf::Message& other) final;
+  ::google::protobuf::Metadata GetMetadata() const;
+};
+
+// -------------------------------------------------------------------
+
+class MetaGraphDef : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.MetaGraphDef) */ {
+ public:
+  MetaGraphDef();
+  virtual ~MetaGraphDef();
+
+  MetaGraphDef(const MetaGraphDef& from);
+
+  inline MetaGraphDef& operator=(const MetaGraphDef& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  MetaGraphDef(MetaGraphDef&& from) noexcept
+    : MetaGraphDef() {
+    *this = ::std::move(from);
+  }
+
+  inline MetaGraphDef& operator=(MetaGraphDef&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const MetaGraphDef& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const MetaGraphDef* internal_default_instance() {
+    return reinterpret_cast<const MetaGraphDef*>(
+               &_MetaGraphDef_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    3;
+
+  void UnsafeArenaSwap(MetaGraphDef* other);
+  void Swap(MetaGraphDef* other);
+  friend void swap(MetaGraphDef& a, MetaGraphDef& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline MetaGraphDef* New() const final {
+    return CreateMaybeMessage<MetaGraphDef>(NULL);
+  }
+
+  MetaGraphDef* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<MetaGraphDef>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const MetaGraphDef& from);
+  void MergeFrom(const MetaGraphDef& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(MetaGraphDef* other);
+  protected:
+  explicit MetaGraphDef(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  typedef MetaGraphDef_MetaInfoDef MetaInfoDef;
+
+  // accessors -------------------------------------------------------
+
+  // map<string, .tensorflow.CollectionDef> collection_def = 4;
+  int collection_def_size() const;
+  void clear_collection_def();
+  static const int kCollectionDefFieldNumber = 4;
+  const ::google::protobuf::Map< ::std::string, ::tensorflow::CollectionDef >&
+      collection_def() const;
+  ::google::protobuf::Map< ::std::string, ::tensorflow::CollectionDef >*
+      mutable_collection_def();
+
+  // map<string, .tensorflow.SignatureDef> signature_def = 5;
+  int signature_def_size() const;
+  void clear_signature_def();
+  static const int kSignatureDefFieldNumber = 5;
+  const ::google::protobuf::Map< ::std::string, ::tensorflow::SignatureDef >&
+      signature_def() const;
+  ::google::protobuf::Map< ::std::string, ::tensorflow::SignatureDef >*
+      mutable_signature_def();
+
+  // repeated .tensorflow.AssetFileDef asset_file_def = 6;
+  int asset_file_def_size() const;
+  void clear_asset_file_def();
+  static const int kAssetFileDefFieldNumber = 6;
+  ::tensorflow::AssetFileDef* mutable_asset_file_def(int index);
+  ::google::protobuf::RepeatedPtrField< ::tensorflow::AssetFileDef >*
+      mutable_asset_file_def();
+  const ::tensorflow::AssetFileDef& asset_file_def(int index) const;
+  ::tensorflow::AssetFileDef* add_asset_file_def();
+  const ::google::protobuf::RepeatedPtrField< ::tensorflow::AssetFileDef >&
+      asset_file_def() const;
+
+  // .tensorflow.MetaGraphDef.MetaInfoDef meta_info_def = 1;
+  bool has_meta_info_def() const;
+  void clear_meta_info_def();
+  static const int kMetaInfoDefFieldNumber = 1;
+  const ::tensorflow::MetaGraphDef_MetaInfoDef& meta_info_def() const;
+  ::tensorflow::MetaGraphDef_MetaInfoDef* release_meta_info_def();
+  ::tensorflow::MetaGraphDef_MetaInfoDef* mutable_meta_info_def();
+  void set_allocated_meta_info_def(::tensorflow::MetaGraphDef_MetaInfoDef* meta_info_def);
+  void unsafe_arena_set_allocated_meta_info_def(
+      ::tensorflow::MetaGraphDef_MetaInfoDef* meta_info_def);
+  ::tensorflow::MetaGraphDef_MetaInfoDef* unsafe_arena_release_meta_info_def();
+
+  // .tensorflow.GraphDef graph_def = 2;
+  bool has_graph_def() const;
+  void clear_graph_def();
+  static const int kGraphDefFieldNumber = 2;
+  const ::tensorflow::GraphDef& graph_def() const;
+  ::tensorflow::GraphDef* release_graph_def();
+  ::tensorflow::GraphDef* mutable_graph_def();
+  void set_allocated_graph_def(::tensorflow::GraphDef* graph_def);
+  void unsafe_arena_set_allocated_graph_def(
+      ::tensorflow::GraphDef* graph_def);
+  ::tensorflow::GraphDef* unsafe_arena_release_graph_def();
+
+  // .tensorflow.SaverDef saver_def = 3;
+  bool has_saver_def() const;
+  void clear_saver_def();
+  static const int kSaverDefFieldNumber = 3;
+  const ::tensorflow::SaverDef& saver_def() const;
+  ::tensorflow::SaverDef* release_saver_def();
+  ::tensorflow::SaverDef* mutable_saver_def();
+  void set_allocated_saver_def(::tensorflow::SaverDef* saver_def);
+  void unsafe_arena_set_allocated_saver_def(
+      ::tensorflow::SaverDef* saver_def);
+  ::tensorflow::SaverDef* unsafe_arena_release_saver_def();
+
+  // @@protoc_insertion_point(class_scope:tensorflow.MetaGraphDef)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  ::google::protobuf::internal::MapField<
+      MetaGraphDef_CollectionDefEntry_DoNotUse,
+      ::std::string, ::tensorflow::CollectionDef,
+      ::google::protobuf::internal::WireFormatLite::TYPE_STRING,
+      ::google::protobuf::internal::WireFormatLite::TYPE_MESSAGE,
+      0 > collection_def_;
+  ::google::protobuf::internal::MapField<
+      MetaGraphDef_SignatureDefEntry_DoNotUse,
+      ::std::string, ::tensorflow::SignatureDef,
+      ::google::protobuf::internal::WireFormatLite::TYPE_STRING,
+      ::google::protobuf::internal::WireFormatLite::TYPE_MESSAGE,
+      0 > signature_def_;
+  ::google::protobuf::RepeatedPtrField< ::tensorflow::AssetFileDef > asset_file_def_;
+  ::tensorflow::MetaGraphDef_MetaInfoDef* meta_info_def_;
+  ::tensorflow::GraphDef* graph_def_;
+  ::tensorflow::SaverDef* saver_def_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto;
+};
+// -------------------------------------------------------------------
+
+class CollectionDef_NodeList : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.CollectionDef.NodeList) */ {
+ public:
+  CollectionDef_NodeList();
+  virtual ~CollectionDef_NodeList();
+
+  CollectionDef_NodeList(const CollectionDef_NodeList& from);
+
+  inline CollectionDef_NodeList& operator=(const CollectionDef_NodeList& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  CollectionDef_NodeList(CollectionDef_NodeList&& from) noexcept
+    : CollectionDef_NodeList() {
+    *this = ::std::move(from);
+  }
+
+  inline CollectionDef_NodeList& operator=(CollectionDef_NodeList&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const CollectionDef_NodeList& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const CollectionDef_NodeList* internal_default_instance() {
+    return reinterpret_cast<const CollectionDef_NodeList*>(
+               &_CollectionDef_NodeList_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    4;
+
+  void UnsafeArenaSwap(CollectionDef_NodeList* other);
+  void Swap(CollectionDef_NodeList* other);
+  friend void swap(CollectionDef_NodeList& a, CollectionDef_NodeList& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline CollectionDef_NodeList* New() const final {
+    return CreateMaybeMessage<CollectionDef_NodeList>(NULL);
+  }
+
+  CollectionDef_NodeList* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<CollectionDef_NodeList>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const CollectionDef_NodeList& from);
+  void MergeFrom(const CollectionDef_NodeList& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(CollectionDef_NodeList* other);
+  protected:
+  explicit CollectionDef_NodeList(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // repeated string value = 1;
+  int value_size() const;
+  void clear_value();
+  static const int kValueFieldNumber = 1;
+  const ::std::string& value(int index) const;
+  ::std::string* mutable_value(int index);
+  void set_value(int index, const ::std::string& value);
+  #if LANG_CXX11
+  void set_value(int index, ::std::string&& value);
+  #endif
+  void set_value(int index, const char* value);
+  void set_value(int index, const char* value, size_t size);
+  ::std::string* add_value();
+  void add_value(const ::std::string& value);
+  #if LANG_CXX11
+  void add_value(::std::string&& value);
+  #endif
+  void add_value(const char* value);
+  void add_value(const char* value, size_t size);
+  const ::google::protobuf::RepeatedPtrField<::std::string>& value() const;
+  ::google::protobuf::RepeatedPtrField<::std::string>* mutable_value();
+
+  // @@protoc_insertion_point(class_scope:tensorflow.CollectionDef.NodeList)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  ::google::protobuf::RepeatedPtrField<::std::string> value_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto;
+};
+// -------------------------------------------------------------------
+
+class CollectionDef_BytesList : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.CollectionDef.BytesList) */ {
+ public:
+  CollectionDef_BytesList();
+  virtual ~CollectionDef_BytesList();
+
+  CollectionDef_BytesList(const CollectionDef_BytesList& from);
+
+  inline CollectionDef_BytesList& operator=(const CollectionDef_BytesList& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  CollectionDef_BytesList(CollectionDef_BytesList&& from) noexcept
+    : CollectionDef_BytesList() {
+    *this = ::std::move(from);
+  }
+
+  inline CollectionDef_BytesList& operator=(CollectionDef_BytesList&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const CollectionDef_BytesList& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const CollectionDef_BytesList* internal_default_instance() {
+    return reinterpret_cast<const CollectionDef_BytesList*>(
+               &_CollectionDef_BytesList_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    5;
+
+  void UnsafeArenaSwap(CollectionDef_BytesList* other);
+  void Swap(CollectionDef_BytesList* other);
+  friend void swap(CollectionDef_BytesList& a, CollectionDef_BytesList& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline CollectionDef_BytesList* New() const final {
+    return CreateMaybeMessage<CollectionDef_BytesList>(NULL);
+  }
+
+  CollectionDef_BytesList* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<CollectionDef_BytesList>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const CollectionDef_BytesList& from);
+  void MergeFrom(const CollectionDef_BytesList& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(CollectionDef_BytesList* other);
+  protected:
+  explicit CollectionDef_BytesList(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // repeated bytes value = 1;
+  int value_size() const;
+  void clear_value();
+  static const int kValueFieldNumber = 1;
+  const ::std::string& value(int index) const;
+  ::std::string* mutable_value(int index);
+  void set_value(int index, const ::std::string& value);
+  #if LANG_CXX11
+  void set_value(int index, ::std::string&& value);
+  #endif
+  void set_value(int index, const char* value);
+  void set_value(int index, const void* value, size_t size);
+  ::std::string* add_value();
+  void add_value(const ::std::string& value);
+  #if LANG_CXX11
+  void add_value(::std::string&& value);
+  #endif
+  void add_value(const char* value);
+  void add_value(const void* value, size_t size);
+  const ::google::protobuf::RepeatedPtrField<::std::string>& value() const;
+  ::google::protobuf::RepeatedPtrField<::std::string>* mutable_value();
+
+  // @@protoc_insertion_point(class_scope:tensorflow.CollectionDef.BytesList)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  ::google::protobuf::RepeatedPtrField<::std::string> value_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto;
+};
+// -------------------------------------------------------------------
+
+class CollectionDef_Int64List : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.CollectionDef.Int64List) */ {
+ public:
+  CollectionDef_Int64List();
+  virtual ~CollectionDef_Int64List();
+
+  CollectionDef_Int64List(const CollectionDef_Int64List& from);
+
+  inline CollectionDef_Int64List& operator=(const CollectionDef_Int64List& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  CollectionDef_Int64List(CollectionDef_Int64List&& from) noexcept
+    : CollectionDef_Int64List() {
+    *this = ::std::move(from);
+  }
+
+  inline CollectionDef_Int64List& operator=(CollectionDef_Int64List&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const CollectionDef_Int64List& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const CollectionDef_Int64List* internal_default_instance() {
+    return reinterpret_cast<const CollectionDef_Int64List*>(
+               &_CollectionDef_Int64List_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    6;
+
+  void UnsafeArenaSwap(CollectionDef_Int64List* other);
+  void Swap(CollectionDef_Int64List* other);
+  friend void swap(CollectionDef_Int64List& a, CollectionDef_Int64List& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline CollectionDef_Int64List* New() const final {
+    return CreateMaybeMessage<CollectionDef_Int64List>(NULL);
+  }
+
+  CollectionDef_Int64List* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<CollectionDef_Int64List>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const CollectionDef_Int64List& from);
+  void MergeFrom(const CollectionDef_Int64List& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(CollectionDef_Int64List* other);
+  protected:
+  explicit CollectionDef_Int64List(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // repeated int64 value = 1 [packed = true];
+  int value_size() const;
+  void clear_value();
+  static const int kValueFieldNumber = 1;
+  ::google::protobuf::int64 value(int index) const;
+  void set_value(int index, ::google::protobuf::int64 value);
+  void add_value(::google::protobuf::int64 value);
+  const ::google::protobuf::RepeatedField< ::google::protobuf::int64 >&
+      value() const;
+  ::google::protobuf::RepeatedField< ::google::protobuf::int64 >*
+      mutable_value();
+
+  // @@protoc_insertion_point(class_scope:tensorflow.CollectionDef.Int64List)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  ::google::protobuf::RepeatedField< ::google::protobuf::int64 > value_;
+  mutable std::atomic<int> _value_cached_byte_size_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto;
+};
+// -------------------------------------------------------------------
+
+class CollectionDef_FloatList : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.CollectionDef.FloatList) */ {
+ public:
+  CollectionDef_FloatList();
+  virtual ~CollectionDef_FloatList();
+
+  CollectionDef_FloatList(const CollectionDef_FloatList& from);
+
+  inline CollectionDef_FloatList& operator=(const CollectionDef_FloatList& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  CollectionDef_FloatList(CollectionDef_FloatList&& from) noexcept
+    : CollectionDef_FloatList() {
+    *this = ::std::move(from);
+  }
+
+  inline CollectionDef_FloatList& operator=(CollectionDef_FloatList&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const CollectionDef_FloatList& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const CollectionDef_FloatList* internal_default_instance() {
+    return reinterpret_cast<const CollectionDef_FloatList*>(
+               &_CollectionDef_FloatList_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    7;
+
+  void UnsafeArenaSwap(CollectionDef_FloatList* other);
+  void Swap(CollectionDef_FloatList* other);
+  friend void swap(CollectionDef_FloatList& a, CollectionDef_FloatList& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline CollectionDef_FloatList* New() const final {
+    return CreateMaybeMessage<CollectionDef_FloatList>(NULL);
+  }
+
+  CollectionDef_FloatList* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<CollectionDef_FloatList>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const CollectionDef_FloatList& from);
+  void MergeFrom(const CollectionDef_FloatList& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(CollectionDef_FloatList* other);
+  protected:
+  explicit CollectionDef_FloatList(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // repeated float value = 1 [packed = true];
+  int value_size() const;
+  void clear_value();
+  static const int kValueFieldNumber = 1;
+  float value(int index) const;
+  void set_value(int index, float value);
+  void add_value(float value);
+  const ::google::protobuf::RepeatedField< float >&
+      value() const;
+  ::google::protobuf::RepeatedField< float >*
+      mutable_value();
+
+  // @@protoc_insertion_point(class_scope:tensorflow.CollectionDef.FloatList)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  ::google::protobuf::RepeatedField< float > value_;
+  mutable std::atomic<int> _value_cached_byte_size_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto;
+};
+// -------------------------------------------------------------------
+
+class CollectionDef_AnyList : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.CollectionDef.AnyList) */ {
+ public:
+  CollectionDef_AnyList();
+  virtual ~CollectionDef_AnyList();
+
+  CollectionDef_AnyList(const CollectionDef_AnyList& from);
+
+  inline CollectionDef_AnyList& operator=(const CollectionDef_AnyList& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  CollectionDef_AnyList(CollectionDef_AnyList&& from) noexcept
+    : CollectionDef_AnyList() {
+    *this = ::std::move(from);
+  }
+
+  inline CollectionDef_AnyList& operator=(CollectionDef_AnyList&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const CollectionDef_AnyList& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const CollectionDef_AnyList* internal_default_instance() {
+    return reinterpret_cast<const CollectionDef_AnyList*>(
+               &_CollectionDef_AnyList_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    8;
+
+  void UnsafeArenaSwap(CollectionDef_AnyList* other);
+  void Swap(CollectionDef_AnyList* other);
+  friend void swap(CollectionDef_AnyList& a, CollectionDef_AnyList& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline CollectionDef_AnyList* New() const final {
+    return CreateMaybeMessage<CollectionDef_AnyList>(NULL);
+  }
+
+  CollectionDef_AnyList* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<CollectionDef_AnyList>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const CollectionDef_AnyList& from);
+  void MergeFrom(const CollectionDef_AnyList& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(CollectionDef_AnyList* other);
+  protected:
+  explicit CollectionDef_AnyList(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // repeated .google.protobuf.Any value = 1;
+  int value_size() const;
+  void clear_value();
+  static const int kValueFieldNumber = 1;
+  ::google::protobuf::Any* mutable_value(int index);
+  ::google::protobuf::RepeatedPtrField< ::google::protobuf::Any >*
+      mutable_value();
+  const ::google::protobuf::Any& value(int index) const;
+  ::google::protobuf::Any* add_value();
+  const ::google::protobuf::RepeatedPtrField< ::google::protobuf::Any >&
+      value() const;
+
+  // @@protoc_insertion_point(class_scope:tensorflow.CollectionDef.AnyList)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  ::google::protobuf::RepeatedPtrField< ::google::protobuf::Any > value_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto;
+};
+// -------------------------------------------------------------------
+
+class CollectionDef : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.CollectionDef) */ {
+ public:
+  CollectionDef();
+  virtual ~CollectionDef();
+
+  CollectionDef(const CollectionDef& from);
+
+  inline CollectionDef& operator=(const CollectionDef& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  CollectionDef(CollectionDef&& from) noexcept
+    : CollectionDef() {
+    *this = ::std::move(from);
+  }
+
+  inline CollectionDef& operator=(CollectionDef&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const CollectionDef& default_instance();
+
+  enum KindCase {
+    kNodeList = 1,
+    kBytesList = 2,
+    kInt64List = 3,
+    kFloatList = 4,
+    kAnyList = 5,
+    KIND_NOT_SET = 0,
+  };
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const CollectionDef* internal_default_instance() {
+    return reinterpret_cast<const CollectionDef*>(
+               &_CollectionDef_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    9;
+
+  void UnsafeArenaSwap(CollectionDef* other);
+  void Swap(CollectionDef* other);
+  friend void swap(CollectionDef& a, CollectionDef& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline CollectionDef* New() const final {
+    return CreateMaybeMessage<CollectionDef>(NULL);
+  }
+
+  CollectionDef* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<CollectionDef>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const CollectionDef& from);
+  void MergeFrom(const CollectionDef& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(CollectionDef* other);
+  protected:
+  explicit CollectionDef(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  typedef CollectionDef_NodeList NodeList;
+  typedef CollectionDef_BytesList BytesList;
+  typedef CollectionDef_Int64List Int64List;
+  typedef CollectionDef_FloatList FloatList;
+  typedef CollectionDef_AnyList AnyList;
+
+  // accessors -------------------------------------------------------
+
+  // .tensorflow.CollectionDef.NodeList node_list = 1;
+  bool has_node_list() const;
+  void clear_node_list();
+  static const int kNodeListFieldNumber = 1;
+  const ::tensorflow::CollectionDef_NodeList& node_list() const;
+  ::tensorflow::CollectionDef_NodeList* release_node_list();
+  ::tensorflow::CollectionDef_NodeList* mutable_node_list();
+  void set_allocated_node_list(::tensorflow::CollectionDef_NodeList* node_list);
+  void unsafe_arena_set_allocated_node_list(
+      ::tensorflow::CollectionDef_NodeList* node_list);
+  ::tensorflow::CollectionDef_NodeList* unsafe_arena_release_node_list();
+
+  // .tensorflow.CollectionDef.BytesList bytes_list = 2;
+  bool has_bytes_list() const;
+  void clear_bytes_list();
+  static const int kBytesListFieldNumber = 2;
+  const ::tensorflow::CollectionDef_BytesList& bytes_list() const;
+  ::tensorflow::CollectionDef_BytesList* release_bytes_list();
+  ::tensorflow::CollectionDef_BytesList* mutable_bytes_list();
+  void set_allocated_bytes_list(::tensorflow::CollectionDef_BytesList* bytes_list);
+  void unsafe_arena_set_allocated_bytes_list(
+      ::tensorflow::CollectionDef_BytesList* bytes_list);
+  ::tensorflow::CollectionDef_BytesList* unsafe_arena_release_bytes_list();
+
+  // .tensorflow.CollectionDef.Int64List int64_list = 3;
+  bool has_int64_list() const;
+  void clear_int64_list();
+  static const int kInt64ListFieldNumber = 3;
+  const ::tensorflow::CollectionDef_Int64List& int64_list() const;
+  ::tensorflow::CollectionDef_Int64List* release_int64_list();
+  ::tensorflow::CollectionDef_Int64List* mutable_int64_list();
+  void set_allocated_int64_list(::tensorflow::CollectionDef_Int64List* int64_list);
+  void unsafe_arena_set_allocated_int64_list(
+      ::tensorflow::CollectionDef_Int64List* int64_list);
+  ::tensorflow::CollectionDef_Int64List* unsafe_arena_release_int64_list();
+
+  // .tensorflow.CollectionDef.FloatList float_list = 4;
+  bool has_float_list() const;
+  void clear_float_list();
+  static const int kFloatListFieldNumber = 4;
+  const ::tensorflow::CollectionDef_FloatList& float_list() const;
+  ::tensorflow::CollectionDef_FloatList* release_float_list();
+  ::tensorflow::CollectionDef_FloatList* mutable_float_list();
+  void set_allocated_float_list(::tensorflow::CollectionDef_FloatList* float_list);
+  void unsafe_arena_set_allocated_float_list(
+      ::tensorflow::CollectionDef_FloatList* float_list);
+  ::tensorflow::CollectionDef_FloatList* unsafe_arena_release_float_list();
+
+  // .tensorflow.CollectionDef.AnyList any_list = 5;
+  bool has_any_list() const;
+  void clear_any_list();
+  static const int kAnyListFieldNumber = 5;
+  const ::tensorflow::CollectionDef_AnyList& any_list() const;
+  ::tensorflow::CollectionDef_AnyList* release_any_list();
+  ::tensorflow::CollectionDef_AnyList* mutable_any_list();
+  void set_allocated_any_list(::tensorflow::CollectionDef_AnyList* any_list);
+  void unsafe_arena_set_allocated_any_list(
+      ::tensorflow::CollectionDef_AnyList* any_list);
+  ::tensorflow::CollectionDef_AnyList* unsafe_arena_release_any_list();
+
+  void clear_kind();
+  KindCase kind_case() const;
+  // @@protoc_insertion_point(class_scope:tensorflow.CollectionDef)
+ private:
+  class HasBitSetters;
+  void set_has_node_list();
+  void set_has_bytes_list();
+  void set_has_int64_list();
+  void set_has_float_list();
+  void set_has_any_list();
+
+  inline bool has_kind() const;
+  inline void clear_has_kind();
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  union KindUnion {
+    KindUnion() {}
+    ::tensorflow::CollectionDef_NodeList* node_list_;
+    ::tensorflow::CollectionDef_BytesList* bytes_list_;
+    ::tensorflow::CollectionDef_Int64List* int64_list_;
+    ::tensorflow::CollectionDef_FloatList* float_list_;
+    ::tensorflow::CollectionDef_AnyList* any_list_;
+  } kind_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  ::google::protobuf::uint32 _oneof_case_[1];
+
+  friend struct ::TableStruct_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto;
+};
+// -------------------------------------------------------------------
+
+class TensorInfo_CooSparse : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.TensorInfo.CooSparse) */ {
+ public:
+  TensorInfo_CooSparse();
+  virtual ~TensorInfo_CooSparse();
+
+  TensorInfo_CooSparse(const TensorInfo_CooSparse& from);
+
+  inline TensorInfo_CooSparse& operator=(const TensorInfo_CooSparse& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  TensorInfo_CooSparse(TensorInfo_CooSparse&& from) noexcept
+    : TensorInfo_CooSparse() {
+    *this = ::std::move(from);
+  }
+
+  inline TensorInfo_CooSparse& operator=(TensorInfo_CooSparse&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const TensorInfo_CooSparse& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const TensorInfo_CooSparse* internal_default_instance() {
+    return reinterpret_cast<const TensorInfo_CooSparse*>(
+               &_TensorInfo_CooSparse_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    10;
+
+  void UnsafeArenaSwap(TensorInfo_CooSparse* other);
+  void Swap(TensorInfo_CooSparse* other);
+  friend void swap(TensorInfo_CooSparse& a, TensorInfo_CooSparse& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline TensorInfo_CooSparse* New() const final {
+    return CreateMaybeMessage<TensorInfo_CooSparse>(NULL);
+  }
+
+  TensorInfo_CooSparse* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<TensorInfo_CooSparse>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const TensorInfo_CooSparse& from);
+  void MergeFrom(const TensorInfo_CooSparse& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(TensorInfo_CooSparse* other);
+  protected:
+  explicit TensorInfo_CooSparse(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // string values_tensor_name = 1;
+  void clear_values_tensor_name();
+  static const int kValuesTensorNameFieldNumber = 1;
+  const ::std::string& values_tensor_name() const;
+  void set_values_tensor_name(const ::std::string& value);
+  #if LANG_CXX11
+  void set_values_tensor_name(::std::string&& value);
+  #endif
+  void set_values_tensor_name(const char* value);
+  void set_values_tensor_name(const char* value, size_t size);
+  ::std::string* mutable_values_tensor_name();
+  ::std::string* release_values_tensor_name();
+  void set_allocated_values_tensor_name(::std::string* values_tensor_name);
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  ::std::string* unsafe_arena_release_values_tensor_name();
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  void unsafe_arena_set_allocated_values_tensor_name(
+      ::std::string* values_tensor_name);
+
+  // string indices_tensor_name = 2;
+  void clear_indices_tensor_name();
+  static const int kIndicesTensorNameFieldNumber = 2;
+  const ::std::string& indices_tensor_name() const;
+  void set_indices_tensor_name(const ::std::string& value);
+  #if LANG_CXX11
+  void set_indices_tensor_name(::std::string&& value);
+  #endif
+  void set_indices_tensor_name(const char* value);
+  void set_indices_tensor_name(const char* value, size_t size);
+  ::std::string* mutable_indices_tensor_name();
+  ::std::string* release_indices_tensor_name();
+  void set_allocated_indices_tensor_name(::std::string* indices_tensor_name);
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  ::std::string* unsafe_arena_release_indices_tensor_name();
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  void unsafe_arena_set_allocated_indices_tensor_name(
+      ::std::string* indices_tensor_name);
+
+  // string dense_shape_tensor_name = 3;
+  void clear_dense_shape_tensor_name();
+  static const int kDenseShapeTensorNameFieldNumber = 3;
+  const ::std::string& dense_shape_tensor_name() const;
+  void set_dense_shape_tensor_name(const ::std::string& value);
+  #if LANG_CXX11
+  void set_dense_shape_tensor_name(::std::string&& value);
+  #endif
+  void set_dense_shape_tensor_name(const char* value);
+  void set_dense_shape_tensor_name(const char* value, size_t size);
+  ::std::string* mutable_dense_shape_tensor_name();
+  ::std::string* release_dense_shape_tensor_name();
+  void set_allocated_dense_shape_tensor_name(::std::string* dense_shape_tensor_name);
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  ::std::string* unsafe_arena_release_dense_shape_tensor_name();
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  void unsafe_arena_set_allocated_dense_shape_tensor_name(
+      ::std::string* dense_shape_tensor_name);
+
+  // @@protoc_insertion_point(class_scope:tensorflow.TensorInfo.CooSparse)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  ::google::protobuf::internal::ArenaStringPtr values_tensor_name_;
+  ::google::protobuf::internal::ArenaStringPtr indices_tensor_name_;
+  ::google::protobuf::internal::ArenaStringPtr dense_shape_tensor_name_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto;
+};
+// -------------------------------------------------------------------
+
+class TensorInfo : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.TensorInfo) */ {
+ public:
+  TensorInfo();
+  virtual ~TensorInfo();
+
+  TensorInfo(const TensorInfo& from);
+
+  inline TensorInfo& operator=(const TensorInfo& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  TensorInfo(TensorInfo&& from) noexcept
+    : TensorInfo() {
+    *this = ::std::move(from);
+  }
+
+  inline TensorInfo& operator=(TensorInfo&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const TensorInfo& default_instance();
+
+  enum EncodingCase {
+    kName = 1,
+    kCooSparse = 4,
+    ENCODING_NOT_SET = 0,
+  };
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const TensorInfo* internal_default_instance() {
+    return reinterpret_cast<const TensorInfo*>(
+               &_TensorInfo_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    11;
+
+  void UnsafeArenaSwap(TensorInfo* other);
+  void Swap(TensorInfo* other);
+  friend void swap(TensorInfo& a, TensorInfo& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline TensorInfo* New() const final {
+    return CreateMaybeMessage<TensorInfo>(NULL);
+  }
+
+  TensorInfo* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<TensorInfo>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const TensorInfo& from);
+  void MergeFrom(const TensorInfo& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(TensorInfo* other);
+  protected:
+  explicit TensorInfo(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  typedef TensorInfo_CooSparse CooSparse;
+
+  // accessors -------------------------------------------------------
+
+  // .tensorflow.TensorShapeProto tensor_shape = 3;
+  bool has_tensor_shape() const;
+  void clear_tensor_shape();
+  static const int kTensorShapeFieldNumber = 3;
+  const ::tensorflow::TensorShapeProto& tensor_shape() const;
+  ::tensorflow::TensorShapeProto* release_tensor_shape();
+  ::tensorflow::TensorShapeProto* mutable_tensor_shape();
+  void set_allocated_tensor_shape(::tensorflow::TensorShapeProto* tensor_shape);
+  void unsafe_arena_set_allocated_tensor_shape(
+      ::tensorflow::TensorShapeProto* tensor_shape);
+  ::tensorflow::TensorShapeProto* unsafe_arena_release_tensor_shape();
+
+  // .tensorflow.DataType dtype = 2;
+  void clear_dtype();
+  static const int kDtypeFieldNumber = 2;
+  ::tensorflow::DataType dtype() const;
+  void set_dtype(::tensorflow::DataType value);
+
+  // string name = 1;
+  private:
+  bool has_name() const;
+  public:
+  void clear_name();
+  static const int kNameFieldNumber = 1;
+  const ::std::string& name() const;
+  void set_name(const ::std::string& value);
+  #if LANG_CXX11
+  void set_name(::std::string&& value);
+  #endif
+  void set_name(const char* value);
+  void set_name(const char* value, size_t size);
+  ::std::string* mutable_name();
+  ::std::string* release_name();
+  void set_allocated_name(::std::string* name);
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  ::std::string* unsafe_arena_release_name();
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  void unsafe_arena_set_allocated_name(
+      ::std::string* name);
+
+  // .tensorflow.TensorInfo.CooSparse coo_sparse = 4;
+  bool has_coo_sparse() const;
+  void clear_coo_sparse();
+  static const int kCooSparseFieldNumber = 4;
+  const ::tensorflow::TensorInfo_CooSparse& coo_sparse() const;
+  ::tensorflow::TensorInfo_CooSparse* release_coo_sparse();
+  ::tensorflow::TensorInfo_CooSparse* mutable_coo_sparse();
+  void set_allocated_coo_sparse(::tensorflow::TensorInfo_CooSparse* coo_sparse);
+  void unsafe_arena_set_allocated_coo_sparse(
+      ::tensorflow::TensorInfo_CooSparse* coo_sparse);
+  ::tensorflow::TensorInfo_CooSparse* unsafe_arena_release_coo_sparse();
+
+  void clear_encoding();
+  EncodingCase encoding_case() const;
+  // @@protoc_insertion_point(class_scope:tensorflow.TensorInfo)
+ private:
+  class HasBitSetters;
+  void set_has_name();
+  void set_has_coo_sparse();
+
+  inline bool has_encoding() const;
+  inline void clear_has_encoding();
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  ::tensorflow::TensorShapeProto* tensor_shape_;
+  int dtype_;
+  union EncodingUnion {
+    EncodingUnion() {}
+    ::google::protobuf::internal::ArenaStringPtr name_;
+    ::tensorflow::TensorInfo_CooSparse* coo_sparse_;
+  } encoding_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  ::google::protobuf::uint32 _oneof_case_[1];
+
+  friend struct ::TableStruct_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto;
+};
+// -------------------------------------------------------------------
+
+class SignatureDef_InputsEntry_DoNotUse : public ::google::protobuf::internal::MapEntry<SignatureDef_InputsEntry_DoNotUse, 
+    ::std::string, ::tensorflow::TensorInfo,
+    ::google::protobuf::internal::WireFormatLite::TYPE_STRING,
+    ::google::protobuf::internal::WireFormatLite::TYPE_MESSAGE,
+    0 > {
+public:
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+static bool _ParseMap(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  typedef ::google::protobuf::internal::MapEntry<SignatureDef_InputsEntry_DoNotUse, 
+    ::std::string, ::tensorflow::TensorInfo,
+    ::google::protobuf::internal::WireFormatLite::TYPE_STRING,
+    ::google::protobuf::internal::WireFormatLite::TYPE_MESSAGE,
+    0 > SuperType;
+  SignatureDef_InputsEntry_DoNotUse();
+  SignatureDef_InputsEntry_DoNotUse(::google::protobuf::Arena* arena);
+  void MergeFrom(const SignatureDef_InputsEntry_DoNotUse& other);
+  static const SignatureDef_InputsEntry_DoNotUse* internal_default_instance() { return reinterpret_cast<const SignatureDef_InputsEntry_DoNotUse*>(&_SignatureDef_InputsEntry_DoNotUse_default_instance_); }
+  void MergeFrom(const ::google::protobuf::Message& other) final;
+  ::google::protobuf::Metadata GetMetadata() const;
+};
+
+// -------------------------------------------------------------------
+
+class SignatureDef_OutputsEntry_DoNotUse : public ::google::protobuf::internal::MapEntry<SignatureDef_OutputsEntry_DoNotUse, 
+    ::std::string, ::tensorflow::TensorInfo,
+    ::google::protobuf::internal::WireFormatLite::TYPE_STRING,
+    ::google::protobuf::internal::WireFormatLite::TYPE_MESSAGE,
+    0 > {
+public:
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+static bool _ParseMap(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  typedef ::google::protobuf::internal::MapEntry<SignatureDef_OutputsEntry_DoNotUse, 
+    ::std::string, ::tensorflow::TensorInfo,
+    ::google::protobuf::internal::WireFormatLite::TYPE_STRING,
+    ::google::protobuf::internal::WireFormatLite::TYPE_MESSAGE,
+    0 > SuperType;
+  SignatureDef_OutputsEntry_DoNotUse();
+  SignatureDef_OutputsEntry_DoNotUse(::google::protobuf::Arena* arena);
+  void MergeFrom(const SignatureDef_OutputsEntry_DoNotUse& other);
+  static const SignatureDef_OutputsEntry_DoNotUse* internal_default_instance() { return reinterpret_cast<const SignatureDef_OutputsEntry_DoNotUse*>(&_SignatureDef_OutputsEntry_DoNotUse_default_instance_); }
+  void MergeFrom(const ::google::protobuf::Message& other) final;
+  ::google::protobuf::Metadata GetMetadata() const;
+};
+
+// -------------------------------------------------------------------
+
+class SignatureDef : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.SignatureDef) */ {
+ public:
+  SignatureDef();
+  virtual ~SignatureDef();
+
+  SignatureDef(const SignatureDef& from);
+
+  inline SignatureDef& operator=(const SignatureDef& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  SignatureDef(SignatureDef&& from) noexcept
+    : SignatureDef() {
+    *this = ::std::move(from);
+  }
+
+  inline SignatureDef& operator=(SignatureDef&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const SignatureDef& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const SignatureDef* internal_default_instance() {
+    return reinterpret_cast<const SignatureDef*>(
+               &_SignatureDef_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    14;
+
+  void UnsafeArenaSwap(SignatureDef* other);
+  void Swap(SignatureDef* other);
+  friend void swap(SignatureDef& a, SignatureDef& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline SignatureDef* New() const final {
+    return CreateMaybeMessage<SignatureDef>(NULL);
+  }
+
+  SignatureDef* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<SignatureDef>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const SignatureDef& from);
+  void MergeFrom(const SignatureDef& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(SignatureDef* other);
+  protected:
+  explicit SignatureDef(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+
+  // accessors -------------------------------------------------------
+
+  // map<string, .tensorflow.TensorInfo> inputs = 1;
+  int inputs_size() const;
+  void clear_inputs();
+  static const int kInputsFieldNumber = 1;
+  const ::google::protobuf::Map< ::std::string, ::tensorflow::TensorInfo >&
+      inputs() const;
+  ::google::protobuf::Map< ::std::string, ::tensorflow::TensorInfo >*
+      mutable_inputs();
+
+  // map<string, .tensorflow.TensorInfo> outputs = 2;
+  int outputs_size() const;
+  void clear_outputs();
+  static const int kOutputsFieldNumber = 2;
+  const ::google::protobuf::Map< ::std::string, ::tensorflow::TensorInfo >&
+      outputs() const;
+  ::google::protobuf::Map< ::std::string, ::tensorflow::TensorInfo >*
+      mutable_outputs();
+
+  // string method_name = 3;
+  void clear_method_name();
+  static const int kMethodNameFieldNumber = 3;
+  const ::std::string& method_name() const;
+  void set_method_name(const ::std::string& value);
+  #if LANG_CXX11
+  void set_method_name(::std::string&& value);
+  #endif
+  void set_method_name(const char* value);
+  void set_method_name(const char* value, size_t size);
+  ::std::string* mutable_method_name();
+  ::std::string* release_method_name();
+  void set_allocated_method_name(::std::string* method_name);
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  ::std::string* unsafe_arena_release_method_name();
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  void unsafe_arena_set_allocated_method_name(
+      ::std::string* method_name);
+
+  // @@protoc_insertion_point(class_scope:tensorflow.SignatureDef)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  ::google::protobuf::internal::MapField<
+      SignatureDef_InputsEntry_DoNotUse,
+      ::std::string, ::tensorflow::TensorInfo,
+      ::google::protobuf::internal::WireFormatLite::TYPE_STRING,
+      ::google::protobuf::internal::WireFormatLite::TYPE_MESSAGE,
+      0 > inputs_;
+  ::google::protobuf::internal::MapField<
+      SignatureDef_OutputsEntry_DoNotUse,
+      ::std::string, ::tensorflow::TensorInfo,
+      ::google::protobuf::internal::WireFormatLite::TYPE_STRING,
+      ::google::protobuf::internal::WireFormatLite::TYPE_MESSAGE,
+      0 > outputs_;
+  ::google::protobuf::internal::ArenaStringPtr method_name_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto;
+};
+// -------------------------------------------------------------------
+
+class AssetFileDef : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.AssetFileDef) */ {
+ public:
+  AssetFileDef();
+  virtual ~AssetFileDef();
+
+  AssetFileDef(const AssetFileDef& from);
+
+  inline AssetFileDef& operator=(const AssetFileDef& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  AssetFileDef(AssetFileDef&& from) noexcept
+    : AssetFileDef() {
+    *this = ::std::move(from);
+  }
+
+  inline AssetFileDef& operator=(AssetFileDef&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const AssetFileDef& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const AssetFileDef* internal_default_instance() {
+    return reinterpret_cast<const AssetFileDef*>(
+               &_AssetFileDef_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    15;
+
+  void UnsafeArenaSwap(AssetFileDef* other);
+  void Swap(AssetFileDef* other);
+  friend void swap(AssetFileDef& a, AssetFileDef& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline AssetFileDef* New() const final {
+    return CreateMaybeMessage<AssetFileDef>(NULL);
+  }
+
+  AssetFileDef* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<AssetFileDef>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const AssetFileDef& from);
+  void MergeFrom(const AssetFileDef& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(AssetFileDef* other);
+  protected:
+  explicit AssetFileDef(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // string filename = 2;
+  void clear_filename();
+  static const int kFilenameFieldNumber = 2;
+  const ::std::string& filename() const;
+  void set_filename(const ::std::string& value);
+  #if LANG_CXX11
+  void set_filename(::std::string&& value);
+  #endif
+  void set_filename(const char* value);
+  void set_filename(const char* value, size_t size);
+  ::std::string* mutable_filename();
+  ::std::string* release_filename();
+  void set_allocated_filename(::std::string* filename);
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  ::std::string* unsafe_arena_release_filename();
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  void unsafe_arena_set_allocated_filename(
+      ::std::string* filename);
+
+  // .tensorflow.TensorInfo tensor_info = 1;
+  bool has_tensor_info() const;
+  void clear_tensor_info();
+  static const int kTensorInfoFieldNumber = 1;
+  const ::tensorflow::TensorInfo& tensor_info() const;
+  ::tensorflow::TensorInfo* release_tensor_info();
+  ::tensorflow::TensorInfo* mutable_tensor_info();
+  void set_allocated_tensor_info(::tensorflow::TensorInfo* tensor_info);
+  void unsafe_arena_set_allocated_tensor_info(
+      ::tensorflow::TensorInfo* tensor_info);
+  ::tensorflow::TensorInfo* unsafe_arena_release_tensor_info();
+
+  // @@protoc_insertion_point(class_scope:tensorflow.AssetFileDef)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  ::google::protobuf::internal::ArenaStringPtr filename_;
+  ::tensorflow::TensorInfo* tensor_info_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto;
+};
+// ===================================================================
+
+
+// ===================================================================
+
+#ifdef __GNUC__
+  #pragma GCC diagnostic push
+  #pragma GCC diagnostic ignored "-Wstrict-aliasing"
+#endif  // __GNUC__
+// MetaGraphDef_MetaInfoDef
+
+// string meta_graph_version = 1;
+inline void MetaGraphDef_MetaInfoDef::clear_meta_graph_version() {
+  meta_graph_version_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline const ::std::string& MetaGraphDef_MetaInfoDef::meta_graph_version() const {
+  // @@protoc_insertion_point(field_get:tensorflow.MetaGraphDef.MetaInfoDef.meta_graph_version)
+  return meta_graph_version_.Get();
+}
+inline void MetaGraphDef_MetaInfoDef::set_meta_graph_version(const ::std::string& value) {
+  
+  meta_graph_version_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set:tensorflow.MetaGraphDef.MetaInfoDef.meta_graph_version)
+}
+#if LANG_CXX11
+inline void MetaGraphDef_MetaInfoDef::set_meta_graph_version(::std::string&& value) {
+  
+  meta_graph_version_.Set(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.MetaGraphDef.MetaInfoDef.meta_graph_version)
+}
+#endif
+inline void MetaGraphDef_MetaInfoDef::set_meta_graph_version(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  meta_graph_version_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
+              GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_char:tensorflow.MetaGraphDef.MetaInfoDef.meta_graph_version)
+}
+inline void MetaGraphDef_MetaInfoDef::set_meta_graph_version(const char* value,
+    size_t size) {
+  
+  meta_graph_version_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
+      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.MetaGraphDef.MetaInfoDef.meta_graph_version)
+}
+inline ::std::string* MetaGraphDef_MetaInfoDef::mutable_meta_graph_version() {
+  
+  // @@protoc_insertion_point(field_mutable:tensorflow.MetaGraphDef.MetaInfoDef.meta_graph_version)
+  return meta_graph_version_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline ::std::string* MetaGraphDef_MetaInfoDef::release_meta_graph_version() {
+  // @@protoc_insertion_point(field_release:tensorflow.MetaGraphDef.MetaInfoDef.meta_graph_version)
+  
+  return meta_graph_version_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline void MetaGraphDef_MetaInfoDef::set_allocated_meta_graph_version(::std::string* meta_graph_version) {
+  if (meta_graph_version != NULL) {
+    
+  } else {
+    
+  }
+  meta_graph_version_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), meta_graph_version,
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.MetaGraphDef.MetaInfoDef.meta_graph_version)
+}
+inline ::std::string* MetaGraphDef_MetaInfoDef::unsafe_arena_release_meta_graph_version() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.MetaGraphDef.MetaInfoDef.meta_graph_version)
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  
+  return meta_graph_version_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      GetArenaNoVirtual());
+}
+inline void MetaGraphDef_MetaInfoDef::unsafe_arena_set_allocated_meta_graph_version(
+    ::std::string* meta_graph_version) {
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (meta_graph_version != NULL) {
+    
+  } else {
+    
+  }
+  meta_graph_version_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      meta_graph_version, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.MetaGraphDef.MetaInfoDef.meta_graph_version)
+}
+
+// .tensorflow.OpList stripped_op_list = 2;
+inline bool MetaGraphDef_MetaInfoDef::has_stripped_op_list() const {
+  return this != internal_default_instance() && stripped_op_list_ != NULL;
+}
+inline const ::tensorflow::OpList& MetaGraphDef_MetaInfoDef::stripped_op_list() const {
+  const ::tensorflow::OpList* p = stripped_op_list_;
+  // @@protoc_insertion_point(field_get:tensorflow.MetaGraphDef.MetaInfoDef.stripped_op_list)
+  return p != NULL ? *p : *reinterpret_cast<const ::tensorflow::OpList*>(
+      &::tensorflow::_OpList_default_instance_);
+}
+inline ::tensorflow::OpList* MetaGraphDef_MetaInfoDef::release_stripped_op_list() {
+  // @@protoc_insertion_point(field_release:tensorflow.MetaGraphDef.MetaInfoDef.stripped_op_list)
+  
+  ::tensorflow::OpList* temp = stripped_op_list_;
+  if (GetArenaNoVirtual() != NULL) {
+    temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
+  }
+  stripped_op_list_ = NULL;
+  return temp;
+}
+inline ::tensorflow::OpList* MetaGraphDef_MetaInfoDef::unsafe_arena_release_stripped_op_list() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.MetaGraphDef.MetaInfoDef.stripped_op_list)
+  
+  ::tensorflow::OpList* temp = stripped_op_list_;
+  stripped_op_list_ = NULL;
+  return temp;
+}
+inline ::tensorflow::OpList* MetaGraphDef_MetaInfoDef::mutable_stripped_op_list() {
+  
+  if (stripped_op_list_ == NULL) {
+    auto* p = CreateMaybeMessage<::tensorflow::OpList>(GetArenaNoVirtual());
+    stripped_op_list_ = p;
+  }
+  // @@protoc_insertion_point(field_mutable:tensorflow.MetaGraphDef.MetaInfoDef.stripped_op_list)
+  return stripped_op_list_;
+}
+inline void MetaGraphDef_MetaInfoDef::set_allocated_stripped_op_list(::tensorflow::OpList* stripped_op_list) {
+  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
+  if (message_arena == NULL) {
+    delete reinterpret_cast< ::google::protobuf::MessageLite*>(stripped_op_list_);
+  }
+  if (stripped_op_list) {
+    ::google::protobuf::Arena* submessage_arena =
+      reinterpret_cast<::google::protobuf::MessageLite*>(stripped_op_list)->GetArena();
+    if (message_arena != submessage_arena) {
+      stripped_op_list = ::google::protobuf::internal::GetOwnedMessage(
+          message_arena, stripped_op_list, submessage_arena);
+    }
+    
+  } else {
+    
+  }
+  stripped_op_list_ = stripped_op_list;
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.MetaGraphDef.MetaInfoDef.stripped_op_list)
+}
+
+// .google.protobuf.Any any_info = 3;
+inline bool MetaGraphDef_MetaInfoDef::has_any_info() const {
+  return this != internal_default_instance() && any_info_ != NULL;
+}
+inline const ::google::protobuf::Any& MetaGraphDef_MetaInfoDef::any_info() const {
+  const ::google::protobuf::Any* p = any_info_;
+  // @@protoc_insertion_point(field_get:tensorflow.MetaGraphDef.MetaInfoDef.any_info)
+  return p != NULL ? *p : *reinterpret_cast<const ::google::protobuf::Any*>(
+      &::google::protobuf::_Any_default_instance_);
+}
+inline ::google::protobuf::Any* MetaGraphDef_MetaInfoDef::release_any_info() {
+  // @@protoc_insertion_point(field_release:tensorflow.MetaGraphDef.MetaInfoDef.any_info)
+  
+  ::google::protobuf::Any* temp = any_info_;
+  if (GetArenaNoVirtual() != NULL) {
+    temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
+  }
+  any_info_ = NULL;
+  return temp;
+}
+inline ::google::protobuf::Any* MetaGraphDef_MetaInfoDef::unsafe_arena_release_any_info() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.MetaGraphDef.MetaInfoDef.any_info)
+  
+  ::google::protobuf::Any* temp = any_info_;
+  any_info_ = NULL;
+  return temp;
+}
+inline ::google::protobuf::Any* MetaGraphDef_MetaInfoDef::mutable_any_info() {
+  
+  if (any_info_ == NULL) {
+    auto* p = CreateMaybeMessage<::google::protobuf::Any>(GetArenaNoVirtual());
+    any_info_ = p;
+  }
+  // @@protoc_insertion_point(field_mutable:tensorflow.MetaGraphDef.MetaInfoDef.any_info)
+  return any_info_;
+}
+inline void MetaGraphDef_MetaInfoDef::set_allocated_any_info(::google::protobuf::Any* any_info) {
+  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
+  if (message_arena == NULL) {
+    delete reinterpret_cast< ::google::protobuf::MessageLite*>(any_info_);
+  }
+  if (any_info) {
+    ::google::protobuf::Arena* submessage_arena = NULL;
+    if (message_arena != submessage_arena) {
+      any_info = ::google::protobuf::internal::GetOwnedMessage(
+          message_arena, any_info, submessage_arena);
+    }
+    
+  } else {
+    
+  }
+  any_info_ = any_info;
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.MetaGraphDef.MetaInfoDef.any_info)
+}
+
+// repeated string tags = 4;
+inline int MetaGraphDef_MetaInfoDef::tags_size() const {
+  return tags_.size();
+}
+inline void MetaGraphDef_MetaInfoDef::clear_tags() {
+  tags_.Clear();
+}
+inline const ::std::string& MetaGraphDef_MetaInfoDef::tags(int index) const {
+  // @@protoc_insertion_point(field_get:tensorflow.MetaGraphDef.MetaInfoDef.tags)
+  return tags_.Get(index);
+}
+inline ::std::string* MetaGraphDef_MetaInfoDef::mutable_tags(int index) {
+  // @@protoc_insertion_point(field_mutable:tensorflow.MetaGraphDef.MetaInfoDef.tags)
+  return tags_.Mutable(index);
+}
+inline void MetaGraphDef_MetaInfoDef::set_tags(int index, const ::std::string& value) {
+  // @@protoc_insertion_point(field_set:tensorflow.MetaGraphDef.MetaInfoDef.tags)
+  tags_.Mutable(index)->assign(value);
+}
+#if LANG_CXX11
+inline void MetaGraphDef_MetaInfoDef::set_tags(int index, ::std::string&& value) {
+  // @@protoc_insertion_point(field_set:tensorflow.MetaGraphDef.MetaInfoDef.tags)
+  tags_.Mutable(index)->assign(std::move(value));
+}
+#endif
+inline void MetaGraphDef_MetaInfoDef::set_tags(int index, const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  tags_.Mutable(index)->assign(value);
+  // @@protoc_insertion_point(field_set_char:tensorflow.MetaGraphDef.MetaInfoDef.tags)
+}
+inline void MetaGraphDef_MetaInfoDef::set_tags(int index, const char* value, size_t size) {
+  tags_.Mutable(index)->assign(
+    reinterpret_cast<const char*>(value), size);
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.MetaGraphDef.MetaInfoDef.tags)
+}
+inline ::std::string* MetaGraphDef_MetaInfoDef::add_tags() {
+  // @@protoc_insertion_point(field_add_mutable:tensorflow.MetaGraphDef.MetaInfoDef.tags)
+  return tags_.Add();
+}
+inline void MetaGraphDef_MetaInfoDef::add_tags(const ::std::string& value) {
+  tags_.Add()->assign(value);
+  // @@protoc_insertion_point(field_add:tensorflow.MetaGraphDef.MetaInfoDef.tags)
+}
+#if LANG_CXX11
+inline void MetaGraphDef_MetaInfoDef::add_tags(::std::string&& value) {
+  tags_.Add(std::move(value));
+  // @@protoc_insertion_point(field_add:tensorflow.MetaGraphDef.MetaInfoDef.tags)
+}
+#endif
+inline void MetaGraphDef_MetaInfoDef::add_tags(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  tags_.Add()->assign(value);
+  // @@protoc_insertion_point(field_add_char:tensorflow.MetaGraphDef.MetaInfoDef.tags)
+}
+inline void MetaGraphDef_MetaInfoDef::add_tags(const char* value, size_t size) {
+  tags_.Add()->assign(reinterpret_cast<const char*>(value), size);
+  // @@protoc_insertion_point(field_add_pointer:tensorflow.MetaGraphDef.MetaInfoDef.tags)
+}
+inline const ::google::protobuf::RepeatedPtrField<::std::string>&
+MetaGraphDef_MetaInfoDef::tags() const {
+  // @@protoc_insertion_point(field_list:tensorflow.MetaGraphDef.MetaInfoDef.tags)
+  return tags_;
+}
+inline ::google::protobuf::RepeatedPtrField<::std::string>*
+MetaGraphDef_MetaInfoDef::mutable_tags() {
+  // @@protoc_insertion_point(field_mutable_list:tensorflow.MetaGraphDef.MetaInfoDef.tags)
+  return &tags_;
+}
+
+// string tensorflow_version = 5;
+inline void MetaGraphDef_MetaInfoDef::clear_tensorflow_version() {
+  tensorflow_version_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline const ::std::string& MetaGraphDef_MetaInfoDef::tensorflow_version() const {
+  // @@protoc_insertion_point(field_get:tensorflow.MetaGraphDef.MetaInfoDef.tensorflow_version)
+  return tensorflow_version_.Get();
+}
+inline void MetaGraphDef_MetaInfoDef::set_tensorflow_version(const ::std::string& value) {
+  
+  tensorflow_version_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set:tensorflow.MetaGraphDef.MetaInfoDef.tensorflow_version)
+}
+#if LANG_CXX11
+inline void MetaGraphDef_MetaInfoDef::set_tensorflow_version(::std::string&& value) {
+  
+  tensorflow_version_.Set(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.MetaGraphDef.MetaInfoDef.tensorflow_version)
+}
+#endif
+inline void MetaGraphDef_MetaInfoDef::set_tensorflow_version(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  tensorflow_version_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
+              GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_char:tensorflow.MetaGraphDef.MetaInfoDef.tensorflow_version)
+}
+inline void MetaGraphDef_MetaInfoDef::set_tensorflow_version(const char* value,
+    size_t size) {
+  
+  tensorflow_version_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
+      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.MetaGraphDef.MetaInfoDef.tensorflow_version)
+}
+inline ::std::string* MetaGraphDef_MetaInfoDef::mutable_tensorflow_version() {
+  
+  // @@protoc_insertion_point(field_mutable:tensorflow.MetaGraphDef.MetaInfoDef.tensorflow_version)
+  return tensorflow_version_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline ::std::string* MetaGraphDef_MetaInfoDef::release_tensorflow_version() {
+  // @@protoc_insertion_point(field_release:tensorflow.MetaGraphDef.MetaInfoDef.tensorflow_version)
+  
+  return tensorflow_version_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline void MetaGraphDef_MetaInfoDef::set_allocated_tensorflow_version(::std::string* tensorflow_version) {
+  if (tensorflow_version != NULL) {
+    
+  } else {
+    
+  }
+  tensorflow_version_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), tensorflow_version,
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.MetaGraphDef.MetaInfoDef.tensorflow_version)
+}
+inline ::std::string* MetaGraphDef_MetaInfoDef::unsafe_arena_release_tensorflow_version() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.MetaGraphDef.MetaInfoDef.tensorflow_version)
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  
+  return tensorflow_version_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      GetArenaNoVirtual());
+}
+inline void MetaGraphDef_MetaInfoDef::unsafe_arena_set_allocated_tensorflow_version(
+    ::std::string* tensorflow_version) {
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (tensorflow_version != NULL) {
+    
+  } else {
+    
+  }
+  tensorflow_version_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      tensorflow_version, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.MetaGraphDef.MetaInfoDef.tensorflow_version)
+}
+
+// string tensorflow_git_version = 6;
+inline void MetaGraphDef_MetaInfoDef::clear_tensorflow_git_version() {
+  tensorflow_git_version_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline const ::std::string& MetaGraphDef_MetaInfoDef::tensorflow_git_version() const {
+  // @@protoc_insertion_point(field_get:tensorflow.MetaGraphDef.MetaInfoDef.tensorflow_git_version)
+  return tensorflow_git_version_.Get();
+}
+inline void MetaGraphDef_MetaInfoDef::set_tensorflow_git_version(const ::std::string& value) {
+  
+  tensorflow_git_version_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set:tensorflow.MetaGraphDef.MetaInfoDef.tensorflow_git_version)
+}
+#if LANG_CXX11
+inline void MetaGraphDef_MetaInfoDef::set_tensorflow_git_version(::std::string&& value) {
+  
+  tensorflow_git_version_.Set(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.MetaGraphDef.MetaInfoDef.tensorflow_git_version)
+}
+#endif
+inline void MetaGraphDef_MetaInfoDef::set_tensorflow_git_version(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  tensorflow_git_version_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
+              GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_char:tensorflow.MetaGraphDef.MetaInfoDef.tensorflow_git_version)
+}
+inline void MetaGraphDef_MetaInfoDef::set_tensorflow_git_version(const char* value,
+    size_t size) {
+  
+  tensorflow_git_version_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
+      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.MetaGraphDef.MetaInfoDef.tensorflow_git_version)
+}
+inline ::std::string* MetaGraphDef_MetaInfoDef::mutable_tensorflow_git_version() {
+  
+  // @@protoc_insertion_point(field_mutable:tensorflow.MetaGraphDef.MetaInfoDef.tensorflow_git_version)
+  return tensorflow_git_version_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline ::std::string* MetaGraphDef_MetaInfoDef::release_tensorflow_git_version() {
+  // @@protoc_insertion_point(field_release:tensorflow.MetaGraphDef.MetaInfoDef.tensorflow_git_version)
+  
+  return tensorflow_git_version_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline void MetaGraphDef_MetaInfoDef::set_allocated_tensorflow_git_version(::std::string* tensorflow_git_version) {
+  if (tensorflow_git_version != NULL) {
+    
+  } else {
+    
+  }
+  tensorflow_git_version_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), tensorflow_git_version,
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.MetaGraphDef.MetaInfoDef.tensorflow_git_version)
+}
+inline ::std::string* MetaGraphDef_MetaInfoDef::unsafe_arena_release_tensorflow_git_version() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.MetaGraphDef.MetaInfoDef.tensorflow_git_version)
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  
+  return tensorflow_git_version_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      GetArenaNoVirtual());
+}
+inline void MetaGraphDef_MetaInfoDef::unsafe_arena_set_allocated_tensorflow_git_version(
+    ::std::string* tensorflow_git_version) {
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (tensorflow_git_version != NULL) {
+    
+  } else {
+    
+  }
+  tensorflow_git_version_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      tensorflow_git_version, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.MetaGraphDef.MetaInfoDef.tensorflow_git_version)
+}
+
+// bool stripped_default_attrs = 7;
+inline void MetaGraphDef_MetaInfoDef::clear_stripped_default_attrs() {
+  stripped_default_attrs_ = false;
+}
+inline bool MetaGraphDef_MetaInfoDef::stripped_default_attrs() const {
+  // @@protoc_insertion_point(field_get:tensorflow.MetaGraphDef.MetaInfoDef.stripped_default_attrs)
+  return stripped_default_attrs_;
+}
+inline void MetaGraphDef_MetaInfoDef::set_stripped_default_attrs(bool value) {
+  
+  stripped_default_attrs_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.MetaGraphDef.MetaInfoDef.stripped_default_attrs)
+}
+
+// -------------------------------------------------------------------
+
+// -------------------------------------------------------------------
+
+// -------------------------------------------------------------------
+
+// MetaGraphDef
+
+// .tensorflow.MetaGraphDef.MetaInfoDef meta_info_def = 1;
+inline bool MetaGraphDef::has_meta_info_def() const {
+  return this != internal_default_instance() && meta_info_def_ != NULL;
+}
+inline void MetaGraphDef::clear_meta_info_def() {
+  if (GetArenaNoVirtual() == NULL && meta_info_def_ != NULL) {
+    delete meta_info_def_;
+  }
+  meta_info_def_ = NULL;
+}
+inline const ::tensorflow::MetaGraphDef_MetaInfoDef& MetaGraphDef::meta_info_def() const {
+  const ::tensorflow::MetaGraphDef_MetaInfoDef* p = meta_info_def_;
+  // @@protoc_insertion_point(field_get:tensorflow.MetaGraphDef.meta_info_def)
+  return p != NULL ? *p : *reinterpret_cast<const ::tensorflow::MetaGraphDef_MetaInfoDef*>(
+      &::tensorflow::_MetaGraphDef_MetaInfoDef_default_instance_);
+}
+inline ::tensorflow::MetaGraphDef_MetaInfoDef* MetaGraphDef::release_meta_info_def() {
+  // @@protoc_insertion_point(field_release:tensorflow.MetaGraphDef.meta_info_def)
+  
+  ::tensorflow::MetaGraphDef_MetaInfoDef* temp = meta_info_def_;
+  if (GetArenaNoVirtual() != NULL) {
+    temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
+  }
+  meta_info_def_ = NULL;
+  return temp;
+}
+inline ::tensorflow::MetaGraphDef_MetaInfoDef* MetaGraphDef::unsafe_arena_release_meta_info_def() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.MetaGraphDef.meta_info_def)
+  
+  ::tensorflow::MetaGraphDef_MetaInfoDef* temp = meta_info_def_;
+  meta_info_def_ = NULL;
+  return temp;
+}
+inline ::tensorflow::MetaGraphDef_MetaInfoDef* MetaGraphDef::mutable_meta_info_def() {
+  
+  if (meta_info_def_ == NULL) {
+    auto* p = CreateMaybeMessage<::tensorflow::MetaGraphDef_MetaInfoDef>(GetArenaNoVirtual());
+    meta_info_def_ = p;
+  }
+  // @@protoc_insertion_point(field_mutable:tensorflow.MetaGraphDef.meta_info_def)
+  return meta_info_def_;
+}
+inline void MetaGraphDef::set_allocated_meta_info_def(::tensorflow::MetaGraphDef_MetaInfoDef* meta_info_def) {
+  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
+  if (message_arena == NULL) {
+    delete meta_info_def_;
+  }
+  if (meta_info_def) {
+    ::google::protobuf::Arena* submessage_arena =
+      ::google::protobuf::Arena::GetArena(meta_info_def);
+    if (message_arena != submessage_arena) {
+      meta_info_def = ::google::protobuf::internal::GetOwnedMessage(
+          message_arena, meta_info_def, submessage_arena);
+    }
+    
+  } else {
+    
+  }
+  meta_info_def_ = meta_info_def;
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.MetaGraphDef.meta_info_def)
+}
+
+// .tensorflow.GraphDef graph_def = 2;
+inline bool MetaGraphDef::has_graph_def() const {
+  return this != internal_default_instance() && graph_def_ != NULL;
+}
+inline const ::tensorflow::GraphDef& MetaGraphDef::graph_def() const {
+  const ::tensorflow::GraphDef* p = graph_def_;
+  // @@protoc_insertion_point(field_get:tensorflow.MetaGraphDef.graph_def)
+  return p != NULL ? *p : *reinterpret_cast<const ::tensorflow::GraphDef*>(
+      &::tensorflow::_GraphDef_default_instance_);
+}
+inline ::tensorflow::GraphDef* MetaGraphDef::release_graph_def() {
+  // @@protoc_insertion_point(field_release:tensorflow.MetaGraphDef.graph_def)
+  
+  ::tensorflow::GraphDef* temp = graph_def_;
+  if (GetArenaNoVirtual() != NULL) {
+    temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
+  }
+  graph_def_ = NULL;
+  return temp;
+}
+inline ::tensorflow::GraphDef* MetaGraphDef::unsafe_arena_release_graph_def() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.MetaGraphDef.graph_def)
+  
+  ::tensorflow::GraphDef* temp = graph_def_;
+  graph_def_ = NULL;
+  return temp;
+}
+inline ::tensorflow::GraphDef* MetaGraphDef::mutable_graph_def() {
+  
+  if (graph_def_ == NULL) {
+    auto* p = CreateMaybeMessage<::tensorflow::GraphDef>(GetArenaNoVirtual());
+    graph_def_ = p;
+  }
+  // @@protoc_insertion_point(field_mutable:tensorflow.MetaGraphDef.graph_def)
+  return graph_def_;
+}
+inline void MetaGraphDef::set_allocated_graph_def(::tensorflow::GraphDef* graph_def) {
+  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
+  if (message_arena == NULL) {
+    delete reinterpret_cast< ::google::protobuf::MessageLite*>(graph_def_);
+  }
+  if (graph_def) {
+    ::google::protobuf::Arena* submessage_arena =
+      reinterpret_cast<::google::protobuf::MessageLite*>(graph_def)->GetArena();
+    if (message_arena != submessage_arena) {
+      graph_def = ::google::protobuf::internal::GetOwnedMessage(
+          message_arena, graph_def, submessage_arena);
+    }
+    
+  } else {
+    
+  }
+  graph_def_ = graph_def;
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.MetaGraphDef.graph_def)
+}
+
+// .tensorflow.SaverDef saver_def = 3;
+inline bool MetaGraphDef::has_saver_def() const {
+  return this != internal_default_instance() && saver_def_ != NULL;
+}
+inline const ::tensorflow::SaverDef& MetaGraphDef::saver_def() const {
+  const ::tensorflow::SaverDef* p = saver_def_;
+  // @@protoc_insertion_point(field_get:tensorflow.MetaGraphDef.saver_def)
+  return p != NULL ? *p : *reinterpret_cast<const ::tensorflow::SaverDef*>(
+      &::tensorflow::_SaverDef_default_instance_);
+}
+inline ::tensorflow::SaverDef* MetaGraphDef::release_saver_def() {
+  // @@protoc_insertion_point(field_release:tensorflow.MetaGraphDef.saver_def)
+  
+  ::tensorflow::SaverDef* temp = saver_def_;
+  if (GetArenaNoVirtual() != NULL) {
+    temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
+  }
+  saver_def_ = NULL;
+  return temp;
+}
+inline ::tensorflow::SaverDef* MetaGraphDef::unsafe_arena_release_saver_def() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.MetaGraphDef.saver_def)
+  
+  ::tensorflow::SaverDef* temp = saver_def_;
+  saver_def_ = NULL;
+  return temp;
+}
+inline ::tensorflow::SaverDef* MetaGraphDef::mutable_saver_def() {
+  
+  if (saver_def_ == NULL) {
+    auto* p = CreateMaybeMessage<::tensorflow::SaverDef>(GetArenaNoVirtual());
+    saver_def_ = p;
+  }
+  // @@protoc_insertion_point(field_mutable:tensorflow.MetaGraphDef.saver_def)
+  return saver_def_;
+}
+inline void MetaGraphDef::set_allocated_saver_def(::tensorflow::SaverDef* saver_def) {
+  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
+  if (message_arena == NULL) {
+    delete reinterpret_cast< ::google::protobuf::MessageLite*>(saver_def_);
+  }
+  if (saver_def) {
+    ::google::protobuf::Arena* submessage_arena =
+      reinterpret_cast<::google::protobuf::MessageLite*>(saver_def)->GetArena();
+    if (message_arena != submessage_arena) {
+      saver_def = ::google::protobuf::internal::GetOwnedMessage(
+          message_arena, saver_def, submessage_arena);
+    }
+    
+  } else {
+    
+  }
+  saver_def_ = saver_def;
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.MetaGraphDef.saver_def)
+}
+
+// map<string, .tensorflow.CollectionDef> collection_def = 4;
+inline int MetaGraphDef::collection_def_size() const {
+  return collection_def_.size();
+}
+inline void MetaGraphDef::clear_collection_def() {
+  collection_def_.Clear();
+}
+inline const ::google::protobuf::Map< ::std::string, ::tensorflow::CollectionDef >&
+MetaGraphDef::collection_def() const {
+  // @@protoc_insertion_point(field_map:tensorflow.MetaGraphDef.collection_def)
+  return collection_def_.GetMap();
+}
+inline ::google::protobuf::Map< ::std::string, ::tensorflow::CollectionDef >*
+MetaGraphDef::mutable_collection_def() {
+  // @@protoc_insertion_point(field_mutable_map:tensorflow.MetaGraphDef.collection_def)
+  return collection_def_.MutableMap();
+}
+
+// map<string, .tensorflow.SignatureDef> signature_def = 5;
+inline int MetaGraphDef::signature_def_size() const {
+  return signature_def_.size();
+}
+inline void MetaGraphDef::clear_signature_def() {
+  signature_def_.Clear();
+}
+inline const ::google::protobuf::Map< ::std::string, ::tensorflow::SignatureDef >&
+MetaGraphDef::signature_def() const {
+  // @@protoc_insertion_point(field_map:tensorflow.MetaGraphDef.signature_def)
+  return signature_def_.GetMap();
+}
+inline ::google::protobuf::Map< ::std::string, ::tensorflow::SignatureDef >*
+MetaGraphDef::mutable_signature_def() {
+  // @@protoc_insertion_point(field_mutable_map:tensorflow.MetaGraphDef.signature_def)
+  return signature_def_.MutableMap();
+}
+
+// repeated .tensorflow.AssetFileDef asset_file_def = 6;
+inline int MetaGraphDef::asset_file_def_size() const {
+  return asset_file_def_.size();
+}
+inline void MetaGraphDef::clear_asset_file_def() {
+  asset_file_def_.Clear();
+}
+inline ::tensorflow::AssetFileDef* MetaGraphDef::mutable_asset_file_def(int index) {
+  // @@protoc_insertion_point(field_mutable:tensorflow.MetaGraphDef.asset_file_def)
+  return asset_file_def_.Mutable(index);
+}
+inline ::google::protobuf::RepeatedPtrField< ::tensorflow::AssetFileDef >*
+MetaGraphDef::mutable_asset_file_def() {
+  // @@protoc_insertion_point(field_mutable_list:tensorflow.MetaGraphDef.asset_file_def)
+  return &asset_file_def_;
+}
+inline const ::tensorflow::AssetFileDef& MetaGraphDef::asset_file_def(int index) const {
+  // @@protoc_insertion_point(field_get:tensorflow.MetaGraphDef.asset_file_def)
+  return asset_file_def_.Get(index);
+}
+inline ::tensorflow::AssetFileDef* MetaGraphDef::add_asset_file_def() {
+  // @@protoc_insertion_point(field_add:tensorflow.MetaGraphDef.asset_file_def)
+  return asset_file_def_.Add();
+}
+inline const ::google::protobuf::RepeatedPtrField< ::tensorflow::AssetFileDef >&
+MetaGraphDef::asset_file_def() const {
+  // @@protoc_insertion_point(field_list:tensorflow.MetaGraphDef.asset_file_def)
+  return asset_file_def_;
+}
+
+// -------------------------------------------------------------------
+
+// CollectionDef_NodeList
+
+// repeated string value = 1;
+inline int CollectionDef_NodeList::value_size() const {
+  return value_.size();
+}
+inline void CollectionDef_NodeList::clear_value() {
+  value_.Clear();
+}
+inline const ::std::string& CollectionDef_NodeList::value(int index) const {
+  // @@protoc_insertion_point(field_get:tensorflow.CollectionDef.NodeList.value)
+  return value_.Get(index);
+}
+inline ::std::string* CollectionDef_NodeList::mutable_value(int index) {
+  // @@protoc_insertion_point(field_mutable:tensorflow.CollectionDef.NodeList.value)
+  return value_.Mutable(index);
+}
+inline void CollectionDef_NodeList::set_value(int index, const ::std::string& value) {
+  // @@protoc_insertion_point(field_set:tensorflow.CollectionDef.NodeList.value)
+  value_.Mutable(index)->assign(value);
+}
+#if LANG_CXX11
+inline void CollectionDef_NodeList::set_value(int index, ::std::string&& value) {
+  // @@protoc_insertion_point(field_set:tensorflow.CollectionDef.NodeList.value)
+  value_.Mutable(index)->assign(std::move(value));
+}
+#endif
+inline void CollectionDef_NodeList::set_value(int index, const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  value_.Mutable(index)->assign(value);
+  // @@protoc_insertion_point(field_set_char:tensorflow.CollectionDef.NodeList.value)
+}
+inline void CollectionDef_NodeList::set_value(int index, const char* value, size_t size) {
+  value_.Mutable(index)->assign(
+    reinterpret_cast<const char*>(value), size);
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.CollectionDef.NodeList.value)
+}
+inline ::std::string* CollectionDef_NodeList::add_value() {
+  // @@protoc_insertion_point(field_add_mutable:tensorflow.CollectionDef.NodeList.value)
+  return value_.Add();
+}
+inline void CollectionDef_NodeList::add_value(const ::std::string& value) {
+  value_.Add()->assign(value);
+  // @@protoc_insertion_point(field_add:tensorflow.CollectionDef.NodeList.value)
+}
+#if LANG_CXX11
+inline void CollectionDef_NodeList::add_value(::std::string&& value) {
+  value_.Add(std::move(value));
+  // @@protoc_insertion_point(field_add:tensorflow.CollectionDef.NodeList.value)
+}
+#endif
+inline void CollectionDef_NodeList::add_value(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  value_.Add()->assign(value);
+  // @@protoc_insertion_point(field_add_char:tensorflow.CollectionDef.NodeList.value)
+}
+inline void CollectionDef_NodeList::add_value(const char* value, size_t size) {
+  value_.Add()->assign(reinterpret_cast<const char*>(value), size);
+  // @@protoc_insertion_point(field_add_pointer:tensorflow.CollectionDef.NodeList.value)
+}
+inline const ::google::protobuf::RepeatedPtrField<::std::string>&
+CollectionDef_NodeList::value() const {
+  // @@protoc_insertion_point(field_list:tensorflow.CollectionDef.NodeList.value)
+  return value_;
+}
+inline ::google::protobuf::RepeatedPtrField<::std::string>*
+CollectionDef_NodeList::mutable_value() {
+  // @@protoc_insertion_point(field_mutable_list:tensorflow.CollectionDef.NodeList.value)
+  return &value_;
+}
+
+// -------------------------------------------------------------------
+
+// CollectionDef_BytesList
+
+// repeated bytes value = 1;
+inline int CollectionDef_BytesList::value_size() const {
+  return value_.size();
+}
+inline void CollectionDef_BytesList::clear_value() {
+  value_.Clear();
+}
+inline const ::std::string& CollectionDef_BytesList::value(int index) const {
+  // @@protoc_insertion_point(field_get:tensorflow.CollectionDef.BytesList.value)
+  return value_.Get(index);
+}
+inline ::std::string* CollectionDef_BytesList::mutable_value(int index) {
+  // @@protoc_insertion_point(field_mutable:tensorflow.CollectionDef.BytesList.value)
+  return value_.Mutable(index);
+}
+inline void CollectionDef_BytesList::set_value(int index, const ::std::string& value) {
+  // @@protoc_insertion_point(field_set:tensorflow.CollectionDef.BytesList.value)
+  value_.Mutable(index)->assign(value);
+}
+#if LANG_CXX11
+inline void CollectionDef_BytesList::set_value(int index, ::std::string&& value) {
+  // @@protoc_insertion_point(field_set:tensorflow.CollectionDef.BytesList.value)
+  value_.Mutable(index)->assign(std::move(value));
+}
+#endif
+inline void CollectionDef_BytesList::set_value(int index, const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  value_.Mutable(index)->assign(value);
+  // @@protoc_insertion_point(field_set_char:tensorflow.CollectionDef.BytesList.value)
+}
+inline void CollectionDef_BytesList::set_value(int index, const void* value, size_t size) {
+  value_.Mutable(index)->assign(
+    reinterpret_cast<const char*>(value), size);
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.CollectionDef.BytesList.value)
+}
+inline ::std::string* CollectionDef_BytesList::add_value() {
+  // @@protoc_insertion_point(field_add_mutable:tensorflow.CollectionDef.BytesList.value)
+  return value_.Add();
+}
+inline void CollectionDef_BytesList::add_value(const ::std::string& value) {
+  value_.Add()->assign(value);
+  // @@protoc_insertion_point(field_add:tensorflow.CollectionDef.BytesList.value)
+}
+#if LANG_CXX11
+inline void CollectionDef_BytesList::add_value(::std::string&& value) {
+  value_.Add(std::move(value));
+  // @@protoc_insertion_point(field_add:tensorflow.CollectionDef.BytesList.value)
+}
+#endif
+inline void CollectionDef_BytesList::add_value(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  value_.Add()->assign(value);
+  // @@protoc_insertion_point(field_add_char:tensorflow.CollectionDef.BytesList.value)
+}
+inline void CollectionDef_BytesList::add_value(const void* value, size_t size) {
+  value_.Add()->assign(reinterpret_cast<const char*>(value), size);
+  // @@protoc_insertion_point(field_add_pointer:tensorflow.CollectionDef.BytesList.value)
+}
+inline const ::google::protobuf::RepeatedPtrField<::std::string>&
+CollectionDef_BytesList::value() const {
+  // @@protoc_insertion_point(field_list:tensorflow.CollectionDef.BytesList.value)
+  return value_;
+}
+inline ::google::protobuf::RepeatedPtrField<::std::string>*
+CollectionDef_BytesList::mutable_value() {
+  // @@protoc_insertion_point(field_mutable_list:tensorflow.CollectionDef.BytesList.value)
+  return &value_;
+}
+
+// -------------------------------------------------------------------
+
+// CollectionDef_Int64List
+
+// repeated int64 value = 1 [packed = true];
+inline int CollectionDef_Int64List::value_size() const {
+  return value_.size();
+}
+inline void CollectionDef_Int64List::clear_value() {
+  value_.Clear();
+}
+inline ::google::protobuf::int64 CollectionDef_Int64List::value(int index) const {
+  // @@protoc_insertion_point(field_get:tensorflow.CollectionDef.Int64List.value)
+  return value_.Get(index);
+}
+inline void CollectionDef_Int64List::set_value(int index, ::google::protobuf::int64 value) {
+  value_.Set(index, value);
+  // @@protoc_insertion_point(field_set:tensorflow.CollectionDef.Int64List.value)
+}
+inline void CollectionDef_Int64List::add_value(::google::protobuf::int64 value) {
+  value_.Add(value);
+  // @@protoc_insertion_point(field_add:tensorflow.CollectionDef.Int64List.value)
+}
+inline const ::google::protobuf::RepeatedField< ::google::protobuf::int64 >&
+CollectionDef_Int64List::value() const {
+  // @@protoc_insertion_point(field_list:tensorflow.CollectionDef.Int64List.value)
+  return value_;
+}
+inline ::google::protobuf::RepeatedField< ::google::protobuf::int64 >*
+CollectionDef_Int64List::mutable_value() {
+  // @@protoc_insertion_point(field_mutable_list:tensorflow.CollectionDef.Int64List.value)
+  return &value_;
+}
+
+// -------------------------------------------------------------------
+
+// CollectionDef_FloatList
+
+// repeated float value = 1 [packed = true];
+inline int CollectionDef_FloatList::value_size() const {
+  return value_.size();
+}
+inline void CollectionDef_FloatList::clear_value() {
+  value_.Clear();
+}
+inline float CollectionDef_FloatList::value(int index) const {
+  // @@protoc_insertion_point(field_get:tensorflow.CollectionDef.FloatList.value)
+  return value_.Get(index);
+}
+inline void CollectionDef_FloatList::set_value(int index, float value) {
+  value_.Set(index, value);
+  // @@protoc_insertion_point(field_set:tensorflow.CollectionDef.FloatList.value)
+}
+inline void CollectionDef_FloatList::add_value(float value) {
+  value_.Add(value);
+  // @@protoc_insertion_point(field_add:tensorflow.CollectionDef.FloatList.value)
+}
+inline const ::google::protobuf::RepeatedField< float >&
+CollectionDef_FloatList::value() const {
+  // @@protoc_insertion_point(field_list:tensorflow.CollectionDef.FloatList.value)
+  return value_;
+}
+inline ::google::protobuf::RepeatedField< float >*
+CollectionDef_FloatList::mutable_value() {
+  // @@protoc_insertion_point(field_mutable_list:tensorflow.CollectionDef.FloatList.value)
+  return &value_;
+}
+
+// -------------------------------------------------------------------
+
+// CollectionDef_AnyList
+
+// repeated .google.protobuf.Any value = 1;
+inline int CollectionDef_AnyList::value_size() const {
+  return value_.size();
+}
+inline ::google::protobuf::Any* CollectionDef_AnyList::mutable_value(int index) {
+  // @@protoc_insertion_point(field_mutable:tensorflow.CollectionDef.AnyList.value)
+  return value_.Mutable(index);
+}
+inline ::google::protobuf::RepeatedPtrField< ::google::protobuf::Any >*
+CollectionDef_AnyList::mutable_value() {
+  // @@protoc_insertion_point(field_mutable_list:tensorflow.CollectionDef.AnyList.value)
+  return &value_;
+}
+inline const ::google::protobuf::Any& CollectionDef_AnyList::value(int index) const {
+  // @@protoc_insertion_point(field_get:tensorflow.CollectionDef.AnyList.value)
+  return value_.Get(index);
+}
+inline ::google::protobuf::Any* CollectionDef_AnyList::add_value() {
+  // @@protoc_insertion_point(field_add:tensorflow.CollectionDef.AnyList.value)
+  return value_.Add();
+}
+inline const ::google::protobuf::RepeatedPtrField< ::google::protobuf::Any >&
+CollectionDef_AnyList::value() const {
+  // @@protoc_insertion_point(field_list:tensorflow.CollectionDef.AnyList.value)
+  return value_;
+}
+
+// -------------------------------------------------------------------
+
+// CollectionDef
+
+// .tensorflow.CollectionDef.NodeList node_list = 1;
+inline bool CollectionDef::has_node_list() const {
+  return kind_case() == kNodeList;
+}
+inline void CollectionDef::set_has_node_list() {
+  _oneof_case_[0] = kNodeList;
+}
+inline void CollectionDef::clear_node_list() {
+  if (has_node_list()) {
+    if (GetArenaNoVirtual() == NULL) {
+      delete kind_.node_list_;
+    }
+    clear_has_kind();
+  }
+}
+inline ::tensorflow::CollectionDef_NodeList* CollectionDef::release_node_list() {
+  // @@protoc_insertion_point(field_release:tensorflow.CollectionDef.node_list)
+  if (has_node_list()) {
+    clear_has_kind();
+      ::tensorflow::CollectionDef_NodeList* temp = kind_.node_list_;
+    if (GetArenaNoVirtual() != NULL) {
+      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
+    }
+    kind_.node_list_ = NULL;
+    return temp;
+  } else {
+    return NULL;
+  }
+}
+inline const ::tensorflow::CollectionDef_NodeList& CollectionDef::node_list() const {
+  // @@protoc_insertion_point(field_get:tensorflow.CollectionDef.node_list)
+  return has_node_list()
+      ? *kind_.node_list_
+      : *reinterpret_cast< ::tensorflow::CollectionDef_NodeList*>(&::tensorflow::_CollectionDef_NodeList_default_instance_);
+}
+inline ::tensorflow::CollectionDef_NodeList* CollectionDef::unsafe_arena_release_node_list() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.CollectionDef.node_list)
+  if (has_node_list()) {
+    clear_has_kind();
+    ::tensorflow::CollectionDef_NodeList* temp = kind_.node_list_;
+    kind_.node_list_ = NULL;
+    return temp;
+  } else {
+    return NULL;
+  }
+}
+inline void CollectionDef::unsafe_arena_set_allocated_node_list(::tensorflow::CollectionDef_NodeList* node_list) {
+  clear_kind();
+  if (node_list) {
+    set_has_node_list();
+    kind_.node_list_ = node_list;
+  }
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.CollectionDef.node_list)
+}
+inline ::tensorflow::CollectionDef_NodeList* CollectionDef::mutable_node_list() {
+  if (!has_node_list()) {
+    clear_kind();
+    set_has_node_list();
+    kind_.node_list_ = CreateMaybeMessage< ::tensorflow::CollectionDef_NodeList >(
+        GetArenaNoVirtual());
+  }
+  // @@protoc_insertion_point(field_mutable:tensorflow.CollectionDef.node_list)
+  return kind_.node_list_;
+}
+
+// .tensorflow.CollectionDef.BytesList bytes_list = 2;
+inline bool CollectionDef::has_bytes_list() const {
+  return kind_case() == kBytesList;
+}
+inline void CollectionDef::set_has_bytes_list() {
+  _oneof_case_[0] = kBytesList;
+}
+inline void CollectionDef::clear_bytes_list() {
+  if (has_bytes_list()) {
+    if (GetArenaNoVirtual() == NULL) {
+      delete kind_.bytes_list_;
+    }
+    clear_has_kind();
+  }
+}
+inline ::tensorflow::CollectionDef_BytesList* CollectionDef::release_bytes_list() {
+  // @@protoc_insertion_point(field_release:tensorflow.CollectionDef.bytes_list)
+  if (has_bytes_list()) {
+    clear_has_kind();
+      ::tensorflow::CollectionDef_BytesList* temp = kind_.bytes_list_;
+    if (GetArenaNoVirtual() != NULL) {
+      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
+    }
+    kind_.bytes_list_ = NULL;
+    return temp;
+  } else {
+    return NULL;
+  }
+}
+inline const ::tensorflow::CollectionDef_BytesList& CollectionDef::bytes_list() const {
+  // @@protoc_insertion_point(field_get:tensorflow.CollectionDef.bytes_list)
+  return has_bytes_list()
+      ? *kind_.bytes_list_
+      : *reinterpret_cast< ::tensorflow::CollectionDef_BytesList*>(&::tensorflow::_CollectionDef_BytesList_default_instance_);
+}
+inline ::tensorflow::CollectionDef_BytesList* CollectionDef::unsafe_arena_release_bytes_list() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.CollectionDef.bytes_list)
+  if (has_bytes_list()) {
+    clear_has_kind();
+    ::tensorflow::CollectionDef_BytesList* temp = kind_.bytes_list_;
+    kind_.bytes_list_ = NULL;
+    return temp;
+  } else {
+    return NULL;
+  }
+}
+inline void CollectionDef::unsafe_arena_set_allocated_bytes_list(::tensorflow::CollectionDef_BytesList* bytes_list) {
+  clear_kind();
+  if (bytes_list) {
+    set_has_bytes_list();
+    kind_.bytes_list_ = bytes_list;
+  }
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.CollectionDef.bytes_list)
+}
+inline ::tensorflow::CollectionDef_BytesList* CollectionDef::mutable_bytes_list() {
+  if (!has_bytes_list()) {
+    clear_kind();
+    set_has_bytes_list();
+    kind_.bytes_list_ = CreateMaybeMessage< ::tensorflow::CollectionDef_BytesList >(
+        GetArenaNoVirtual());
+  }
+  // @@protoc_insertion_point(field_mutable:tensorflow.CollectionDef.bytes_list)
+  return kind_.bytes_list_;
+}
+
+// .tensorflow.CollectionDef.Int64List int64_list = 3;
+inline bool CollectionDef::has_int64_list() const {
+  return kind_case() == kInt64List;
+}
+inline void CollectionDef::set_has_int64_list() {
+  _oneof_case_[0] = kInt64List;
+}
+inline void CollectionDef::clear_int64_list() {
+  if (has_int64_list()) {
+    if (GetArenaNoVirtual() == NULL) {
+      delete kind_.int64_list_;
+    }
+    clear_has_kind();
+  }
+}
+inline ::tensorflow::CollectionDef_Int64List* CollectionDef::release_int64_list() {
+  // @@protoc_insertion_point(field_release:tensorflow.CollectionDef.int64_list)
+  if (has_int64_list()) {
+    clear_has_kind();
+      ::tensorflow::CollectionDef_Int64List* temp = kind_.int64_list_;
+    if (GetArenaNoVirtual() != NULL) {
+      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
+    }
+    kind_.int64_list_ = NULL;
+    return temp;
+  } else {
+    return NULL;
+  }
+}
+inline const ::tensorflow::CollectionDef_Int64List& CollectionDef::int64_list() const {
+  // @@protoc_insertion_point(field_get:tensorflow.CollectionDef.int64_list)
+  return has_int64_list()
+      ? *kind_.int64_list_
+      : *reinterpret_cast< ::tensorflow::CollectionDef_Int64List*>(&::tensorflow::_CollectionDef_Int64List_default_instance_);
+}
+inline ::tensorflow::CollectionDef_Int64List* CollectionDef::unsafe_arena_release_int64_list() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.CollectionDef.int64_list)
+  if (has_int64_list()) {
+    clear_has_kind();
+    ::tensorflow::CollectionDef_Int64List* temp = kind_.int64_list_;
+    kind_.int64_list_ = NULL;
+    return temp;
+  } else {
+    return NULL;
+  }
+}
+inline void CollectionDef::unsafe_arena_set_allocated_int64_list(::tensorflow::CollectionDef_Int64List* int64_list) {
+  clear_kind();
+  if (int64_list) {
+    set_has_int64_list();
+    kind_.int64_list_ = int64_list;
+  }
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.CollectionDef.int64_list)
+}
+inline ::tensorflow::CollectionDef_Int64List* CollectionDef::mutable_int64_list() {
+  if (!has_int64_list()) {
+    clear_kind();
+    set_has_int64_list();
+    kind_.int64_list_ = CreateMaybeMessage< ::tensorflow::CollectionDef_Int64List >(
+        GetArenaNoVirtual());
+  }
+  // @@protoc_insertion_point(field_mutable:tensorflow.CollectionDef.int64_list)
+  return kind_.int64_list_;
+}
+
+// .tensorflow.CollectionDef.FloatList float_list = 4;
+inline bool CollectionDef::has_float_list() const {
+  return kind_case() == kFloatList;
+}
+inline void CollectionDef::set_has_float_list() {
+  _oneof_case_[0] = kFloatList;
+}
+inline void CollectionDef::clear_float_list() {
+  if (has_float_list()) {
+    if (GetArenaNoVirtual() == NULL) {
+      delete kind_.float_list_;
+    }
+    clear_has_kind();
+  }
+}
+inline ::tensorflow::CollectionDef_FloatList* CollectionDef::release_float_list() {
+  // @@protoc_insertion_point(field_release:tensorflow.CollectionDef.float_list)
+  if (has_float_list()) {
+    clear_has_kind();
+      ::tensorflow::CollectionDef_FloatList* temp = kind_.float_list_;
+    if (GetArenaNoVirtual() != NULL) {
+      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
+    }
+    kind_.float_list_ = NULL;
+    return temp;
+  } else {
+    return NULL;
+  }
+}
+inline const ::tensorflow::CollectionDef_FloatList& CollectionDef::float_list() const {
+  // @@protoc_insertion_point(field_get:tensorflow.CollectionDef.float_list)
+  return has_float_list()
+      ? *kind_.float_list_
+      : *reinterpret_cast< ::tensorflow::CollectionDef_FloatList*>(&::tensorflow::_CollectionDef_FloatList_default_instance_);
+}
+inline ::tensorflow::CollectionDef_FloatList* CollectionDef::unsafe_arena_release_float_list() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.CollectionDef.float_list)
+  if (has_float_list()) {
+    clear_has_kind();
+    ::tensorflow::CollectionDef_FloatList* temp = kind_.float_list_;
+    kind_.float_list_ = NULL;
+    return temp;
+  } else {
+    return NULL;
+  }
+}
+inline void CollectionDef::unsafe_arena_set_allocated_float_list(::tensorflow::CollectionDef_FloatList* float_list) {
+  clear_kind();
+  if (float_list) {
+    set_has_float_list();
+    kind_.float_list_ = float_list;
+  }
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.CollectionDef.float_list)
+}
+inline ::tensorflow::CollectionDef_FloatList* CollectionDef::mutable_float_list() {
+  if (!has_float_list()) {
+    clear_kind();
+    set_has_float_list();
+    kind_.float_list_ = CreateMaybeMessage< ::tensorflow::CollectionDef_FloatList >(
+        GetArenaNoVirtual());
+  }
+  // @@protoc_insertion_point(field_mutable:tensorflow.CollectionDef.float_list)
+  return kind_.float_list_;
+}
+
+// .tensorflow.CollectionDef.AnyList any_list = 5;
+inline bool CollectionDef::has_any_list() const {
+  return kind_case() == kAnyList;
+}
+inline void CollectionDef::set_has_any_list() {
+  _oneof_case_[0] = kAnyList;
+}
+inline void CollectionDef::clear_any_list() {
+  if (has_any_list()) {
+    if (GetArenaNoVirtual() == NULL) {
+      delete kind_.any_list_;
+    }
+    clear_has_kind();
+  }
+}
+inline ::tensorflow::CollectionDef_AnyList* CollectionDef::release_any_list() {
+  // @@protoc_insertion_point(field_release:tensorflow.CollectionDef.any_list)
+  if (has_any_list()) {
+    clear_has_kind();
+      ::tensorflow::CollectionDef_AnyList* temp = kind_.any_list_;
+    if (GetArenaNoVirtual() != NULL) {
+      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
+    }
+    kind_.any_list_ = NULL;
+    return temp;
+  } else {
+    return NULL;
+  }
+}
+inline const ::tensorflow::CollectionDef_AnyList& CollectionDef::any_list() const {
+  // @@protoc_insertion_point(field_get:tensorflow.CollectionDef.any_list)
+  return has_any_list()
+      ? *kind_.any_list_
+      : *reinterpret_cast< ::tensorflow::CollectionDef_AnyList*>(&::tensorflow::_CollectionDef_AnyList_default_instance_);
+}
+inline ::tensorflow::CollectionDef_AnyList* CollectionDef::unsafe_arena_release_any_list() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.CollectionDef.any_list)
+  if (has_any_list()) {
+    clear_has_kind();
+    ::tensorflow::CollectionDef_AnyList* temp = kind_.any_list_;
+    kind_.any_list_ = NULL;
+    return temp;
+  } else {
+    return NULL;
+  }
+}
+inline void CollectionDef::unsafe_arena_set_allocated_any_list(::tensorflow::CollectionDef_AnyList* any_list) {
+  clear_kind();
+  if (any_list) {
+    set_has_any_list();
+    kind_.any_list_ = any_list;
+  }
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.CollectionDef.any_list)
+}
+inline ::tensorflow::CollectionDef_AnyList* CollectionDef::mutable_any_list() {
+  if (!has_any_list()) {
+    clear_kind();
+    set_has_any_list();
+    kind_.any_list_ = CreateMaybeMessage< ::tensorflow::CollectionDef_AnyList >(
+        GetArenaNoVirtual());
+  }
+  // @@protoc_insertion_point(field_mutable:tensorflow.CollectionDef.any_list)
+  return kind_.any_list_;
+}
+
+inline bool CollectionDef::has_kind() const {
+  return kind_case() != KIND_NOT_SET;
+}
+inline void CollectionDef::clear_has_kind() {
+  _oneof_case_[0] = KIND_NOT_SET;
+}
+inline CollectionDef::KindCase CollectionDef::kind_case() const {
+  return CollectionDef::KindCase(_oneof_case_[0]);
+}
+// -------------------------------------------------------------------
+
+// TensorInfo_CooSparse
+
+// string values_tensor_name = 1;
+inline void TensorInfo_CooSparse::clear_values_tensor_name() {
+  values_tensor_name_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline const ::std::string& TensorInfo_CooSparse::values_tensor_name() const {
+  // @@protoc_insertion_point(field_get:tensorflow.TensorInfo.CooSparse.values_tensor_name)
+  return values_tensor_name_.Get();
+}
+inline void TensorInfo_CooSparse::set_values_tensor_name(const ::std::string& value) {
+  
+  values_tensor_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set:tensorflow.TensorInfo.CooSparse.values_tensor_name)
+}
+#if LANG_CXX11
+inline void TensorInfo_CooSparse::set_values_tensor_name(::std::string&& value) {
+  
+  values_tensor_name_.Set(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.TensorInfo.CooSparse.values_tensor_name)
+}
+#endif
+inline void TensorInfo_CooSparse::set_values_tensor_name(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  values_tensor_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
+              GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_char:tensorflow.TensorInfo.CooSparse.values_tensor_name)
+}
+inline void TensorInfo_CooSparse::set_values_tensor_name(const char* value,
+    size_t size) {
+  
+  values_tensor_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
+      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.TensorInfo.CooSparse.values_tensor_name)
+}
+inline ::std::string* TensorInfo_CooSparse::mutable_values_tensor_name() {
+  
+  // @@protoc_insertion_point(field_mutable:tensorflow.TensorInfo.CooSparse.values_tensor_name)
+  return values_tensor_name_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline ::std::string* TensorInfo_CooSparse::release_values_tensor_name() {
+  // @@protoc_insertion_point(field_release:tensorflow.TensorInfo.CooSparse.values_tensor_name)
+  
+  return values_tensor_name_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline void TensorInfo_CooSparse::set_allocated_values_tensor_name(::std::string* values_tensor_name) {
+  if (values_tensor_name != NULL) {
+    
+  } else {
+    
+  }
+  values_tensor_name_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), values_tensor_name,
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.TensorInfo.CooSparse.values_tensor_name)
+}
+inline ::std::string* TensorInfo_CooSparse::unsafe_arena_release_values_tensor_name() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.TensorInfo.CooSparse.values_tensor_name)
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  
+  return values_tensor_name_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      GetArenaNoVirtual());
+}
+inline void TensorInfo_CooSparse::unsafe_arena_set_allocated_values_tensor_name(
+    ::std::string* values_tensor_name) {
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (values_tensor_name != NULL) {
+    
+  } else {
+    
+  }
+  values_tensor_name_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      values_tensor_name, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.TensorInfo.CooSparse.values_tensor_name)
+}
+
+// string indices_tensor_name = 2;
+inline void TensorInfo_CooSparse::clear_indices_tensor_name() {
+  indices_tensor_name_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline const ::std::string& TensorInfo_CooSparse::indices_tensor_name() const {
+  // @@protoc_insertion_point(field_get:tensorflow.TensorInfo.CooSparse.indices_tensor_name)
+  return indices_tensor_name_.Get();
+}
+inline void TensorInfo_CooSparse::set_indices_tensor_name(const ::std::string& value) {
+  
+  indices_tensor_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set:tensorflow.TensorInfo.CooSparse.indices_tensor_name)
+}
+#if LANG_CXX11
+inline void TensorInfo_CooSparse::set_indices_tensor_name(::std::string&& value) {
+  
+  indices_tensor_name_.Set(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.TensorInfo.CooSparse.indices_tensor_name)
+}
+#endif
+inline void TensorInfo_CooSparse::set_indices_tensor_name(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  indices_tensor_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
+              GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_char:tensorflow.TensorInfo.CooSparse.indices_tensor_name)
+}
+inline void TensorInfo_CooSparse::set_indices_tensor_name(const char* value,
+    size_t size) {
+  
+  indices_tensor_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
+      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.TensorInfo.CooSparse.indices_tensor_name)
+}
+inline ::std::string* TensorInfo_CooSparse::mutable_indices_tensor_name() {
+  
+  // @@protoc_insertion_point(field_mutable:tensorflow.TensorInfo.CooSparse.indices_tensor_name)
+  return indices_tensor_name_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline ::std::string* TensorInfo_CooSparse::release_indices_tensor_name() {
+  // @@protoc_insertion_point(field_release:tensorflow.TensorInfo.CooSparse.indices_tensor_name)
+  
+  return indices_tensor_name_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline void TensorInfo_CooSparse::set_allocated_indices_tensor_name(::std::string* indices_tensor_name) {
+  if (indices_tensor_name != NULL) {
+    
+  } else {
+    
+  }
+  indices_tensor_name_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), indices_tensor_name,
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.TensorInfo.CooSparse.indices_tensor_name)
+}
+inline ::std::string* TensorInfo_CooSparse::unsafe_arena_release_indices_tensor_name() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.TensorInfo.CooSparse.indices_tensor_name)
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  
+  return indices_tensor_name_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      GetArenaNoVirtual());
+}
+inline void TensorInfo_CooSparse::unsafe_arena_set_allocated_indices_tensor_name(
+    ::std::string* indices_tensor_name) {
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (indices_tensor_name != NULL) {
+    
+  } else {
+    
+  }
+  indices_tensor_name_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      indices_tensor_name, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.TensorInfo.CooSparse.indices_tensor_name)
+}
+
+// string dense_shape_tensor_name = 3;
+inline void TensorInfo_CooSparse::clear_dense_shape_tensor_name() {
+  dense_shape_tensor_name_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline const ::std::string& TensorInfo_CooSparse::dense_shape_tensor_name() const {
+  // @@protoc_insertion_point(field_get:tensorflow.TensorInfo.CooSparse.dense_shape_tensor_name)
+  return dense_shape_tensor_name_.Get();
+}
+inline void TensorInfo_CooSparse::set_dense_shape_tensor_name(const ::std::string& value) {
+  
+  dense_shape_tensor_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set:tensorflow.TensorInfo.CooSparse.dense_shape_tensor_name)
+}
+#if LANG_CXX11
+inline void TensorInfo_CooSparse::set_dense_shape_tensor_name(::std::string&& value) {
+  
+  dense_shape_tensor_name_.Set(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.TensorInfo.CooSparse.dense_shape_tensor_name)
+}
+#endif
+inline void TensorInfo_CooSparse::set_dense_shape_tensor_name(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  dense_shape_tensor_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
+              GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_char:tensorflow.TensorInfo.CooSparse.dense_shape_tensor_name)
+}
+inline void TensorInfo_CooSparse::set_dense_shape_tensor_name(const char* value,
+    size_t size) {
+  
+  dense_shape_tensor_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
+      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.TensorInfo.CooSparse.dense_shape_tensor_name)
+}
+inline ::std::string* TensorInfo_CooSparse::mutable_dense_shape_tensor_name() {
+  
+  // @@protoc_insertion_point(field_mutable:tensorflow.TensorInfo.CooSparse.dense_shape_tensor_name)
+  return dense_shape_tensor_name_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline ::std::string* TensorInfo_CooSparse::release_dense_shape_tensor_name() {
+  // @@protoc_insertion_point(field_release:tensorflow.TensorInfo.CooSparse.dense_shape_tensor_name)
+  
+  return dense_shape_tensor_name_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline void TensorInfo_CooSparse::set_allocated_dense_shape_tensor_name(::std::string* dense_shape_tensor_name) {
+  if (dense_shape_tensor_name != NULL) {
+    
+  } else {
+    
+  }
+  dense_shape_tensor_name_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), dense_shape_tensor_name,
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.TensorInfo.CooSparse.dense_shape_tensor_name)
+}
+inline ::std::string* TensorInfo_CooSparse::unsafe_arena_release_dense_shape_tensor_name() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.TensorInfo.CooSparse.dense_shape_tensor_name)
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  
+  return dense_shape_tensor_name_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      GetArenaNoVirtual());
+}
+inline void TensorInfo_CooSparse::unsafe_arena_set_allocated_dense_shape_tensor_name(
+    ::std::string* dense_shape_tensor_name) {
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (dense_shape_tensor_name != NULL) {
+    
+  } else {
+    
+  }
+  dense_shape_tensor_name_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      dense_shape_tensor_name, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.TensorInfo.CooSparse.dense_shape_tensor_name)
+}
+
+// -------------------------------------------------------------------
+
+// TensorInfo
+
+// string name = 1;
+inline bool TensorInfo::has_name() const {
+  return encoding_case() == kName;
+}
+inline void TensorInfo::set_has_name() {
+  _oneof_case_[0] = kName;
+}
+inline void TensorInfo::clear_name() {
+  if (has_name()) {
+    encoding_.name_.Destroy(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+        GetArenaNoVirtual());
+    clear_has_encoding();
+  }
+}
+inline const ::std::string& TensorInfo::name() const {
+  // @@protoc_insertion_point(field_get:tensorflow.TensorInfo.name)
+  if (has_name()) {
+    return encoding_.name_.Get();
+  }
+  return *&::google::protobuf::internal::GetEmptyStringAlreadyInited();
+}
+inline void TensorInfo::set_name(const ::std::string& value) {
+  if (!has_name()) {
+    clear_encoding();
+    set_has_name();
+    encoding_.name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  }
+  encoding_.name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value,
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set:tensorflow.TensorInfo.name)
+}
+#if LANG_CXX11
+inline void TensorInfo::set_name(::std::string&& value) {
+  // @@protoc_insertion_point(field_set:tensorflow.TensorInfo.name)
+  if (!has_name()) {
+    clear_encoding();
+    set_has_name();
+    encoding_.name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  }
+  encoding_.name_.Set(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.TensorInfo.name)
+}
+#endif
+inline void TensorInfo::set_name(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  if (!has_name()) {
+    clear_encoding();
+    set_has_name();
+    encoding_.name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  }
+  encoding_.name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      ::std::string(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_char:tensorflow.TensorInfo.name)
+}
+inline void TensorInfo::set_name(const char* value,
+                             size_t size) {
+  if (!has_name()) {
+    clear_encoding();
+    set_has_name();
+    encoding_.name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  }
+  encoding_.name_.Set(
+      &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
+      reinterpret_cast<const char*>(value), size),
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.TensorInfo.name)
+}
+inline ::std::string* TensorInfo::mutable_name() {
+  if (!has_name()) {
+    clear_encoding();
+    set_has_name();
+    encoding_.name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  }
+  return encoding_.name_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_mutable:tensorflow.TensorInfo.name)
+}
+inline ::std::string* TensorInfo::release_name() {
+  // @@protoc_insertion_point(field_release:tensorflow.TensorInfo.name)
+  if (has_name()) {
+    clear_has_encoding();
+    return encoding_.name_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+        GetArenaNoVirtual());
+  } else {
+    return NULL;
+  }
+}
+inline void TensorInfo::set_allocated_name(::std::string* name) {
+  if (has_encoding()) {
+    clear_encoding();
+  }
+  if (name != NULL) {
+    set_has_name();
+    encoding_.name_.UnsafeSetDefault(name);
+  }
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.TensorInfo.name)
+}
+inline ::std::string* TensorInfo::unsafe_arena_release_name() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.TensorInfo.name)
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (has_name()) {
+    clear_has_encoding();
+    return encoding_.name_.UnsafeArenaRelease(
+        &::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+  } else {
+    return NULL;
+  }
+}
+inline void TensorInfo::unsafe_arena_set_allocated_name(::std::string* name) {
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (!has_name()) {
+    encoding_.name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  }
+  clear_encoding();
+  if (name) {
+    set_has_name();
+    encoding_.name_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), name, GetArenaNoVirtual());
+  }
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.TensorInfo.name)
+}
+
+// .tensorflow.TensorInfo.CooSparse coo_sparse = 4;
+inline bool TensorInfo::has_coo_sparse() const {
+  return encoding_case() == kCooSparse;
+}
+inline void TensorInfo::set_has_coo_sparse() {
+  _oneof_case_[0] = kCooSparse;
+}
+inline void TensorInfo::clear_coo_sparse() {
+  if (has_coo_sparse()) {
+    if (GetArenaNoVirtual() == NULL) {
+      delete encoding_.coo_sparse_;
+    }
+    clear_has_encoding();
+  }
+}
+inline ::tensorflow::TensorInfo_CooSparse* TensorInfo::release_coo_sparse() {
+  // @@protoc_insertion_point(field_release:tensorflow.TensorInfo.coo_sparse)
+  if (has_coo_sparse()) {
+    clear_has_encoding();
+      ::tensorflow::TensorInfo_CooSparse* temp = encoding_.coo_sparse_;
+    if (GetArenaNoVirtual() != NULL) {
+      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
+    }
+    encoding_.coo_sparse_ = NULL;
+    return temp;
+  } else {
+    return NULL;
+  }
+}
+inline const ::tensorflow::TensorInfo_CooSparse& TensorInfo::coo_sparse() const {
+  // @@protoc_insertion_point(field_get:tensorflow.TensorInfo.coo_sparse)
+  return has_coo_sparse()
+      ? *encoding_.coo_sparse_
+      : *reinterpret_cast< ::tensorflow::TensorInfo_CooSparse*>(&::tensorflow::_TensorInfo_CooSparse_default_instance_);
+}
+inline ::tensorflow::TensorInfo_CooSparse* TensorInfo::unsafe_arena_release_coo_sparse() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.TensorInfo.coo_sparse)
+  if (has_coo_sparse()) {
+    clear_has_encoding();
+    ::tensorflow::TensorInfo_CooSparse* temp = encoding_.coo_sparse_;
+    encoding_.coo_sparse_ = NULL;
+    return temp;
+  } else {
+    return NULL;
+  }
+}
+inline void TensorInfo::unsafe_arena_set_allocated_coo_sparse(::tensorflow::TensorInfo_CooSparse* coo_sparse) {
+  clear_encoding();
+  if (coo_sparse) {
+    set_has_coo_sparse();
+    encoding_.coo_sparse_ = coo_sparse;
+  }
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.TensorInfo.coo_sparse)
+}
+inline ::tensorflow::TensorInfo_CooSparse* TensorInfo::mutable_coo_sparse() {
+  if (!has_coo_sparse()) {
+    clear_encoding();
+    set_has_coo_sparse();
+    encoding_.coo_sparse_ = CreateMaybeMessage< ::tensorflow::TensorInfo_CooSparse >(
+        GetArenaNoVirtual());
+  }
+  // @@protoc_insertion_point(field_mutable:tensorflow.TensorInfo.coo_sparse)
+  return encoding_.coo_sparse_;
+}
+
+// .tensorflow.DataType dtype = 2;
+inline void TensorInfo::clear_dtype() {
+  dtype_ = 0;
+}
+inline ::tensorflow::DataType TensorInfo::dtype() const {
+  // @@protoc_insertion_point(field_get:tensorflow.TensorInfo.dtype)
+  return static_cast< ::tensorflow::DataType >(dtype_);
+}
+inline void TensorInfo::set_dtype(::tensorflow::DataType value) {
+  
+  dtype_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.TensorInfo.dtype)
+}
+
+// .tensorflow.TensorShapeProto tensor_shape = 3;
+inline bool TensorInfo::has_tensor_shape() const {
+  return this != internal_default_instance() && tensor_shape_ != NULL;
+}
+inline const ::tensorflow::TensorShapeProto& TensorInfo::tensor_shape() const {
+  const ::tensorflow::TensorShapeProto* p = tensor_shape_;
+  // @@protoc_insertion_point(field_get:tensorflow.TensorInfo.tensor_shape)
+  return p != NULL ? *p : *reinterpret_cast<const ::tensorflow::TensorShapeProto*>(
+      &::tensorflow::_TensorShapeProto_default_instance_);
+}
+inline ::tensorflow::TensorShapeProto* TensorInfo::release_tensor_shape() {
+  // @@protoc_insertion_point(field_release:tensorflow.TensorInfo.tensor_shape)
+  
+  ::tensorflow::TensorShapeProto* temp = tensor_shape_;
+  if (GetArenaNoVirtual() != NULL) {
+    temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
+  }
+  tensor_shape_ = NULL;
+  return temp;
+}
+inline ::tensorflow::TensorShapeProto* TensorInfo::unsafe_arena_release_tensor_shape() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.TensorInfo.tensor_shape)
+  
+  ::tensorflow::TensorShapeProto* temp = tensor_shape_;
+  tensor_shape_ = NULL;
+  return temp;
+}
+inline ::tensorflow::TensorShapeProto* TensorInfo::mutable_tensor_shape() {
+  
+  if (tensor_shape_ == NULL) {
+    auto* p = CreateMaybeMessage<::tensorflow::TensorShapeProto>(GetArenaNoVirtual());
+    tensor_shape_ = p;
+  }
+  // @@protoc_insertion_point(field_mutable:tensorflow.TensorInfo.tensor_shape)
+  return tensor_shape_;
+}
+inline void TensorInfo::set_allocated_tensor_shape(::tensorflow::TensorShapeProto* tensor_shape) {
+  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
+  if (message_arena == NULL) {
+    delete reinterpret_cast< ::google::protobuf::MessageLite*>(tensor_shape_);
+  }
+  if (tensor_shape) {
+    ::google::protobuf::Arena* submessage_arena =
+      reinterpret_cast<::google::protobuf::MessageLite*>(tensor_shape)->GetArena();
+    if (message_arena != submessage_arena) {
+      tensor_shape = ::google::protobuf::internal::GetOwnedMessage(
+          message_arena, tensor_shape, submessage_arena);
+    }
+    
+  } else {
+    
+  }
+  tensor_shape_ = tensor_shape;
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.TensorInfo.tensor_shape)
+}
+
+inline bool TensorInfo::has_encoding() const {
+  return encoding_case() != ENCODING_NOT_SET;
+}
+inline void TensorInfo::clear_has_encoding() {
+  _oneof_case_[0] = ENCODING_NOT_SET;
+}
+inline TensorInfo::EncodingCase TensorInfo::encoding_case() const {
+  return TensorInfo::EncodingCase(_oneof_case_[0]);
+}
+// -------------------------------------------------------------------
+
+// -------------------------------------------------------------------
+
+// -------------------------------------------------------------------
+
+// SignatureDef
+
+// map<string, .tensorflow.TensorInfo> inputs = 1;
+inline int SignatureDef::inputs_size() const {
+  return inputs_.size();
+}
+inline void SignatureDef::clear_inputs() {
+  inputs_.Clear();
+}
+inline const ::google::protobuf::Map< ::std::string, ::tensorflow::TensorInfo >&
+SignatureDef::inputs() const {
+  // @@protoc_insertion_point(field_map:tensorflow.SignatureDef.inputs)
+  return inputs_.GetMap();
+}
+inline ::google::protobuf::Map< ::std::string, ::tensorflow::TensorInfo >*
+SignatureDef::mutable_inputs() {
+  // @@protoc_insertion_point(field_mutable_map:tensorflow.SignatureDef.inputs)
+  return inputs_.MutableMap();
+}
+
+// map<string, .tensorflow.TensorInfo> outputs = 2;
+inline int SignatureDef::outputs_size() const {
+  return outputs_.size();
+}
+inline void SignatureDef::clear_outputs() {
+  outputs_.Clear();
+}
+inline const ::google::protobuf::Map< ::std::string, ::tensorflow::TensorInfo >&
+SignatureDef::outputs() const {
+  // @@protoc_insertion_point(field_map:tensorflow.SignatureDef.outputs)
+  return outputs_.GetMap();
+}
+inline ::google::protobuf::Map< ::std::string, ::tensorflow::TensorInfo >*
+SignatureDef::mutable_outputs() {
+  // @@protoc_insertion_point(field_mutable_map:tensorflow.SignatureDef.outputs)
+  return outputs_.MutableMap();
+}
+
+// string method_name = 3;
+inline void SignatureDef::clear_method_name() {
+  method_name_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline const ::std::string& SignatureDef::method_name() const {
+  // @@protoc_insertion_point(field_get:tensorflow.SignatureDef.method_name)
+  return method_name_.Get();
+}
+inline void SignatureDef::set_method_name(const ::std::string& value) {
+  
+  method_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set:tensorflow.SignatureDef.method_name)
+}
+#if LANG_CXX11
+inline void SignatureDef::set_method_name(::std::string&& value) {
+  
+  method_name_.Set(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.SignatureDef.method_name)
+}
+#endif
+inline void SignatureDef::set_method_name(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  method_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
+              GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_char:tensorflow.SignatureDef.method_name)
+}
+inline void SignatureDef::set_method_name(const char* value,
+    size_t size) {
+  
+  method_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
+      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.SignatureDef.method_name)
+}
+inline ::std::string* SignatureDef::mutable_method_name() {
+  
+  // @@protoc_insertion_point(field_mutable:tensorflow.SignatureDef.method_name)
+  return method_name_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline ::std::string* SignatureDef::release_method_name() {
+  // @@protoc_insertion_point(field_release:tensorflow.SignatureDef.method_name)
+  
+  return method_name_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline void SignatureDef::set_allocated_method_name(::std::string* method_name) {
+  if (method_name != NULL) {
+    
+  } else {
+    
+  }
+  method_name_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), method_name,
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.SignatureDef.method_name)
+}
+inline ::std::string* SignatureDef::unsafe_arena_release_method_name() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.SignatureDef.method_name)
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  
+  return method_name_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      GetArenaNoVirtual());
+}
+inline void SignatureDef::unsafe_arena_set_allocated_method_name(
+    ::std::string* method_name) {
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (method_name != NULL) {
+    
+  } else {
+    
+  }
+  method_name_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      method_name, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.SignatureDef.method_name)
+}
+
+// -------------------------------------------------------------------
+
+// AssetFileDef
+
+// .tensorflow.TensorInfo tensor_info = 1;
+inline bool AssetFileDef::has_tensor_info() const {
+  return this != internal_default_instance() && tensor_info_ != NULL;
+}
+inline void AssetFileDef::clear_tensor_info() {
+  if (GetArenaNoVirtual() == NULL && tensor_info_ != NULL) {
+    delete tensor_info_;
+  }
+  tensor_info_ = NULL;
+}
+inline const ::tensorflow::TensorInfo& AssetFileDef::tensor_info() const {
+  const ::tensorflow::TensorInfo* p = tensor_info_;
+  // @@protoc_insertion_point(field_get:tensorflow.AssetFileDef.tensor_info)
+  return p != NULL ? *p : *reinterpret_cast<const ::tensorflow::TensorInfo*>(
+      &::tensorflow::_TensorInfo_default_instance_);
+}
+inline ::tensorflow::TensorInfo* AssetFileDef::release_tensor_info() {
+  // @@protoc_insertion_point(field_release:tensorflow.AssetFileDef.tensor_info)
+  
+  ::tensorflow::TensorInfo* temp = tensor_info_;
+  if (GetArenaNoVirtual() != NULL) {
+    temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
+  }
+  tensor_info_ = NULL;
+  return temp;
+}
+inline ::tensorflow::TensorInfo* AssetFileDef::unsafe_arena_release_tensor_info() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.AssetFileDef.tensor_info)
+  
+  ::tensorflow::TensorInfo* temp = tensor_info_;
+  tensor_info_ = NULL;
+  return temp;
+}
+inline ::tensorflow::TensorInfo* AssetFileDef::mutable_tensor_info() {
+  
+  if (tensor_info_ == NULL) {
+    auto* p = CreateMaybeMessage<::tensorflow::TensorInfo>(GetArenaNoVirtual());
+    tensor_info_ = p;
+  }
+  // @@protoc_insertion_point(field_mutable:tensorflow.AssetFileDef.tensor_info)
+  return tensor_info_;
+}
+inline void AssetFileDef::set_allocated_tensor_info(::tensorflow::TensorInfo* tensor_info) {
+  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
+  if (message_arena == NULL) {
+    delete tensor_info_;
+  }
+  if (tensor_info) {
+    ::google::protobuf::Arena* submessage_arena =
+      ::google::protobuf::Arena::GetArena(tensor_info);
+    if (message_arena != submessage_arena) {
+      tensor_info = ::google::protobuf::internal::GetOwnedMessage(
+          message_arena, tensor_info, submessage_arena);
+    }
+    
+  } else {
+    
+  }
+  tensor_info_ = tensor_info;
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.AssetFileDef.tensor_info)
+}
+
+// string filename = 2;
+inline void AssetFileDef::clear_filename() {
+  filename_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline const ::std::string& AssetFileDef::filename() const {
+  // @@protoc_insertion_point(field_get:tensorflow.AssetFileDef.filename)
+  return filename_.Get();
+}
+inline void AssetFileDef::set_filename(const ::std::string& value) {
+  
+  filename_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set:tensorflow.AssetFileDef.filename)
+}
+#if LANG_CXX11
+inline void AssetFileDef::set_filename(::std::string&& value) {
+  
+  filename_.Set(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.AssetFileDef.filename)
+}
+#endif
+inline void AssetFileDef::set_filename(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  filename_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
+              GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_char:tensorflow.AssetFileDef.filename)
+}
+inline void AssetFileDef::set_filename(const char* value,
+    size_t size) {
+  
+  filename_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
+      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.AssetFileDef.filename)
+}
+inline ::std::string* AssetFileDef::mutable_filename() {
+  
+  // @@protoc_insertion_point(field_mutable:tensorflow.AssetFileDef.filename)
+  return filename_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline ::std::string* AssetFileDef::release_filename() {
+  // @@protoc_insertion_point(field_release:tensorflow.AssetFileDef.filename)
+  
+  return filename_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline void AssetFileDef::set_allocated_filename(::std::string* filename) {
+  if (filename != NULL) {
+    
+  } else {
+    
+  }
+  filename_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), filename,
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.AssetFileDef.filename)
+}
+inline ::std::string* AssetFileDef::unsafe_arena_release_filename() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.AssetFileDef.filename)
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  
+  return filename_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      GetArenaNoVirtual());
+}
+inline void AssetFileDef::unsafe_arena_set_allocated_filename(
+    ::std::string* filename) {
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (filename != NULL) {
+    
+  } else {
+    
+  }
+  filename_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      filename, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.AssetFileDef.filename)
+}
+
+#ifdef __GNUC__
+  #pragma GCC diagnostic pop
+#endif  // __GNUC__
+// -------------------------------------------------------------------
+
+// -------------------------------------------------------------------
+
+// -------------------------------------------------------------------
+
+// -------------------------------------------------------------------
+
+// -------------------------------------------------------------------
+
+// -------------------------------------------------------------------
+
+// -------------------------------------------------------------------
+
+// -------------------------------------------------------------------
+
+// -------------------------------------------------------------------
+
+// -------------------------------------------------------------------
+
+// -------------------------------------------------------------------
+
+// -------------------------------------------------------------------
+
+// -------------------------------------------------------------------
+
+// -------------------------------------------------------------------
+
+// -------------------------------------------------------------------
+
+
+// @@protoc_insertion_point(namespace_scope)
+
+}  // namespace tensorflow
+
+// @@protoc_insertion_point(global_scope)
+
+#include <google/protobuf/port_undef.inc>
+#endif  // PROTOBUF_INCLUDED_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto
diff --git a/tensorflow/core/protobuf/meta_graph.proto b/tensorflow/core/protobuf/meta_graph.proto
new file mode 100644 (file)
index 0000000..75a2a88
--- /dev/null
@@ -0,0 +1,322 @@
+syntax = "proto3";
+
+package tensorflow;
+option cc_enable_arenas = true;
+option java_outer_classname = "MetaGraphProtos";
+option java_multiple_files = true;
+option java_package = "org.tensorflow.framework";
+option go_package = "github.com/tensorflow/tensorflow/tensorflow/go/core/protobuf";
+import "google/protobuf/any.proto";
+
+import "tensorflow/core/framework/graph.proto";
+import "tensorflow/core/framework/op_def.proto";
+import "tensorflow/core/framework/tensor_shape.proto";
+import "tensorflow/core/framework/types.proto";
+import "tensorflow/core/protobuf/saver.proto";
+
+// NOTE: This protocol buffer is evolving, and will go through revisions in the
+// coming months.
+//
+// Protocol buffer containing the following which are necessary to restart
+// training, run inference. It can be used to serialize/de-serialize memory
+// objects necessary for running computation in a graph when crossing the
+// process boundary. It can be used for long term storage of graphs,
+// cross-language execution of graphs, etc.
+//   MetaInfoDef
+//   GraphDef
+//   SaverDef
+//   CollectionDef
+//   TensorInfo
+//   SignatureDef
+message MetaGraphDef {
+  // Meta information regarding the graph to be exported.  To be used by users
+  // of this protocol buffer to encode information regarding their meta graph.
+  message MetaInfoDef {
+    // User specified Version string. Can be the name of the model and revision,
+    // steps this model has been trained to, etc.
+    string meta_graph_version = 1;
+
+    // A copy of the OpDefs used by the producer of this graph_def.
+    // Descriptions and Ops not used in graph_def are stripped out.
+    OpList stripped_op_list = 2;
+
+    // A serialized protobuf. Can be the time this meta graph is created, or
+    // modified, or name of the model.
+    google.protobuf.Any any_info = 3;
+
+    // User supplied tag(s) on the meta_graph and included graph_def.
+    //
+    // MetaGraphDefs should be tagged with their capabilities or use-cases.
+    // Examples: "train", "serve", "gpu", "tpu", etc.
+    // These tags enable loaders to access the MetaGraph(s) appropriate for a
+    // specific use-case or runtime environment.
+    repeated string tags = 4;
+
+    // The __version__ string of the tensorflow build used to write this graph.
+    // This will be populated by the framework, which will overwrite any user
+    // supplied value.
+    string tensorflow_version = 5;
+
+    // The __git_version__ string of the tensorflow build used to write this
+    // graph. This will be populated by the framework, which will overwrite any
+    // user supplied value.
+    string tensorflow_git_version = 6;
+
+    // A flag to denote whether default-valued attrs have been stripped from
+    // the nodes in this graph_def.
+    bool stripped_default_attrs = 7;
+  }
+  MetaInfoDef meta_info_def = 1;
+
+  // GraphDef.
+  GraphDef graph_def = 2;
+
+  // SaverDef.
+  SaverDef saver_def = 3;
+
+  // collection_def: Map from collection name to collections.
+  // See CollectionDef section for details.
+  map<string, CollectionDef> collection_def = 4;
+
+  // signature_def: Map from user supplied key for a signature to a single
+  // SignatureDef.
+  map<string, SignatureDef> signature_def = 5;
+
+  // Asset file def to be used with the defined graph.
+  repeated AssetFileDef asset_file_def = 6;
+}
+
+// CollectionDef should cover most collections.
+// To add a user-defined collection, do one of the following:
+// 1. For simple data types, such as string, int, float:
+//      tf.add_to_collection("your_collection_name", your_simple_value)
+//    strings will be stored as bytes_list.
+//
+// 2. For Protobuf types, there are three ways to add them:
+//    1) tf.add_to_collection("your_collection_name",
+//         your_proto.SerializeToString())
+//
+//       collection_def {
+//         key: "user_defined_bytes_collection"
+//         value {
+//           bytes_list {
+//             value: "queue_name: \"test_queue\"\n"
+//           }
+//         }
+//       }
+//
+//  or
+//
+//    2) tf.add_to_collection("your_collection_name", str(your_proto))
+//
+//       collection_def {
+//         key: "user_defined_string_collection"
+//         value {
+//          bytes_list {
+//             value: "\n\ntest_queue"
+//           }
+//         }
+//       }
+//
+//  or
+//
+//    3) any_buf = any_pb2.Any()
+//       tf.add_to_collection("your_collection_name",
+//         any_buf.Pack(your_proto))
+//
+//       collection_def {
+//         key: "user_defined_any_collection"
+//         value {
+//           any_list {
+//             value {
+//               type_url: "type.googleapis.com/tensorflow.QueueRunnerDef"
+//               value: "\n\ntest_queue"
+//             }
+//           }
+//         }
+//       }
+//
+// 3. For Python objects, implement to_proto() and from_proto(), and register
+//    them in the following manner:
+//    ops.register_proto_function("your_collection_name",
+//                                proto_type,
+//                                to_proto=YourPythonObject.to_proto,
+//                                from_proto=YourPythonObject.from_proto)
+//    These functions will be invoked to serialize and de-serialize the
+//    collection. For example,
+//    ops.register_proto_function(ops.GraphKeys.GLOBAL_VARIABLES,
+//                                proto_type=variable_pb2.VariableDef,
+//                                to_proto=Variable.to_proto,
+//                                from_proto=Variable.from_proto)
+message CollectionDef {
+  // NodeList is used for collecting nodes in graph. For example
+  // collection_def {
+  //   key: "summaries"
+  //   value {
+  //     node_list {
+  //       value: "input_producer/ScalarSummary:0"
+  //       value: "shuffle_batch/ScalarSummary:0"
+  //       value: "ImageSummary:0"
+  //     }
+  //   }
+  message NodeList {
+    repeated string value = 1;
+  }
+
+  // BytesList is used for collecting strings and serialized protobufs. For
+  // example:
+  // collection_def {
+  //   key: "trainable_variables"
+  //   value {
+  //     bytes_list {
+  //       value: "\n\017conv1/weights:0\022\024conv1/weights/Assign
+  //              \032\024conv1/weights/read:0"
+  //       value: "\n\016conv1/biases:0\022\023conv1/biases/Assign\032
+  //              \023conv1/biases/read:0"
+  //     }
+  //   }
+  // }
+  message BytesList {
+    repeated bytes value = 1;
+  }
+
+  // Int64List is used for collecting int, int64 and long values.
+  message Int64List {
+    repeated int64 value = 1 [packed = true];
+  }
+
+  // FloatList is used for collecting float values.
+  message FloatList {
+    repeated float value = 1 [packed = true];
+  }
+
+  // AnyList is used for collecting Any protos.
+  message AnyList {
+    repeated google.protobuf.Any value = 1;
+  }
+
+  oneof kind {
+    NodeList node_list = 1;
+    BytesList bytes_list = 2;
+    Int64List int64_list = 3;
+    FloatList float_list = 4;
+    AnyList any_list = 5;
+  }
+}
+
+// Information about a Tensor necessary for feeding or retrieval.
+message TensorInfo {
+  // For sparse tensors, The COO encoding stores a triple of values, indices,
+  // and shape.
+  message CooSparse {
+    // The shape of the values Tensor is [?].  Its dtype must be the dtype of
+    // the SparseTensor as a whole, given in the enclosing TensorInfo.
+    string values_tensor_name = 1;
+
+    // The indices Tensor must have dtype int64 and shape [?, ?].
+    string indices_tensor_name = 2;
+
+    // The dynamic logical shape represented by the SparseTensor is recorded in
+    // the Tensor referenced here.  It must have dtype int64 and shape [?].
+    string dense_shape_tensor_name = 3;
+  }
+
+  oneof encoding {
+    // For dense `Tensor`s, the name of the tensor in the graph.
+    string name = 1;
+    // There are many possible encodings of sparse matrices
+    // (https://en.wikipedia.org/wiki/Sparse_matrix).  Currently, TensorFlow
+    // uses only the COO encoding.  This is supported and documented in the
+    // SparseTensor Python class.
+    CooSparse coo_sparse = 4;
+  }
+  DataType dtype = 2;
+  // The static shape should be recorded here, to the extent that it can
+  // be known in advance.  In the case of a SparseTensor, this field describes
+  // the logical shape of the represented tensor (aka dense_shape).
+  TensorShapeProto tensor_shape = 3;
+}
+
+// SignatureDef defines the signature of a computation supported by a TensorFlow
+// graph.
+//
+// For example, a model with two loss computations, sharing a single input,
+// might have the following signature_def map.
+//
+// Note that across the two SignatureDefs "loss_A" and "loss_B", the input key,
+// output key, and method_name are identical, and will be used by system(s) that
+// implement or rely upon this particular loss method. The output tensor names
+// differ, demonstrating how different outputs can exist for the same method.
+//
+// signature_def {
+//   key: "loss_A"
+//   value {
+//     inputs {
+//       key: "input"
+//       value {
+//         name: "input:0"
+//         dtype: DT_STRING
+//         tensor_shape: ...
+//       }
+//     }
+//     outputs {
+//       key: "loss_output"
+//       value {
+//         name: "loss_output_A:0"
+//         dtype: DT_FLOAT
+//         tensor_shape: ...
+//       }
+//     }
+//   }
+//   ...
+//   method_name: "some/package/compute_loss"
+// }
+// signature_def {
+//   key: "loss_B"
+//   value {
+//     inputs {
+//       key: "input"
+//       value {
+//         name: "input:0"
+//         dtype: DT_STRING
+//         tensor_shape: ...
+//       }
+//     }
+//     outputs {
+//       key: "loss_output"
+//       value {
+//         name: "loss_output_B:0"
+//         dtype: DT_FLOAT
+//         tensor_shape: ...
+//       }
+//     }
+//   }
+//   ...
+//   method_name: "some/package/compute_loss"
+// }
+message SignatureDef {
+  // Named input parameters.
+  map<string, TensorInfo> inputs = 1;
+  // Named output parameters.
+  map<string, TensorInfo> outputs = 2;
+  // Extensible method_name information enabling third-party users to mark a
+  // SignatureDef as supporting a particular method. This enables producers and
+  // consumers of SignatureDefs, e.g. a model definition library and a serving
+  // library to have a clear hand-off regarding the semantics of a computation.
+  //
+  // Note that multiple SignatureDefs in a single MetaGraphDef may have the same
+  // method_name. This is commonly used to support multi-headed computation,
+  // where a single graph computation may return multiple results.
+  string method_name = 3;
+}
+
+// An asset file def for a single file or a set of sharded files with the same
+// name.
+message AssetFileDef {
+  // The tensor to bind the asset filename to.
+  TensorInfo tensor_info = 1;
+  // The filename within an assets directory. Note: does not include the path
+  // prefix, i.e. directories. For an asset at /tmp/path/vocab.txt, the filename
+  // would be "vocab.txt".
+  string filename = 2;
+}
diff --git a/tensorflow/core/protobuf/named_tensor.pb.cc b/tensorflow/core/protobuf/named_tensor.pb.cc
new file mode 100644 (file)
index 0000000..1f6d7c2
--- /dev/null
@@ -0,0 +1,524 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: tensorflow/core/protobuf/named_tensor.proto
+
+#include "tensorflow/core/protobuf/named_tensor.pb.h"
+
+#include <algorithm>
+
+#include <google/protobuf/stubs/common.h>
+#include <google/protobuf/io/coded_stream.h>
+#include <google/protobuf/extension_set.h>
+#include <google/protobuf/wire_format_lite_inl.h>
+#include <google/protobuf/descriptor.h>
+#include <google/protobuf/generated_message_reflection.h>
+#include <google/protobuf/reflection_ops.h>
+#include <google/protobuf/wire_format.h>
+// @@protoc_insertion_point(includes)
+#include <google/protobuf/port_def.inc>
+
+extern PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fframework_2ftensor_2eproto ::google::protobuf::internal::SCCInfo<2> scc_info_TensorProto_tensorflow_2fcore_2fframework_2ftensor_2eproto;
+namespace tensorflow {
+class NamedTensorProtoDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<NamedTensorProto> _instance;
+} _NamedTensorProto_default_instance_;
+}  // namespace tensorflow
+static void InitDefaultsNamedTensorProto_tensorflow_2fcore_2fprotobuf_2fnamed_5ftensor_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_NamedTensorProto_default_instance_;
+    new (ptr) ::tensorflow::NamedTensorProto();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::NamedTensorProto::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<1> scc_info_NamedTensorProto_tensorflow_2fcore_2fprotobuf_2fnamed_5ftensor_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsNamedTensorProto_tensorflow_2fcore_2fprotobuf_2fnamed_5ftensor_2eproto}, {
+      &scc_info_TensorProto_tensorflow_2fcore_2fframework_2ftensor_2eproto.base,}};
+
+void InitDefaults_tensorflow_2fcore_2fprotobuf_2fnamed_5ftensor_2eproto() {
+  ::google::protobuf::internal::InitSCC(&scc_info_NamedTensorProto_tensorflow_2fcore_2fprotobuf_2fnamed_5ftensor_2eproto.base);
+}
+
+::google::protobuf::Metadata file_level_metadata_tensorflow_2fcore_2fprotobuf_2fnamed_5ftensor_2eproto[1];
+constexpr ::google::protobuf::EnumDescriptor const** file_level_enum_descriptors_tensorflow_2fcore_2fprotobuf_2fnamed_5ftensor_2eproto = nullptr;
+constexpr ::google::protobuf::ServiceDescriptor const** file_level_service_descriptors_tensorflow_2fcore_2fprotobuf_2fnamed_5ftensor_2eproto = nullptr;
+
+const ::google::protobuf::uint32 TableStruct_tensorflow_2fcore_2fprotobuf_2fnamed_5ftensor_2eproto::offsets[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = {
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::NamedTensorProto, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::NamedTensorProto, name_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::NamedTensorProto, tensor_),
+};
+static const ::google::protobuf::internal::MigrationSchema schemas[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = {
+  { 0, -1, sizeof(::tensorflow::NamedTensorProto)},
+};
+
+static ::google::protobuf::Message const * const file_default_instances[] = {
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_NamedTensorProto_default_instance_),
+};
+
+::google::protobuf::internal::AssignDescriptorsTable assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2fnamed_5ftensor_2eproto = {
+  {}, AddDescriptors_tensorflow_2fcore_2fprotobuf_2fnamed_5ftensor_2eproto, "tensorflow/core/protobuf/named_tensor.proto", schemas,
+  file_default_instances, TableStruct_tensorflow_2fcore_2fprotobuf_2fnamed_5ftensor_2eproto::offsets,
+  file_level_metadata_tensorflow_2fcore_2fprotobuf_2fnamed_5ftensor_2eproto, 1, file_level_enum_descriptors_tensorflow_2fcore_2fprotobuf_2fnamed_5ftensor_2eproto, file_level_service_descriptors_tensorflow_2fcore_2fprotobuf_2fnamed_5ftensor_2eproto,
+};
+
+::google::protobuf::internal::DescriptorTable descriptor_table_tensorflow_2fcore_2fprotobuf_2fnamed_5ftensor_2eproto = {
+  false, InitDefaults_tensorflow_2fcore_2fprotobuf_2fnamed_5ftensor_2eproto, 
+  "\n+tensorflow/core/protobuf/named_tensor."
+  "proto\022\ntensorflow\032&tensorflow/core/frame"
+  "work/tensor.proto\"I\n\020NamedTensorProto\022\014\n"
+  "\004name\030\001 \001(\t\022\'\n\006tensor\030\002 \001(\0132\027.tensorflow"
+  ".TensorProtoBp\n\030org.tensorflow.framework"
+  "B\021NamedTensorProtosP\001Z<github.com/tensor"
+  "flow/tensorflow/tensorflow/go/core/proto"
+  "buf\370\001\001b\006proto3"
+,
+  "tensorflow/core/protobuf/named_tensor.proto", &assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2fnamed_5ftensor_2eproto, 294,
+};
+
+void AddDescriptors_tensorflow_2fcore_2fprotobuf_2fnamed_5ftensor_2eproto() {
+  static constexpr ::google::protobuf::internal::InitFunc deps[1] =
+  {
+    ::AddDescriptors_tensorflow_2fcore_2fframework_2ftensor_2eproto,
+  };
+ ::google::protobuf::internal::AddDescriptors(&descriptor_table_tensorflow_2fcore_2fprotobuf_2fnamed_5ftensor_2eproto, deps, 1);
+}
+
+// Force running AddDescriptors() at dynamic initialization time.
+static bool dynamic_init_dummy_tensorflow_2fcore_2fprotobuf_2fnamed_5ftensor_2eproto = []() { AddDescriptors_tensorflow_2fcore_2fprotobuf_2fnamed_5ftensor_2eproto(); return true; }();
+namespace tensorflow {
+
+// ===================================================================
+
+void NamedTensorProto::InitAsDefaultInstance() {
+  ::tensorflow::_NamedTensorProto_default_instance_._instance.get_mutable()->tensor_ = const_cast< ::tensorflow::TensorProto*>(
+      ::tensorflow::TensorProto::internal_default_instance());
+}
+class NamedTensorProto::HasBitSetters {
+ public:
+  static const ::tensorflow::TensorProto& tensor(const NamedTensorProto* msg);
+};
+
+const ::tensorflow::TensorProto&
+NamedTensorProto::HasBitSetters::tensor(const NamedTensorProto* msg) {
+  return *msg->tensor_;
+}
+void NamedTensorProto::unsafe_arena_set_allocated_tensor(
+    ::tensorflow::TensorProto* tensor) {
+  if (GetArenaNoVirtual() == NULL) {
+    delete tensor_;
+  }
+  tensor_ = tensor;
+  if (tensor) {
+    
+  } else {
+    
+  }
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.NamedTensorProto.tensor)
+}
+void NamedTensorProto::clear_tensor() {
+  if (GetArenaNoVirtual() == NULL && tensor_ != NULL) {
+    delete tensor_;
+  }
+  tensor_ = NULL;
+}
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int NamedTensorProto::kNameFieldNumber;
+const int NamedTensorProto::kTensorFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+NamedTensorProto::NamedTensorProto()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.NamedTensorProto)
+}
+NamedTensorProto::NamedTensorProto(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.NamedTensorProto)
+}
+NamedTensorProto::NamedTensorProto(const NamedTensorProto& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.name().size() > 0) {
+    name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.name(),
+      GetArenaNoVirtual());
+  }
+  if (from.has_tensor()) {
+    tensor_ = new ::tensorflow::TensorProto(*from.tensor_);
+  } else {
+    tensor_ = NULL;
+  }
+  // @@protoc_insertion_point(copy_constructor:tensorflow.NamedTensorProto)
+}
+
+void NamedTensorProto::SharedCtor() {
+  ::google::protobuf::internal::InitSCC(
+      &scc_info_NamedTensorProto_tensorflow_2fcore_2fprotobuf_2fnamed_5ftensor_2eproto.base);
+  name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  tensor_ = NULL;
+}
+
+NamedTensorProto::~NamedTensorProto() {
+  // @@protoc_insertion_point(destructor:tensorflow.NamedTensorProto)
+  SharedDtor();
+}
+
+void NamedTensorProto::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+  name_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (this != internal_default_instance()) delete tensor_;
+}
+
+void NamedTensorProto::ArenaDtor(void* object) {
+  NamedTensorProto* _this = reinterpret_cast< NamedTensorProto* >(object);
+  (void)_this;
+}
+void NamedTensorProto::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void NamedTensorProto::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const NamedTensorProto& NamedTensorProto::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_NamedTensorProto_tensorflow_2fcore_2fprotobuf_2fnamed_5ftensor_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void NamedTensorProto::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.NamedTensorProto)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  name_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+  if (GetArenaNoVirtual() == NULL && tensor_ != NULL) {
+    delete tensor_;
+  }
+  tensor_ = NULL;
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* NamedTensorProto::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<NamedTensorProto*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // string name = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 10) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("tensorflow.NamedTensorProto.name");
+        parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+        ::std::string* str = msg->mutable_name();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+        break;
+      }
+      // .tensorflow.TensorProto tensor = 2;
+      case 2: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 18) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        parser_till_end = ::tensorflow::TensorProto::_InternalParse;
+        object = msg->mutable_tensor();
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                       ptr, newend);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+        ptr = newend;
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool NamedTensorProto::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.NamedTensorProto)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // string name = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (10 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_name()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->name().data(), static_cast<int>(this->name().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.NamedTensorProto.name"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // .tensorflow.TensorProto tensor = 2;
+      case 2: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (18 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+               input, mutable_tensor()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.NamedTensorProto)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.NamedTensorProto)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void NamedTensorProto::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.NamedTensorProto)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // string name = 1;
+  if (this->name().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->name().data(), static_cast<int>(this->name().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.NamedTensorProto.name");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      1, this->name(), output);
+  }
+
+  // .tensorflow.TensorProto tensor = 2;
+  if (this->has_tensor()) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      2, HasBitSetters::tensor(this), output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.NamedTensorProto)
+}
+
+::google::protobuf::uint8* NamedTensorProto::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.NamedTensorProto)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // string name = 1;
+  if (this->name().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->name().data(), static_cast<int>(this->name().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.NamedTensorProto.name");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        1, this->name(), target);
+  }
+
+  // .tensorflow.TensorProto tensor = 2;
+  if (this->has_tensor()) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        2, HasBitSetters::tensor(this), deterministic, target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.NamedTensorProto)
+  return target;
+}
+
+size_t NamedTensorProto::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.NamedTensorProto)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // string name = 1;
+  if (this->name().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->name());
+  }
+
+  // .tensorflow.TensorProto tensor = 2;
+  if (this->has_tensor()) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::MessageSize(
+        *tensor_);
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void NamedTensorProto::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.NamedTensorProto)
+  GOOGLE_DCHECK_NE(&from, this);
+  const NamedTensorProto* source =
+      ::google::protobuf::DynamicCastToGenerated<NamedTensorProto>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.NamedTensorProto)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.NamedTensorProto)
+    MergeFrom(*source);
+  }
+}
+
+void NamedTensorProto::MergeFrom(const NamedTensorProto& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.NamedTensorProto)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  if (from.name().size() > 0) {
+    set_name(from.name());
+  }
+  if (from.has_tensor()) {
+    mutable_tensor()->::tensorflow::TensorProto::MergeFrom(from.tensor());
+  }
+}
+
+void NamedTensorProto::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.NamedTensorProto)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void NamedTensorProto::CopyFrom(const NamedTensorProto& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.NamedTensorProto)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool NamedTensorProto::IsInitialized() const {
+  return true;
+}
+
+void NamedTensorProto::Swap(NamedTensorProto* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    NamedTensorProto* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void NamedTensorProto::UnsafeArenaSwap(NamedTensorProto* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void NamedTensorProto::InternalSwap(NamedTensorProto* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  name_.Swap(&other->name_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+  swap(tensor_, other->tensor_);
+}
+
+::google::protobuf::Metadata NamedTensorProto::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2fnamed_5ftensor_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fprotobuf_2fnamed_5ftensor_2eproto[kIndexInFileMessages];
+}
+
+
+// @@protoc_insertion_point(namespace_scope)
+}  // namespace tensorflow
+namespace google {
+namespace protobuf {
+template<> PROTOBUF_NOINLINE ::tensorflow::NamedTensorProto* Arena::CreateMaybeMessage< ::tensorflow::NamedTensorProto >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::NamedTensorProto >(arena);
+}
+}  // namespace protobuf
+}  // namespace google
+
+// @@protoc_insertion_point(global_scope)
+#include <google/protobuf/port_undef.inc>
diff --git a/tensorflow/core/protobuf/named_tensor.pb.h b/tensorflow/core/protobuf/named_tensor.pb.h
new file mode 100644 (file)
index 0000000..7c87979
--- /dev/null
@@ -0,0 +1,373 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: tensorflow/core/protobuf/named_tensor.proto
+
+#ifndef PROTOBUF_INCLUDED_tensorflow_2fcore_2fprotobuf_2fnamed_5ftensor_2eproto
+#define PROTOBUF_INCLUDED_tensorflow_2fcore_2fprotobuf_2fnamed_5ftensor_2eproto
+
+#include <limits>
+#include <string>
+
+#include <google/protobuf/port_def.inc>
+#if PROTOBUF_VERSION < 3006001
+#error This file was generated by a newer version of protoc which is
+#error incompatible with your Protocol Buffer headers. Please update
+#error your headers.
+#endif
+#if 3006001 < PROTOBUF_MIN_PROTOC_VERSION
+#error This file was generated by an older version of protoc which is
+#error incompatible with your Protocol Buffer headers. Please
+#error regenerate this file with a newer version of protoc.
+#endif
+
+#include <google/protobuf/port_undef.inc>
+#include <google/protobuf/io/coded_stream.h>
+#include <google/protobuf/arena.h>
+#include <google/protobuf/arenastring.h>
+#include <google/protobuf/generated_message_table_driven.h>
+#include <google/protobuf/generated_message_util.h>
+#include <google/protobuf/inlined_string_field.h>
+#include <google/protobuf/metadata.h>
+#include <google/protobuf/message.h>
+#include <google/protobuf/repeated_field.h>  // IWYU pragma: export
+#include <google/protobuf/extension_set.h>  // IWYU pragma: export
+#include <google/protobuf/unknown_field_set.h>
+#include "tensorflow/core/framework/tensor.pb.h"
+// @@protoc_insertion_point(includes)
+#include <google/protobuf/port_def.inc>
+#define PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fprotobuf_2fnamed_5ftensor_2eproto
+
+// Internal implementation detail -- do not use these members.
+struct TableStruct_tensorflow_2fcore_2fprotobuf_2fnamed_5ftensor_2eproto {
+  static const ::google::protobuf::internal::ParseTableField entries[]
+    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
+  static const ::google::protobuf::internal::AuxillaryParseTableField aux[]
+    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
+  static const ::google::protobuf::internal::ParseTable schema[1]
+    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
+  static const ::google::protobuf::internal::FieldMetadata field_metadata[];
+  static const ::google::protobuf::internal::SerializationTable serialization_table[];
+  static const ::google::protobuf::uint32 offsets[];
+};
+void AddDescriptors_tensorflow_2fcore_2fprotobuf_2fnamed_5ftensor_2eproto();
+namespace tensorflow {
+class NamedTensorProto;
+class NamedTensorProtoDefaultTypeInternal;
+extern NamedTensorProtoDefaultTypeInternal _NamedTensorProto_default_instance_;
+}  // namespace tensorflow
+namespace google {
+namespace protobuf {
+template<> ::tensorflow::NamedTensorProto* Arena::CreateMaybeMessage<::tensorflow::NamedTensorProto>(Arena*);
+}  // namespace protobuf
+}  // namespace google
+namespace tensorflow {
+
+// ===================================================================
+
+class NamedTensorProto : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.NamedTensorProto) */ {
+ public:
+  NamedTensorProto();
+  virtual ~NamedTensorProto();
+
+  NamedTensorProto(const NamedTensorProto& from);
+
+  inline NamedTensorProto& operator=(const NamedTensorProto& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  NamedTensorProto(NamedTensorProto&& from) noexcept
+    : NamedTensorProto() {
+    *this = ::std::move(from);
+  }
+
+  inline NamedTensorProto& operator=(NamedTensorProto&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const NamedTensorProto& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const NamedTensorProto* internal_default_instance() {
+    return reinterpret_cast<const NamedTensorProto*>(
+               &_NamedTensorProto_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    0;
+
+  void UnsafeArenaSwap(NamedTensorProto* other);
+  void Swap(NamedTensorProto* other);
+  friend void swap(NamedTensorProto& a, NamedTensorProto& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline NamedTensorProto* New() const final {
+    return CreateMaybeMessage<NamedTensorProto>(NULL);
+  }
+
+  NamedTensorProto* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<NamedTensorProto>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const NamedTensorProto& from);
+  void MergeFrom(const NamedTensorProto& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(NamedTensorProto* other);
+  protected:
+  explicit NamedTensorProto(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // string name = 1;
+  void clear_name();
+  static const int kNameFieldNumber = 1;
+  const ::std::string& name() const;
+  void set_name(const ::std::string& value);
+  #if LANG_CXX11
+  void set_name(::std::string&& value);
+  #endif
+  void set_name(const char* value);
+  void set_name(const char* value, size_t size);
+  ::std::string* mutable_name();
+  ::std::string* release_name();
+  void set_allocated_name(::std::string* name);
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  ::std::string* unsafe_arena_release_name();
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  void unsafe_arena_set_allocated_name(
+      ::std::string* name);
+
+  // .tensorflow.TensorProto tensor = 2;
+  bool has_tensor() const;
+  void clear_tensor();
+  static const int kTensorFieldNumber = 2;
+  const ::tensorflow::TensorProto& tensor() const;
+  ::tensorflow::TensorProto* release_tensor();
+  ::tensorflow::TensorProto* mutable_tensor();
+  void set_allocated_tensor(::tensorflow::TensorProto* tensor);
+  void unsafe_arena_set_allocated_tensor(
+      ::tensorflow::TensorProto* tensor);
+  ::tensorflow::TensorProto* unsafe_arena_release_tensor();
+
+  // @@protoc_insertion_point(class_scope:tensorflow.NamedTensorProto)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  ::google::protobuf::internal::ArenaStringPtr name_;
+  ::tensorflow::TensorProto* tensor_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fprotobuf_2fnamed_5ftensor_2eproto;
+};
+// ===================================================================
+
+
+// ===================================================================
+
+#ifdef __GNUC__
+  #pragma GCC diagnostic push
+  #pragma GCC diagnostic ignored "-Wstrict-aliasing"
+#endif  // __GNUC__
+// NamedTensorProto
+
+// string name = 1;
+inline void NamedTensorProto::clear_name() {
+  name_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline const ::std::string& NamedTensorProto::name() const {
+  // @@protoc_insertion_point(field_get:tensorflow.NamedTensorProto.name)
+  return name_.Get();
+}
+inline void NamedTensorProto::set_name(const ::std::string& value) {
+  
+  name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set:tensorflow.NamedTensorProto.name)
+}
+#if LANG_CXX11
+inline void NamedTensorProto::set_name(::std::string&& value) {
+  
+  name_.Set(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.NamedTensorProto.name)
+}
+#endif
+inline void NamedTensorProto::set_name(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
+              GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_char:tensorflow.NamedTensorProto.name)
+}
+inline void NamedTensorProto::set_name(const char* value,
+    size_t size) {
+  
+  name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
+      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.NamedTensorProto.name)
+}
+inline ::std::string* NamedTensorProto::mutable_name() {
+  
+  // @@protoc_insertion_point(field_mutable:tensorflow.NamedTensorProto.name)
+  return name_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline ::std::string* NamedTensorProto::release_name() {
+  // @@protoc_insertion_point(field_release:tensorflow.NamedTensorProto.name)
+  
+  return name_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline void NamedTensorProto::set_allocated_name(::std::string* name) {
+  if (name != NULL) {
+    
+  } else {
+    
+  }
+  name_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), name,
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.NamedTensorProto.name)
+}
+inline ::std::string* NamedTensorProto::unsafe_arena_release_name() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.NamedTensorProto.name)
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  
+  return name_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      GetArenaNoVirtual());
+}
+inline void NamedTensorProto::unsafe_arena_set_allocated_name(
+    ::std::string* name) {
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (name != NULL) {
+    
+  } else {
+    
+  }
+  name_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      name, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.NamedTensorProto.name)
+}
+
+// .tensorflow.TensorProto tensor = 2;
+inline bool NamedTensorProto::has_tensor() const {
+  return this != internal_default_instance() && tensor_ != NULL;
+}
+inline const ::tensorflow::TensorProto& NamedTensorProto::tensor() const {
+  const ::tensorflow::TensorProto* p = tensor_;
+  // @@protoc_insertion_point(field_get:tensorflow.NamedTensorProto.tensor)
+  return p != NULL ? *p : *reinterpret_cast<const ::tensorflow::TensorProto*>(
+      &::tensorflow::_TensorProto_default_instance_);
+}
+inline ::tensorflow::TensorProto* NamedTensorProto::release_tensor() {
+  // @@protoc_insertion_point(field_release:tensorflow.NamedTensorProto.tensor)
+  
+  ::tensorflow::TensorProto* temp = tensor_;
+  if (GetArenaNoVirtual() != NULL) {
+    temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
+  }
+  tensor_ = NULL;
+  return temp;
+}
+inline ::tensorflow::TensorProto* NamedTensorProto::unsafe_arena_release_tensor() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.NamedTensorProto.tensor)
+  
+  ::tensorflow::TensorProto* temp = tensor_;
+  tensor_ = NULL;
+  return temp;
+}
+inline ::tensorflow::TensorProto* NamedTensorProto::mutable_tensor() {
+  
+  if (tensor_ == NULL) {
+    auto* p = CreateMaybeMessage<::tensorflow::TensorProto>(GetArenaNoVirtual());
+    tensor_ = p;
+  }
+  // @@protoc_insertion_point(field_mutable:tensorflow.NamedTensorProto.tensor)
+  return tensor_;
+}
+inline void NamedTensorProto::set_allocated_tensor(::tensorflow::TensorProto* tensor) {
+  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
+  if (message_arena == NULL) {
+    delete reinterpret_cast< ::google::protobuf::MessageLite*>(tensor_);
+  }
+  if (tensor) {
+    ::google::protobuf::Arena* submessage_arena =
+      reinterpret_cast<::google::protobuf::MessageLite*>(tensor)->GetArena();
+    if (message_arena != submessage_arena) {
+      tensor = ::google::protobuf::internal::GetOwnedMessage(
+          message_arena, tensor, submessage_arena);
+    }
+    
+  } else {
+    
+  }
+  tensor_ = tensor;
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.NamedTensorProto.tensor)
+}
+
+#ifdef __GNUC__
+  #pragma GCC diagnostic pop
+#endif  // __GNUC__
+
+// @@protoc_insertion_point(namespace_scope)
+
+}  // namespace tensorflow
+
+// @@protoc_insertion_point(global_scope)
+
+#include <google/protobuf/port_undef.inc>
+#endif  // PROTOBUF_INCLUDED_tensorflow_2fcore_2fprotobuf_2fnamed_5ftensor_2eproto
diff --git a/tensorflow/core/protobuf/named_tensor.proto b/tensorflow/core/protobuf/named_tensor.proto
new file mode 100644 (file)
index 0000000..6e2f7fe
--- /dev/null
@@ -0,0 +1,23 @@
+syntax = "proto3";
+
+package tensorflow;
+option cc_enable_arenas = true;
+option java_outer_classname = "NamedTensorProtos";
+option java_multiple_files = true;
+option java_package = "org.tensorflow.framework";
+option go_package = "github.com/tensorflow/tensorflow/tensorflow/go/core/protobuf";
+import "tensorflow/core/framework/tensor.proto";
+
+// A pair of tensor name and tensor values.
+message NamedTensorProto {
+  // Name of the tensor.
+  string name = 1;
+
+  // The client can populate a TensorProto using a tensorflow::Tensor`, or
+  // directly using the protobuf field accessors.
+  //
+  // The client specifies whether the returned tensor values should be
+  // filled tensor fields (float_val, int_val, etc.) or encoded in a
+  // compact form in tensor.tensor_content.
+  TensorProto tensor = 2;
+}
diff --git a/tensorflow/core/protobuf/queue_runner.pb.cc b/tensorflow/core/protobuf/queue_runner.pb.cc
new file mode 100644 (file)
index 0000000..d75137e
--- /dev/null
@@ -0,0 +1,753 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: tensorflow/core/protobuf/queue_runner.proto
+
+#include "tensorflow/core/protobuf/queue_runner.pb.h"
+
+#include <algorithm>
+
+#include <google/protobuf/stubs/common.h>
+#include <google/protobuf/io/coded_stream.h>
+#include <google/protobuf/extension_set.h>
+#include <google/protobuf/wire_format_lite_inl.h>
+#include <google/protobuf/descriptor.h>
+#include <google/protobuf/generated_message_reflection.h>
+#include <google/protobuf/reflection_ops.h>
+#include <google/protobuf/wire_format.h>
+// @@protoc_insertion_point(includes)
+#include <google/protobuf/port_def.inc>
+
+namespace tensorflow {
+class QueueRunnerDefDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<QueueRunnerDef> _instance;
+} _QueueRunnerDef_default_instance_;
+}  // namespace tensorflow
+static void InitDefaultsQueueRunnerDef_tensorflow_2fcore_2fprotobuf_2fqueue_5frunner_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_QueueRunnerDef_default_instance_;
+    new (ptr) ::tensorflow::QueueRunnerDef();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::QueueRunnerDef::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<0> scc_info_QueueRunnerDef_tensorflow_2fcore_2fprotobuf_2fqueue_5frunner_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsQueueRunnerDef_tensorflow_2fcore_2fprotobuf_2fqueue_5frunner_2eproto}, {}};
+
+void InitDefaults_tensorflow_2fcore_2fprotobuf_2fqueue_5frunner_2eproto() {
+  ::google::protobuf::internal::InitSCC(&scc_info_QueueRunnerDef_tensorflow_2fcore_2fprotobuf_2fqueue_5frunner_2eproto.base);
+}
+
+::google::protobuf::Metadata file_level_metadata_tensorflow_2fcore_2fprotobuf_2fqueue_5frunner_2eproto[1];
+constexpr ::google::protobuf::EnumDescriptor const** file_level_enum_descriptors_tensorflow_2fcore_2fprotobuf_2fqueue_5frunner_2eproto = nullptr;
+constexpr ::google::protobuf::ServiceDescriptor const** file_level_service_descriptors_tensorflow_2fcore_2fprotobuf_2fqueue_5frunner_2eproto = nullptr;
+
+const ::google::protobuf::uint32 TableStruct_tensorflow_2fcore_2fprotobuf_2fqueue_5frunner_2eproto::offsets[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = {
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::QueueRunnerDef, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::QueueRunnerDef, queue_name_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::QueueRunnerDef, enqueue_op_name_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::QueueRunnerDef, close_op_name_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::QueueRunnerDef, cancel_op_name_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::QueueRunnerDef, queue_closed_exception_types_),
+};
+static const ::google::protobuf::internal::MigrationSchema schemas[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = {
+  { 0, -1, sizeof(::tensorflow::QueueRunnerDef)},
+};
+
+static ::google::protobuf::Message const * const file_default_instances[] = {
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_QueueRunnerDef_default_instance_),
+};
+
+::google::protobuf::internal::AssignDescriptorsTable assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2fqueue_5frunner_2eproto = {
+  {}, AddDescriptors_tensorflow_2fcore_2fprotobuf_2fqueue_5frunner_2eproto, "tensorflow/core/protobuf/queue_runner.proto", schemas,
+  file_default_instances, TableStruct_tensorflow_2fcore_2fprotobuf_2fqueue_5frunner_2eproto::offsets,
+  file_level_metadata_tensorflow_2fcore_2fprotobuf_2fqueue_5frunner_2eproto, 1, file_level_enum_descriptors_tensorflow_2fcore_2fprotobuf_2fqueue_5frunner_2eproto, file_level_service_descriptors_tensorflow_2fcore_2fprotobuf_2fqueue_5frunner_2eproto,
+};
+
+::google::protobuf::internal::DescriptorTable descriptor_table_tensorflow_2fcore_2fprotobuf_2fqueue_5frunner_2eproto = {
+  false, InitDefaults_tensorflow_2fcore_2fprotobuf_2fqueue_5frunner_2eproto, 
+  "\n+tensorflow/core/protobuf/queue_runner."
+  "proto\022\ntensorflow\032*tensorflow/core/lib/c"
+  "ore/error_codes.proto\"\252\001\n\016QueueRunnerDef"
+  "\022\022\n\nqueue_name\030\001 \001(\t\022\027\n\017enqueue_op_name\030"
+  "\002 \003(\t\022\025\n\rclose_op_name\030\003 \001(\t\022\026\n\016cancel_o"
+  "p_name\030\004 \001(\t\022<\n\034queue_closed_exception_t"
+  "ypes\030\005 \003(\0162\026.tensorflow.error.CodeBp\n\030or"
+  "g.tensorflow.frameworkB\021QueueRunnerProto"
+  "sP\001Z<github.com/tensorflow/tensorflow/te"
+  "nsorflow/go/core/protobuf\370\001\001b\006proto3"
+,
+  "tensorflow/core/protobuf/queue_runner.proto", &assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2fqueue_5frunner_2eproto, 396,
+};
+
+void AddDescriptors_tensorflow_2fcore_2fprotobuf_2fqueue_5frunner_2eproto() {
+  static constexpr ::google::protobuf::internal::InitFunc deps[1] =
+  {
+    ::AddDescriptors_tensorflow_2fcore_2flib_2fcore_2ferror_5fcodes_2eproto,
+  };
+ ::google::protobuf::internal::AddDescriptors(&descriptor_table_tensorflow_2fcore_2fprotobuf_2fqueue_5frunner_2eproto, deps, 1);
+}
+
+// Force running AddDescriptors() at dynamic initialization time.
+static bool dynamic_init_dummy_tensorflow_2fcore_2fprotobuf_2fqueue_5frunner_2eproto = []() { AddDescriptors_tensorflow_2fcore_2fprotobuf_2fqueue_5frunner_2eproto(); return true; }();
+namespace tensorflow {
+
+// ===================================================================
+
+void QueueRunnerDef::InitAsDefaultInstance() {
+}
+class QueueRunnerDef::HasBitSetters {
+ public:
+};
+
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int QueueRunnerDef::kQueueNameFieldNumber;
+const int QueueRunnerDef::kEnqueueOpNameFieldNumber;
+const int QueueRunnerDef::kCloseOpNameFieldNumber;
+const int QueueRunnerDef::kCancelOpNameFieldNumber;
+const int QueueRunnerDef::kQueueClosedExceptionTypesFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+QueueRunnerDef::QueueRunnerDef()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.QueueRunnerDef)
+}
+QueueRunnerDef::QueueRunnerDef(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena),
+  enqueue_op_name_(arena),
+  queue_closed_exception_types_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.QueueRunnerDef)
+}
+QueueRunnerDef::QueueRunnerDef(const QueueRunnerDef& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL),
+      enqueue_op_name_(from.enqueue_op_name_),
+      queue_closed_exception_types_(from.queue_closed_exception_types_) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  queue_name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.queue_name().size() > 0) {
+    queue_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.queue_name(),
+      GetArenaNoVirtual());
+  }
+  close_op_name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.close_op_name().size() > 0) {
+    close_op_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.close_op_name(),
+      GetArenaNoVirtual());
+  }
+  cancel_op_name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.cancel_op_name().size() > 0) {
+    cancel_op_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.cancel_op_name(),
+      GetArenaNoVirtual());
+  }
+  // @@protoc_insertion_point(copy_constructor:tensorflow.QueueRunnerDef)
+}
+
+void QueueRunnerDef::SharedCtor() {
+  ::google::protobuf::internal::InitSCC(
+      &scc_info_QueueRunnerDef_tensorflow_2fcore_2fprotobuf_2fqueue_5frunner_2eproto.base);
+  queue_name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  close_op_name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  cancel_op_name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+
+QueueRunnerDef::~QueueRunnerDef() {
+  // @@protoc_insertion_point(destructor:tensorflow.QueueRunnerDef)
+  SharedDtor();
+}
+
+void QueueRunnerDef::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+  queue_name_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  close_op_name_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  cancel_op_name_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+
+void QueueRunnerDef::ArenaDtor(void* object) {
+  QueueRunnerDef* _this = reinterpret_cast< QueueRunnerDef* >(object);
+  (void)_this;
+}
+void QueueRunnerDef::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void QueueRunnerDef::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const QueueRunnerDef& QueueRunnerDef::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_QueueRunnerDef_tensorflow_2fcore_2fprotobuf_2fqueue_5frunner_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void QueueRunnerDef::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.QueueRunnerDef)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  enqueue_op_name_.Clear();
+  queue_closed_exception_types_.Clear();
+  queue_name_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+  close_op_name_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+  cancel_op_name_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* QueueRunnerDef::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<QueueRunnerDef*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // string queue_name = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 10) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("tensorflow.QueueRunnerDef.queue_name");
+        parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+        ::std::string* str = msg->mutable_queue_name();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+        break;
+      }
+      // repeated string enqueue_op_name = 2;
+      case 2: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 18) goto handle_unusual;
+        do {
+          ptr = Varint::Parse32Inline(ptr, &size);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          ctx->extra_parse_data().SetFieldName("tensorflow.QueueRunnerDef.enqueue_op_name");
+          parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+          ::std::string* str = msg->add_enqueue_op_name();
+          str->clear();
+          object = str;
+          if (size > end - ptr) goto len_delim_till_end;
+          auto newend = ptr + size;
+          if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+          if (ptr >= end) break;
+        } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 18 && (ptr += 1));
+        break;
+      }
+      // string close_op_name = 3;
+      case 3: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 26) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("tensorflow.QueueRunnerDef.close_op_name");
+        parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+        ::std::string* str = msg->mutable_close_op_name();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+        break;
+      }
+      // string cancel_op_name = 4;
+      case 4: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 34) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("tensorflow.QueueRunnerDef.cancel_op_name");
+        parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+        ::std::string* str = msg->mutable_cancel_op_name();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+        break;
+      }
+      // repeated .tensorflow.error.Code queue_closed_exception_types = 5;
+      case 5: {
+        if (static_cast<::google::protobuf::uint8>(tag) == 42) {
+          ptr = Varint::Parse32Inline(ptr, &size);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          parser_till_end = ::google::protobuf::internal::PackedEnumParser;
+          object = msg->mutable_queue_closed_exception_types();
+          if (size > end - ptr) goto len_delim_till_end;
+          auto newend = ptr + size;
+          if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+          break;
+        } else if (static_cast<::google::protobuf::uint8>(tag) != 40) goto handle_unusual;
+        do {
+          ::google::protobuf::uint64 val;
+          ptr = Varint::Parse64(ptr, &val);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          ::tensorflow::error::Code value = static_cast<::tensorflow::error::Code>(val);
+          msg->add_queue_closed_exception_types(value);
+          if (ptr >= end) break;
+        } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 40 && (ptr += 1));
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool QueueRunnerDef::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.QueueRunnerDef)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // string queue_name = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (10 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_queue_name()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->queue_name().data(), static_cast<int>(this->queue_name().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.QueueRunnerDef.queue_name"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // repeated string enqueue_op_name = 2;
+      case 2: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (18 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->add_enqueue_op_name()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->enqueue_op_name(this->enqueue_op_name_size() - 1).data(),
+            static_cast<int>(this->enqueue_op_name(this->enqueue_op_name_size() - 1).length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.QueueRunnerDef.enqueue_op_name"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // string close_op_name = 3;
+      case 3: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (26 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_close_op_name()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->close_op_name().data(), static_cast<int>(this->close_op_name().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.QueueRunnerDef.close_op_name"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // string cancel_op_name = 4;
+      case 4: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (34 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_cancel_op_name()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->cancel_op_name().data(), static_cast<int>(this->cancel_op_name().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.QueueRunnerDef.cancel_op_name"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // repeated .tensorflow.error.Code queue_closed_exception_types = 5;
+      case 5: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (42 & 0xFF)) {
+          ::google::protobuf::uint32 length;
+          DO_(input->ReadVarint32(&length));
+          ::google::protobuf::io::CodedInputStream::Limit limit = input->PushLimit(static_cast<int>(length));
+          while (input->BytesUntilLimit() > 0) {
+            int value = 0;
+            DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>(
+                 input, &value)));
+            add_queue_closed_exception_types(static_cast< ::tensorflow::error::Code >(value));
+          }
+          input->PopLimit(limit);
+        } else if (static_cast< ::google::protobuf::uint8>(tag) == (40 & 0xFF)) {
+          int value = 0;
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>(
+                 input, &value)));
+          add_queue_closed_exception_types(static_cast< ::tensorflow::error::Code >(value));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.QueueRunnerDef)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.QueueRunnerDef)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void QueueRunnerDef::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.QueueRunnerDef)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // string queue_name = 1;
+  if (this->queue_name().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->queue_name().data(), static_cast<int>(this->queue_name().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.QueueRunnerDef.queue_name");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      1, this->queue_name(), output);
+  }
+
+  // repeated string enqueue_op_name = 2;
+  for (int i = 0, n = this->enqueue_op_name_size(); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->enqueue_op_name(i).data(), static_cast<int>(this->enqueue_op_name(i).length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.QueueRunnerDef.enqueue_op_name");
+    ::google::protobuf::internal::WireFormatLite::WriteString(
+      2, this->enqueue_op_name(i), output);
+  }
+
+  // string close_op_name = 3;
+  if (this->close_op_name().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->close_op_name().data(), static_cast<int>(this->close_op_name().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.QueueRunnerDef.close_op_name");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      3, this->close_op_name(), output);
+  }
+
+  // string cancel_op_name = 4;
+  if (this->cancel_op_name().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->cancel_op_name().data(), static_cast<int>(this->cancel_op_name().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.QueueRunnerDef.cancel_op_name");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      4, this->cancel_op_name(), output);
+  }
+
+  // repeated .tensorflow.error.Code queue_closed_exception_types = 5;
+  if (this->queue_closed_exception_types_size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteTag(
+      5,
+      ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED,
+      output);
+    output->WriteVarint32(_queue_closed_exception_types_cached_byte_size_.load(
+        std::memory_order_relaxed));
+  }
+  for (int i = 0, n = this->queue_closed_exception_types_size(); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::WriteEnumNoTag(
+      this->queue_closed_exception_types(i), output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.QueueRunnerDef)
+}
+
+::google::protobuf::uint8* QueueRunnerDef::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.QueueRunnerDef)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // string queue_name = 1;
+  if (this->queue_name().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->queue_name().data(), static_cast<int>(this->queue_name().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.QueueRunnerDef.queue_name");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        1, this->queue_name(), target);
+  }
+
+  // repeated string enqueue_op_name = 2;
+  for (int i = 0, n = this->enqueue_op_name_size(); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->enqueue_op_name(i).data(), static_cast<int>(this->enqueue_op_name(i).length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.QueueRunnerDef.enqueue_op_name");
+    target = ::google::protobuf::internal::WireFormatLite::
+      WriteStringToArray(2, this->enqueue_op_name(i), target);
+  }
+
+  // string close_op_name = 3;
+  if (this->close_op_name().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->close_op_name().data(), static_cast<int>(this->close_op_name().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.QueueRunnerDef.close_op_name");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        3, this->close_op_name(), target);
+  }
+
+  // string cancel_op_name = 4;
+  if (this->cancel_op_name().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->cancel_op_name().data(), static_cast<int>(this->cancel_op_name().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.QueueRunnerDef.cancel_op_name");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        4, this->cancel_op_name(), target);
+  }
+
+  // repeated .tensorflow.error.Code queue_closed_exception_types = 5;
+  if (this->queue_closed_exception_types_size() > 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteTagToArray(
+      5,
+      ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED,
+      target);
+    target = ::google::protobuf::io::CodedOutputStream::WriteVarint32ToArray(      _queue_closed_exception_types_cached_byte_size_.load(std::memory_order_relaxed),
+        target);
+    target = ::google::protobuf::internal::WireFormatLite::WriteEnumNoTagToArray(
+      this->queue_closed_exception_types_, target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.QueueRunnerDef)
+  return target;
+}
+
+size_t QueueRunnerDef::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.QueueRunnerDef)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // repeated string enqueue_op_name = 2;
+  total_size += 1 *
+      ::google::protobuf::internal::FromIntSize(this->enqueue_op_name_size());
+  for (int i = 0, n = this->enqueue_op_name_size(); i < n; i++) {
+    total_size += ::google::protobuf::internal::WireFormatLite::StringSize(
+      this->enqueue_op_name(i));
+  }
+
+  // repeated .tensorflow.error.Code queue_closed_exception_types = 5;
+  {
+    size_t data_size = 0;
+    unsigned int count = static_cast<unsigned int>(this->queue_closed_exception_types_size());for (unsigned int i = 0; i < count; i++) {
+      data_size += ::google::protobuf::internal::WireFormatLite::EnumSize(
+        this->queue_closed_exception_types(static_cast<int>(i)));
+    }
+    if (data_size > 0) {
+      total_size += 1 +
+        ::google::protobuf::internal::WireFormatLite::Int32Size(
+            static_cast<::google::protobuf::int32>(data_size));
+    }
+    int cached_size = ::google::protobuf::internal::ToCachedSize(data_size);
+    _queue_closed_exception_types_cached_byte_size_.store(cached_size,
+                                    std::memory_order_relaxed);
+    total_size += data_size;
+  }
+
+  // string queue_name = 1;
+  if (this->queue_name().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->queue_name());
+  }
+
+  // string close_op_name = 3;
+  if (this->close_op_name().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->close_op_name());
+  }
+
+  // string cancel_op_name = 4;
+  if (this->cancel_op_name().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->cancel_op_name());
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void QueueRunnerDef::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.QueueRunnerDef)
+  GOOGLE_DCHECK_NE(&from, this);
+  const QueueRunnerDef* source =
+      ::google::protobuf::DynamicCastToGenerated<QueueRunnerDef>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.QueueRunnerDef)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.QueueRunnerDef)
+    MergeFrom(*source);
+  }
+}
+
+void QueueRunnerDef::MergeFrom(const QueueRunnerDef& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.QueueRunnerDef)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  enqueue_op_name_.MergeFrom(from.enqueue_op_name_);
+  queue_closed_exception_types_.MergeFrom(from.queue_closed_exception_types_);
+  if (from.queue_name().size() > 0) {
+    set_queue_name(from.queue_name());
+  }
+  if (from.close_op_name().size() > 0) {
+    set_close_op_name(from.close_op_name());
+  }
+  if (from.cancel_op_name().size() > 0) {
+    set_cancel_op_name(from.cancel_op_name());
+  }
+}
+
+void QueueRunnerDef::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.QueueRunnerDef)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void QueueRunnerDef::CopyFrom(const QueueRunnerDef& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.QueueRunnerDef)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool QueueRunnerDef::IsInitialized() const {
+  return true;
+}
+
+void QueueRunnerDef::Swap(QueueRunnerDef* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    QueueRunnerDef* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void QueueRunnerDef::UnsafeArenaSwap(QueueRunnerDef* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void QueueRunnerDef::InternalSwap(QueueRunnerDef* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  enqueue_op_name_.InternalSwap(CastToBase(&other->enqueue_op_name_));
+  queue_closed_exception_types_.InternalSwap(&other->queue_closed_exception_types_);
+  queue_name_.Swap(&other->queue_name_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+  close_op_name_.Swap(&other->close_op_name_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+  cancel_op_name_.Swap(&other->cancel_op_name_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+}
+
+::google::protobuf::Metadata QueueRunnerDef::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2fqueue_5frunner_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fprotobuf_2fqueue_5frunner_2eproto[kIndexInFileMessages];
+}
+
+
+// @@protoc_insertion_point(namespace_scope)
+}  // namespace tensorflow
+namespace google {
+namespace protobuf {
+template<> PROTOBUF_NOINLINE ::tensorflow::QueueRunnerDef* Arena::CreateMaybeMessage< ::tensorflow::QueueRunnerDef >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::QueueRunnerDef >(arena);
+}
+}  // namespace protobuf
+}  // namespace google
+
+// @@protoc_insertion_point(global_scope)
+#include <google/protobuf/port_undef.inc>
diff --git a/tensorflow/core/protobuf/queue_runner.pb.h b/tensorflow/core/protobuf/queue_runner.pb.h
new file mode 100644 (file)
index 0000000..d81bba6
--- /dev/null
@@ -0,0 +1,636 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: tensorflow/core/protobuf/queue_runner.proto
+
+#ifndef PROTOBUF_INCLUDED_tensorflow_2fcore_2fprotobuf_2fqueue_5frunner_2eproto
+#define PROTOBUF_INCLUDED_tensorflow_2fcore_2fprotobuf_2fqueue_5frunner_2eproto
+
+#include <limits>
+#include <string>
+
+#include <google/protobuf/port_def.inc>
+#if PROTOBUF_VERSION < 3006001
+#error This file was generated by a newer version of protoc which is
+#error incompatible with your Protocol Buffer headers. Please update
+#error your headers.
+#endif
+#if 3006001 < PROTOBUF_MIN_PROTOC_VERSION
+#error This file was generated by an older version of protoc which is
+#error incompatible with your Protocol Buffer headers. Please
+#error regenerate this file with a newer version of protoc.
+#endif
+
+#include <google/protobuf/port_undef.inc>
+#include <google/protobuf/io/coded_stream.h>
+#include <google/protobuf/arena.h>
+#include <google/protobuf/arenastring.h>
+#include <google/protobuf/generated_message_table_driven.h>
+#include <google/protobuf/generated_message_util.h>
+#include <google/protobuf/inlined_string_field.h>
+#include <google/protobuf/metadata.h>
+#include <google/protobuf/message.h>
+#include <google/protobuf/repeated_field.h>  // IWYU pragma: export
+#include <google/protobuf/extension_set.h>  // IWYU pragma: export
+#include <google/protobuf/unknown_field_set.h>
+#include "tensorflow/core/lib/core/error_codes.pb.h"
+// @@protoc_insertion_point(includes)
+#include <google/protobuf/port_def.inc>
+#define PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fprotobuf_2fqueue_5frunner_2eproto
+
+// Internal implementation detail -- do not use these members.
+struct TableStruct_tensorflow_2fcore_2fprotobuf_2fqueue_5frunner_2eproto {
+  static const ::google::protobuf::internal::ParseTableField entries[]
+    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
+  static const ::google::protobuf::internal::AuxillaryParseTableField aux[]
+    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
+  static const ::google::protobuf::internal::ParseTable schema[1]
+    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
+  static const ::google::protobuf::internal::FieldMetadata field_metadata[];
+  static const ::google::protobuf::internal::SerializationTable serialization_table[];
+  static const ::google::protobuf::uint32 offsets[];
+};
+void AddDescriptors_tensorflow_2fcore_2fprotobuf_2fqueue_5frunner_2eproto();
+namespace tensorflow {
+class QueueRunnerDef;
+class QueueRunnerDefDefaultTypeInternal;
+extern QueueRunnerDefDefaultTypeInternal _QueueRunnerDef_default_instance_;
+}  // namespace tensorflow
+namespace google {
+namespace protobuf {
+template<> ::tensorflow::QueueRunnerDef* Arena::CreateMaybeMessage<::tensorflow::QueueRunnerDef>(Arena*);
+}  // namespace protobuf
+}  // namespace google
+namespace tensorflow {
+
+// ===================================================================
+
+class QueueRunnerDef : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.QueueRunnerDef) */ {
+ public:
+  QueueRunnerDef();
+  virtual ~QueueRunnerDef();
+
+  QueueRunnerDef(const QueueRunnerDef& from);
+
+  inline QueueRunnerDef& operator=(const QueueRunnerDef& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  QueueRunnerDef(QueueRunnerDef&& from) noexcept
+    : QueueRunnerDef() {
+    *this = ::std::move(from);
+  }
+
+  inline QueueRunnerDef& operator=(QueueRunnerDef&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const QueueRunnerDef& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const QueueRunnerDef* internal_default_instance() {
+    return reinterpret_cast<const QueueRunnerDef*>(
+               &_QueueRunnerDef_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    0;
+
+  void UnsafeArenaSwap(QueueRunnerDef* other);
+  void Swap(QueueRunnerDef* other);
+  friend void swap(QueueRunnerDef& a, QueueRunnerDef& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline QueueRunnerDef* New() const final {
+    return CreateMaybeMessage<QueueRunnerDef>(NULL);
+  }
+
+  QueueRunnerDef* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<QueueRunnerDef>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const QueueRunnerDef& from);
+  void MergeFrom(const QueueRunnerDef& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(QueueRunnerDef* other);
+  protected:
+  explicit QueueRunnerDef(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // repeated string enqueue_op_name = 2;
+  int enqueue_op_name_size() const;
+  void clear_enqueue_op_name();
+  static const int kEnqueueOpNameFieldNumber = 2;
+  const ::std::string& enqueue_op_name(int index) const;
+  ::std::string* mutable_enqueue_op_name(int index);
+  void set_enqueue_op_name(int index, const ::std::string& value);
+  #if LANG_CXX11
+  void set_enqueue_op_name(int index, ::std::string&& value);
+  #endif
+  void set_enqueue_op_name(int index, const char* value);
+  void set_enqueue_op_name(int index, const char* value, size_t size);
+  ::std::string* add_enqueue_op_name();
+  void add_enqueue_op_name(const ::std::string& value);
+  #if LANG_CXX11
+  void add_enqueue_op_name(::std::string&& value);
+  #endif
+  void add_enqueue_op_name(const char* value);
+  void add_enqueue_op_name(const char* value, size_t size);
+  const ::google::protobuf::RepeatedPtrField<::std::string>& enqueue_op_name() const;
+  ::google::protobuf::RepeatedPtrField<::std::string>* mutable_enqueue_op_name();
+
+  // repeated .tensorflow.error.Code queue_closed_exception_types = 5;
+  int queue_closed_exception_types_size() const;
+  void clear_queue_closed_exception_types();
+  static const int kQueueClosedExceptionTypesFieldNumber = 5;
+  ::tensorflow::error::Code queue_closed_exception_types(int index) const;
+  void set_queue_closed_exception_types(int index, ::tensorflow::error::Code value);
+  void add_queue_closed_exception_types(::tensorflow::error::Code value);
+  const ::google::protobuf::RepeatedField<int>& queue_closed_exception_types() const;
+  ::google::protobuf::RepeatedField<int>* mutable_queue_closed_exception_types();
+
+  // string queue_name = 1;
+  void clear_queue_name();
+  static const int kQueueNameFieldNumber = 1;
+  const ::std::string& queue_name() const;
+  void set_queue_name(const ::std::string& value);
+  #if LANG_CXX11
+  void set_queue_name(::std::string&& value);
+  #endif
+  void set_queue_name(const char* value);
+  void set_queue_name(const char* value, size_t size);
+  ::std::string* mutable_queue_name();
+  ::std::string* release_queue_name();
+  void set_allocated_queue_name(::std::string* queue_name);
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  ::std::string* unsafe_arena_release_queue_name();
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  void unsafe_arena_set_allocated_queue_name(
+      ::std::string* queue_name);
+
+  // string close_op_name = 3;
+  void clear_close_op_name();
+  static const int kCloseOpNameFieldNumber = 3;
+  const ::std::string& close_op_name() const;
+  void set_close_op_name(const ::std::string& value);
+  #if LANG_CXX11
+  void set_close_op_name(::std::string&& value);
+  #endif
+  void set_close_op_name(const char* value);
+  void set_close_op_name(const char* value, size_t size);
+  ::std::string* mutable_close_op_name();
+  ::std::string* release_close_op_name();
+  void set_allocated_close_op_name(::std::string* close_op_name);
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  ::std::string* unsafe_arena_release_close_op_name();
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  void unsafe_arena_set_allocated_close_op_name(
+      ::std::string* close_op_name);
+
+  // string cancel_op_name = 4;
+  void clear_cancel_op_name();
+  static const int kCancelOpNameFieldNumber = 4;
+  const ::std::string& cancel_op_name() const;
+  void set_cancel_op_name(const ::std::string& value);
+  #if LANG_CXX11
+  void set_cancel_op_name(::std::string&& value);
+  #endif
+  void set_cancel_op_name(const char* value);
+  void set_cancel_op_name(const char* value, size_t size);
+  ::std::string* mutable_cancel_op_name();
+  ::std::string* release_cancel_op_name();
+  void set_allocated_cancel_op_name(::std::string* cancel_op_name);
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  ::std::string* unsafe_arena_release_cancel_op_name();
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  void unsafe_arena_set_allocated_cancel_op_name(
+      ::std::string* cancel_op_name);
+
+  // @@protoc_insertion_point(class_scope:tensorflow.QueueRunnerDef)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  ::google::protobuf::RepeatedPtrField<::std::string> enqueue_op_name_;
+  ::google::protobuf::RepeatedField<int> queue_closed_exception_types_;
+  mutable std::atomic<int> _queue_closed_exception_types_cached_byte_size_;
+  ::google::protobuf::internal::ArenaStringPtr queue_name_;
+  ::google::protobuf::internal::ArenaStringPtr close_op_name_;
+  ::google::protobuf::internal::ArenaStringPtr cancel_op_name_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fprotobuf_2fqueue_5frunner_2eproto;
+};
+// ===================================================================
+
+
+// ===================================================================
+
+#ifdef __GNUC__
+  #pragma GCC diagnostic push
+  #pragma GCC diagnostic ignored "-Wstrict-aliasing"
+#endif  // __GNUC__
+// QueueRunnerDef
+
+// string queue_name = 1;
+inline void QueueRunnerDef::clear_queue_name() {
+  queue_name_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline const ::std::string& QueueRunnerDef::queue_name() const {
+  // @@protoc_insertion_point(field_get:tensorflow.QueueRunnerDef.queue_name)
+  return queue_name_.Get();
+}
+inline void QueueRunnerDef::set_queue_name(const ::std::string& value) {
+  
+  queue_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set:tensorflow.QueueRunnerDef.queue_name)
+}
+#if LANG_CXX11
+inline void QueueRunnerDef::set_queue_name(::std::string&& value) {
+  
+  queue_name_.Set(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.QueueRunnerDef.queue_name)
+}
+#endif
+inline void QueueRunnerDef::set_queue_name(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  queue_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
+              GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_char:tensorflow.QueueRunnerDef.queue_name)
+}
+inline void QueueRunnerDef::set_queue_name(const char* value,
+    size_t size) {
+  
+  queue_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
+      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.QueueRunnerDef.queue_name)
+}
+inline ::std::string* QueueRunnerDef::mutable_queue_name() {
+  
+  // @@protoc_insertion_point(field_mutable:tensorflow.QueueRunnerDef.queue_name)
+  return queue_name_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline ::std::string* QueueRunnerDef::release_queue_name() {
+  // @@protoc_insertion_point(field_release:tensorflow.QueueRunnerDef.queue_name)
+  
+  return queue_name_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline void QueueRunnerDef::set_allocated_queue_name(::std::string* queue_name) {
+  if (queue_name != NULL) {
+    
+  } else {
+    
+  }
+  queue_name_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), queue_name,
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.QueueRunnerDef.queue_name)
+}
+inline ::std::string* QueueRunnerDef::unsafe_arena_release_queue_name() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.QueueRunnerDef.queue_name)
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  
+  return queue_name_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      GetArenaNoVirtual());
+}
+inline void QueueRunnerDef::unsafe_arena_set_allocated_queue_name(
+    ::std::string* queue_name) {
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (queue_name != NULL) {
+    
+  } else {
+    
+  }
+  queue_name_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      queue_name, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.QueueRunnerDef.queue_name)
+}
+
+// repeated string enqueue_op_name = 2;
+inline int QueueRunnerDef::enqueue_op_name_size() const {
+  return enqueue_op_name_.size();
+}
+inline void QueueRunnerDef::clear_enqueue_op_name() {
+  enqueue_op_name_.Clear();
+}
+inline const ::std::string& QueueRunnerDef::enqueue_op_name(int index) const {
+  // @@protoc_insertion_point(field_get:tensorflow.QueueRunnerDef.enqueue_op_name)
+  return enqueue_op_name_.Get(index);
+}
+inline ::std::string* QueueRunnerDef::mutable_enqueue_op_name(int index) {
+  // @@protoc_insertion_point(field_mutable:tensorflow.QueueRunnerDef.enqueue_op_name)
+  return enqueue_op_name_.Mutable(index);
+}
+inline void QueueRunnerDef::set_enqueue_op_name(int index, const ::std::string& value) {
+  // @@protoc_insertion_point(field_set:tensorflow.QueueRunnerDef.enqueue_op_name)
+  enqueue_op_name_.Mutable(index)->assign(value);
+}
+#if LANG_CXX11
+inline void QueueRunnerDef::set_enqueue_op_name(int index, ::std::string&& value) {
+  // @@protoc_insertion_point(field_set:tensorflow.QueueRunnerDef.enqueue_op_name)
+  enqueue_op_name_.Mutable(index)->assign(std::move(value));
+}
+#endif
+inline void QueueRunnerDef::set_enqueue_op_name(int index, const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  enqueue_op_name_.Mutable(index)->assign(value);
+  // @@protoc_insertion_point(field_set_char:tensorflow.QueueRunnerDef.enqueue_op_name)
+}
+inline void QueueRunnerDef::set_enqueue_op_name(int index, const char* value, size_t size) {
+  enqueue_op_name_.Mutable(index)->assign(
+    reinterpret_cast<const char*>(value), size);
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.QueueRunnerDef.enqueue_op_name)
+}
+inline ::std::string* QueueRunnerDef::add_enqueue_op_name() {
+  // @@protoc_insertion_point(field_add_mutable:tensorflow.QueueRunnerDef.enqueue_op_name)
+  return enqueue_op_name_.Add();
+}
+inline void QueueRunnerDef::add_enqueue_op_name(const ::std::string& value) {
+  enqueue_op_name_.Add()->assign(value);
+  // @@protoc_insertion_point(field_add:tensorflow.QueueRunnerDef.enqueue_op_name)
+}
+#if LANG_CXX11
+inline void QueueRunnerDef::add_enqueue_op_name(::std::string&& value) {
+  enqueue_op_name_.Add(std::move(value));
+  // @@protoc_insertion_point(field_add:tensorflow.QueueRunnerDef.enqueue_op_name)
+}
+#endif
+inline void QueueRunnerDef::add_enqueue_op_name(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  enqueue_op_name_.Add()->assign(value);
+  // @@protoc_insertion_point(field_add_char:tensorflow.QueueRunnerDef.enqueue_op_name)
+}
+inline void QueueRunnerDef::add_enqueue_op_name(const char* value, size_t size) {
+  enqueue_op_name_.Add()->assign(reinterpret_cast<const char*>(value), size);
+  // @@protoc_insertion_point(field_add_pointer:tensorflow.QueueRunnerDef.enqueue_op_name)
+}
+inline const ::google::protobuf::RepeatedPtrField<::std::string>&
+QueueRunnerDef::enqueue_op_name() const {
+  // @@protoc_insertion_point(field_list:tensorflow.QueueRunnerDef.enqueue_op_name)
+  return enqueue_op_name_;
+}
+inline ::google::protobuf::RepeatedPtrField<::std::string>*
+QueueRunnerDef::mutable_enqueue_op_name() {
+  // @@protoc_insertion_point(field_mutable_list:tensorflow.QueueRunnerDef.enqueue_op_name)
+  return &enqueue_op_name_;
+}
+
+// string close_op_name = 3;
+inline void QueueRunnerDef::clear_close_op_name() {
+  close_op_name_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline const ::std::string& QueueRunnerDef::close_op_name() const {
+  // @@protoc_insertion_point(field_get:tensorflow.QueueRunnerDef.close_op_name)
+  return close_op_name_.Get();
+}
+inline void QueueRunnerDef::set_close_op_name(const ::std::string& value) {
+  
+  close_op_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set:tensorflow.QueueRunnerDef.close_op_name)
+}
+#if LANG_CXX11
+inline void QueueRunnerDef::set_close_op_name(::std::string&& value) {
+  
+  close_op_name_.Set(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.QueueRunnerDef.close_op_name)
+}
+#endif
+inline void QueueRunnerDef::set_close_op_name(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  close_op_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
+              GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_char:tensorflow.QueueRunnerDef.close_op_name)
+}
+inline void QueueRunnerDef::set_close_op_name(const char* value,
+    size_t size) {
+  
+  close_op_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
+      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.QueueRunnerDef.close_op_name)
+}
+inline ::std::string* QueueRunnerDef::mutable_close_op_name() {
+  
+  // @@protoc_insertion_point(field_mutable:tensorflow.QueueRunnerDef.close_op_name)
+  return close_op_name_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline ::std::string* QueueRunnerDef::release_close_op_name() {
+  // @@protoc_insertion_point(field_release:tensorflow.QueueRunnerDef.close_op_name)
+  
+  return close_op_name_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline void QueueRunnerDef::set_allocated_close_op_name(::std::string* close_op_name) {
+  if (close_op_name != NULL) {
+    
+  } else {
+    
+  }
+  close_op_name_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), close_op_name,
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.QueueRunnerDef.close_op_name)
+}
+inline ::std::string* QueueRunnerDef::unsafe_arena_release_close_op_name() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.QueueRunnerDef.close_op_name)
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  
+  return close_op_name_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      GetArenaNoVirtual());
+}
+inline void QueueRunnerDef::unsafe_arena_set_allocated_close_op_name(
+    ::std::string* close_op_name) {
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (close_op_name != NULL) {
+    
+  } else {
+    
+  }
+  close_op_name_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      close_op_name, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.QueueRunnerDef.close_op_name)
+}
+
+// string cancel_op_name = 4;
+inline void QueueRunnerDef::clear_cancel_op_name() {
+  cancel_op_name_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline const ::std::string& QueueRunnerDef::cancel_op_name() const {
+  // @@protoc_insertion_point(field_get:tensorflow.QueueRunnerDef.cancel_op_name)
+  return cancel_op_name_.Get();
+}
+inline void QueueRunnerDef::set_cancel_op_name(const ::std::string& value) {
+  
+  cancel_op_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set:tensorflow.QueueRunnerDef.cancel_op_name)
+}
+#if LANG_CXX11
+inline void QueueRunnerDef::set_cancel_op_name(::std::string&& value) {
+  
+  cancel_op_name_.Set(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.QueueRunnerDef.cancel_op_name)
+}
+#endif
+inline void QueueRunnerDef::set_cancel_op_name(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  cancel_op_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
+              GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_char:tensorflow.QueueRunnerDef.cancel_op_name)
+}
+inline void QueueRunnerDef::set_cancel_op_name(const char* value,
+    size_t size) {
+  
+  cancel_op_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
+      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.QueueRunnerDef.cancel_op_name)
+}
+inline ::std::string* QueueRunnerDef::mutable_cancel_op_name() {
+  
+  // @@protoc_insertion_point(field_mutable:tensorflow.QueueRunnerDef.cancel_op_name)
+  return cancel_op_name_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline ::std::string* QueueRunnerDef::release_cancel_op_name() {
+  // @@protoc_insertion_point(field_release:tensorflow.QueueRunnerDef.cancel_op_name)
+  
+  return cancel_op_name_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline void QueueRunnerDef::set_allocated_cancel_op_name(::std::string* cancel_op_name) {
+  if (cancel_op_name != NULL) {
+    
+  } else {
+    
+  }
+  cancel_op_name_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), cancel_op_name,
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.QueueRunnerDef.cancel_op_name)
+}
+inline ::std::string* QueueRunnerDef::unsafe_arena_release_cancel_op_name() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.QueueRunnerDef.cancel_op_name)
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  
+  return cancel_op_name_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      GetArenaNoVirtual());
+}
+inline void QueueRunnerDef::unsafe_arena_set_allocated_cancel_op_name(
+    ::std::string* cancel_op_name) {
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (cancel_op_name != NULL) {
+    
+  } else {
+    
+  }
+  cancel_op_name_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      cancel_op_name, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.QueueRunnerDef.cancel_op_name)
+}
+
+// repeated .tensorflow.error.Code queue_closed_exception_types = 5;
+inline int QueueRunnerDef::queue_closed_exception_types_size() const {
+  return queue_closed_exception_types_.size();
+}
+inline void QueueRunnerDef::clear_queue_closed_exception_types() {
+  queue_closed_exception_types_.Clear();
+}
+inline ::tensorflow::error::Code QueueRunnerDef::queue_closed_exception_types(int index) const {
+  // @@protoc_insertion_point(field_get:tensorflow.QueueRunnerDef.queue_closed_exception_types)
+  return static_cast< ::tensorflow::error::Code >(queue_closed_exception_types_.Get(index));
+}
+inline void QueueRunnerDef::set_queue_closed_exception_types(int index, ::tensorflow::error::Code value) {
+  queue_closed_exception_types_.Set(index, value);
+  // @@protoc_insertion_point(field_set:tensorflow.QueueRunnerDef.queue_closed_exception_types)
+}
+inline void QueueRunnerDef::add_queue_closed_exception_types(::tensorflow::error::Code value) {
+  queue_closed_exception_types_.Add(value);
+  // @@protoc_insertion_point(field_add:tensorflow.QueueRunnerDef.queue_closed_exception_types)
+}
+inline const ::google::protobuf::RepeatedField<int>&
+QueueRunnerDef::queue_closed_exception_types() const {
+  // @@protoc_insertion_point(field_list:tensorflow.QueueRunnerDef.queue_closed_exception_types)
+  return queue_closed_exception_types_;
+}
+inline ::google::protobuf::RepeatedField<int>*
+QueueRunnerDef::mutable_queue_closed_exception_types() {
+  // @@protoc_insertion_point(field_mutable_list:tensorflow.QueueRunnerDef.queue_closed_exception_types)
+  return &queue_closed_exception_types_;
+}
+
+#ifdef __GNUC__
+  #pragma GCC diagnostic pop
+#endif  // __GNUC__
+
+// @@protoc_insertion_point(namespace_scope)
+
+}  // namespace tensorflow
+
+// @@protoc_insertion_point(global_scope)
+
+#include <google/protobuf/port_undef.inc>
+#endif  // PROTOBUF_INCLUDED_tensorflow_2fcore_2fprotobuf_2fqueue_5frunner_2eproto
diff --git a/tensorflow/core/protobuf/queue_runner.proto b/tensorflow/core/protobuf/queue_runner.proto
new file mode 100644 (file)
index 0000000..f4df649
--- /dev/null
@@ -0,0 +1,28 @@
+syntax = "proto3";
+
+package tensorflow;
+option cc_enable_arenas = true;
+option java_outer_classname = "QueueRunnerProtos";
+option java_multiple_files = true;
+option java_package = "org.tensorflow.framework";
+option go_package = "github.com/tensorflow/tensorflow/tensorflow/go/core/protobuf";
+import "tensorflow/core/lib/core/error_codes.proto";
+
+// Protocol buffer representing a QueueRunner.
+message QueueRunnerDef {
+  // Queue name.
+  string queue_name = 1;
+
+  // A list of enqueue operations.
+  repeated string enqueue_op_name = 2;
+
+  // The operation to run to close the queue.
+  string close_op_name = 3;
+
+  // The operation to run to cancel the queue.
+  string cancel_op_name = 4;
+
+  // A list of exception types considered to signal a safely closed queue
+  // if raised during enqueue operations.
+  repeated error.Code queue_closed_exception_types = 5;
+}
diff --git a/tensorflow/core/protobuf/rewriter_config.pb.cc b/tensorflow/core/protobuf/rewriter_config.pb.cc
new file mode 100644 (file)
index 0000000..81aeeb4
--- /dev/null
@@ -0,0 +1,2822 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: tensorflow/core/protobuf/rewriter_config.proto
+
+#include "tensorflow/core/protobuf/rewriter_config.pb.h"
+
+#include <algorithm>
+
+#include <google/protobuf/stubs/common.h>
+#include <google/protobuf/io/coded_stream.h>
+#include <google/protobuf/extension_set.h>
+#include <google/protobuf/wire_format_lite_inl.h>
+#include <google/protobuf/descriptor.h>
+#include <google/protobuf/generated_message_reflection.h>
+#include <google/protobuf/reflection_ops.h>
+#include <google/protobuf/wire_format.h>
+// @@protoc_insertion_point(includes)
+#include <google/protobuf/port_def.inc>
+
+extern PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fframework_2fattr_5fvalue_2eproto ::google::protobuf::internal::SCCInfo<2> scc_info_AttrValue_tensorflow_2fcore_2fframework_2fattr_5fvalue_2eproto;
+extern PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fprotobuf_2frewriter_5fconfig_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_AutoParallelOptions_tensorflow_2fcore_2fprotobuf_2frewriter_5fconfig_2eproto;
+extern PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fprotobuf_2frewriter_5fconfig_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_ScopedAllocatorOptions_tensorflow_2fcore_2fprotobuf_2frewriter_5fconfig_2eproto;
+extern PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fprotobuf_2frewriter_5fconfig_2eproto ::google::protobuf::internal::SCCInfo<1> scc_info_RewriterConfig_CustomGraphOptimizer_ParameterMapEntry_DoNotUse_tensorflow_2fcore_2fprotobuf_2frewriter_5fconfig_2eproto;
+extern PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fprotobuf_2frewriter_5fconfig_2eproto ::google::protobuf::internal::SCCInfo<1> scc_info_RewriterConfig_CustomGraphOptimizer_tensorflow_2fcore_2fprotobuf_2frewriter_5fconfig_2eproto;
+namespace tensorflow {
+class AutoParallelOptionsDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<AutoParallelOptions> _instance;
+} _AutoParallelOptions_default_instance_;
+class ScopedAllocatorOptionsDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<ScopedAllocatorOptions> _instance;
+} _ScopedAllocatorOptions_default_instance_;
+class RewriterConfig_CustomGraphOptimizer_ParameterMapEntry_DoNotUseDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<RewriterConfig_CustomGraphOptimizer_ParameterMapEntry_DoNotUse> _instance;
+} _RewriterConfig_CustomGraphOptimizer_ParameterMapEntry_DoNotUse_default_instance_;
+class RewriterConfig_CustomGraphOptimizerDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<RewriterConfig_CustomGraphOptimizer> _instance;
+} _RewriterConfig_CustomGraphOptimizer_default_instance_;
+class RewriterConfigDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<RewriterConfig> _instance;
+} _RewriterConfig_default_instance_;
+}  // namespace tensorflow
+static void InitDefaultsAutoParallelOptions_tensorflow_2fcore_2fprotobuf_2frewriter_5fconfig_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_AutoParallelOptions_default_instance_;
+    new (ptr) ::tensorflow::AutoParallelOptions();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::AutoParallelOptions::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<0> scc_info_AutoParallelOptions_tensorflow_2fcore_2fprotobuf_2frewriter_5fconfig_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsAutoParallelOptions_tensorflow_2fcore_2fprotobuf_2frewriter_5fconfig_2eproto}, {}};
+
+static void InitDefaultsScopedAllocatorOptions_tensorflow_2fcore_2fprotobuf_2frewriter_5fconfig_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_ScopedAllocatorOptions_default_instance_;
+    new (ptr) ::tensorflow::ScopedAllocatorOptions();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::ScopedAllocatorOptions::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<0> scc_info_ScopedAllocatorOptions_tensorflow_2fcore_2fprotobuf_2frewriter_5fconfig_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsScopedAllocatorOptions_tensorflow_2fcore_2fprotobuf_2frewriter_5fconfig_2eproto}, {}};
+
+static void InitDefaultsRewriterConfig_CustomGraphOptimizer_ParameterMapEntry_DoNotUse_tensorflow_2fcore_2fprotobuf_2frewriter_5fconfig_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_RewriterConfig_CustomGraphOptimizer_ParameterMapEntry_DoNotUse_default_instance_;
+    new (ptr) ::tensorflow::RewriterConfig_CustomGraphOptimizer_ParameterMapEntry_DoNotUse();
+  }
+  ::tensorflow::RewriterConfig_CustomGraphOptimizer_ParameterMapEntry_DoNotUse::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<1> scc_info_RewriterConfig_CustomGraphOptimizer_ParameterMapEntry_DoNotUse_tensorflow_2fcore_2fprotobuf_2frewriter_5fconfig_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsRewriterConfig_CustomGraphOptimizer_ParameterMapEntry_DoNotUse_tensorflow_2fcore_2fprotobuf_2frewriter_5fconfig_2eproto}, {
+      &scc_info_AttrValue_tensorflow_2fcore_2fframework_2fattr_5fvalue_2eproto.base,}};
+
+static void InitDefaultsRewriterConfig_CustomGraphOptimizer_tensorflow_2fcore_2fprotobuf_2frewriter_5fconfig_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_RewriterConfig_CustomGraphOptimizer_default_instance_;
+    new (ptr) ::tensorflow::RewriterConfig_CustomGraphOptimizer();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::RewriterConfig_CustomGraphOptimizer::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<1> scc_info_RewriterConfig_CustomGraphOptimizer_tensorflow_2fcore_2fprotobuf_2frewriter_5fconfig_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsRewriterConfig_CustomGraphOptimizer_tensorflow_2fcore_2fprotobuf_2frewriter_5fconfig_2eproto}, {
+      &scc_info_RewriterConfig_CustomGraphOptimizer_ParameterMapEntry_DoNotUse_tensorflow_2fcore_2fprotobuf_2frewriter_5fconfig_2eproto.base,}};
+
+static void InitDefaultsRewriterConfig_tensorflow_2fcore_2fprotobuf_2frewriter_5fconfig_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_RewriterConfig_default_instance_;
+    new (ptr) ::tensorflow::RewriterConfig();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::RewriterConfig::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<3> scc_info_RewriterConfig_tensorflow_2fcore_2fprotobuf_2frewriter_5fconfig_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 3, InitDefaultsRewriterConfig_tensorflow_2fcore_2fprotobuf_2frewriter_5fconfig_2eproto}, {
+      &scc_info_AutoParallelOptions_tensorflow_2fcore_2fprotobuf_2frewriter_5fconfig_2eproto.base,
+      &scc_info_ScopedAllocatorOptions_tensorflow_2fcore_2fprotobuf_2frewriter_5fconfig_2eproto.base,
+      &scc_info_RewriterConfig_CustomGraphOptimizer_tensorflow_2fcore_2fprotobuf_2frewriter_5fconfig_2eproto.base,}};
+
+void InitDefaults_tensorflow_2fcore_2fprotobuf_2frewriter_5fconfig_2eproto() {
+  ::google::protobuf::internal::InitSCC(&scc_info_AutoParallelOptions_tensorflow_2fcore_2fprotobuf_2frewriter_5fconfig_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_ScopedAllocatorOptions_tensorflow_2fcore_2fprotobuf_2frewriter_5fconfig_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_RewriterConfig_CustomGraphOptimizer_ParameterMapEntry_DoNotUse_tensorflow_2fcore_2fprotobuf_2frewriter_5fconfig_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_RewriterConfig_CustomGraphOptimizer_tensorflow_2fcore_2fprotobuf_2frewriter_5fconfig_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_RewriterConfig_tensorflow_2fcore_2fprotobuf_2frewriter_5fconfig_2eproto.base);
+}
+
+::google::protobuf::Metadata file_level_metadata_tensorflow_2fcore_2fprotobuf_2frewriter_5fconfig_2eproto[5];
+const ::google::protobuf::EnumDescriptor* file_level_enum_descriptors_tensorflow_2fcore_2fprotobuf_2frewriter_5fconfig_2eproto[3];
+constexpr ::google::protobuf::ServiceDescriptor const** file_level_service_descriptors_tensorflow_2fcore_2fprotobuf_2frewriter_5fconfig_2eproto = nullptr;
+
+const ::google::protobuf::uint32 TableStruct_tensorflow_2fcore_2fprotobuf_2frewriter_5fconfig_2eproto::offsets[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = {
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::AutoParallelOptions, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::AutoParallelOptions, enable_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::AutoParallelOptions, num_replicas_),
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::ScopedAllocatorOptions, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::ScopedAllocatorOptions, enable_op_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::RewriterConfig_CustomGraphOptimizer_ParameterMapEntry_DoNotUse, _has_bits_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::RewriterConfig_CustomGraphOptimizer_ParameterMapEntry_DoNotUse, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::RewriterConfig_CustomGraphOptimizer_ParameterMapEntry_DoNotUse, key_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::RewriterConfig_CustomGraphOptimizer_ParameterMapEntry_DoNotUse, value_),
+  0,
+  1,
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::RewriterConfig_CustomGraphOptimizer, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::RewriterConfig_CustomGraphOptimizer, name_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::RewriterConfig_CustomGraphOptimizer, parameter_map_),
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::RewriterConfig, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::RewriterConfig, layout_optimizer_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::RewriterConfig, constant_folding_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::RewriterConfig, shape_optimization_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::RewriterConfig, remapping_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::RewriterConfig, arithmetic_optimization_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::RewriterConfig, dependency_optimization_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::RewriterConfig, loop_optimization_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::RewriterConfig, function_optimization_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::RewriterConfig, debug_stripper_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::RewriterConfig, disable_model_pruning_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::RewriterConfig, scoped_allocator_optimization_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::RewriterConfig, meta_optimizer_iterations_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::RewriterConfig, memory_optimization_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::RewriterConfig, memory_optimizer_target_node_name_scope_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::RewriterConfig, auto_parallel_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::RewriterConfig, scoped_allocator_opts_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::RewriterConfig, optimizers_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::RewriterConfig, custom_optimizers_),
+};
+static const ::google::protobuf::internal::MigrationSchema schemas[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = {
+  { 0, -1, sizeof(::tensorflow::AutoParallelOptions)},
+  { 7, -1, sizeof(::tensorflow::ScopedAllocatorOptions)},
+  { 13, 20, sizeof(::tensorflow::RewriterConfig_CustomGraphOptimizer_ParameterMapEntry_DoNotUse)},
+  { 22, -1, sizeof(::tensorflow::RewriterConfig_CustomGraphOptimizer)},
+  { 29, -1, sizeof(::tensorflow::RewriterConfig)},
+};
+
+static ::google::protobuf::Message const * const file_default_instances[] = {
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_AutoParallelOptions_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_ScopedAllocatorOptions_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_RewriterConfig_CustomGraphOptimizer_ParameterMapEntry_DoNotUse_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_RewriterConfig_CustomGraphOptimizer_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_RewriterConfig_default_instance_),
+};
+
+::google::protobuf::internal::AssignDescriptorsTable assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2frewriter_5fconfig_2eproto = {
+  {}, AddDescriptors_tensorflow_2fcore_2fprotobuf_2frewriter_5fconfig_2eproto, "tensorflow/core/protobuf/rewriter_config.proto", schemas,
+  file_default_instances, TableStruct_tensorflow_2fcore_2fprotobuf_2frewriter_5fconfig_2eproto::offsets,
+  file_level_metadata_tensorflow_2fcore_2fprotobuf_2frewriter_5fconfig_2eproto, 5, file_level_enum_descriptors_tensorflow_2fcore_2fprotobuf_2frewriter_5fconfig_2eproto, file_level_service_descriptors_tensorflow_2fcore_2fprotobuf_2frewriter_5fconfig_2eproto,
+};
+
+::google::protobuf::internal::DescriptorTable descriptor_table_tensorflow_2fcore_2fprotobuf_2frewriter_5fconfig_2eproto = {
+  false, InitDefaults_tensorflow_2fcore_2fprotobuf_2frewriter_5fconfig_2eproto, 
+  "\n.tensorflow/core/protobuf/rewriter_conf"
+  "ig.proto\022\ntensorflow\032*tensorflow/core/fr"
+  "amework/attr_value.proto\";\n\023AutoParallel"
+  "Options\022\016\n\006enable\030\001 \001(\010\022\024\n\014num_replicas\030"
+  "\002 \001(\005\"+\n\026ScopedAllocatorOptions\022\021\n\tenabl"
+  "e_op\030\001 \003(\t\"\262\014\n\016RewriterConfig\022;\n\020layout_"
+  "optimizer\030\001 \001(\0162!.tensorflow.RewriterCon"
+  "fig.Toggle\022;\n\020constant_folding\030\003 \001(\0162!.t"
+  "ensorflow.RewriterConfig.Toggle\022=\n\022shape"
+  "_optimization\030\r \001(\0162!.tensorflow.Rewrite"
+  "rConfig.Toggle\0224\n\tremapping\030\016 \001(\0162!.tens"
+  "orflow.RewriterConfig.Toggle\022B\n\027arithmet"
+  "ic_optimization\030\007 \001(\0162!.tensorflow.Rewri"
+  "terConfig.Toggle\022B\n\027dependency_optimizat"
+  "ion\030\010 \001(\0162!.tensorflow.RewriterConfig.To"
+  "ggle\022<\n\021loop_optimization\030\t \001(\0162!.tensor"
+  "flow.RewriterConfig.Toggle\022@\n\025function_o"
+  "ptimization\030\n \001(\0162!.tensorflow.RewriterC"
+  "onfig.Toggle\0229\n\016debug_stripper\030\013 \001(\0162!.t"
+  "ensorflow.RewriterConfig.Toggle\022\035\n\025disab"
+  "le_model_pruning\030\002 \001(\010\022H\n\035scoped_allocat"
+  "or_optimization\030\017 \001(\0162!.tensorflow.Rewri"
+  "terConfig.Toggle\022O\n\031meta_optimizer_itera"
+  "tions\030\014 \001(\0162,.tensorflow.RewriterConfig."
+  "NumIterationsType\022B\n\023memory_optimization"
+  "\030\004 \001(\0162%.tensorflow.RewriterConfig.MemOp"
+  "tType\022/\n\'memory_optimizer_target_node_na"
+  "me_scope\030\006 \001(\t\0226\n\rauto_parallel\030\005 \001(\0132\037."
+  "tensorflow.AutoParallelOptions\022A\n\025scoped"
+  "_allocator_opts\030\020 \001(\0132\".tensorflow.Scope"
+  "dAllocatorOptions\022\022\n\noptimizers\030d \003(\t\022K\n"
+  "\021custom_optimizers\030\310\001 \003(\0132/.tensorflow.R"
+  "ewriterConfig.CustomGraphOptimizer\032\312\001\n\024C"
+  "ustomGraphOptimizer\022\014\n\004name\030\001 \001(\t\022X\n\rpar"
+  "ameter_map\030\002 \003(\0132A.tensorflow.RewriterCo"
+  "nfig.CustomGraphOptimizer.ParameterMapEn"
+  "try\032J\n\021ParameterMapEntry\022\013\n\003key\030\001 \001(\t\022$\n"
+  "\005value\030\002 \001(\0132\025.tensorflow.AttrValue:\0028\001\""
+  "6\n\006Toggle\022\013\n\007DEFAULT\020\000\022\006\n\002ON\020\001\022\007\n\003OFF\020\002\022"
+  "\016\n\nAGGRESSIVE\020\003\"<\n\021NumIterationsType\022\025\n\021"
+  "DEFAULT_NUM_ITERS\020\000\022\007\n\003ONE\020\001\022\007\n\003TWO\020\002\"\237\001"
+  "\n\nMemOptType\022\023\n\017DEFAULT_MEM_OPT\020\000\022\016\n\nNO_"
+  "MEM_OPT\020\001\022\n\n\006MANUAL\020\002\022\027\n\023SWAPPING_HEURIS"
+  "TICS\020\004\022\034\n\030RECOMPUTATION_HEURISTICS\020\005\022\031\n\025"
+  "SCHEDULING_HEURISTICS\020\006\022\016\n\nHEURISTICS\020\003B"
+  "s\n\030org.tensorflow.frameworkB\024RewriterCon"
+  "figProtosP\001Z<github.com/tensorflow/tenso"
+  "rflow/tensorflow/go/core/protobuf\370\001\001b\006pr"
+  "oto3"
+,
+  "tensorflow/core/protobuf/rewriter_config.proto", &assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2frewriter_5fconfig_2eproto, 1924,
+};
+
+void AddDescriptors_tensorflow_2fcore_2fprotobuf_2frewriter_5fconfig_2eproto() {
+  static constexpr ::google::protobuf::internal::InitFunc deps[1] =
+  {
+    ::AddDescriptors_tensorflow_2fcore_2fframework_2fattr_5fvalue_2eproto,
+  };
+ ::google::protobuf::internal::AddDescriptors(&descriptor_table_tensorflow_2fcore_2fprotobuf_2frewriter_5fconfig_2eproto, deps, 1);
+}
+
+// Force running AddDescriptors() at dynamic initialization time.
+static bool dynamic_init_dummy_tensorflow_2fcore_2fprotobuf_2frewriter_5fconfig_2eproto = []() { AddDescriptors_tensorflow_2fcore_2fprotobuf_2frewriter_5fconfig_2eproto(); return true; }();
+namespace tensorflow {
+const ::google::protobuf::EnumDescriptor* RewriterConfig_Toggle_descriptor() {
+  ::google::protobuf::internal::AssignDescriptors(&assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2frewriter_5fconfig_2eproto);
+  return file_level_enum_descriptors_tensorflow_2fcore_2fprotobuf_2frewriter_5fconfig_2eproto[0];
+}
+bool RewriterConfig_Toggle_IsValid(int value) {
+  switch (value) {
+    case 0:
+    case 1:
+    case 2:
+    case 3:
+      return true;
+    default:
+      return false;
+  }
+}
+
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const RewriterConfig_Toggle RewriterConfig::DEFAULT;
+const RewriterConfig_Toggle RewriterConfig::ON;
+const RewriterConfig_Toggle RewriterConfig::OFF;
+const RewriterConfig_Toggle RewriterConfig::AGGRESSIVE;
+const RewriterConfig_Toggle RewriterConfig::Toggle_MIN;
+const RewriterConfig_Toggle RewriterConfig::Toggle_MAX;
+const int RewriterConfig::Toggle_ARRAYSIZE;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+const ::google::protobuf::EnumDescriptor* RewriterConfig_NumIterationsType_descriptor() {
+  ::google::protobuf::internal::AssignDescriptors(&assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2frewriter_5fconfig_2eproto);
+  return file_level_enum_descriptors_tensorflow_2fcore_2fprotobuf_2frewriter_5fconfig_2eproto[1];
+}
+bool RewriterConfig_NumIterationsType_IsValid(int value) {
+  switch (value) {
+    case 0:
+    case 1:
+    case 2:
+      return true;
+    default:
+      return false;
+  }
+}
+
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const RewriterConfig_NumIterationsType RewriterConfig::DEFAULT_NUM_ITERS;
+const RewriterConfig_NumIterationsType RewriterConfig::ONE;
+const RewriterConfig_NumIterationsType RewriterConfig::TWO;
+const RewriterConfig_NumIterationsType RewriterConfig::NumIterationsType_MIN;
+const RewriterConfig_NumIterationsType RewriterConfig::NumIterationsType_MAX;
+const int RewriterConfig::NumIterationsType_ARRAYSIZE;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+const ::google::protobuf::EnumDescriptor* RewriterConfig_MemOptType_descriptor() {
+  ::google::protobuf::internal::AssignDescriptors(&assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2frewriter_5fconfig_2eproto);
+  return file_level_enum_descriptors_tensorflow_2fcore_2fprotobuf_2frewriter_5fconfig_2eproto[2];
+}
+bool RewriterConfig_MemOptType_IsValid(int value) {
+  switch (value) {
+    case 0:
+    case 1:
+    case 2:
+    case 3:
+    case 4:
+    case 5:
+    case 6:
+      return true;
+    default:
+      return false;
+  }
+}
+
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const RewriterConfig_MemOptType RewriterConfig::DEFAULT_MEM_OPT;
+const RewriterConfig_MemOptType RewriterConfig::NO_MEM_OPT;
+const RewriterConfig_MemOptType RewriterConfig::MANUAL;
+const RewriterConfig_MemOptType RewriterConfig::SWAPPING_HEURISTICS;
+const RewriterConfig_MemOptType RewriterConfig::RECOMPUTATION_HEURISTICS;
+const RewriterConfig_MemOptType RewriterConfig::SCHEDULING_HEURISTICS;
+const RewriterConfig_MemOptType RewriterConfig::HEURISTICS;
+const RewriterConfig_MemOptType RewriterConfig::MemOptType_MIN;
+const RewriterConfig_MemOptType RewriterConfig::MemOptType_MAX;
+const int RewriterConfig::MemOptType_ARRAYSIZE;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+// ===================================================================
+
+void AutoParallelOptions::InitAsDefaultInstance() {
+}
+class AutoParallelOptions::HasBitSetters {
+ public:
+};
+
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int AutoParallelOptions::kEnableFieldNumber;
+const int AutoParallelOptions::kNumReplicasFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+AutoParallelOptions::AutoParallelOptions()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.AutoParallelOptions)
+}
+AutoParallelOptions::AutoParallelOptions(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.AutoParallelOptions)
+}
+AutoParallelOptions::AutoParallelOptions(const AutoParallelOptions& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::memcpy(&enable_, &from.enable_,
+    static_cast<size_t>(reinterpret_cast<char*>(&num_replicas_) -
+    reinterpret_cast<char*>(&enable_)) + sizeof(num_replicas_));
+  // @@protoc_insertion_point(copy_constructor:tensorflow.AutoParallelOptions)
+}
+
+void AutoParallelOptions::SharedCtor() {
+  ::memset(&enable_, 0, static_cast<size_t>(
+      reinterpret_cast<char*>(&num_replicas_) -
+      reinterpret_cast<char*>(&enable_)) + sizeof(num_replicas_));
+}
+
+AutoParallelOptions::~AutoParallelOptions() {
+  // @@protoc_insertion_point(destructor:tensorflow.AutoParallelOptions)
+  SharedDtor();
+}
+
+void AutoParallelOptions::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+}
+
+void AutoParallelOptions::ArenaDtor(void* object) {
+  AutoParallelOptions* _this = reinterpret_cast< AutoParallelOptions* >(object);
+  (void)_this;
+}
+void AutoParallelOptions::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void AutoParallelOptions::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const AutoParallelOptions& AutoParallelOptions::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_AutoParallelOptions_tensorflow_2fcore_2fprotobuf_2frewriter_5fconfig_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void AutoParallelOptions::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.AutoParallelOptions)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  ::memset(&enable_, 0, static_cast<size_t>(
+      reinterpret_cast<char*>(&num_replicas_) -
+      reinterpret_cast<char*>(&enable_)) + sizeof(num_replicas_));
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* AutoParallelOptions::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<AutoParallelOptions*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // bool enable = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 8) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        bool value = val;
+        msg->set_enable(value);
+        break;
+      }
+      // int32 num_replicas = 2;
+      case 2: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 16) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::google::protobuf::int32 value = val;
+        msg->set_num_replicas(value);
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool AutoParallelOptions::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.AutoParallelOptions)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // bool enable = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (8 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
+                 input, &enable_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // int32 num_replicas = 2;
+      case 2: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (16 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
+                 input, &num_replicas_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.AutoParallelOptions)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.AutoParallelOptions)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void AutoParallelOptions::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.AutoParallelOptions)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // bool enable = 1;
+  if (this->enable() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteBool(1, this->enable(), output);
+  }
+
+  // int32 num_replicas = 2;
+  if (this->num_replicas() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt32(2, this->num_replicas(), output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.AutoParallelOptions)
+}
+
+::google::protobuf::uint8* AutoParallelOptions::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.AutoParallelOptions)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // bool enable = 1;
+  if (this->enable() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(1, this->enable(), target);
+  }
+
+  // int32 num_replicas = 2;
+  if (this->num_replicas() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt32ToArray(2, this->num_replicas(), target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.AutoParallelOptions)
+  return target;
+}
+
+size_t AutoParallelOptions::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.AutoParallelOptions)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // bool enable = 1;
+  if (this->enable() != 0) {
+    total_size += 1 + 1;
+  }
+
+  // int32 num_replicas = 2;
+  if (this->num_replicas() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::Int32Size(
+        this->num_replicas());
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void AutoParallelOptions::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.AutoParallelOptions)
+  GOOGLE_DCHECK_NE(&from, this);
+  const AutoParallelOptions* source =
+      ::google::protobuf::DynamicCastToGenerated<AutoParallelOptions>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.AutoParallelOptions)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.AutoParallelOptions)
+    MergeFrom(*source);
+  }
+}
+
+void AutoParallelOptions::MergeFrom(const AutoParallelOptions& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.AutoParallelOptions)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  if (from.enable() != 0) {
+    set_enable(from.enable());
+  }
+  if (from.num_replicas() != 0) {
+    set_num_replicas(from.num_replicas());
+  }
+}
+
+void AutoParallelOptions::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.AutoParallelOptions)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void AutoParallelOptions::CopyFrom(const AutoParallelOptions& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.AutoParallelOptions)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool AutoParallelOptions::IsInitialized() const {
+  return true;
+}
+
+void AutoParallelOptions::Swap(AutoParallelOptions* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    AutoParallelOptions* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void AutoParallelOptions::UnsafeArenaSwap(AutoParallelOptions* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void AutoParallelOptions::InternalSwap(AutoParallelOptions* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  swap(enable_, other->enable_);
+  swap(num_replicas_, other->num_replicas_);
+}
+
+::google::protobuf::Metadata AutoParallelOptions::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2frewriter_5fconfig_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fprotobuf_2frewriter_5fconfig_2eproto[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+void ScopedAllocatorOptions::InitAsDefaultInstance() {
+}
+class ScopedAllocatorOptions::HasBitSetters {
+ public:
+};
+
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int ScopedAllocatorOptions::kEnableOpFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+ScopedAllocatorOptions::ScopedAllocatorOptions()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.ScopedAllocatorOptions)
+}
+ScopedAllocatorOptions::ScopedAllocatorOptions(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena),
+  enable_op_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.ScopedAllocatorOptions)
+}
+ScopedAllocatorOptions::ScopedAllocatorOptions(const ScopedAllocatorOptions& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL),
+      enable_op_(from.enable_op_) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  // @@protoc_insertion_point(copy_constructor:tensorflow.ScopedAllocatorOptions)
+}
+
+void ScopedAllocatorOptions::SharedCtor() {
+  ::google::protobuf::internal::InitSCC(
+      &scc_info_ScopedAllocatorOptions_tensorflow_2fcore_2fprotobuf_2frewriter_5fconfig_2eproto.base);
+}
+
+ScopedAllocatorOptions::~ScopedAllocatorOptions() {
+  // @@protoc_insertion_point(destructor:tensorflow.ScopedAllocatorOptions)
+  SharedDtor();
+}
+
+void ScopedAllocatorOptions::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+}
+
+void ScopedAllocatorOptions::ArenaDtor(void* object) {
+  ScopedAllocatorOptions* _this = reinterpret_cast< ScopedAllocatorOptions* >(object);
+  (void)_this;
+}
+void ScopedAllocatorOptions::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void ScopedAllocatorOptions::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const ScopedAllocatorOptions& ScopedAllocatorOptions::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_ScopedAllocatorOptions_tensorflow_2fcore_2fprotobuf_2frewriter_5fconfig_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void ScopedAllocatorOptions::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.ScopedAllocatorOptions)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  enable_op_.Clear();
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* ScopedAllocatorOptions::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<ScopedAllocatorOptions*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // repeated string enable_op = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 10) goto handle_unusual;
+        do {
+          ptr = Varint::Parse32Inline(ptr, &size);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          ctx->extra_parse_data().SetFieldName("tensorflow.ScopedAllocatorOptions.enable_op");
+          parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+          ::std::string* str = msg->add_enable_op();
+          str->clear();
+          object = str;
+          if (size > end - ptr) goto len_delim_till_end;
+          auto newend = ptr + size;
+          if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+          if (ptr >= end) break;
+        } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 10 && (ptr += 1));
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool ScopedAllocatorOptions::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.ScopedAllocatorOptions)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // repeated string enable_op = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (10 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->add_enable_op()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->enable_op(this->enable_op_size() - 1).data(),
+            static_cast<int>(this->enable_op(this->enable_op_size() - 1).length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.ScopedAllocatorOptions.enable_op"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.ScopedAllocatorOptions)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.ScopedAllocatorOptions)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void ScopedAllocatorOptions::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.ScopedAllocatorOptions)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // repeated string enable_op = 1;
+  for (int i = 0, n = this->enable_op_size(); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->enable_op(i).data(), static_cast<int>(this->enable_op(i).length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.ScopedAllocatorOptions.enable_op");
+    ::google::protobuf::internal::WireFormatLite::WriteString(
+      1, this->enable_op(i), output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.ScopedAllocatorOptions)
+}
+
+::google::protobuf::uint8* ScopedAllocatorOptions::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.ScopedAllocatorOptions)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // repeated string enable_op = 1;
+  for (int i = 0, n = this->enable_op_size(); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->enable_op(i).data(), static_cast<int>(this->enable_op(i).length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.ScopedAllocatorOptions.enable_op");
+    target = ::google::protobuf::internal::WireFormatLite::
+      WriteStringToArray(1, this->enable_op(i), target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.ScopedAllocatorOptions)
+  return target;
+}
+
+size_t ScopedAllocatorOptions::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.ScopedAllocatorOptions)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // repeated string enable_op = 1;
+  total_size += 1 *
+      ::google::protobuf::internal::FromIntSize(this->enable_op_size());
+  for (int i = 0, n = this->enable_op_size(); i < n; i++) {
+    total_size += ::google::protobuf::internal::WireFormatLite::StringSize(
+      this->enable_op(i));
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void ScopedAllocatorOptions::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.ScopedAllocatorOptions)
+  GOOGLE_DCHECK_NE(&from, this);
+  const ScopedAllocatorOptions* source =
+      ::google::protobuf::DynamicCastToGenerated<ScopedAllocatorOptions>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.ScopedAllocatorOptions)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.ScopedAllocatorOptions)
+    MergeFrom(*source);
+  }
+}
+
+void ScopedAllocatorOptions::MergeFrom(const ScopedAllocatorOptions& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.ScopedAllocatorOptions)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  enable_op_.MergeFrom(from.enable_op_);
+}
+
+void ScopedAllocatorOptions::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.ScopedAllocatorOptions)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void ScopedAllocatorOptions::CopyFrom(const ScopedAllocatorOptions& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.ScopedAllocatorOptions)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool ScopedAllocatorOptions::IsInitialized() const {
+  return true;
+}
+
+void ScopedAllocatorOptions::Swap(ScopedAllocatorOptions* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    ScopedAllocatorOptions* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void ScopedAllocatorOptions::UnsafeArenaSwap(ScopedAllocatorOptions* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void ScopedAllocatorOptions::InternalSwap(ScopedAllocatorOptions* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  enable_op_.InternalSwap(CastToBase(&other->enable_op_));
+}
+
+::google::protobuf::Metadata ScopedAllocatorOptions::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2frewriter_5fconfig_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fprotobuf_2frewriter_5fconfig_2eproto[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+RewriterConfig_CustomGraphOptimizer_ParameterMapEntry_DoNotUse::RewriterConfig_CustomGraphOptimizer_ParameterMapEntry_DoNotUse() {}
+RewriterConfig_CustomGraphOptimizer_ParameterMapEntry_DoNotUse::RewriterConfig_CustomGraphOptimizer_ParameterMapEntry_DoNotUse(::google::protobuf::Arena* arena)
+    : SuperType(arena) {}
+void RewriterConfig_CustomGraphOptimizer_ParameterMapEntry_DoNotUse::MergeFrom(const RewriterConfig_CustomGraphOptimizer_ParameterMapEntry_DoNotUse& other) {
+  MergeFromInternal(other);
+}
+::google::protobuf::Metadata RewriterConfig_CustomGraphOptimizer_ParameterMapEntry_DoNotUse::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2frewriter_5fconfig_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fprotobuf_2frewriter_5fconfig_2eproto[2];
+}
+void RewriterConfig_CustomGraphOptimizer_ParameterMapEntry_DoNotUse::MergeFrom(
+    const ::google::protobuf::Message& other) {
+  ::google::protobuf::Message::MergeFrom(other);
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool RewriterConfig_CustomGraphOptimizer_ParameterMapEntry_DoNotUse::_ParseMap(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx) {
+  using MF = ::google::protobuf::internal::MapField<
+      RewriterConfig_CustomGraphOptimizer_ParameterMapEntry_DoNotUse, EntryKeyType, EntryValueType,
+      kEntryKeyFieldType, kEntryValueFieldType,
+      kEntryDefaultEnumValue>;
+  auto mf = static_cast<MF*>(object);
+  Parser<MF, ::google::protobuf::Map<EntryKeyType, EntryValueType>> parser(mf);
+#define DO_(x) if (!(x)) return false
+  DO_(parser.ParseMap(begin, end));
+  DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+    parser.key().data(), static_cast<int>(parser.key().length()),
+    ::google::protobuf::internal::WireFormatLite::PARSE,
+    "tensorflow.RewriterConfig.CustomGraphOptimizer.ParameterMapEntry.key"));
+#undef DO_
+  return true;
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+
+// ===================================================================
+
+void RewriterConfig_CustomGraphOptimizer::InitAsDefaultInstance() {
+}
+class RewriterConfig_CustomGraphOptimizer::HasBitSetters {
+ public:
+};
+
+void RewriterConfig_CustomGraphOptimizer::clear_parameter_map() {
+  parameter_map_.Clear();
+}
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int RewriterConfig_CustomGraphOptimizer::kNameFieldNumber;
+const int RewriterConfig_CustomGraphOptimizer::kParameterMapFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+RewriterConfig_CustomGraphOptimizer::RewriterConfig_CustomGraphOptimizer()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.RewriterConfig.CustomGraphOptimizer)
+}
+RewriterConfig_CustomGraphOptimizer::RewriterConfig_CustomGraphOptimizer(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena),
+  parameter_map_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.RewriterConfig.CustomGraphOptimizer)
+}
+RewriterConfig_CustomGraphOptimizer::RewriterConfig_CustomGraphOptimizer(const RewriterConfig_CustomGraphOptimizer& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  parameter_map_.MergeFrom(from.parameter_map_);
+  name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.name().size() > 0) {
+    name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.name(),
+      GetArenaNoVirtual());
+  }
+  // @@protoc_insertion_point(copy_constructor:tensorflow.RewriterConfig.CustomGraphOptimizer)
+}
+
+void RewriterConfig_CustomGraphOptimizer::SharedCtor() {
+  ::google::protobuf::internal::InitSCC(
+      &scc_info_RewriterConfig_CustomGraphOptimizer_tensorflow_2fcore_2fprotobuf_2frewriter_5fconfig_2eproto.base);
+  name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+
+RewriterConfig_CustomGraphOptimizer::~RewriterConfig_CustomGraphOptimizer() {
+  // @@protoc_insertion_point(destructor:tensorflow.RewriterConfig.CustomGraphOptimizer)
+  SharedDtor();
+}
+
+void RewriterConfig_CustomGraphOptimizer::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+  name_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+
+void RewriterConfig_CustomGraphOptimizer::ArenaDtor(void* object) {
+  RewriterConfig_CustomGraphOptimizer* _this = reinterpret_cast< RewriterConfig_CustomGraphOptimizer* >(object);
+  (void)_this;
+}
+void RewriterConfig_CustomGraphOptimizer::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void RewriterConfig_CustomGraphOptimizer::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const RewriterConfig_CustomGraphOptimizer& RewriterConfig_CustomGraphOptimizer::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_RewriterConfig_CustomGraphOptimizer_tensorflow_2fcore_2fprotobuf_2frewriter_5fconfig_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void RewriterConfig_CustomGraphOptimizer::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.RewriterConfig.CustomGraphOptimizer)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  parameter_map_.Clear();
+  name_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* RewriterConfig_CustomGraphOptimizer::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<RewriterConfig_CustomGraphOptimizer*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // string name = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 10) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("tensorflow.RewriterConfig.CustomGraphOptimizer.name");
+        parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+        ::std::string* str = msg->mutable_name();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+        break;
+      }
+      // map<string, .tensorflow.AttrValue> parameter_map = 2;
+      case 2: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 18) goto handle_unusual;
+        do {
+          ptr = Varint::Parse32Inline(ptr, &size);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          parser_till_end = ::google::protobuf::internal::SlowMapEntryParser;
+          auto parse_map = ::tensorflow::RewriterConfig_CustomGraphOptimizer_ParameterMapEntry_DoNotUse::_ParseMap;
+          ctx->extra_parse_data().payload.clear();
+          ctx->extra_parse_data().parse_map = parse_map;
+          object = &msg->parameter_map_;
+          if (size > end - ptr) goto len_delim_till_end;
+          auto newend = ptr + size;
+          GOOGLE_PROTOBUF_PARSER_ASSERT(parse_map(ptr, newend, object, ctx));
+          ptr = newend;
+          if (ptr >= end) break;
+        } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 18 && (ptr += 1));
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool RewriterConfig_CustomGraphOptimizer::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.RewriterConfig.CustomGraphOptimizer)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // string name = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (10 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_name()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->name().data(), static_cast<int>(this->name().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.RewriterConfig.CustomGraphOptimizer.name"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // map<string, .tensorflow.AttrValue> parameter_map = 2;
+      case 2: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (18 & 0xFF)) {
+          RewriterConfig_CustomGraphOptimizer_ParameterMapEntry_DoNotUse::Parser< ::google::protobuf::internal::MapField<
+              RewriterConfig_CustomGraphOptimizer_ParameterMapEntry_DoNotUse,
+              ::std::string, ::tensorflow::AttrValue,
+              ::google::protobuf::internal::WireFormatLite::TYPE_STRING,
+              ::google::protobuf::internal::WireFormatLite::TYPE_MESSAGE,
+              0 >,
+            ::google::protobuf::Map< ::std::string, ::tensorflow::AttrValue > > parser(&parameter_map_);
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
+              input, &parser));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            parser.key().data(), static_cast<int>(parser.key().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.RewriterConfig.CustomGraphOptimizer.ParameterMapEntry.key"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.RewriterConfig.CustomGraphOptimizer)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.RewriterConfig.CustomGraphOptimizer)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void RewriterConfig_CustomGraphOptimizer::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.RewriterConfig.CustomGraphOptimizer)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // string name = 1;
+  if (this->name().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->name().data(), static_cast<int>(this->name().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.RewriterConfig.CustomGraphOptimizer.name");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      1, this->name(), output);
+  }
+
+  // map<string, .tensorflow.AttrValue> parameter_map = 2;
+  if (!this->parameter_map().empty()) {
+    typedef ::google::protobuf::Map< ::std::string, ::tensorflow::AttrValue >::const_pointer
+        ConstPtr;
+    typedef ConstPtr SortItem;
+    typedef ::google::protobuf::internal::CompareByDerefFirst<SortItem> Less;
+    struct Utf8Check {
+      static void Check(ConstPtr p) {
+        ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+          p->first.data(), static_cast<int>(p->first.length()),
+          ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+          "tensorflow.RewriterConfig.CustomGraphOptimizer.ParameterMapEntry.key");
+      }
+    };
+
+    if (output->IsSerializationDeterministic() &&
+        this->parameter_map().size() > 1) {
+      ::std::unique_ptr<SortItem[]> items(
+          new SortItem[this->parameter_map().size()]);
+      typedef ::google::protobuf::Map< ::std::string, ::tensorflow::AttrValue >::size_type size_type;
+      size_type n = 0;
+      for (::google::protobuf::Map< ::std::string, ::tensorflow::AttrValue >::const_iterator
+          it = this->parameter_map().begin();
+          it != this->parameter_map().end(); ++it, ++n) {
+        items[static_cast<ptrdiff_t>(n)] = SortItem(&*it);
+      }
+      ::std::sort(&items[0], &items[static_cast<ptrdiff_t>(n)], Less());
+      ::std::unique_ptr<RewriterConfig_CustomGraphOptimizer_ParameterMapEntry_DoNotUse> entry;
+      for (size_type i = 0; i < n; i++) {
+        entry.reset(parameter_map_.NewEntryWrapper(items[static_cast<ptrdiff_t>(i)]->first, items[static_cast<ptrdiff_t>(i)]->second));
+        ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(2, *entry, output);
+        if (entry->GetArena() != NULL) {
+          entry.release();
+        }
+        Utf8Check::Check(&(*items[static_cast<ptrdiff_t>(i)]));
+      }
+    } else {
+      ::std::unique_ptr<RewriterConfig_CustomGraphOptimizer_ParameterMapEntry_DoNotUse> entry;
+      for (::google::protobuf::Map< ::std::string, ::tensorflow::AttrValue >::const_iterator
+          it = this->parameter_map().begin();
+          it != this->parameter_map().end(); ++it) {
+        entry.reset(parameter_map_.NewEntryWrapper(it->first, it->second));
+        ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(2, *entry, output);
+        if (entry->GetArena() != NULL) {
+          entry.release();
+        }
+        Utf8Check::Check(&(*it));
+      }
+    }
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.RewriterConfig.CustomGraphOptimizer)
+}
+
+::google::protobuf::uint8* RewriterConfig_CustomGraphOptimizer::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.RewriterConfig.CustomGraphOptimizer)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // string name = 1;
+  if (this->name().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->name().data(), static_cast<int>(this->name().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.RewriterConfig.CustomGraphOptimizer.name");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        1, this->name(), target);
+  }
+
+  // map<string, .tensorflow.AttrValue> parameter_map = 2;
+  if (!this->parameter_map().empty()) {
+    typedef ::google::protobuf::Map< ::std::string, ::tensorflow::AttrValue >::const_pointer
+        ConstPtr;
+    typedef ConstPtr SortItem;
+    typedef ::google::protobuf::internal::CompareByDerefFirst<SortItem> Less;
+    struct Utf8Check {
+      static void Check(ConstPtr p) {
+        ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+          p->first.data(), static_cast<int>(p->first.length()),
+          ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+          "tensorflow.RewriterConfig.CustomGraphOptimizer.ParameterMapEntry.key");
+      }
+    };
+
+    if (deterministic &&
+        this->parameter_map().size() > 1) {
+      ::std::unique_ptr<SortItem[]> items(
+          new SortItem[this->parameter_map().size()]);
+      typedef ::google::protobuf::Map< ::std::string, ::tensorflow::AttrValue >::size_type size_type;
+      size_type n = 0;
+      for (::google::protobuf::Map< ::std::string, ::tensorflow::AttrValue >::const_iterator
+          it = this->parameter_map().begin();
+          it != this->parameter_map().end(); ++it, ++n) {
+        items[static_cast<ptrdiff_t>(n)] = SortItem(&*it);
+      }
+      ::std::sort(&items[0], &items[static_cast<ptrdiff_t>(n)], Less());
+      ::std::unique_ptr<RewriterConfig_CustomGraphOptimizer_ParameterMapEntry_DoNotUse> entry;
+      for (size_type i = 0; i < n; i++) {
+        entry.reset(parameter_map_.NewEntryWrapper(items[static_cast<ptrdiff_t>(i)]->first, items[static_cast<ptrdiff_t>(i)]->second));
+        target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessageNoVirtualToArray(2, *entry, deterministic, target);
+        if (entry->GetArena() != NULL) {
+          entry.release();
+        }
+        Utf8Check::Check(&(*items[static_cast<ptrdiff_t>(i)]));
+      }
+    } else {
+      ::std::unique_ptr<RewriterConfig_CustomGraphOptimizer_ParameterMapEntry_DoNotUse> entry;
+      for (::google::protobuf::Map< ::std::string, ::tensorflow::AttrValue >::const_iterator
+          it = this->parameter_map().begin();
+          it != this->parameter_map().end(); ++it) {
+        entry.reset(parameter_map_.NewEntryWrapper(it->first, it->second));
+        target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessageNoVirtualToArray(2, *entry, deterministic, target);
+        if (entry->GetArena() != NULL) {
+          entry.release();
+        }
+        Utf8Check::Check(&(*it));
+      }
+    }
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.RewriterConfig.CustomGraphOptimizer)
+  return target;
+}
+
+size_t RewriterConfig_CustomGraphOptimizer::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.RewriterConfig.CustomGraphOptimizer)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // map<string, .tensorflow.AttrValue> parameter_map = 2;
+  total_size += 1 *
+      ::google::protobuf::internal::FromIntSize(this->parameter_map_size());
+  {
+    ::std::unique_ptr<RewriterConfig_CustomGraphOptimizer_ParameterMapEntry_DoNotUse> entry;
+    for (::google::protobuf::Map< ::std::string, ::tensorflow::AttrValue >::const_iterator
+        it = this->parameter_map().begin();
+        it != this->parameter_map().end(); ++it) {
+      if (entry.get() != NULL && entry->GetArena() != NULL) {
+        entry.release();
+      }
+      entry.reset(parameter_map_.NewEntryWrapper(it->first, it->second));
+      total_size += ::google::protobuf::internal::WireFormatLite::
+          MessageSizeNoVirtual(*entry);
+    }
+    if (entry.get() != NULL && entry->GetArena() != NULL) {
+      entry.release();
+    }
+  }
+
+  // string name = 1;
+  if (this->name().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->name());
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void RewriterConfig_CustomGraphOptimizer::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.RewriterConfig.CustomGraphOptimizer)
+  GOOGLE_DCHECK_NE(&from, this);
+  const RewriterConfig_CustomGraphOptimizer* source =
+      ::google::protobuf::DynamicCastToGenerated<RewriterConfig_CustomGraphOptimizer>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.RewriterConfig.CustomGraphOptimizer)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.RewriterConfig.CustomGraphOptimizer)
+    MergeFrom(*source);
+  }
+}
+
+void RewriterConfig_CustomGraphOptimizer::MergeFrom(const RewriterConfig_CustomGraphOptimizer& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.RewriterConfig.CustomGraphOptimizer)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  parameter_map_.MergeFrom(from.parameter_map_);
+  if (from.name().size() > 0) {
+    set_name(from.name());
+  }
+}
+
+void RewriterConfig_CustomGraphOptimizer::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.RewriterConfig.CustomGraphOptimizer)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void RewriterConfig_CustomGraphOptimizer::CopyFrom(const RewriterConfig_CustomGraphOptimizer& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.RewriterConfig.CustomGraphOptimizer)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool RewriterConfig_CustomGraphOptimizer::IsInitialized() const {
+  return true;
+}
+
+void RewriterConfig_CustomGraphOptimizer::Swap(RewriterConfig_CustomGraphOptimizer* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    RewriterConfig_CustomGraphOptimizer* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void RewriterConfig_CustomGraphOptimizer::UnsafeArenaSwap(RewriterConfig_CustomGraphOptimizer* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void RewriterConfig_CustomGraphOptimizer::InternalSwap(RewriterConfig_CustomGraphOptimizer* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  parameter_map_.Swap(&other->parameter_map_);
+  name_.Swap(&other->name_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+}
+
+::google::protobuf::Metadata RewriterConfig_CustomGraphOptimizer::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2frewriter_5fconfig_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fprotobuf_2frewriter_5fconfig_2eproto[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+void RewriterConfig::InitAsDefaultInstance() {
+  ::tensorflow::_RewriterConfig_default_instance_._instance.get_mutable()->auto_parallel_ = const_cast< ::tensorflow::AutoParallelOptions*>(
+      ::tensorflow::AutoParallelOptions::internal_default_instance());
+  ::tensorflow::_RewriterConfig_default_instance_._instance.get_mutable()->scoped_allocator_opts_ = const_cast< ::tensorflow::ScopedAllocatorOptions*>(
+      ::tensorflow::ScopedAllocatorOptions::internal_default_instance());
+}
+class RewriterConfig::HasBitSetters {
+ public:
+  static const ::tensorflow::AutoParallelOptions& auto_parallel(const RewriterConfig* msg);
+  static const ::tensorflow::ScopedAllocatorOptions& scoped_allocator_opts(const RewriterConfig* msg);
+};
+
+const ::tensorflow::AutoParallelOptions&
+RewriterConfig::HasBitSetters::auto_parallel(const RewriterConfig* msg) {
+  return *msg->auto_parallel_;
+}
+const ::tensorflow::ScopedAllocatorOptions&
+RewriterConfig::HasBitSetters::scoped_allocator_opts(const RewriterConfig* msg) {
+  return *msg->scoped_allocator_opts_;
+}
+void RewriterConfig::unsafe_arena_set_allocated_auto_parallel(
+    ::tensorflow::AutoParallelOptions* auto_parallel) {
+  if (GetArenaNoVirtual() == NULL) {
+    delete auto_parallel_;
+  }
+  auto_parallel_ = auto_parallel;
+  if (auto_parallel) {
+    
+  } else {
+    
+  }
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.RewriterConfig.auto_parallel)
+}
+void RewriterConfig::unsafe_arena_set_allocated_scoped_allocator_opts(
+    ::tensorflow::ScopedAllocatorOptions* scoped_allocator_opts) {
+  if (GetArenaNoVirtual() == NULL) {
+    delete scoped_allocator_opts_;
+  }
+  scoped_allocator_opts_ = scoped_allocator_opts;
+  if (scoped_allocator_opts) {
+    
+  } else {
+    
+  }
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.RewriterConfig.scoped_allocator_opts)
+}
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int RewriterConfig::kLayoutOptimizerFieldNumber;
+const int RewriterConfig::kConstantFoldingFieldNumber;
+const int RewriterConfig::kShapeOptimizationFieldNumber;
+const int RewriterConfig::kRemappingFieldNumber;
+const int RewriterConfig::kArithmeticOptimizationFieldNumber;
+const int RewriterConfig::kDependencyOptimizationFieldNumber;
+const int RewriterConfig::kLoopOptimizationFieldNumber;
+const int RewriterConfig::kFunctionOptimizationFieldNumber;
+const int RewriterConfig::kDebugStripperFieldNumber;
+const int RewriterConfig::kDisableModelPruningFieldNumber;
+const int RewriterConfig::kScopedAllocatorOptimizationFieldNumber;
+const int RewriterConfig::kMetaOptimizerIterationsFieldNumber;
+const int RewriterConfig::kMemoryOptimizationFieldNumber;
+const int RewriterConfig::kMemoryOptimizerTargetNodeNameScopeFieldNumber;
+const int RewriterConfig::kAutoParallelFieldNumber;
+const int RewriterConfig::kScopedAllocatorOptsFieldNumber;
+const int RewriterConfig::kOptimizersFieldNumber;
+const int RewriterConfig::kCustomOptimizersFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+RewriterConfig::RewriterConfig()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.RewriterConfig)
+}
+RewriterConfig::RewriterConfig(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena),
+  optimizers_(arena),
+  custom_optimizers_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.RewriterConfig)
+}
+RewriterConfig::RewriterConfig(const RewriterConfig& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL),
+      optimizers_(from.optimizers_),
+      custom_optimizers_(from.custom_optimizers_) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  memory_optimizer_target_node_name_scope_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.memory_optimizer_target_node_name_scope().size() > 0) {
+    memory_optimizer_target_node_name_scope_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.memory_optimizer_target_node_name_scope(),
+      GetArenaNoVirtual());
+  }
+  if (from.has_auto_parallel()) {
+    auto_parallel_ = new ::tensorflow::AutoParallelOptions(*from.auto_parallel_);
+  } else {
+    auto_parallel_ = NULL;
+  }
+  if (from.has_scoped_allocator_opts()) {
+    scoped_allocator_opts_ = new ::tensorflow::ScopedAllocatorOptions(*from.scoped_allocator_opts_);
+  } else {
+    scoped_allocator_opts_ = NULL;
+  }
+  ::memcpy(&layout_optimizer_, &from.layout_optimizer_,
+    static_cast<size_t>(reinterpret_cast<char*>(&scoped_allocator_optimization_) -
+    reinterpret_cast<char*>(&layout_optimizer_)) + sizeof(scoped_allocator_optimization_));
+  // @@protoc_insertion_point(copy_constructor:tensorflow.RewriterConfig)
+}
+
+void RewriterConfig::SharedCtor() {
+  ::google::protobuf::internal::InitSCC(
+      &scc_info_RewriterConfig_tensorflow_2fcore_2fprotobuf_2frewriter_5fconfig_2eproto.base);
+  memory_optimizer_target_node_name_scope_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  ::memset(&auto_parallel_, 0, static_cast<size_t>(
+      reinterpret_cast<char*>(&scoped_allocator_optimization_) -
+      reinterpret_cast<char*>(&auto_parallel_)) + sizeof(scoped_allocator_optimization_));
+}
+
+RewriterConfig::~RewriterConfig() {
+  // @@protoc_insertion_point(destructor:tensorflow.RewriterConfig)
+  SharedDtor();
+}
+
+void RewriterConfig::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+  memory_optimizer_target_node_name_scope_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (this != internal_default_instance()) delete auto_parallel_;
+  if (this != internal_default_instance()) delete scoped_allocator_opts_;
+}
+
+void RewriterConfig::ArenaDtor(void* object) {
+  RewriterConfig* _this = reinterpret_cast< RewriterConfig* >(object);
+  (void)_this;
+}
+void RewriterConfig::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void RewriterConfig::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const RewriterConfig& RewriterConfig::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_RewriterConfig_tensorflow_2fcore_2fprotobuf_2frewriter_5fconfig_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void RewriterConfig::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.RewriterConfig)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  optimizers_.Clear();
+  custom_optimizers_.Clear();
+  memory_optimizer_target_node_name_scope_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+  if (GetArenaNoVirtual() == NULL && auto_parallel_ != NULL) {
+    delete auto_parallel_;
+  }
+  auto_parallel_ = NULL;
+  if (GetArenaNoVirtual() == NULL && scoped_allocator_opts_ != NULL) {
+    delete scoped_allocator_opts_;
+  }
+  scoped_allocator_opts_ = NULL;
+  ::memset(&layout_optimizer_, 0, static_cast<size_t>(
+      reinterpret_cast<char*>(&scoped_allocator_optimization_) -
+      reinterpret_cast<char*>(&layout_optimizer_)) + sizeof(scoped_allocator_optimization_));
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* RewriterConfig::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<RewriterConfig*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // .tensorflow.RewriterConfig.Toggle layout_optimizer = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 8) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::tensorflow::RewriterConfig_Toggle value = static_cast<::tensorflow::RewriterConfig_Toggle>(val);
+        msg->set_layout_optimizer(value);
+        break;
+      }
+      // bool disable_model_pruning = 2;
+      case 2: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 16) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        bool value = val;
+        msg->set_disable_model_pruning(value);
+        break;
+      }
+      // .tensorflow.RewriterConfig.Toggle constant_folding = 3;
+      case 3: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 24) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::tensorflow::RewriterConfig_Toggle value = static_cast<::tensorflow::RewriterConfig_Toggle>(val);
+        msg->set_constant_folding(value);
+        break;
+      }
+      // .tensorflow.RewriterConfig.MemOptType memory_optimization = 4;
+      case 4: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 32) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::tensorflow::RewriterConfig_MemOptType value = static_cast<::tensorflow::RewriterConfig_MemOptType>(val);
+        msg->set_memory_optimization(value);
+        break;
+      }
+      // .tensorflow.AutoParallelOptions auto_parallel = 5;
+      case 5: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 42) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        parser_till_end = ::tensorflow::AutoParallelOptions::_InternalParse;
+        object = msg->mutable_auto_parallel();
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                       ptr, newend);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+        ptr = newend;
+        break;
+      }
+      // string memory_optimizer_target_node_name_scope = 6;
+      case 6: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 50) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("tensorflow.RewriterConfig.memory_optimizer_target_node_name_scope");
+        parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+        ::std::string* str = msg->mutable_memory_optimizer_target_node_name_scope();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+        break;
+      }
+      // .tensorflow.RewriterConfig.Toggle arithmetic_optimization = 7;
+      case 7: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 56) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::tensorflow::RewriterConfig_Toggle value = static_cast<::tensorflow::RewriterConfig_Toggle>(val);
+        msg->set_arithmetic_optimization(value);
+        break;
+      }
+      // .tensorflow.RewriterConfig.Toggle dependency_optimization = 8;
+      case 8: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 64) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::tensorflow::RewriterConfig_Toggle value = static_cast<::tensorflow::RewriterConfig_Toggle>(val);
+        msg->set_dependency_optimization(value);
+        break;
+      }
+      // .tensorflow.RewriterConfig.Toggle loop_optimization = 9;
+      case 9: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 72) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::tensorflow::RewriterConfig_Toggle value = static_cast<::tensorflow::RewriterConfig_Toggle>(val);
+        msg->set_loop_optimization(value);
+        break;
+      }
+      // .tensorflow.RewriterConfig.Toggle function_optimization = 10;
+      case 10: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 80) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::tensorflow::RewriterConfig_Toggle value = static_cast<::tensorflow::RewriterConfig_Toggle>(val);
+        msg->set_function_optimization(value);
+        break;
+      }
+      // .tensorflow.RewriterConfig.Toggle debug_stripper = 11;
+      case 11: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 88) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::tensorflow::RewriterConfig_Toggle value = static_cast<::tensorflow::RewriterConfig_Toggle>(val);
+        msg->set_debug_stripper(value);
+        break;
+      }
+      // .tensorflow.RewriterConfig.NumIterationsType meta_optimizer_iterations = 12;
+      case 12: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 96) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::tensorflow::RewriterConfig_NumIterationsType value = static_cast<::tensorflow::RewriterConfig_NumIterationsType>(val);
+        msg->set_meta_optimizer_iterations(value);
+        break;
+      }
+      // .tensorflow.RewriterConfig.Toggle shape_optimization = 13;
+      case 13: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 104) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::tensorflow::RewriterConfig_Toggle value = static_cast<::tensorflow::RewriterConfig_Toggle>(val);
+        msg->set_shape_optimization(value);
+        break;
+      }
+      // .tensorflow.RewriterConfig.Toggle remapping = 14;
+      case 14: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 112) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::tensorflow::RewriterConfig_Toggle value = static_cast<::tensorflow::RewriterConfig_Toggle>(val);
+        msg->set_remapping(value);
+        break;
+      }
+      // .tensorflow.RewriterConfig.Toggle scoped_allocator_optimization = 15;
+      case 15: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 120) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::tensorflow::RewriterConfig_Toggle value = static_cast<::tensorflow::RewriterConfig_Toggle>(val);
+        msg->set_scoped_allocator_optimization(value);
+        break;
+      }
+      // .tensorflow.ScopedAllocatorOptions scoped_allocator_opts = 16;
+      case 16: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 130) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        parser_till_end = ::tensorflow::ScopedAllocatorOptions::_InternalParse;
+        object = msg->mutable_scoped_allocator_opts();
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                       ptr, newend);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+        ptr = newend;
+        break;
+      }
+      // repeated string optimizers = 100;
+      case 100: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 34) goto handle_unusual;
+        do {
+          ptr = Varint::Parse32Inline(ptr, &size);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          ctx->extra_parse_data().SetFieldName("tensorflow.RewriterConfig.optimizers");
+          parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+          ::std::string* str = msg->add_optimizers();
+          str->clear();
+          object = str;
+          if (size > end - ptr) goto len_delim_till_end;
+          auto newend = ptr + size;
+          if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+          if (ptr >= end) break;
+        } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 65535) == 1698 && (ptr += 2));
+        break;
+      }
+      // repeated .tensorflow.RewriterConfig.CustomGraphOptimizer custom_optimizers = 200;
+      case 200: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 66) goto handle_unusual;
+        do {
+          ptr = Varint::Parse32Inline(ptr, &size);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          parser_till_end = ::tensorflow::RewriterConfig_CustomGraphOptimizer::_InternalParse;
+          object = msg->add_custom_optimizers();
+          if (size > end - ptr) goto len_delim_till_end;
+          auto newend = ptr + size;
+          bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                         ptr, newend);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          ptr = newend;
+          if (ptr >= end) break;
+        } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 65535) == 3266 && (ptr += 2));
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool RewriterConfig::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.RewriterConfig)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(16383u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // .tensorflow.RewriterConfig.Toggle layout_optimizer = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (8 & 0xFF)) {
+          int value = 0;
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>(
+                 input, &value)));
+          set_layout_optimizer(static_cast< ::tensorflow::RewriterConfig_Toggle >(value));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // bool disable_model_pruning = 2;
+      case 2: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (16 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
+                 input, &disable_model_pruning_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // .tensorflow.RewriterConfig.Toggle constant_folding = 3;
+      case 3: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (24 & 0xFF)) {
+          int value = 0;
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>(
+                 input, &value)));
+          set_constant_folding(static_cast< ::tensorflow::RewriterConfig_Toggle >(value));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // .tensorflow.RewriterConfig.MemOptType memory_optimization = 4;
+      case 4: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (32 & 0xFF)) {
+          int value = 0;
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>(
+                 input, &value)));
+          set_memory_optimization(static_cast< ::tensorflow::RewriterConfig_MemOptType >(value));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // .tensorflow.AutoParallelOptions auto_parallel = 5;
+      case 5: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (42 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+               input, mutable_auto_parallel()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // string memory_optimizer_target_node_name_scope = 6;
+      case 6: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (50 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_memory_optimizer_target_node_name_scope()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->memory_optimizer_target_node_name_scope().data(), static_cast<int>(this->memory_optimizer_target_node_name_scope().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.RewriterConfig.memory_optimizer_target_node_name_scope"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // .tensorflow.RewriterConfig.Toggle arithmetic_optimization = 7;
+      case 7: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (56 & 0xFF)) {
+          int value = 0;
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>(
+                 input, &value)));
+          set_arithmetic_optimization(static_cast< ::tensorflow::RewriterConfig_Toggle >(value));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // .tensorflow.RewriterConfig.Toggle dependency_optimization = 8;
+      case 8: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (64 & 0xFF)) {
+          int value = 0;
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>(
+                 input, &value)));
+          set_dependency_optimization(static_cast< ::tensorflow::RewriterConfig_Toggle >(value));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // .tensorflow.RewriterConfig.Toggle loop_optimization = 9;
+      case 9: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (72 & 0xFF)) {
+          int value = 0;
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>(
+                 input, &value)));
+          set_loop_optimization(static_cast< ::tensorflow::RewriterConfig_Toggle >(value));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // .tensorflow.RewriterConfig.Toggle function_optimization = 10;
+      case 10: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (80 & 0xFF)) {
+          int value = 0;
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>(
+                 input, &value)));
+          set_function_optimization(static_cast< ::tensorflow::RewriterConfig_Toggle >(value));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // .tensorflow.RewriterConfig.Toggle debug_stripper = 11;
+      case 11: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (88 & 0xFF)) {
+          int value = 0;
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>(
+                 input, &value)));
+          set_debug_stripper(static_cast< ::tensorflow::RewriterConfig_Toggle >(value));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // .tensorflow.RewriterConfig.NumIterationsType meta_optimizer_iterations = 12;
+      case 12: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (96 & 0xFF)) {
+          int value = 0;
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>(
+                 input, &value)));
+          set_meta_optimizer_iterations(static_cast< ::tensorflow::RewriterConfig_NumIterationsType >(value));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // .tensorflow.RewriterConfig.Toggle shape_optimization = 13;
+      case 13: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (104 & 0xFF)) {
+          int value = 0;
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>(
+                 input, &value)));
+          set_shape_optimization(static_cast< ::tensorflow::RewriterConfig_Toggle >(value));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // .tensorflow.RewriterConfig.Toggle remapping = 14;
+      case 14: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (112 & 0xFF)) {
+          int value = 0;
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>(
+                 input, &value)));
+          set_remapping(static_cast< ::tensorflow::RewriterConfig_Toggle >(value));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // .tensorflow.RewriterConfig.Toggle scoped_allocator_optimization = 15;
+      case 15: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (120 & 0xFF)) {
+          int value = 0;
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>(
+                 input, &value)));
+          set_scoped_allocator_optimization(static_cast< ::tensorflow::RewriterConfig_Toggle >(value));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // .tensorflow.ScopedAllocatorOptions scoped_allocator_opts = 16;
+      case 16: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (130 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+               input, mutable_scoped_allocator_opts()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // repeated string optimizers = 100;
+      case 100: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (802 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->add_optimizers()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->optimizers(this->optimizers_size() - 1).data(),
+            static_cast<int>(this->optimizers(this->optimizers_size() - 1).length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.RewriterConfig.optimizers"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // repeated .tensorflow.RewriterConfig.CustomGraphOptimizer custom_optimizers = 200;
+      case 200: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (1602 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+                input, add_custom_optimizers()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.RewriterConfig)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.RewriterConfig)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void RewriterConfig::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.RewriterConfig)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // .tensorflow.RewriterConfig.Toggle layout_optimizer = 1;
+  if (this->layout_optimizer() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteEnum(
+      1, this->layout_optimizer(), output);
+  }
+
+  // bool disable_model_pruning = 2;
+  if (this->disable_model_pruning() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteBool(2, this->disable_model_pruning(), output);
+  }
+
+  // .tensorflow.RewriterConfig.Toggle constant_folding = 3;
+  if (this->constant_folding() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteEnum(
+      3, this->constant_folding(), output);
+  }
+
+  // .tensorflow.RewriterConfig.MemOptType memory_optimization = 4;
+  if (this->memory_optimization() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteEnum(
+      4, this->memory_optimization(), output);
+  }
+
+  // .tensorflow.AutoParallelOptions auto_parallel = 5;
+  if (this->has_auto_parallel()) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      5, HasBitSetters::auto_parallel(this), output);
+  }
+
+  // string memory_optimizer_target_node_name_scope = 6;
+  if (this->memory_optimizer_target_node_name_scope().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->memory_optimizer_target_node_name_scope().data(), static_cast<int>(this->memory_optimizer_target_node_name_scope().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.RewriterConfig.memory_optimizer_target_node_name_scope");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      6, this->memory_optimizer_target_node_name_scope(), output);
+  }
+
+  // .tensorflow.RewriterConfig.Toggle arithmetic_optimization = 7;
+  if (this->arithmetic_optimization() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteEnum(
+      7, this->arithmetic_optimization(), output);
+  }
+
+  // .tensorflow.RewriterConfig.Toggle dependency_optimization = 8;
+  if (this->dependency_optimization() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteEnum(
+      8, this->dependency_optimization(), output);
+  }
+
+  // .tensorflow.RewriterConfig.Toggle loop_optimization = 9;
+  if (this->loop_optimization() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteEnum(
+      9, this->loop_optimization(), output);
+  }
+
+  // .tensorflow.RewriterConfig.Toggle function_optimization = 10;
+  if (this->function_optimization() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteEnum(
+      10, this->function_optimization(), output);
+  }
+
+  // .tensorflow.RewriterConfig.Toggle debug_stripper = 11;
+  if (this->debug_stripper() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteEnum(
+      11, this->debug_stripper(), output);
+  }
+
+  // .tensorflow.RewriterConfig.NumIterationsType meta_optimizer_iterations = 12;
+  if (this->meta_optimizer_iterations() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteEnum(
+      12, this->meta_optimizer_iterations(), output);
+  }
+
+  // .tensorflow.RewriterConfig.Toggle shape_optimization = 13;
+  if (this->shape_optimization() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteEnum(
+      13, this->shape_optimization(), output);
+  }
+
+  // .tensorflow.RewriterConfig.Toggle remapping = 14;
+  if (this->remapping() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteEnum(
+      14, this->remapping(), output);
+  }
+
+  // .tensorflow.RewriterConfig.Toggle scoped_allocator_optimization = 15;
+  if (this->scoped_allocator_optimization() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteEnum(
+      15, this->scoped_allocator_optimization(), output);
+  }
+
+  // .tensorflow.ScopedAllocatorOptions scoped_allocator_opts = 16;
+  if (this->has_scoped_allocator_opts()) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      16, HasBitSetters::scoped_allocator_opts(this), output);
+  }
+
+  // repeated string optimizers = 100;
+  for (int i = 0, n = this->optimizers_size(); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->optimizers(i).data(), static_cast<int>(this->optimizers(i).length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.RewriterConfig.optimizers");
+    ::google::protobuf::internal::WireFormatLite::WriteString(
+      100, this->optimizers(i), output);
+  }
+
+  // repeated .tensorflow.RewriterConfig.CustomGraphOptimizer custom_optimizers = 200;
+  for (unsigned int i = 0,
+      n = static_cast<unsigned int>(this->custom_optimizers_size()); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      200,
+      this->custom_optimizers(static_cast<int>(i)),
+      output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.RewriterConfig)
+}
+
+::google::protobuf::uint8* RewriterConfig::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.RewriterConfig)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // .tensorflow.RewriterConfig.Toggle layout_optimizer = 1;
+  if (this->layout_optimizer() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteEnumToArray(
+      1, this->layout_optimizer(), target);
+  }
+
+  // bool disable_model_pruning = 2;
+  if (this->disable_model_pruning() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(2, this->disable_model_pruning(), target);
+  }
+
+  // .tensorflow.RewriterConfig.Toggle constant_folding = 3;
+  if (this->constant_folding() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteEnumToArray(
+      3, this->constant_folding(), target);
+  }
+
+  // .tensorflow.RewriterConfig.MemOptType memory_optimization = 4;
+  if (this->memory_optimization() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteEnumToArray(
+      4, this->memory_optimization(), target);
+  }
+
+  // .tensorflow.AutoParallelOptions auto_parallel = 5;
+  if (this->has_auto_parallel()) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        5, HasBitSetters::auto_parallel(this), deterministic, target);
+  }
+
+  // string memory_optimizer_target_node_name_scope = 6;
+  if (this->memory_optimizer_target_node_name_scope().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->memory_optimizer_target_node_name_scope().data(), static_cast<int>(this->memory_optimizer_target_node_name_scope().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.RewriterConfig.memory_optimizer_target_node_name_scope");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        6, this->memory_optimizer_target_node_name_scope(), target);
+  }
+
+  // .tensorflow.RewriterConfig.Toggle arithmetic_optimization = 7;
+  if (this->arithmetic_optimization() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteEnumToArray(
+      7, this->arithmetic_optimization(), target);
+  }
+
+  // .tensorflow.RewriterConfig.Toggle dependency_optimization = 8;
+  if (this->dependency_optimization() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteEnumToArray(
+      8, this->dependency_optimization(), target);
+  }
+
+  // .tensorflow.RewriterConfig.Toggle loop_optimization = 9;
+  if (this->loop_optimization() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteEnumToArray(
+      9, this->loop_optimization(), target);
+  }
+
+  // .tensorflow.RewriterConfig.Toggle function_optimization = 10;
+  if (this->function_optimization() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteEnumToArray(
+      10, this->function_optimization(), target);
+  }
+
+  // .tensorflow.RewriterConfig.Toggle debug_stripper = 11;
+  if (this->debug_stripper() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteEnumToArray(
+      11, this->debug_stripper(), target);
+  }
+
+  // .tensorflow.RewriterConfig.NumIterationsType meta_optimizer_iterations = 12;
+  if (this->meta_optimizer_iterations() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteEnumToArray(
+      12, this->meta_optimizer_iterations(), target);
+  }
+
+  // .tensorflow.RewriterConfig.Toggle shape_optimization = 13;
+  if (this->shape_optimization() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteEnumToArray(
+      13, this->shape_optimization(), target);
+  }
+
+  // .tensorflow.RewriterConfig.Toggle remapping = 14;
+  if (this->remapping() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteEnumToArray(
+      14, this->remapping(), target);
+  }
+
+  // .tensorflow.RewriterConfig.Toggle scoped_allocator_optimization = 15;
+  if (this->scoped_allocator_optimization() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteEnumToArray(
+      15, this->scoped_allocator_optimization(), target);
+  }
+
+  // .tensorflow.ScopedAllocatorOptions scoped_allocator_opts = 16;
+  if (this->has_scoped_allocator_opts()) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        16, HasBitSetters::scoped_allocator_opts(this), deterministic, target);
+  }
+
+  // repeated string optimizers = 100;
+  for (int i = 0, n = this->optimizers_size(); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->optimizers(i).data(), static_cast<int>(this->optimizers(i).length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.RewriterConfig.optimizers");
+    target = ::google::protobuf::internal::WireFormatLite::
+      WriteStringToArray(100, this->optimizers(i), target);
+  }
+
+  // repeated .tensorflow.RewriterConfig.CustomGraphOptimizer custom_optimizers = 200;
+  for (unsigned int i = 0,
+      n = static_cast<unsigned int>(this->custom_optimizers_size()); i < n; i++) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        200, this->custom_optimizers(static_cast<int>(i)), deterministic, target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.RewriterConfig)
+  return target;
+}
+
+size_t RewriterConfig::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.RewriterConfig)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // repeated string optimizers = 100;
+  total_size += 2 *
+      ::google::protobuf::internal::FromIntSize(this->optimizers_size());
+  for (int i = 0, n = this->optimizers_size(); i < n; i++) {
+    total_size += ::google::protobuf::internal::WireFormatLite::StringSize(
+      this->optimizers(i));
+  }
+
+  // repeated .tensorflow.RewriterConfig.CustomGraphOptimizer custom_optimizers = 200;
+  {
+    unsigned int count = static_cast<unsigned int>(this->custom_optimizers_size());
+    total_size += 2UL * count;
+    for (unsigned int i = 0; i < count; i++) {
+      total_size +=
+        ::google::protobuf::internal::WireFormatLite::MessageSize(
+          this->custom_optimizers(static_cast<int>(i)));
+    }
+  }
+
+  // string memory_optimizer_target_node_name_scope = 6;
+  if (this->memory_optimizer_target_node_name_scope().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->memory_optimizer_target_node_name_scope());
+  }
+
+  // .tensorflow.AutoParallelOptions auto_parallel = 5;
+  if (this->has_auto_parallel()) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::MessageSize(
+        *auto_parallel_);
+  }
+
+  // .tensorflow.ScopedAllocatorOptions scoped_allocator_opts = 16;
+  if (this->has_scoped_allocator_opts()) {
+    total_size += 2 +
+      ::google::protobuf::internal::WireFormatLite::MessageSize(
+        *scoped_allocator_opts_);
+  }
+
+  // .tensorflow.RewriterConfig.Toggle layout_optimizer = 1;
+  if (this->layout_optimizer() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::EnumSize(this->layout_optimizer());
+  }
+
+  // bool disable_model_pruning = 2;
+  if (this->disable_model_pruning() != 0) {
+    total_size += 1 + 1;
+  }
+
+  // .tensorflow.RewriterConfig.Toggle constant_folding = 3;
+  if (this->constant_folding() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::EnumSize(this->constant_folding());
+  }
+
+  // .tensorflow.RewriterConfig.MemOptType memory_optimization = 4;
+  if (this->memory_optimization() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::EnumSize(this->memory_optimization());
+  }
+
+  // .tensorflow.RewriterConfig.Toggle arithmetic_optimization = 7;
+  if (this->arithmetic_optimization() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::EnumSize(this->arithmetic_optimization());
+  }
+
+  // .tensorflow.RewriterConfig.Toggle dependency_optimization = 8;
+  if (this->dependency_optimization() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::EnumSize(this->dependency_optimization());
+  }
+
+  // .tensorflow.RewriterConfig.Toggle loop_optimization = 9;
+  if (this->loop_optimization() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::EnumSize(this->loop_optimization());
+  }
+
+  // .tensorflow.RewriterConfig.Toggle function_optimization = 10;
+  if (this->function_optimization() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::EnumSize(this->function_optimization());
+  }
+
+  // .tensorflow.RewriterConfig.Toggle debug_stripper = 11;
+  if (this->debug_stripper() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::EnumSize(this->debug_stripper());
+  }
+
+  // .tensorflow.RewriterConfig.NumIterationsType meta_optimizer_iterations = 12;
+  if (this->meta_optimizer_iterations() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::EnumSize(this->meta_optimizer_iterations());
+  }
+
+  // .tensorflow.RewriterConfig.Toggle shape_optimization = 13;
+  if (this->shape_optimization() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::EnumSize(this->shape_optimization());
+  }
+
+  // .tensorflow.RewriterConfig.Toggle remapping = 14;
+  if (this->remapping() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::EnumSize(this->remapping());
+  }
+
+  // .tensorflow.RewriterConfig.Toggle scoped_allocator_optimization = 15;
+  if (this->scoped_allocator_optimization() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::EnumSize(this->scoped_allocator_optimization());
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void RewriterConfig::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.RewriterConfig)
+  GOOGLE_DCHECK_NE(&from, this);
+  const RewriterConfig* source =
+      ::google::protobuf::DynamicCastToGenerated<RewriterConfig>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.RewriterConfig)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.RewriterConfig)
+    MergeFrom(*source);
+  }
+}
+
+void RewriterConfig::MergeFrom(const RewriterConfig& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.RewriterConfig)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  optimizers_.MergeFrom(from.optimizers_);
+  custom_optimizers_.MergeFrom(from.custom_optimizers_);
+  if (from.memory_optimizer_target_node_name_scope().size() > 0) {
+    set_memory_optimizer_target_node_name_scope(from.memory_optimizer_target_node_name_scope());
+  }
+  if (from.has_auto_parallel()) {
+    mutable_auto_parallel()->::tensorflow::AutoParallelOptions::MergeFrom(from.auto_parallel());
+  }
+  if (from.has_scoped_allocator_opts()) {
+    mutable_scoped_allocator_opts()->::tensorflow::ScopedAllocatorOptions::MergeFrom(from.scoped_allocator_opts());
+  }
+  if (from.layout_optimizer() != 0) {
+    set_layout_optimizer(from.layout_optimizer());
+  }
+  if (from.disable_model_pruning() != 0) {
+    set_disable_model_pruning(from.disable_model_pruning());
+  }
+  if (from.constant_folding() != 0) {
+    set_constant_folding(from.constant_folding());
+  }
+  if (from.memory_optimization() != 0) {
+    set_memory_optimization(from.memory_optimization());
+  }
+  if (from.arithmetic_optimization() != 0) {
+    set_arithmetic_optimization(from.arithmetic_optimization());
+  }
+  if (from.dependency_optimization() != 0) {
+    set_dependency_optimization(from.dependency_optimization());
+  }
+  if (from.loop_optimization() != 0) {
+    set_loop_optimization(from.loop_optimization());
+  }
+  if (from.function_optimization() != 0) {
+    set_function_optimization(from.function_optimization());
+  }
+  if (from.debug_stripper() != 0) {
+    set_debug_stripper(from.debug_stripper());
+  }
+  if (from.meta_optimizer_iterations() != 0) {
+    set_meta_optimizer_iterations(from.meta_optimizer_iterations());
+  }
+  if (from.shape_optimization() != 0) {
+    set_shape_optimization(from.shape_optimization());
+  }
+  if (from.remapping() != 0) {
+    set_remapping(from.remapping());
+  }
+  if (from.scoped_allocator_optimization() != 0) {
+    set_scoped_allocator_optimization(from.scoped_allocator_optimization());
+  }
+}
+
+void RewriterConfig::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.RewriterConfig)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void RewriterConfig::CopyFrom(const RewriterConfig& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.RewriterConfig)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool RewriterConfig::IsInitialized() const {
+  return true;
+}
+
+void RewriterConfig::Swap(RewriterConfig* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    RewriterConfig* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void RewriterConfig::UnsafeArenaSwap(RewriterConfig* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void RewriterConfig::InternalSwap(RewriterConfig* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  optimizers_.InternalSwap(CastToBase(&other->optimizers_));
+  CastToBase(&custom_optimizers_)->InternalSwap(CastToBase(&other->custom_optimizers_));
+  memory_optimizer_target_node_name_scope_.Swap(&other->memory_optimizer_target_node_name_scope_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+  swap(auto_parallel_, other->auto_parallel_);
+  swap(scoped_allocator_opts_, other->scoped_allocator_opts_);
+  swap(layout_optimizer_, other->layout_optimizer_);
+  swap(disable_model_pruning_, other->disable_model_pruning_);
+  swap(constant_folding_, other->constant_folding_);
+  swap(memory_optimization_, other->memory_optimization_);
+  swap(arithmetic_optimization_, other->arithmetic_optimization_);
+  swap(dependency_optimization_, other->dependency_optimization_);
+  swap(loop_optimization_, other->loop_optimization_);
+  swap(function_optimization_, other->function_optimization_);
+  swap(debug_stripper_, other->debug_stripper_);
+  swap(meta_optimizer_iterations_, other->meta_optimizer_iterations_);
+  swap(shape_optimization_, other->shape_optimization_);
+  swap(remapping_, other->remapping_);
+  swap(scoped_allocator_optimization_, other->scoped_allocator_optimization_);
+}
+
+::google::protobuf::Metadata RewriterConfig::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2frewriter_5fconfig_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fprotobuf_2frewriter_5fconfig_2eproto[kIndexInFileMessages];
+}
+
+
+// @@protoc_insertion_point(namespace_scope)
+}  // namespace tensorflow
+namespace google {
+namespace protobuf {
+template<> PROTOBUF_NOINLINE ::tensorflow::AutoParallelOptions* Arena::CreateMaybeMessage< ::tensorflow::AutoParallelOptions >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::AutoParallelOptions >(arena);
+}
+template<> PROTOBUF_NOINLINE ::tensorflow::ScopedAllocatorOptions* Arena::CreateMaybeMessage< ::tensorflow::ScopedAllocatorOptions >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::ScopedAllocatorOptions >(arena);
+}
+template<> PROTOBUF_NOINLINE ::tensorflow::RewriterConfig_CustomGraphOptimizer_ParameterMapEntry_DoNotUse* Arena::CreateMaybeMessage< ::tensorflow::RewriterConfig_CustomGraphOptimizer_ParameterMapEntry_DoNotUse >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::RewriterConfig_CustomGraphOptimizer_ParameterMapEntry_DoNotUse >(arena);
+}
+template<> PROTOBUF_NOINLINE ::tensorflow::RewriterConfig_CustomGraphOptimizer* Arena::CreateMaybeMessage< ::tensorflow::RewriterConfig_CustomGraphOptimizer >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::RewriterConfig_CustomGraphOptimizer >(arena);
+}
+template<> PROTOBUF_NOINLINE ::tensorflow::RewriterConfig* Arena::CreateMaybeMessage< ::tensorflow::RewriterConfig >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::RewriterConfig >(arena);
+}
+}  // namespace protobuf
+}  // namespace google
+
+// @@protoc_insertion_point(global_scope)
+#include <google/protobuf/port_undef.inc>
diff --git a/tensorflow/core/protobuf/rewriter_config.pb.h b/tensorflow/core/protobuf/rewriter_config.pb.h
new file mode 100644 (file)
index 0000000..77f90b0
--- /dev/null
@@ -0,0 +1,1738 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: tensorflow/core/protobuf/rewriter_config.proto
+
+#ifndef PROTOBUF_INCLUDED_tensorflow_2fcore_2fprotobuf_2frewriter_5fconfig_2eproto
+#define PROTOBUF_INCLUDED_tensorflow_2fcore_2fprotobuf_2frewriter_5fconfig_2eproto
+
+#include <limits>
+#include <string>
+
+#include <google/protobuf/port_def.inc>
+#if PROTOBUF_VERSION < 3006001
+#error This file was generated by a newer version of protoc which is
+#error incompatible with your Protocol Buffer headers. Please update
+#error your headers.
+#endif
+#if 3006001 < PROTOBUF_MIN_PROTOC_VERSION
+#error This file was generated by an older version of protoc which is
+#error incompatible with your Protocol Buffer headers. Please
+#error regenerate this file with a newer version of protoc.
+#endif
+
+#include <google/protobuf/port_undef.inc>
+#include <google/protobuf/io/coded_stream.h>
+#include <google/protobuf/arena.h>
+#include <google/protobuf/arenastring.h>
+#include <google/protobuf/generated_message_table_driven.h>
+#include <google/protobuf/generated_message_util.h>
+#include <google/protobuf/inlined_string_field.h>
+#include <google/protobuf/metadata.h>
+#include <google/protobuf/message.h>
+#include <google/protobuf/repeated_field.h>  // IWYU pragma: export
+#include <google/protobuf/extension_set.h>  // IWYU pragma: export
+#include <google/protobuf/map.h>  // IWYU pragma: export
+#include <google/protobuf/map_entry.h>
+#include <google/protobuf/map_field_inl.h>
+#include <google/protobuf/generated_enum_reflection.h>
+#include <google/protobuf/unknown_field_set.h>
+#include "tensorflow/core/framework/attr_value.pb.h"
+// @@protoc_insertion_point(includes)
+#include <google/protobuf/port_def.inc>
+#define PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fprotobuf_2frewriter_5fconfig_2eproto
+
+// Internal implementation detail -- do not use these members.
+struct TableStruct_tensorflow_2fcore_2fprotobuf_2frewriter_5fconfig_2eproto {
+  static const ::google::protobuf::internal::ParseTableField entries[]
+    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
+  static const ::google::protobuf::internal::AuxillaryParseTableField aux[]
+    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
+  static const ::google::protobuf::internal::ParseTable schema[5]
+    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
+  static const ::google::protobuf::internal::FieldMetadata field_metadata[];
+  static const ::google::protobuf::internal::SerializationTable serialization_table[];
+  static const ::google::protobuf::uint32 offsets[];
+};
+void AddDescriptors_tensorflow_2fcore_2fprotobuf_2frewriter_5fconfig_2eproto();
+namespace tensorflow {
+class AutoParallelOptions;
+class AutoParallelOptionsDefaultTypeInternal;
+extern AutoParallelOptionsDefaultTypeInternal _AutoParallelOptions_default_instance_;
+class RewriterConfig;
+class RewriterConfigDefaultTypeInternal;
+extern RewriterConfigDefaultTypeInternal _RewriterConfig_default_instance_;
+class RewriterConfig_CustomGraphOptimizer;
+class RewriterConfig_CustomGraphOptimizerDefaultTypeInternal;
+extern RewriterConfig_CustomGraphOptimizerDefaultTypeInternal _RewriterConfig_CustomGraphOptimizer_default_instance_;
+class RewriterConfig_CustomGraphOptimizer_ParameterMapEntry_DoNotUse;
+class RewriterConfig_CustomGraphOptimizer_ParameterMapEntry_DoNotUseDefaultTypeInternal;
+extern RewriterConfig_CustomGraphOptimizer_ParameterMapEntry_DoNotUseDefaultTypeInternal _RewriterConfig_CustomGraphOptimizer_ParameterMapEntry_DoNotUse_default_instance_;
+class ScopedAllocatorOptions;
+class ScopedAllocatorOptionsDefaultTypeInternal;
+extern ScopedAllocatorOptionsDefaultTypeInternal _ScopedAllocatorOptions_default_instance_;
+}  // namespace tensorflow
+namespace google {
+namespace protobuf {
+template<> ::tensorflow::AutoParallelOptions* Arena::CreateMaybeMessage<::tensorflow::AutoParallelOptions>(Arena*);
+template<> ::tensorflow::RewriterConfig* Arena::CreateMaybeMessage<::tensorflow::RewriterConfig>(Arena*);
+template<> ::tensorflow::RewriterConfig_CustomGraphOptimizer* Arena::CreateMaybeMessage<::tensorflow::RewriterConfig_CustomGraphOptimizer>(Arena*);
+template<> ::tensorflow::RewriterConfig_CustomGraphOptimizer_ParameterMapEntry_DoNotUse* Arena::CreateMaybeMessage<::tensorflow::RewriterConfig_CustomGraphOptimizer_ParameterMapEntry_DoNotUse>(Arena*);
+template<> ::tensorflow::ScopedAllocatorOptions* Arena::CreateMaybeMessage<::tensorflow::ScopedAllocatorOptions>(Arena*);
+}  // namespace protobuf
+}  // namespace google
+namespace tensorflow {
+
+enum RewriterConfig_Toggle {
+  RewriterConfig_Toggle_DEFAULT = 0,
+  RewriterConfig_Toggle_ON = 1,
+  RewriterConfig_Toggle_OFF = 2,
+  RewriterConfig_Toggle_AGGRESSIVE = 3,
+  RewriterConfig_Toggle_RewriterConfig_Toggle_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::google::protobuf::int32>::min(),
+  RewriterConfig_Toggle_RewriterConfig_Toggle_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::google::protobuf::int32>::max()
+};
+bool RewriterConfig_Toggle_IsValid(int value);
+const RewriterConfig_Toggle RewriterConfig_Toggle_Toggle_MIN = RewriterConfig_Toggle_DEFAULT;
+const RewriterConfig_Toggle RewriterConfig_Toggle_Toggle_MAX = RewriterConfig_Toggle_AGGRESSIVE;
+const int RewriterConfig_Toggle_Toggle_ARRAYSIZE = RewriterConfig_Toggle_Toggle_MAX + 1;
+
+const ::google::protobuf::EnumDescriptor* RewriterConfig_Toggle_descriptor();
+inline const ::std::string& RewriterConfig_Toggle_Name(RewriterConfig_Toggle value) {
+  return ::google::protobuf::internal::NameOfEnum(
+    RewriterConfig_Toggle_descriptor(), value);
+}
+inline bool RewriterConfig_Toggle_Parse(
+    const ::std::string& name, RewriterConfig_Toggle* value) {
+  return ::google::protobuf::internal::ParseNamedEnum<RewriterConfig_Toggle>(
+    RewriterConfig_Toggle_descriptor(), name, value);
+}
+enum RewriterConfig_NumIterationsType {
+  RewriterConfig_NumIterationsType_DEFAULT_NUM_ITERS = 0,
+  RewriterConfig_NumIterationsType_ONE = 1,
+  RewriterConfig_NumIterationsType_TWO = 2,
+  RewriterConfig_NumIterationsType_RewriterConfig_NumIterationsType_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::google::protobuf::int32>::min(),
+  RewriterConfig_NumIterationsType_RewriterConfig_NumIterationsType_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::google::protobuf::int32>::max()
+};
+bool RewriterConfig_NumIterationsType_IsValid(int value);
+const RewriterConfig_NumIterationsType RewriterConfig_NumIterationsType_NumIterationsType_MIN = RewriterConfig_NumIterationsType_DEFAULT_NUM_ITERS;
+const RewriterConfig_NumIterationsType RewriterConfig_NumIterationsType_NumIterationsType_MAX = RewriterConfig_NumIterationsType_TWO;
+const int RewriterConfig_NumIterationsType_NumIterationsType_ARRAYSIZE = RewriterConfig_NumIterationsType_NumIterationsType_MAX + 1;
+
+const ::google::protobuf::EnumDescriptor* RewriterConfig_NumIterationsType_descriptor();
+inline const ::std::string& RewriterConfig_NumIterationsType_Name(RewriterConfig_NumIterationsType value) {
+  return ::google::protobuf::internal::NameOfEnum(
+    RewriterConfig_NumIterationsType_descriptor(), value);
+}
+inline bool RewriterConfig_NumIterationsType_Parse(
+    const ::std::string& name, RewriterConfig_NumIterationsType* value) {
+  return ::google::protobuf::internal::ParseNamedEnum<RewriterConfig_NumIterationsType>(
+    RewriterConfig_NumIterationsType_descriptor(), name, value);
+}
+enum RewriterConfig_MemOptType {
+  RewriterConfig_MemOptType_DEFAULT_MEM_OPT = 0,
+  RewriterConfig_MemOptType_NO_MEM_OPT = 1,
+  RewriterConfig_MemOptType_MANUAL = 2,
+  RewriterConfig_MemOptType_SWAPPING_HEURISTICS = 4,
+  RewriterConfig_MemOptType_RECOMPUTATION_HEURISTICS = 5,
+  RewriterConfig_MemOptType_SCHEDULING_HEURISTICS = 6,
+  RewriterConfig_MemOptType_HEURISTICS = 3,
+  RewriterConfig_MemOptType_RewriterConfig_MemOptType_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::google::protobuf::int32>::min(),
+  RewriterConfig_MemOptType_RewriterConfig_MemOptType_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::google::protobuf::int32>::max()
+};
+bool RewriterConfig_MemOptType_IsValid(int value);
+const RewriterConfig_MemOptType RewriterConfig_MemOptType_MemOptType_MIN = RewriterConfig_MemOptType_DEFAULT_MEM_OPT;
+const RewriterConfig_MemOptType RewriterConfig_MemOptType_MemOptType_MAX = RewriterConfig_MemOptType_SCHEDULING_HEURISTICS;
+const int RewriterConfig_MemOptType_MemOptType_ARRAYSIZE = RewriterConfig_MemOptType_MemOptType_MAX + 1;
+
+const ::google::protobuf::EnumDescriptor* RewriterConfig_MemOptType_descriptor();
+inline const ::std::string& RewriterConfig_MemOptType_Name(RewriterConfig_MemOptType value) {
+  return ::google::protobuf::internal::NameOfEnum(
+    RewriterConfig_MemOptType_descriptor(), value);
+}
+inline bool RewriterConfig_MemOptType_Parse(
+    const ::std::string& name, RewriterConfig_MemOptType* value) {
+  return ::google::protobuf::internal::ParseNamedEnum<RewriterConfig_MemOptType>(
+    RewriterConfig_MemOptType_descriptor(), name, value);
+}
+// ===================================================================
+
+class AutoParallelOptions : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.AutoParallelOptions) */ {
+ public:
+  AutoParallelOptions();
+  virtual ~AutoParallelOptions();
+
+  AutoParallelOptions(const AutoParallelOptions& from);
+
+  inline AutoParallelOptions& operator=(const AutoParallelOptions& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  AutoParallelOptions(AutoParallelOptions&& from) noexcept
+    : AutoParallelOptions() {
+    *this = ::std::move(from);
+  }
+
+  inline AutoParallelOptions& operator=(AutoParallelOptions&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const AutoParallelOptions& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const AutoParallelOptions* internal_default_instance() {
+    return reinterpret_cast<const AutoParallelOptions*>(
+               &_AutoParallelOptions_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    0;
+
+  void UnsafeArenaSwap(AutoParallelOptions* other);
+  void Swap(AutoParallelOptions* other);
+  friend void swap(AutoParallelOptions& a, AutoParallelOptions& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline AutoParallelOptions* New() const final {
+    return CreateMaybeMessage<AutoParallelOptions>(NULL);
+  }
+
+  AutoParallelOptions* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<AutoParallelOptions>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const AutoParallelOptions& from);
+  void MergeFrom(const AutoParallelOptions& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(AutoParallelOptions* other);
+  protected:
+  explicit AutoParallelOptions(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // bool enable = 1;
+  void clear_enable();
+  static const int kEnableFieldNumber = 1;
+  bool enable() const;
+  void set_enable(bool value);
+
+  // int32 num_replicas = 2;
+  void clear_num_replicas();
+  static const int kNumReplicasFieldNumber = 2;
+  ::google::protobuf::int32 num_replicas() const;
+  void set_num_replicas(::google::protobuf::int32 value);
+
+  // @@protoc_insertion_point(class_scope:tensorflow.AutoParallelOptions)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  bool enable_;
+  ::google::protobuf::int32 num_replicas_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fprotobuf_2frewriter_5fconfig_2eproto;
+};
+// -------------------------------------------------------------------
+
+class ScopedAllocatorOptions : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.ScopedAllocatorOptions) */ {
+ public:
+  ScopedAllocatorOptions();
+  virtual ~ScopedAllocatorOptions();
+
+  ScopedAllocatorOptions(const ScopedAllocatorOptions& from);
+
+  inline ScopedAllocatorOptions& operator=(const ScopedAllocatorOptions& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  ScopedAllocatorOptions(ScopedAllocatorOptions&& from) noexcept
+    : ScopedAllocatorOptions() {
+    *this = ::std::move(from);
+  }
+
+  inline ScopedAllocatorOptions& operator=(ScopedAllocatorOptions&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const ScopedAllocatorOptions& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const ScopedAllocatorOptions* internal_default_instance() {
+    return reinterpret_cast<const ScopedAllocatorOptions*>(
+               &_ScopedAllocatorOptions_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    1;
+
+  void UnsafeArenaSwap(ScopedAllocatorOptions* other);
+  void Swap(ScopedAllocatorOptions* other);
+  friend void swap(ScopedAllocatorOptions& a, ScopedAllocatorOptions& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline ScopedAllocatorOptions* New() const final {
+    return CreateMaybeMessage<ScopedAllocatorOptions>(NULL);
+  }
+
+  ScopedAllocatorOptions* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<ScopedAllocatorOptions>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const ScopedAllocatorOptions& from);
+  void MergeFrom(const ScopedAllocatorOptions& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(ScopedAllocatorOptions* other);
+  protected:
+  explicit ScopedAllocatorOptions(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // repeated string enable_op = 1;
+  int enable_op_size() const;
+  void clear_enable_op();
+  static const int kEnableOpFieldNumber = 1;
+  const ::std::string& enable_op(int index) const;
+  ::std::string* mutable_enable_op(int index);
+  void set_enable_op(int index, const ::std::string& value);
+  #if LANG_CXX11
+  void set_enable_op(int index, ::std::string&& value);
+  #endif
+  void set_enable_op(int index, const char* value);
+  void set_enable_op(int index, const char* value, size_t size);
+  ::std::string* add_enable_op();
+  void add_enable_op(const ::std::string& value);
+  #if LANG_CXX11
+  void add_enable_op(::std::string&& value);
+  #endif
+  void add_enable_op(const char* value);
+  void add_enable_op(const char* value, size_t size);
+  const ::google::protobuf::RepeatedPtrField<::std::string>& enable_op() const;
+  ::google::protobuf::RepeatedPtrField<::std::string>* mutable_enable_op();
+
+  // @@protoc_insertion_point(class_scope:tensorflow.ScopedAllocatorOptions)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  ::google::protobuf::RepeatedPtrField<::std::string> enable_op_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fprotobuf_2frewriter_5fconfig_2eproto;
+};
+// -------------------------------------------------------------------
+
+class RewriterConfig_CustomGraphOptimizer_ParameterMapEntry_DoNotUse : public ::google::protobuf::internal::MapEntry<RewriterConfig_CustomGraphOptimizer_ParameterMapEntry_DoNotUse, 
+    ::std::string, ::tensorflow::AttrValue,
+    ::google::protobuf::internal::WireFormatLite::TYPE_STRING,
+    ::google::protobuf::internal::WireFormatLite::TYPE_MESSAGE,
+    0 > {
+public:
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+static bool _ParseMap(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  typedef ::google::protobuf::internal::MapEntry<RewriterConfig_CustomGraphOptimizer_ParameterMapEntry_DoNotUse, 
+    ::std::string, ::tensorflow::AttrValue,
+    ::google::protobuf::internal::WireFormatLite::TYPE_STRING,
+    ::google::protobuf::internal::WireFormatLite::TYPE_MESSAGE,
+    0 > SuperType;
+  RewriterConfig_CustomGraphOptimizer_ParameterMapEntry_DoNotUse();
+  RewriterConfig_CustomGraphOptimizer_ParameterMapEntry_DoNotUse(::google::protobuf::Arena* arena);
+  void MergeFrom(const RewriterConfig_CustomGraphOptimizer_ParameterMapEntry_DoNotUse& other);
+  static const RewriterConfig_CustomGraphOptimizer_ParameterMapEntry_DoNotUse* internal_default_instance() { return reinterpret_cast<const RewriterConfig_CustomGraphOptimizer_ParameterMapEntry_DoNotUse*>(&_RewriterConfig_CustomGraphOptimizer_ParameterMapEntry_DoNotUse_default_instance_); }
+  void MergeFrom(const ::google::protobuf::Message& other) final;
+  ::google::protobuf::Metadata GetMetadata() const;
+};
+
+// -------------------------------------------------------------------
+
+class RewriterConfig_CustomGraphOptimizer : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.RewriterConfig.CustomGraphOptimizer) */ {
+ public:
+  RewriterConfig_CustomGraphOptimizer();
+  virtual ~RewriterConfig_CustomGraphOptimizer();
+
+  RewriterConfig_CustomGraphOptimizer(const RewriterConfig_CustomGraphOptimizer& from);
+
+  inline RewriterConfig_CustomGraphOptimizer& operator=(const RewriterConfig_CustomGraphOptimizer& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  RewriterConfig_CustomGraphOptimizer(RewriterConfig_CustomGraphOptimizer&& from) noexcept
+    : RewriterConfig_CustomGraphOptimizer() {
+    *this = ::std::move(from);
+  }
+
+  inline RewriterConfig_CustomGraphOptimizer& operator=(RewriterConfig_CustomGraphOptimizer&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const RewriterConfig_CustomGraphOptimizer& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const RewriterConfig_CustomGraphOptimizer* internal_default_instance() {
+    return reinterpret_cast<const RewriterConfig_CustomGraphOptimizer*>(
+               &_RewriterConfig_CustomGraphOptimizer_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    3;
+
+  void UnsafeArenaSwap(RewriterConfig_CustomGraphOptimizer* other);
+  void Swap(RewriterConfig_CustomGraphOptimizer* other);
+  friend void swap(RewriterConfig_CustomGraphOptimizer& a, RewriterConfig_CustomGraphOptimizer& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline RewriterConfig_CustomGraphOptimizer* New() const final {
+    return CreateMaybeMessage<RewriterConfig_CustomGraphOptimizer>(NULL);
+  }
+
+  RewriterConfig_CustomGraphOptimizer* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<RewriterConfig_CustomGraphOptimizer>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const RewriterConfig_CustomGraphOptimizer& from);
+  void MergeFrom(const RewriterConfig_CustomGraphOptimizer& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(RewriterConfig_CustomGraphOptimizer* other);
+  protected:
+  explicit RewriterConfig_CustomGraphOptimizer(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+
+  // accessors -------------------------------------------------------
+
+  // map<string, .tensorflow.AttrValue> parameter_map = 2;
+  int parameter_map_size() const;
+  void clear_parameter_map();
+  static const int kParameterMapFieldNumber = 2;
+  const ::google::protobuf::Map< ::std::string, ::tensorflow::AttrValue >&
+      parameter_map() const;
+  ::google::protobuf::Map< ::std::string, ::tensorflow::AttrValue >*
+      mutable_parameter_map();
+
+  // string name = 1;
+  void clear_name();
+  static const int kNameFieldNumber = 1;
+  const ::std::string& name() const;
+  void set_name(const ::std::string& value);
+  #if LANG_CXX11
+  void set_name(::std::string&& value);
+  #endif
+  void set_name(const char* value);
+  void set_name(const char* value, size_t size);
+  ::std::string* mutable_name();
+  ::std::string* release_name();
+  void set_allocated_name(::std::string* name);
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  ::std::string* unsafe_arena_release_name();
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  void unsafe_arena_set_allocated_name(
+      ::std::string* name);
+
+  // @@protoc_insertion_point(class_scope:tensorflow.RewriterConfig.CustomGraphOptimizer)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  ::google::protobuf::internal::MapField<
+      RewriterConfig_CustomGraphOptimizer_ParameterMapEntry_DoNotUse,
+      ::std::string, ::tensorflow::AttrValue,
+      ::google::protobuf::internal::WireFormatLite::TYPE_STRING,
+      ::google::protobuf::internal::WireFormatLite::TYPE_MESSAGE,
+      0 > parameter_map_;
+  ::google::protobuf::internal::ArenaStringPtr name_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fprotobuf_2frewriter_5fconfig_2eproto;
+};
+// -------------------------------------------------------------------
+
+class RewriterConfig : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.RewriterConfig) */ {
+ public:
+  RewriterConfig();
+  virtual ~RewriterConfig();
+
+  RewriterConfig(const RewriterConfig& from);
+
+  inline RewriterConfig& operator=(const RewriterConfig& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  RewriterConfig(RewriterConfig&& from) noexcept
+    : RewriterConfig() {
+    *this = ::std::move(from);
+  }
+
+  inline RewriterConfig& operator=(RewriterConfig&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const RewriterConfig& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const RewriterConfig* internal_default_instance() {
+    return reinterpret_cast<const RewriterConfig*>(
+               &_RewriterConfig_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    4;
+
+  void UnsafeArenaSwap(RewriterConfig* other);
+  void Swap(RewriterConfig* other);
+  friend void swap(RewriterConfig& a, RewriterConfig& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline RewriterConfig* New() const final {
+    return CreateMaybeMessage<RewriterConfig>(NULL);
+  }
+
+  RewriterConfig* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<RewriterConfig>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const RewriterConfig& from);
+  void MergeFrom(const RewriterConfig& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(RewriterConfig* other);
+  protected:
+  explicit RewriterConfig(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  typedef RewriterConfig_CustomGraphOptimizer CustomGraphOptimizer;
+
+  typedef RewriterConfig_Toggle Toggle;
+  static const Toggle DEFAULT =
+    RewriterConfig_Toggle_DEFAULT;
+  static const Toggle ON =
+    RewriterConfig_Toggle_ON;
+  static const Toggle OFF =
+    RewriterConfig_Toggle_OFF;
+  static const Toggle AGGRESSIVE =
+    RewriterConfig_Toggle_AGGRESSIVE;
+  static inline bool Toggle_IsValid(int value) {
+    return RewriterConfig_Toggle_IsValid(value);
+  }
+  static const Toggle Toggle_MIN =
+    RewriterConfig_Toggle_Toggle_MIN;
+  static const Toggle Toggle_MAX =
+    RewriterConfig_Toggle_Toggle_MAX;
+  static const int Toggle_ARRAYSIZE =
+    RewriterConfig_Toggle_Toggle_ARRAYSIZE;
+  static inline const ::google::protobuf::EnumDescriptor*
+  Toggle_descriptor() {
+    return RewriterConfig_Toggle_descriptor();
+  }
+  static inline const ::std::string& Toggle_Name(Toggle value) {
+    return RewriterConfig_Toggle_Name(value);
+  }
+  static inline bool Toggle_Parse(const ::std::string& name,
+      Toggle* value) {
+    return RewriterConfig_Toggle_Parse(name, value);
+  }
+
+  typedef RewriterConfig_NumIterationsType NumIterationsType;
+  static const NumIterationsType DEFAULT_NUM_ITERS =
+    RewriterConfig_NumIterationsType_DEFAULT_NUM_ITERS;
+  static const NumIterationsType ONE =
+    RewriterConfig_NumIterationsType_ONE;
+  static const NumIterationsType TWO =
+    RewriterConfig_NumIterationsType_TWO;
+  static inline bool NumIterationsType_IsValid(int value) {
+    return RewriterConfig_NumIterationsType_IsValid(value);
+  }
+  static const NumIterationsType NumIterationsType_MIN =
+    RewriterConfig_NumIterationsType_NumIterationsType_MIN;
+  static const NumIterationsType NumIterationsType_MAX =
+    RewriterConfig_NumIterationsType_NumIterationsType_MAX;
+  static const int NumIterationsType_ARRAYSIZE =
+    RewriterConfig_NumIterationsType_NumIterationsType_ARRAYSIZE;
+  static inline const ::google::protobuf::EnumDescriptor*
+  NumIterationsType_descriptor() {
+    return RewriterConfig_NumIterationsType_descriptor();
+  }
+  static inline const ::std::string& NumIterationsType_Name(NumIterationsType value) {
+    return RewriterConfig_NumIterationsType_Name(value);
+  }
+  static inline bool NumIterationsType_Parse(const ::std::string& name,
+      NumIterationsType* value) {
+    return RewriterConfig_NumIterationsType_Parse(name, value);
+  }
+
+  typedef RewriterConfig_MemOptType MemOptType;
+  static const MemOptType DEFAULT_MEM_OPT =
+    RewriterConfig_MemOptType_DEFAULT_MEM_OPT;
+  static const MemOptType NO_MEM_OPT =
+    RewriterConfig_MemOptType_NO_MEM_OPT;
+  static const MemOptType MANUAL =
+    RewriterConfig_MemOptType_MANUAL;
+  static const MemOptType SWAPPING_HEURISTICS =
+    RewriterConfig_MemOptType_SWAPPING_HEURISTICS;
+  static const MemOptType RECOMPUTATION_HEURISTICS =
+    RewriterConfig_MemOptType_RECOMPUTATION_HEURISTICS;
+  static const MemOptType SCHEDULING_HEURISTICS =
+    RewriterConfig_MemOptType_SCHEDULING_HEURISTICS;
+  static const MemOptType HEURISTICS =
+    RewriterConfig_MemOptType_HEURISTICS;
+  static inline bool MemOptType_IsValid(int value) {
+    return RewriterConfig_MemOptType_IsValid(value);
+  }
+  static const MemOptType MemOptType_MIN =
+    RewriterConfig_MemOptType_MemOptType_MIN;
+  static const MemOptType MemOptType_MAX =
+    RewriterConfig_MemOptType_MemOptType_MAX;
+  static const int MemOptType_ARRAYSIZE =
+    RewriterConfig_MemOptType_MemOptType_ARRAYSIZE;
+  static inline const ::google::protobuf::EnumDescriptor*
+  MemOptType_descriptor() {
+    return RewriterConfig_MemOptType_descriptor();
+  }
+  static inline const ::std::string& MemOptType_Name(MemOptType value) {
+    return RewriterConfig_MemOptType_Name(value);
+  }
+  static inline bool MemOptType_Parse(const ::std::string& name,
+      MemOptType* value) {
+    return RewriterConfig_MemOptType_Parse(name, value);
+  }
+
+  // accessors -------------------------------------------------------
+
+  // repeated string optimizers = 100;
+  int optimizers_size() const;
+  void clear_optimizers();
+  static const int kOptimizersFieldNumber = 100;
+  const ::std::string& optimizers(int index) const;
+  ::std::string* mutable_optimizers(int index);
+  void set_optimizers(int index, const ::std::string& value);
+  #if LANG_CXX11
+  void set_optimizers(int index, ::std::string&& value);
+  #endif
+  void set_optimizers(int index, const char* value);
+  void set_optimizers(int index, const char* value, size_t size);
+  ::std::string* add_optimizers();
+  void add_optimizers(const ::std::string& value);
+  #if LANG_CXX11
+  void add_optimizers(::std::string&& value);
+  #endif
+  void add_optimizers(const char* value);
+  void add_optimizers(const char* value, size_t size);
+  const ::google::protobuf::RepeatedPtrField<::std::string>& optimizers() const;
+  ::google::protobuf::RepeatedPtrField<::std::string>* mutable_optimizers();
+
+  // repeated .tensorflow.RewriterConfig.CustomGraphOptimizer custom_optimizers = 200;
+  int custom_optimizers_size() const;
+  void clear_custom_optimizers();
+  static const int kCustomOptimizersFieldNumber = 200;
+  ::tensorflow::RewriterConfig_CustomGraphOptimizer* mutable_custom_optimizers(int index);
+  ::google::protobuf::RepeatedPtrField< ::tensorflow::RewriterConfig_CustomGraphOptimizer >*
+      mutable_custom_optimizers();
+  const ::tensorflow::RewriterConfig_CustomGraphOptimizer& custom_optimizers(int index) const;
+  ::tensorflow::RewriterConfig_CustomGraphOptimizer* add_custom_optimizers();
+  const ::google::protobuf::RepeatedPtrField< ::tensorflow::RewriterConfig_CustomGraphOptimizer >&
+      custom_optimizers() const;
+
+  // string memory_optimizer_target_node_name_scope = 6;
+  void clear_memory_optimizer_target_node_name_scope();
+  static const int kMemoryOptimizerTargetNodeNameScopeFieldNumber = 6;
+  const ::std::string& memory_optimizer_target_node_name_scope() const;
+  void set_memory_optimizer_target_node_name_scope(const ::std::string& value);
+  #if LANG_CXX11
+  void set_memory_optimizer_target_node_name_scope(::std::string&& value);
+  #endif
+  void set_memory_optimizer_target_node_name_scope(const char* value);
+  void set_memory_optimizer_target_node_name_scope(const char* value, size_t size);
+  ::std::string* mutable_memory_optimizer_target_node_name_scope();
+  ::std::string* release_memory_optimizer_target_node_name_scope();
+  void set_allocated_memory_optimizer_target_node_name_scope(::std::string* memory_optimizer_target_node_name_scope);
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  ::std::string* unsafe_arena_release_memory_optimizer_target_node_name_scope();
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  void unsafe_arena_set_allocated_memory_optimizer_target_node_name_scope(
+      ::std::string* memory_optimizer_target_node_name_scope);
+
+  // .tensorflow.AutoParallelOptions auto_parallel = 5;
+  bool has_auto_parallel() const;
+  void clear_auto_parallel();
+  static const int kAutoParallelFieldNumber = 5;
+  const ::tensorflow::AutoParallelOptions& auto_parallel() const;
+  ::tensorflow::AutoParallelOptions* release_auto_parallel();
+  ::tensorflow::AutoParallelOptions* mutable_auto_parallel();
+  void set_allocated_auto_parallel(::tensorflow::AutoParallelOptions* auto_parallel);
+  void unsafe_arena_set_allocated_auto_parallel(
+      ::tensorflow::AutoParallelOptions* auto_parallel);
+  ::tensorflow::AutoParallelOptions* unsafe_arena_release_auto_parallel();
+
+  // .tensorflow.ScopedAllocatorOptions scoped_allocator_opts = 16;
+  bool has_scoped_allocator_opts() const;
+  void clear_scoped_allocator_opts();
+  static const int kScopedAllocatorOptsFieldNumber = 16;
+  const ::tensorflow::ScopedAllocatorOptions& scoped_allocator_opts() const;
+  ::tensorflow::ScopedAllocatorOptions* release_scoped_allocator_opts();
+  ::tensorflow::ScopedAllocatorOptions* mutable_scoped_allocator_opts();
+  void set_allocated_scoped_allocator_opts(::tensorflow::ScopedAllocatorOptions* scoped_allocator_opts);
+  void unsafe_arena_set_allocated_scoped_allocator_opts(
+      ::tensorflow::ScopedAllocatorOptions* scoped_allocator_opts);
+  ::tensorflow::ScopedAllocatorOptions* unsafe_arena_release_scoped_allocator_opts();
+
+  // .tensorflow.RewriterConfig.Toggle layout_optimizer = 1;
+  void clear_layout_optimizer();
+  static const int kLayoutOptimizerFieldNumber = 1;
+  ::tensorflow::RewriterConfig_Toggle layout_optimizer() const;
+  void set_layout_optimizer(::tensorflow::RewriterConfig_Toggle value);
+
+  // bool disable_model_pruning = 2;
+  void clear_disable_model_pruning();
+  static const int kDisableModelPruningFieldNumber = 2;
+  bool disable_model_pruning() const;
+  void set_disable_model_pruning(bool value);
+
+  // .tensorflow.RewriterConfig.Toggle constant_folding = 3;
+  void clear_constant_folding();
+  static const int kConstantFoldingFieldNumber = 3;
+  ::tensorflow::RewriterConfig_Toggle constant_folding() const;
+  void set_constant_folding(::tensorflow::RewriterConfig_Toggle value);
+
+  // .tensorflow.RewriterConfig.MemOptType memory_optimization = 4;
+  void clear_memory_optimization();
+  static const int kMemoryOptimizationFieldNumber = 4;
+  ::tensorflow::RewriterConfig_MemOptType memory_optimization() const;
+  void set_memory_optimization(::tensorflow::RewriterConfig_MemOptType value);
+
+  // .tensorflow.RewriterConfig.Toggle arithmetic_optimization = 7;
+  void clear_arithmetic_optimization();
+  static const int kArithmeticOptimizationFieldNumber = 7;
+  ::tensorflow::RewriterConfig_Toggle arithmetic_optimization() const;
+  void set_arithmetic_optimization(::tensorflow::RewriterConfig_Toggle value);
+
+  // .tensorflow.RewriterConfig.Toggle dependency_optimization = 8;
+  void clear_dependency_optimization();
+  static const int kDependencyOptimizationFieldNumber = 8;
+  ::tensorflow::RewriterConfig_Toggle dependency_optimization() const;
+  void set_dependency_optimization(::tensorflow::RewriterConfig_Toggle value);
+
+  // .tensorflow.RewriterConfig.Toggle loop_optimization = 9;
+  void clear_loop_optimization();
+  static const int kLoopOptimizationFieldNumber = 9;
+  ::tensorflow::RewriterConfig_Toggle loop_optimization() const;
+  void set_loop_optimization(::tensorflow::RewriterConfig_Toggle value);
+
+  // .tensorflow.RewriterConfig.Toggle function_optimization = 10;
+  void clear_function_optimization();
+  static const int kFunctionOptimizationFieldNumber = 10;
+  ::tensorflow::RewriterConfig_Toggle function_optimization() const;
+  void set_function_optimization(::tensorflow::RewriterConfig_Toggle value);
+
+  // .tensorflow.RewriterConfig.Toggle debug_stripper = 11;
+  void clear_debug_stripper();
+  static const int kDebugStripperFieldNumber = 11;
+  ::tensorflow::RewriterConfig_Toggle debug_stripper() const;
+  void set_debug_stripper(::tensorflow::RewriterConfig_Toggle value);
+
+  // .tensorflow.RewriterConfig.NumIterationsType meta_optimizer_iterations = 12;
+  void clear_meta_optimizer_iterations();
+  static const int kMetaOptimizerIterationsFieldNumber = 12;
+  ::tensorflow::RewriterConfig_NumIterationsType meta_optimizer_iterations() const;
+  void set_meta_optimizer_iterations(::tensorflow::RewriterConfig_NumIterationsType value);
+
+  // .tensorflow.RewriterConfig.Toggle shape_optimization = 13;
+  void clear_shape_optimization();
+  static const int kShapeOptimizationFieldNumber = 13;
+  ::tensorflow::RewriterConfig_Toggle shape_optimization() const;
+  void set_shape_optimization(::tensorflow::RewriterConfig_Toggle value);
+
+  // .tensorflow.RewriterConfig.Toggle remapping = 14;
+  void clear_remapping();
+  static const int kRemappingFieldNumber = 14;
+  ::tensorflow::RewriterConfig_Toggle remapping() const;
+  void set_remapping(::tensorflow::RewriterConfig_Toggle value);
+
+  // .tensorflow.RewriterConfig.Toggle scoped_allocator_optimization = 15;
+  void clear_scoped_allocator_optimization();
+  static const int kScopedAllocatorOptimizationFieldNumber = 15;
+  ::tensorflow::RewriterConfig_Toggle scoped_allocator_optimization() const;
+  void set_scoped_allocator_optimization(::tensorflow::RewriterConfig_Toggle value);
+
+  // @@protoc_insertion_point(class_scope:tensorflow.RewriterConfig)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  ::google::protobuf::RepeatedPtrField<::std::string> optimizers_;
+  ::google::protobuf::RepeatedPtrField< ::tensorflow::RewriterConfig_CustomGraphOptimizer > custom_optimizers_;
+  ::google::protobuf::internal::ArenaStringPtr memory_optimizer_target_node_name_scope_;
+  ::tensorflow::AutoParallelOptions* auto_parallel_;
+  ::tensorflow::ScopedAllocatorOptions* scoped_allocator_opts_;
+  int layout_optimizer_;
+  bool disable_model_pruning_;
+  int constant_folding_;
+  int memory_optimization_;
+  int arithmetic_optimization_;
+  int dependency_optimization_;
+  int loop_optimization_;
+  int function_optimization_;
+  int debug_stripper_;
+  int meta_optimizer_iterations_;
+  int shape_optimization_;
+  int remapping_;
+  int scoped_allocator_optimization_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fprotobuf_2frewriter_5fconfig_2eproto;
+};
+// ===================================================================
+
+
+// ===================================================================
+
+#ifdef __GNUC__
+  #pragma GCC diagnostic push
+  #pragma GCC diagnostic ignored "-Wstrict-aliasing"
+#endif  // __GNUC__
+// AutoParallelOptions
+
+// bool enable = 1;
+inline void AutoParallelOptions::clear_enable() {
+  enable_ = false;
+}
+inline bool AutoParallelOptions::enable() const {
+  // @@protoc_insertion_point(field_get:tensorflow.AutoParallelOptions.enable)
+  return enable_;
+}
+inline void AutoParallelOptions::set_enable(bool value) {
+  
+  enable_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.AutoParallelOptions.enable)
+}
+
+// int32 num_replicas = 2;
+inline void AutoParallelOptions::clear_num_replicas() {
+  num_replicas_ = 0;
+}
+inline ::google::protobuf::int32 AutoParallelOptions::num_replicas() const {
+  // @@protoc_insertion_point(field_get:tensorflow.AutoParallelOptions.num_replicas)
+  return num_replicas_;
+}
+inline void AutoParallelOptions::set_num_replicas(::google::protobuf::int32 value) {
+  
+  num_replicas_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.AutoParallelOptions.num_replicas)
+}
+
+// -------------------------------------------------------------------
+
+// ScopedAllocatorOptions
+
+// repeated string enable_op = 1;
+inline int ScopedAllocatorOptions::enable_op_size() const {
+  return enable_op_.size();
+}
+inline void ScopedAllocatorOptions::clear_enable_op() {
+  enable_op_.Clear();
+}
+inline const ::std::string& ScopedAllocatorOptions::enable_op(int index) const {
+  // @@protoc_insertion_point(field_get:tensorflow.ScopedAllocatorOptions.enable_op)
+  return enable_op_.Get(index);
+}
+inline ::std::string* ScopedAllocatorOptions::mutable_enable_op(int index) {
+  // @@protoc_insertion_point(field_mutable:tensorflow.ScopedAllocatorOptions.enable_op)
+  return enable_op_.Mutable(index);
+}
+inline void ScopedAllocatorOptions::set_enable_op(int index, const ::std::string& value) {
+  // @@protoc_insertion_point(field_set:tensorflow.ScopedAllocatorOptions.enable_op)
+  enable_op_.Mutable(index)->assign(value);
+}
+#if LANG_CXX11
+inline void ScopedAllocatorOptions::set_enable_op(int index, ::std::string&& value) {
+  // @@protoc_insertion_point(field_set:tensorflow.ScopedAllocatorOptions.enable_op)
+  enable_op_.Mutable(index)->assign(std::move(value));
+}
+#endif
+inline void ScopedAllocatorOptions::set_enable_op(int index, const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  enable_op_.Mutable(index)->assign(value);
+  // @@protoc_insertion_point(field_set_char:tensorflow.ScopedAllocatorOptions.enable_op)
+}
+inline void ScopedAllocatorOptions::set_enable_op(int index, const char* value, size_t size) {
+  enable_op_.Mutable(index)->assign(
+    reinterpret_cast<const char*>(value), size);
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.ScopedAllocatorOptions.enable_op)
+}
+inline ::std::string* ScopedAllocatorOptions::add_enable_op() {
+  // @@protoc_insertion_point(field_add_mutable:tensorflow.ScopedAllocatorOptions.enable_op)
+  return enable_op_.Add();
+}
+inline void ScopedAllocatorOptions::add_enable_op(const ::std::string& value) {
+  enable_op_.Add()->assign(value);
+  // @@protoc_insertion_point(field_add:tensorflow.ScopedAllocatorOptions.enable_op)
+}
+#if LANG_CXX11
+inline void ScopedAllocatorOptions::add_enable_op(::std::string&& value) {
+  enable_op_.Add(std::move(value));
+  // @@protoc_insertion_point(field_add:tensorflow.ScopedAllocatorOptions.enable_op)
+}
+#endif
+inline void ScopedAllocatorOptions::add_enable_op(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  enable_op_.Add()->assign(value);
+  // @@protoc_insertion_point(field_add_char:tensorflow.ScopedAllocatorOptions.enable_op)
+}
+inline void ScopedAllocatorOptions::add_enable_op(const char* value, size_t size) {
+  enable_op_.Add()->assign(reinterpret_cast<const char*>(value), size);
+  // @@protoc_insertion_point(field_add_pointer:tensorflow.ScopedAllocatorOptions.enable_op)
+}
+inline const ::google::protobuf::RepeatedPtrField<::std::string>&
+ScopedAllocatorOptions::enable_op() const {
+  // @@protoc_insertion_point(field_list:tensorflow.ScopedAllocatorOptions.enable_op)
+  return enable_op_;
+}
+inline ::google::protobuf::RepeatedPtrField<::std::string>*
+ScopedAllocatorOptions::mutable_enable_op() {
+  // @@protoc_insertion_point(field_mutable_list:tensorflow.ScopedAllocatorOptions.enable_op)
+  return &enable_op_;
+}
+
+// -------------------------------------------------------------------
+
+// -------------------------------------------------------------------
+
+// RewriterConfig_CustomGraphOptimizer
+
+// string name = 1;
+inline void RewriterConfig_CustomGraphOptimizer::clear_name() {
+  name_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline const ::std::string& RewriterConfig_CustomGraphOptimizer::name() const {
+  // @@protoc_insertion_point(field_get:tensorflow.RewriterConfig.CustomGraphOptimizer.name)
+  return name_.Get();
+}
+inline void RewriterConfig_CustomGraphOptimizer::set_name(const ::std::string& value) {
+  
+  name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set:tensorflow.RewriterConfig.CustomGraphOptimizer.name)
+}
+#if LANG_CXX11
+inline void RewriterConfig_CustomGraphOptimizer::set_name(::std::string&& value) {
+  
+  name_.Set(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.RewriterConfig.CustomGraphOptimizer.name)
+}
+#endif
+inline void RewriterConfig_CustomGraphOptimizer::set_name(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
+              GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_char:tensorflow.RewriterConfig.CustomGraphOptimizer.name)
+}
+inline void RewriterConfig_CustomGraphOptimizer::set_name(const char* value,
+    size_t size) {
+  
+  name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
+      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.RewriterConfig.CustomGraphOptimizer.name)
+}
+inline ::std::string* RewriterConfig_CustomGraphOptimizer::mutable_name() {
+  
+  // @@protoc_insertion_point(field_mutable:tensorflow.RewriterConfig.CustomGraphOptimizer.name)
+  return name_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline ::std::string* RewriterConfig_CustomGraphOptimizer::release_name() {
+  // @@protoc_insertion_point(field_release:tensorflow.RewriterConfig.CustomGraphOptimizer.name)
+  
+  return name_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline void RewriterConfig_CustomGraphOptimizer::set_allocated_name(::std::string* name) {
+  if (name != NULL) {
+    
+  } else {
+    
+  }
+  name_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), name,
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.RewriterConfig.CustomGraphOptimizer.name)
+}
+inline ::std::string* RewriterConfig_CustomGraphOptimizer::unsafe_arena_release_name() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.RewriterConfig.CustomGraphOptimizer.name)
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  
+  return name_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      GetArenaNoVirtual());
+}
+inline void RewriterConfig_CustomGraphOptimizer::unsafe_arena_set_allocated_name(
+    ::std::string* name) {
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (name != NULL) {
+    
+  } else {
+    
+  }
+  name_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      name, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.RewriterConfig.CustomGraphOptimizer.name)
+}
+
+// map<string, .tensorflow.AttrValue> parameter_map = 2;
+inline int RewriterConfig_CustomGraphOptimizer::parameter_map_size() const {
+  return parameter_map_.size();
+}
+inline const ::google::protobuf::Map< ::std::string, ::tensorflow::AttrValue >&
+RewriterConfig_CustomGraphOptimizer::parameter_map() const {
+  // @@protoc_insertion_point(field_map:tensorflow.RewriterConfig.CustomGraphOptimizer.parameter_map)
+  return parameter_map_.GetMap();
+}
+inline ::google::protobuf::Map< ::std::string, ::tensorflow::AttrValue >*
+RewriterConfig_CustomGraphOptimizer::mutable_parameter_map() {
+  // @@protoc_insertion_point(field_mutable_map:tensorflow.RewriterConfig.CustomGraphOptimizer.parameter_map)
+  return parameter_map_.MutableMap();
+}
+
+// -------------------------------------------------------------------
+
+// RewriterConfig
+
+// .tensorflow.RewriterConfig.Toggle layout_optimizer = 1;
+inline void RewriterConfig::clear_layout_optimizer() {
+  layout_optimizer_ = 0;
+}
+inline ::tensorflow::RewriterConfig_Toggle RewriterConfig::layout_optimizer() const {
+  // @@protoc_insertion_point(field_get:tensorflow.RewriterConfig.layout_optimizer)
+  return static_cast< ::tensorflow::RewriterConfig_Toggle >(layout_optimizer_);
+}
+inline void RewriterConfig::set_layout_optimizer(::tensorflow::RewriterConfig_Toggle value) {
+  
+  layout_optimizer_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.RewriterConfig.layout_optimizer)
+}
+
+// .tensorflow.RewriterConfig.Toggle constant_folding = 3;
+inline void RewriterConfig::clear_constant_folding() {
+  constant_folding_ = 0;
+}
+inline ::tensorflow::RewriterConfig_Toggle RewriterConfig::constant_folding() const {
+  // @@protoc_insertion_point(field_get:tensorflow.RewriterConfig.constant_folding)
+  return static_cast< ::tensorflow::RewriterConfig_Toggle >(constant_folding_);
+}
+inline void RewriterConfig::set_constant_folding(::tensorflow::RewriterConfig_Toggle value) {
+  
+  constant_folding_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.RewriterConfig.constant_folding)
+}
+
+// .tensorflow.RewriterConfig.Toggle shape_optimization = 13;
+inline void RewriterConfig::clear_shape_optimization() {
+  shape_optimization_ = 0;
+}
+inline ::tensorflow::RewriterConfig_Toggle RewriterConfig::shape_optimization() const {
+  // @@protoc_insertion_point(field_get:tensorflow.RewriterConfig.shape_optimization)
+  return static_cast< ::tensorflow::RewriterConfig_Toggle >(shape_optimization_);
+}
+inline void RewriterConfig::set_shape_optimization(::tensorflow::RewriterConfig_Toggle value) {
+  
+  shape_optimization_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.RewriterConfig.shape_optimization)
+}
+
+// .tensorflow.RewriterConfig.Toggle remapping = 14;
+inline void RewriterConfig::clear_remapping() {
+  remapping_ = 0;
+}
+inline ::tensorflow::RewriterConfig_Toggle RewriterConfig::remapping() const {
+  // @@protoc_insertion_point(field_get:tensorflow.RewriterConfig.remapping)
+  return static_cast< ::tensorflow::RewriterConfig_Toggle >(remapping_);
+}
+inline void RewriterConfig::set_remapping(::tensorflow::RewriterConfig_Toggle value) {
+  
+  remapping_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.RewriterConfig.remapping)
+}
+
+// .tensorflow.RewriterConfig.Toggle arithmetic_optimization = 7;
+inline void RewriterConfig::clear_arithmetic_optimization() {
+  arithmetic_optimization_ = 0;
+}
+inline ::tensorflow::RewriterConfig_Toggle RewriterConfig::arithmetic_optimization() const {
+  // @@protoc_insertion_point(field_get:tensorflow.RewriterConfig.arithmetic_optimization)
+  return static_cast< ::tensorflow::RewriterConfig_Toggle >(arithmetic_optimization_);
+}
+inline void RewriterConfig::set_arithmetic_optimization(::tensorflow::RewriterConfig_Toggle value) {
+  
+  arithmetic_optimization_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.RewriterConfig.arithmetic_optimization)
+}
+
+// .tensorflow.RewriterConfig.Toggle dependency_optimization = 8;
+inline void RewriterConfig::clear_dependency_optimization() {
+  dependency_optimization_ = 0;
+}
+inline ::tensorflow::RewriterConfig_Toggle RewriterConfig::dependency_optimization() const {
+  // @@protoc_insertion_point(field_get:tensorflow.RewriterConfig.dependency_optimization)
+  return static_cast< ::tensorflow::RewriterConfig_Toggle >(dependency_optimization_);
+}
+inline void RewriterConfig::set_dependency_optimization(::tensorflow::RewriterConfig_Toggle value) {
+  
+  dependency_optimization_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.RewriterConfig.dependency_optimization)
+}
+
+// .tensorflow.RewriterConfig.Toggle loop_optimization = 9;
+inline void RewriterConfig::clear_loop_optimization() {
+  loop_optimization_ = 0;
+}
+inline ::tensorflow::RewriterConfig_Toggle RewriterConfig::loop_optimization() const {
+  // @@protoc_insertion_point(field_get:tensorflow.RewriterConfig.loop_optimization)
+  return static_cast< ::tensorflow::RewriterConfig_Toggle >(loop_optimization_);
+}
+inline void RewriterConfig::set_loop_optimization(::tensorflow::RewriterConfig_Toggle value) {
+  
+  loop_optimization_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.RewriterConfig.loop_optimization)
+}
+
+// .tensorflow.RewriterConfig.Toggle function_optimization = 10;
+inline void RewriterConfig::clear_function_optimization() {
+  function_optimization_ = 0;
+}
+inline ::tensorflow::RewriterConfig_Toggle RewriterConfig::function_optimization() const {
+  // @@protoc_insertion_point(field_get:tensorflow.RewriterConfig.function_optimization)
+  return static_cast< ::tensorflow::RewriterConfig_Toggle >(function_optimization_);
+}
+inline void RewriterConfig::set_function_optimization(::tensorflow::RewriterConfig_Toggle value) {
+  
+  function_optimization_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.RewriterConfig.function_optimization)
+}
+
+// .tensorflow.RewriterConfig.Toggle debug_stripper = 11;
+inline void RewriterConfig::clear_debug_stripper() {
+  debug_stripper_ = 0;
+}
+inline ::tensorflow::RewriterConfig_Toggle RewriterConfig::debug_stripper() const {
+  // @@protoc_insertion_point(field_get:tensorflow.RewriterConfig.debug_stripper)
+  return static_cast< ::tensorflow::RewriterConfig_Toggle >(debug_stripper_);
+}
+inline void RewriterConfig::set_debug_stripper(::tensorflow::RewriterConfig_Toggle value) {
+  
+  debug_stripper_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.RewriterConfig.debug_stripper)
+}
+
+// bool disable_model_pruning = 2;
+inline void RewriterConfig::clear_disable_model_pruning() {
+  disable_model_pruning_ = false;
+}
+inline bool RewriterConfig::disable_model_pruning() const {
+  // @@protoc_insertion_point(field_get:tensorflow.RewriterConfig.disable_model_pruning)
+  return disable_model_pruning_;
+}
+inline void RewriterConfig::set_disable_model_pruning(bool value) {
+  
+  disable_model_pruning_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.RewriterConfig.disable_model_pruning)
+}
+
+// .tensorflow.RewriterConfig.Toggle scoped_allocator_optimization = 15;
+inline void RewriterConfig::clear_scoped_allocator_optimization() {
+  scoped_allocator_optimization_ = 0;
+}
+inline ::tensorflow::RewriterConfig_Toggle RewriterConfig::scoped_allocator_optimization() const {
+  // @@protoc_insertion_point(field_get:tensorflow.RewriterConfig.scoped_allocator_optimization)
+  return static_cast< ::tensorflow::RewriterConfig_Toggle >(scoped_allocator_optimization_);
+}
+inline void RewriterConfig::set_scoped_allocator_optimization(::tensorflow::RewriterConfig_Toggle value) {
+  
+  scoped_allocator_optimization_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.RewriterConfig.scoped_allocator_optimization)
+}
+
+// .tensorflow.RewriterConfig.NumIterationsType meta_optimizer_iterations = 12;
+inline void RewriterConfig::clear_meta_optimizer_iterations() {
+  meta_optimizer_iterations_ = 0;
+}
+inline ::tensorflow::RewriterConfig_NumIterationsType RewriterConfig::meta_optimizer_iterations() const {
+  // @@protoc_insertion_point(field_get:tensorflow.RewriterConfig.meta_optimizer_iterations)
+  return static_cast< ::tensorflow::RewriterConfig_NumIterationsType >(meta_optimizer_iterations_);
+}
+inline void RewriterConfig::set_meta_optimizer_iterations(::tensorflow::RewriterConfig_NumIterationsType value) {
+  
+  meta_optimizer_iterations_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.RewriterConfig.meta_optimizer_iterations)
+}
+
+// .tensorflow.RewriterConfig.MemOptType memory_optimization = 4;
+inline void RewriterConfig::clear_memory_optimization() {
+  memory_optimization_ = 0;
+}
+inline ::tensorflow::RewriterConfig_MemOptType RewriterConfig::memory_optimization() const {
+  // @@protoc_insertion_point(field_get:tensorflow.RewriterConfig.memory_optimization)
+  return static_cast< ::tensorflow::RewriterConfig_MemOptType >(memory_optimization_);
+}
+inline void RewriterConfig::set_memory_optimization(::tensorflow::RewriterConfig_MemOptType value) {
+  
+  memory_optimization_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.RewriterConfig.memory_optimization)
+}
+
+// string memory_optimizer_target_node_name_scope = 6;
+inline void RewriterConfig::clear_memory_optimizer_target_node_name_scope() {
+  memory_optimizer_target_node_name_scope_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline const ::std::string& RewriterConfig::memory_optimizer_target_node_name_scope() const {
+  // @@protoc_insertion_point(field_get:tensorflow.RewriterConfig.memory_optimizer_target_node_name_scope)
+  return memory_optimizer_target_node_name_scope_.Get();
+}
+inline void RewriterConfig::set_memory_optimizer_target_node_name_scope(const ::std::string& value) {
+  
+  memory_optimizer_target_node_name_scope_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set:tensorflow.RewriterConfig.memory_optimizer_target_node_name_scope)
+}
+#if LANG_CXX11
+inline void RewriterConfig::set_memory_optimizer_target_node_name_scope(::std::string&& value) {
+  
+  memory_optimizer_target_node_name_scope_.Set(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.RewriterConfig.memory_optimizer_target_node_name_scope)
+}
+#endif
+inline void RewriterConfig::set_memory_optimizer_target_node_name_scope(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  memory_optimizer_target_node_name_scope_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
+              GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_char:tensorflow.RewriterConfig.memory_optimizer_target_node_name_scope)
+}
+inline void RewriterConfig::set_memory_optimizer_target_node_name_scope(const char* value,
+    size_t size) {
+  
+  memory_optimizer_target_node_name_scope_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
+      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.RewriterConfig.memory_optimizer_target_node_name_scope)
+}
+inline ::std::string* RewriterConfig::mutable_memory_optimizer_target_node_name_scope() {
+  
+  // @@protoc_insertion_point(field_mutable:tensorflow.RewriterConfig.memory_optimizer_target_node_name_scope)
+  return memory_optimizer_target_node_name_scope_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline ::std::string* RewriterConfig::release_memory_optimizer_target_node_name_scope() {
+  // @@protoc_insertion_point(field_release:tensorflow.RewriterConfig.memory_optimizer_target_node_name_scope)
+  
+  return memory_optimizer_target_node_name_scope_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline void RewriterConfig::set_allocated_memory_optimizer_target_node_name_scope(::std::string* memory_optimizer_target_node_name_scope) {
+  if (memory_optimizer_target_node_name_scope != NULL) {
+    
+  } else {
+    
+  }
+  memory_optimizer_target_node_name_scope_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), memory_optimizer_target_node_name_scope,
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.RewriterConfig.memory_optimizer_target_node_name_scope)
+}
+inline ::std::string* RewriterConfig::unsafe_arena_release_memory_optimizer_target_node_name_scope() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.RewriterConfig.memory_optimizer_target_node_name_scope)
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  
+  return memory_optimizer_target_node_name_scope_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      GetArenaNoVirtual());
+}
+inline void RewriterConfig::unsafe_arena_set_allocated_memory_optimizer_target_node_name_scope(
+    ::std::string* memory_optimizer_target_node_name_scope) {
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (memory_optimizer_target_node_name_scope != NULL) {
+    
+  } else {
+    
+  }
+  memory_optimizer_target_node_name_scope_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      memory_optimizer_target_node_name_scope, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.RewriterConfig.memory_optimizer_target_node_name_scope)
+}
+
+// .tensorflow.AutoParallelOptions auto_parallel = 5;
+inline bool RewriterConfig::has_auto_parallel() const {
+  return this != internal_default_instance() && auto_parallel_ != NULL;
+}
+inline void RewriterConfig::clear_auto_parallel() {
+  if (GetArenaNoVirtual() == NULL && auto_parallel_ != NULL) {
+    delete auto_parallel_;
+  }
+  auto_parallel_ = NULL;
+}
+inline const ::tensorflow::AutoParallelOptions& RewriterConfig::auto_parallel() const {
+  const ::tensorflow::AutoParallelOptions* p = auto_parallel_;
+  // @@protoc_insertion_point(field_get:tensorflow.RewriterConfig.auto_parallel)
+  return p != NULL ? *p : *reinterpret_cast<const ::tensorflow::AutoParallelOptions*>(
+      &::tensorflow::_AutoParallelOptions_default_instance_);
+}
+inline ::tensorflow::AutoParallelOptions* RewriterConfig::release_auto_parallel() {
+  // @@protoc_insertion_point(field_release:tensorflow.RewriterConfig.auto_parallel)
+  
+  ::tensorflow::AutoParallelOptions* temp = auto_parallel_;
+  if (GetArenaNoVirtual() != NULL) {
+    temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
+  }
+  auto_parallel_ = NULL;
+  return temp;
+}
+inline ::tensorflow::AutoParallelOptions* RewriterConfig::unsafe_arena_release_auto_parallel() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.RewriterConfig.auto_parallel)
+  
+  ::tensorflow::AutoParallelOptions* temp = auto_parallel_;
+  auto_parallel_ = NULL;
+  return temp;
+}
+inline ::tensorflow::AutoParallelOptions* RewriterConfig::mutable_auto_parallel() {
+  
+  if (auto_parallel_ == NULL) {
+    auto* p = CreateMaybeMessage<::tensorflow::AutoParallelOptions>(GetArenaNoVirtual());
+    auto_parallel_ = p;
+  }
+  // @@protoc_insertion_point(field_mutable:tensorflow.RewriterConfig.auto_parallel)
+  return auto_parallel_;
+}
+inline void RewriterConfig::set_allocated_auto_parallel(::tensorflow::AutoParallelOptions* auto_parallel) {
+  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
+  if (message_arena == NULL) {
+    delete auto_parallel_;
+  }
+  if (auto_parallel) {
+    ::google::protobuf::Arena* submessage_arena =
+      ::google::protobuf::Arena::GetArena(auto_parallel);
+    if (message_arena != submessage_arena) {
+      auto_parallel = ::google::protobuf::internal::GetOwnedMessage(
+          message_arena, auto_parallel, submessage_arena);
+    }
+    
+  } else {
+    
+  }
+  auto_parallel_ = auto_parallel;
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.RewriterConfig.auto_parallel)
+}
+
+// .tensorflow.ScopedAllocatorOptions scoped_allocator_opts = 16;
+inline bool RewriterConfig::has_scoped_allocator_opts() const {
+  return this != internal_default_instance() && scoped_allocator_opts_ != NULL;
+}
+inline void RewriterConfig::clear_scoped_allocator_opts() {
+  if (GetArenaNoVirtual() == NULL && scoped_allocator_opts_ != NULL) {
+    delete scoped_allocator_opts_;
+  }
+  scoped_allocator_opts_ = NULL;
+}
+inline const ::tensorflow::ScopedAllocatorOptions& RewriterConfig::scoped_allocator_opts() const {
+  const ::tensorflow::ScopedAllocatorOptions* p = scoped_allocator_opts_;
+  // @@protoc_insertion_point(field_get:tensorflow.RewriterConfig.scoped_allocator_opts)
+  return p != NULL ? *p : *reinterpret_cast<const ::tensorflow::ScopedAllocatorOptions*>(
+      &::tensorflow::_ScopedAllocatorOptions_default_instance_);
+}
+inline ::tensorflow::ScopedAllocatorOptions* RewriterConfig::release_scoped_allocator_opts() {
+  // @@protoc_insertion_point(field_release:tensorflow.RewriterConfig.scoped_allocator_opts)
+  
+  ::tensorflow::ScopedAllocatorOptions* temp = scoped_allocator_opts_;
+  if (GetArenaNoVirtual() != NULL) {
+    temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
+  }
+  scoped_allocator_opts_ = NULL;
+  return temp;
+}
+inline ::tensorflow::ScopedAllocatorOptions* RewriterConfig::unsafe_arena_release_scoped_allocator_opts() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.RewriterConfig.scoped_allocator_opts)
+  
+  ::tensorflow::ScopedAllocatorOptions* temp = scoped_allocator_opts_;
+  scoped_allocator_opts_ = NULL;
+  return temp;
+}
+inline ::tensorflow::ScopedAllocatorOptions* RewriterConfig::mutable_scoped_allocator_opts() {
+  
+  if (scoped_allocator_opts_ == NULL) {
+    auto* p = CreateMaybeMessage<::tensorflow::ScopedAllocatorOptions>(GetArenaNoVirtual());
+    scoped_allocator_opts_ = p;
+  }
+  // @@protoc_insertion_point(field_mutable:tensorflow.RewriterConfig.scoped_allocator_opts)
+  return scoped_allocator_opts_;
+}
+inline void RewriterConfig::set_allocated_scoped_allocator_opts(::tensorflow::ScopedAllocatorOptions* scoped_allocator_opts) {
+  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
+  if (message_arena == NULL) {
+    delete scoped_allocator_opts_;
+  }
+  if (scoped_allocator_opts) {
+    ::google::protobuf::Arena* submessage_arena =
+      ::google::protobuf::Arena::GetArena(scoped_allocator_opts);
+    if (message_arena != submessage_arena) {
+      scoped_allocator_opts = ::google::protobuf::internal::GetOwnedMessage(
+          message_arena, scoped_allocator_opts, submessage_arena);
+    }
+    
+  } else {
+    
+  }
+  scoped_allocator_opts_ = scoped_allocator_opts;
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.RewriterConfig.scoped_allocator_opts)
+}
+
+// repeated string optimizers = 100;
+inline int RewriterConfig::optimizers_size() const {
+  return optimizers_.size();
+}
+inline void RewriterConfig::clear_optimizers() {
+  optimizers_.Clear();
+}
+inline const ::std::string& RewriterConfig::optimizers(int index) const {
+  // @@protoc_insertion_point(field_get:tensorflow.RewriterConfig.optimizers)
+  return optimizers_.Get(index);
+}
+inline ::std::string* RewriterConfig::mutable_optimizers(int index) {
+  // @@protoc_insertion_point(field_mutable:tensorflow.RewriterConfig.optimizers)
+  return optimizers_.Mutable(index);
+}
+inline void RewriterConfig::set_optimizers(int index, const ::std::string& value) {
+  // @@protoc_insertion_point(field_set:tensorflow.RewriterConfig.optimizers)
+  optimizers_.Mutable(index)->assign(value);
+}
+#if LANG_CXX11
+inline void RewriterConfig::set_optimizers(int index, ::std::string&& value) {
+  // @@protoc_insertion_point(field_set:tensorflow.RewriterConfig.optimizers)
+  optimizers_.Mutable(index)->assign(std::move(value));
+}
+#endif
+inline void RewriterConfig::set_optimizers(int index, const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  optimizers_.Mutable(index)->assign(value);
+  // @@protoc_insertion_point(field_set_char:tensorflow.RewriterConfig.optimizers)
+}
+inline void RewriterConfig::set_optimizers(int index, const char* value, size_t size) {
+  optimizers_.Mutable(index)->assign(
+    reinterpret_cast<const char*>(value), size);
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.RewriterConfig.optimizers)
+}
+inline ::std::string* RewriterConfig::add_optimizers() {
+  // @@protoc_insertion_point(field_add_mutable:tensorflow.RewriterConfig.optimizers)
+  return optimizers_.Add();
+}
+inline void RewriterConfig::add_optimizers(const ::std::string& value) {
+  optimizers_.Add()->assign(value);
+  // @@protoc_insertion_point(field_add:tensorflow.RewriterConfig.optimizers)
+}
+#if LANG_CXX11
+inline void RewriterConfig::add_optimizers(::std::string&& value) {
+  optimizers_.Add(std::move(value));
+  // @@protoc_insertion_point(field_add:tensorflow.RewriterConfig.optimizers)
+}
+#endif
+inline void RewriterConfig::add_optimizers(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  optimizers_.Add()->assign(value);
+  // @@protoc_insertion_point(field_add_char:tensorflow.RewriterConfig.optimizers)
+}
+inline void RewriterConfig::add_optimizers(const char* value, size_t size) {
+  optimizers_.Add()->assign(reinterpret_cast<const char*>(value), size);
+  // @@protoc_insertion_point(field_add_pointer:tensorflow.RewriterConfig.optimizers)
+}
+inline const ::google::protobuf::RepeatedPtrField<::std::string>&
+RewriterConfig::optimizers() const {
+  // @@protoc_insertion_point(field_list:tensorflow.RewriterConfig.optimizers)
+  return optimizers_;
+}
+inline ::google::protobuf::RepeatedPtrField<::std::string>*
+RewriterConfig::mutable_optimizers() {
+  // @@protoc_insertion_point(field_mutable_list:tensorflow.RewriterConfig.optimizers)
+  return &optimizers_;
+}
+
+// repeated .tensorflow.RewriterConfig.CustomGraphOptimizer custom_optimizers = 200;
+inline int RewriterConfig::custom_optimizers_size() const {
+  return custom_optimizers_.size();
+}
+inline void RewriterConfig::clear_custom_optimizers() {
+  custom_optimizers_.Clear();
+}
+inline ::tensorflow::RewriterConfig_CustomGraphOptimizer* RewriterConfig::mutable_custom_optimizers(int index) {
+  // @@protoc_insertion_point(field_mutable:tensorflow.RewriterConfig.custom_optimizers)
+  return custom_optimizers_.Mutable(index);
+}
+inline ::google::protobuf::RepeatedPtrField< ::tensorflow::RewriterConfig_CustomGraphOptimizer >*
+RewriterConfig::mutable_custom_optimizers() {
+  // @@protoc_insertion_point(field_mutable_list:tensorflow.RewriterConfig.custom_optimizers)
+  return &custom_optimizers_;
+}
+inline const ::tensorflow::RewriterConfig_CustomGraphOptimizer& RewriterConfig::custom_optimizers(int index) const {
+  // @@protoc_insertion_point(field_get:tensorflow.RewriterConfig.custom_optimizers)
+  return custom_optimizers_.Get(index);
+}
+inline ::tensorflow::RewriterConfig_CustomGraphOptimizer* RewriterConfig::add_custom_optimizers() {
+  // @@protoc_insertion_point(field_add:tensorflow.RewriterConfig.custom_optimizers)
+  return custom_optimizers_.Add();
+}
+inline const ::google::protobuf::RepeatedPtrField< ::tensorflow::RewriterConfig_CustomGraphOptimizer >&
+RewriterConfig::custom_optimizers() const {
+  // @@protoc_insertion_point(field_list:tensorflow.RewriterConfig.custom_optimizers)
+  return custom_optimizers_;
+}
+
+#ifdef __GNUC__
+  #pragma GCC diagnostic pop
+#endif  // __GNUC__
+// -------------------------------------------------------------------
+
+// -------------------------------------------------------------------
+
+// -------------------------------------------------------------------
+
+// -------------------------------------------------------------------
+
+
+// @@protoc_insertion_point(namespace_scope)
+
+}  // namespace tensorflow
+
+namespace google {
+namespace protobuf {
+
+template <> struct is_proto_enum< ::tensorflow::RewriterConfig_Toggle> : ::std::true_type {};
+template <>
+inline const EnumDescriptor* GetEnumDescriptor< ::tensorflow::RewriterConfig_Toggle>() {
+  return ::tensorflow::RewriterConfig_Toggle_descriptor();
+}
+template <> struct is_proto_enum< ::tensorflow::RewriterConfig_NumIterationsType> : ::std::true_type {};
+template <>
+inline const EnumDescriptor* GetEnumDescriptor< ::tensorflow::RewriterConfig_NumIterationsType>() {
+  return ::tensorflow::RewriterConfig_NumIterationsType_descriptor();
+}
+template <> struct is_proto_enum< ::tensorflow::RewriterConfig_MemOptType> : ::std::true_type {};
+template <>
+inline const EnumDescriptor* GetEnumDescriptor< ::tensorflow::RewriterConfig_MemOptType>() {
+  return ::tensorflow::RewriterConfig_MemOptType_descriptor();
+}
+
+}  // namespace protobuf
+}  // namespace google
+
+// @@protoc_insertion_point(global_scope)
+
+#include <google/protobuf/port_undef.inc>
+#endif  // PROTOBUF_INCLUDED_tensorflow_2fcore_2fprotobuf_2frewriter_5fconfig_2eproto
diff --git a/tensorflow/core/protobuf/rewriter_config.proto b/tensorflow/core/protobuf/rewriter_config.proto
new file mode 100644 (file)
index 0000000..bbb25d6
--- /dev/null
@@ -0,0 +1,150 @@
+syntax = "proto3";
+
+package tensorflow;
+option cc_enable_arenas = true;
+option java_outer_classname = "RewriterConfigProtos";
+option java_multiple_files = true;
+option java_package = "org.tensorflow.framework";
+option go_package = "github.com/tensorflow/tensorflow/tensorflow/go/core/protobuf";
+
+import "tensorflow/core/framework/attr_value.proto";
+
+message AutoParallelOptions {
+  bool enable = 1;
+  int32 num_replicas = 2;
+}
+
+message ScopedAllocatorOptions {
+  // If present, only perform optimization for these ops.
+  repeated string enable_op = 1;
+}
+
+message RewriterConfig {
+  // Graph rewriting is experimental and subject to change, not covered by any
+  // API stability guarantees.
+
+  // Configuration options for the meta-optimizer. Unless otherwise noted, these
+  // configuration options do not apply to explicitly triggered optimization
+  // passes in the optimizers field.
+
+  enum Toggle {
+    DEFAULT = 0;
+    ON = 1;
+    OFF = 2;
+    // Enable some aggressive optimizations that use assumptions that TF graphs
+    // may break. For example, assume the shape of a placeholder matches its
+    // actual feed.
+    AGGRESSIVE = 3;
+  }
+
+  // Enum controlling the number of times to run optimizers. The default is to
+  // run them once.
+  enum NumIterationsType {
+    DEFAULT_NUM_ITERS = 0;
+    ONE = 1;
+    TWO = 2;
+  }
+
+  // Optimize tensor layouts (default is ON)
+  // e.g. This will try to use NCHW layout on GPU which is faster.
+  Toggle layout_optimizer = 1;
+  // Fold constants (default is ON)
+  // Statically infer the value of tensors when possible, and materialize the
+  // result using constants.
+  Toggle constant_folding = 3;
+  // Shape optimizations (default is ON)
+  // Simplify computations made on shapes.
+  Toggle shape_optimization = 13;
+  // Remapping (default is ON)
+  // Remap subgraphs onto more efficient implementations.
+  Toggle remapping = 14;
+  // Arithmetic optimizations (default is ON)
+  // e.g. Simplify arithmetic ops; merge ops with same value (like constants).
+  Toggle arithmetic_optimization = 7;
+  // Control dependency optimizations (default is ON).
+  // Remove redundant control dependencies, which may enable other optimization.
+  Toggle dependency_optimization = 8;
+  // Loop optimizations (default is ON).
+  Toggle loop_optimization = 9;
+  // Function optimizations (default is ON).
+  Toggle function_optimization = 10;
+  // Strips debug-related nodes from the graph (off by default).
+  Toggle debug_stripper = 11;
+  // If true, don't remove unnecessary ops from the graph
+  bool disable_model_pruning = 2;
+  // Try to allocate some independent Op outputs contiguously in order to
+  // merge or eliminate downstream Ops (off by default).
+  Toggle scoped_allocator_optimization = 15;
+
+  // Controls how many times we run the optimizers in meta optimizer (default
+  // is once).
+  NumIterationsType meta_optimizer_iterations = 12;
+
+  enum MemOptType {
+    // The default setting (SCHEDULING and SWAPPING HEURISTICS only)
+    DEFAULT_MEM_OPT = 0;
+    // Disabled in the meta-optimizer.
+    NO_MEM_OPT = 1;
+    // Driven by manual op-level annotations.
+    MANUAL = 2;
+
+    // Driven by heuristics. The behavior of these heuristics is subject to
+    // change. Currently includes an experimental recomputation and swapping
+    // heuristics. Manual annotations are respected, but additional nodes are
+    // selected automatically.
+
+    // Swapping heuristic will move a tensor from the GPU to the CPU and move
+    // it back when needed to reduce peak memory usage.
+    SWAPPING_HEURISTICS = 4;
+    // Recomputation heuristics will recompute ops (such as Relu activation)
+    // during backprop instead of storing them, reducing peak memory usage.
+    RECOMPUTATION_HEURISTICS = 5;
+    // Scheduling will split big ops such as AddN and try to enforce a schedule
+    // of the new computations that decreases peak memory usage.
+    SCHEDULING_HEURISTICS = 6;
+    // Use any combination of swapping and recomputation heuristics.
+    HEURISTICS = 3;
+  }
+  // Configures memory optimization passes through the meta-optimizer. Has no
+  // effect on manually requested memory optimization passes in the optimizers
+  // field.
+  MemOptType memory_optimization = 4;
+  // A node name scope for node names which are valid outputs of recompuations.
+  // Inputs to nodes that match this scope may be recomputed (subject either to
+  // manual annotation of those input nodes or to manual annotation and
+  // heuristics depending on memory_optimization), but the nodes themselves will
+  // not be recomputed. This matches any sub-scopes as well, meaning the scope
+  // can appear not just as a top-level scope. For example, if the value is
+  // "gradients/", the default, it will match node name "gradients/foo",
+  // "foo/gradients/bar", but not "foo_gradients/"
+  string memory_optimizer_target_node_name_scope = 6;
+
+  // Configures AutoParallel optimization passes either through the
+  // meta-optimizer or when manually specified through the optimizers field.
+  AutoParallelOptions auto_parallel = 5;
+
+  ScopedAllocatorOptions scoped_allocator_opts = 16;
+
+  // If non-empty, will use this as an alternative way to specify a list of
+  // optimizations to turn on and the order of the optimizations (replacing the
+  // meta-optimizer).
+  //
+  // Of the RewriterConfig options, only the AutoParallel configuration options
+  // (the auto_parallel field) apply to manually requested optimization passes
+  // ("autoparallel"). Memory optimization passes ("memory") invoked here are
+  // not configurable (in contrast to memory optimization passes through the
+  // meta-optimizer) and act only on manual op annotations.
+  //
+  // Custom registered optimizers will be run after the base optimizers, in
+  // the order that they are specified.
+  repeated string optimizers = 100;
+
+  // Message to describe custom graph optimizer and its parameters
+  message CustomGraphOptimizer {
+    string name = 1;
+    map<string, AttrValue> parameter_map = 2;
+  }
+
+  // list of CustomGraphOptimizers to apply.
+  repeated CustomGraphOptimizer custom_optimizers = 200;
+}
diff --git a/tensorflow/core/protobuf/saved_model.pb.cc b/tensorflow/core/protobuf/saved_model.pb.cc
new file mode 100644 (file)
index 0000000..f2ba6a1
--- /dev/null
@@ -0,0 +1,477 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: tensorflow/core/protobuf/saved_model.proto
+
+#include "tensorflow/core/protobuf/saved_model.pb.h"
+
+#include <algorithm>
+
+#include <google/protobuf/stubs/common.h>
+#include <google/protobuf/io/coded_stream.h>
+#include <google/protobuf/extension_set.h>
+#include <google/protobuf/wire_format_lite_inl.h>
+#include <google/protobuf/descriptor.h>
+#include <google/protobuf/generated_message_reflection.h>
+#include <google/protobuf/reflection_ops.h>
+#include <google/protobuf/wire_format.h>
+// @@protoc_insertion_point(includes)
+#include <google/protobuf/port_def.inc>
+
+extern PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto ::google::protobuf::internal::SCCInfo<6> scc_info_MetaGraphDef_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto;
+namespace tensorflow {
+class SavedModelDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<SavedModel> _instance;
+} _SavedModel_default_instance_;
+}  // namespace tensorflow
+static void InitDefaultsSavedModel_tensorflow_2fcore_2fprotobuf_2fsaved_5fmodel_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_SavedModel_default_instance_;
+    new (ptr) ::tensorflow::SavedModel();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::SavedModel::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<1> scc_info_SavedModel_tensorflow_2fcore_2fprotobuf_2fsaved_5fmodel_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsSavedModel_tensorflow_2fcore_2fprotobuf_2fsaved_5fmodel_2eproto}, {
+      &scc_info_MetaGraphDef_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto.base,}};
+
+void InitDefaults_tensorflow_2fcore_2fprotobuf_2fsaved_5fmodel_2eproto() {
+  ::google::protobuf::internal::InitSCC(&scc_info_SavedModel_tensorflow_2fcore_2fprotobuf_2fsaved_5fmodel_2eproto.base);
+}
+
+::google::protobuf::Metadata file_level_metadata_tensorflow_2fcore_2fprotobuf_2fsaved_5fmodel_2eproto[1];
+constexpr ::google::protobuf::EnumDescriptor const** file_level_enum_descriptors_tensorflow_2fcore_2fprotobuf_2fsaved_5fmodel_2eproto = nullptr;
+constexpr ::google::protobuf::ServiceDescriptor const** file_level_service_descriptors_tensorflow_2fcore_2fprotobuf_2fsaved_5fmodel_2eproto = nullptr;
+
+const ::google::protobuf::uint32 TableStruct_tensorflow_2fcore_2fprotobuf_2fsaved_5fmodel_2eproto::offsets[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = {
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::SavedModel, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::SavedModel, saved_model_schema_version_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::SavedModel, meta_graphs_),
+};
+static const ::google::protobuf::internal::MigrationSchema schemas[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = {
+  { 0, -1, sizeof(::tensorflow::SavedModel)},
+};
+
+static ::google::protobuf::Message const * const file_default_instances[] = {
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_SavedModel_default_instance_),
+};
+
+::google::protobuf::internal::AssignDescriptorsTable assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2fsaved_5fmodel_2eproto = {
+  {}, AddDescriptors_tensorflow_2fcore_2fprotobuf_2fsaved_5fmodel_2eproto, "tensorflow/core/protobuf/saved_model.proto", schemas,
+  file_default_instances, TableStruct_tensorflow_2fcore_2fprotobuf_2fsaved_5fmodel_2eproto::offsets,
+  file_level_metadata_tensorflow_2fcore_2fprotobuf_2fsaved_5fmodel_2eproto, 1, file_level_enum_descriptors_tensorflow_2fcore_2fprotobuf_2fsaved_5fmodel_2eproto, file_level_service_descriptors_tensorflow_2fcore_2fprotobuf_2fsaved_5fmodel_2eproto,
+};
+
+::google::protobuf::internal::DescriptorTable descriptor_table_tensorflow_2fcore_2fprotobuf_2fsaved_5fmodel_2eproto = {
+  false, InitDefaults_tensorflow_2fcore_2fprotobuf_2fsaved_5fmodel_2eproto, 
+  "\n*tensorflow/core/protobuf/saved_model.p"
+  "roto\022\ntensorflow\032)tensorflow/core/protob"
+  "uf/meta_graph.proto\"_\n\nSavedModel\022\"\n\032sav"
+  "ed_model_schema_version\030\001 \001(\003\022-\n\013meta_gr"
+  "aphs\030\002 \003(\0132\030.tensorflow.MetaGraphDefBo\n\030"
+  "org.tensorflow.frameworkB\020SavedModelProt"
+  "osP\001Z<github.com/tensorflow/tensorflow/t"
+  "ensorflow/go/core/protobuf\370\001\001b\006proto3"
+,
+  "tensorflow/core/protobuf/saved_model.proto", &assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2fsaved_5fmodel_2eproto, 317,
+};
+
+void AddDescriptors_tensorflow_2fcore_2fprotobuf_2fsaved_5fmodel_2eproto() {
+  static constexpr ::google::protobuf::internal::InitFunc deps[1] =
+  {
+    ::AddDescriptors_tensorflow_2fcore_2fprotobuf_2fmeta_5fgraph_2eproto,
+  };
+ ::google::protobuf::internal::AddDescriptors(&descriptor_table_tensorflow_2fcore_2fprotobuf_2fsaved_5fmodel_2eproto, deps, 1);
+}
+
+// Force running AddDescriptors() at dynamic initialization time.
+static bool dynamic_init_dummy_tensorflow_2fcore_2fprotobuf_2fsaved_5fmodel_2eproto = []() { AddDescriptors_tensorflow_2fcore_2fprotobuf_2fsaved_5fmodel_2eproto(); return true; }();
+namespace tensorflow {
+
+// ===================================================================
+
+void SavedModel::InitAsDefaultInstance() {
+}
+class SavedModel::HasBitSetters {
+ public:
+};
+
+void SavedModel::clear_meta_graphs() {
+  meta_graphs_.Clear();
+}
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int SavedModel::kSavedModelSchemaVersionFieldNumber;
+const int SavedModel::kMetaGraphsFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+SavedModel::SavedModel()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.SavedModel)
+}
+SavedModel::SavedModel(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena),
+  meta_graphs_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.SavedModel)
+}
+SavedModel::SavedModel(const SavedModel& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL),
+      meta_graphs_(from.meta_graphs_) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  saved_model_schema_version_ = from.saved_model_schema_version_;
+  // @@protoc_insertion_point(copy_constructor:tensorflow.SavedModel)
+}
+
+void SavedModel::SharedCtor() {
+  ::google::protobuf::internal::InitSCC(
+      &scc_info_SavedModel_tensorflow_2fcore_2fprotobuf_2fsaved_5fmodel_2eproto.base);
+  saved_model_schema_version_ = PROTOBUF_LONGLONG(0);
+}
+
+SavedModel::~SavedModel() {
+  // @@protoc_insertion_point(destructor:tensorflow.SavedModel)
+  SharedDtor();
+}
+
+void SavedModel::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+}
+
+void SavedModel::ArenaDtor(void* object) {
+  SavedModel* _this = reinterpret_cast< SavedModel* >(object);
+  (void)_this;
+}
+void SavedModel::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void SavedModel::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const SavedModel& SavedModel::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_SavedModel_tensorflow_2fcore_2fprotobuf_2fsaved_5fmodel_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void SavedModel::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.SavedModel)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  meta_graphs_.Clear();
+  saved_model_schema_version_ = PROTOBUF_LONGLONG(0);
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* SavedModel::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<SavedModel*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // int64 saved_model_schema_version = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 8) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::google::protobuf::int64 value = val;
+        msg->set_saved_model_schema_version(value);
+        break;
+      }
+      // repeated .tensorflow.MetaGraphDef meta_graphs = 2;
+      case 2: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 18) goto handle_unusual;
+        do {
+          ptr = Varint::Parse32Inline(ptr, &size);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          parser_till_end = ::tensorflow::MetaGraphDef::_InternalParse;
+          object = msg->add_meta_graphs();
+          if (size > end - ptr) goto len_delim_till_end;
+          auto newend = ptr + size;
+          bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                         ptr, newend);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          ptr = newend;
+          if (ptr >= end) break;
+        } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 18 && (ptr += 1));
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool SavedModel::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.SavedModel)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // int64 saved_model_schema_version = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (8 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>(
+                 input, &saved_model_schema_version_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // repeated .tensorflow.MetaGraphDef meta_graphs = 2;
+      case 2: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (18 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+                input, add_meta_graphs()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.SavedModel)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.SavedModel)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void SavedModel::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.SavedModel)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // int64 saved_model_schema_version = 1;
+  if (this->saved_model_schema_version() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt64(1, this->saved_model_schema_version(), output);
+  }
+
+  // repeated .tensorflow.MetaGraphDef meta_graphs = 2;
+  for (unsigned int i = 0,
+      n = static_cast<unsigned int>(this->meta_graphs_size()); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      2,
+      this->meta_graphs(static_cast<int>(i)),
+      output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.SavedModel)
+}
+
+::google::protobuf::uint8* SavedModel::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.SavedModel)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // int64 saved_model_schema_version = 1;
+  if (this->saved_model_schema_version() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt64ToArray(1, this->saved_model_schema_version(), target);
+  }
+
+  // repeated .tensorflow.MetaGraphDef meta_graphs = 2;
+  for (unsigned int i = 0,
+      n = static_cast<unsigned int>(this->meta_graphs_size()); i < n; i++) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        2, this->meta_graphs(static_cast<int>(i)), deterministic, target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.SavedModel)
+  return target;
+}
+
+size_t SavedModel::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.SavedModel)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // repeated .tensorflow.MetaGraphDef meta_graphs = 2;
+  {
+    unsigned int count = static_cast<unsigned int>(this->meta_graphs_size());
+    total_size += 1UL * count;
+    for (unsigned int i = 0; i < count; i++) {
+      total_size +=
+        ::google::protobuf::internal::WireFormatLite::MessageSize(
+          this->meta_graphs(static_cast<int>(i)));
+    }
+  }
+
+  // int64 saved_model_schema_version = 1;
+  if (this->saved_model_schema_version() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::Int64Size(
+        this->saved_model_schema_version());
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void SavedModel::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.SavedModel)
+  GOOGLE_DCHECK_NE(&from, this);
+  const SavedModel* source =
+      ::google::protobuf::DynamicCastToGenerated<SavedModel>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.SavedModel)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.SavedModel)
+    MergeFrom(*source);
+  }
+}
+
+void SavedModel::MergeFrom(const SavedModel& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.SavedModel)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  meta_graphs_.MergeFrom(from.meta_graphs_);
+  if (from.saved_model_schema_version() != 0) {
+    set_saved_model_schema_version(from.saved_model_schema_version());
+  }
+}
+
+void SavedModel::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.SavedModel)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void SavedModel::CopyFrom(const SavedModel& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.SavedModel)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool SavedModel::IsInitialized() const {
+  return true;
+}
+
+void SavedModel::Swap(SavedModel* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    SavedModel* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void SavedModel::UnsafeArenaSwap(SavedModel* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void SavedModel::InternalSwap(SavedModel* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  CastToBase(&meta_graphs_)->InternalSwap(CastToBase(&other->meta_graphs_));
+  swap(saved_model_schema_version_, other->saved_model_schema_version_);
+}
+
+::google::protobuf::Metadata SavedModel::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2fsaved_5fmodel_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fprotobuf_2fsaved_5fmodel_2eproto[kIndexInFileMessages];
+}
+
+
+// @@protoc_insertion_point(namespace_scope)
+}  // namespace tensorflow
+namespace google {
+namespace protobuf {
+template<> PROTOBUF_NOINLINE ::tensorflow::SavedModel* Arena::CreateMaybeMessage< ::tensorflow::SavedModel >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::SavedModel >(arena);
+}
+}  // namespace protobuf
+}  // namespace google
+
+// @@protoc_insertion_point(global_scope)
+#include <google/protobuf/port_undef.inc>
diff --git a/tensorflow/core/protobuf/saved_model.pb.h b/tensorflow/core/protobuf/saved_model.pb.h
new file mode 100644 (file)
index 0000000..57452b8
--- /dev/null
@@ -0,0 +1,266 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: tensorflow/core/protobuf/saved_model.proto
+
+#ifndef PROTOBUF_INCLUDED_tensorflow_2fcore_2fprotobuf_2fsaved_5fmodel_2eproto
+#define PROTOBUF_INCLUDED_tensorflow_2fcore_2fprotobuf_2fsaved_5fmodel_2eproto
+
+#include <limits>
+#include <string>
+
+#include <google/protobuf/port_def.inc>
+#if PROTOBUF_VERSION < 3006001
+#error This file was generated by a newer version of protoc which is
+#error incompatible with your Protocol Buffer headers. Please update
+#error your headers.
+#endif
+#if 3006001 < PROTOBUF_MIN_PROTOC_VERSION
+#error This file was generated by an older version of protoc which is
+#error incompatible with your Protocol Buffer headers. Please
+#error regenerate this file with a newer version of protoc.
+#endif
+
+#include <google/protobuf/port_undef.inc>
+#include <google/protobuf/io/coded_stream.h>
+#include <google/protobuf/arena.h>
+#include <google/protobuf/arenastring.h>
+#include <google/protobuf/generated_message_table_driven.h>
+#include <google/protobuf/generated_message_util.h>
+#include <google/protobuf/inlined_string_field.h>
+#include <google/protobuf/metadata.h>
+#include <google/protobuf/message.h>
+#include <google/protobuf/repeated_field.h>  // IWYU pragma: export
+#include <google/protobuf/extension_set.h>  // IWYU pragma: export
+#include <google/protobuf/unknown_field_set.h>
+#include "tensorflow/core/protobuf/meta_graph.pb.h"
+// @@protoc_insertion_point(includes)
+#include <google/protobuf/port_def.inc>
+#define PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fprotobuf_2fsaved_5fmodel_2eproto
+
+// Internal implementation detail -- do not use these members.
+struct TableStruct_tensorflow_2fcore_2fprotobuf_2fsaved_5fmodel_2eproto {
+  static const ::google::protobuf::internal::ParseTableField entries[]
+    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
+  static const ::google::protobuf::internal::AuxillaryParseTableField aux[]
+    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
+  static const ::google::protobuf::internal::ParseTable schema[1]
+    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
+  static const ::google::protobuf::internal::FieldMetadata field_metadata[];
+  static const ::google::protobuf::internal::SerializationTable serialization_table[];
+  static const ::google::protobuf::uint32 offsets[];
+};
+void AddDescriptors_tensorflow_2fcore_2fprotobuf_2fsaved_5fmodel_2eproto();
+namespace tensorflow {
+class SavedModel;
+class SavedModelDefaultTypeInternal;
+extern SavedModelDefaultTypeInternal _SavedModel_default_instance_;
+}  // namespace tensorflow
+namespace google {
+namespace protobuf {
+template<> ::tensorflow::SavedModel* Arena::CreateMaybeMessage<::tensorflow::SavedModel>(Arena*);
+}  // namespace protobuf
+}  // namespace google
+namespace tensorflow {
+
+// ===================================================================
+
+class SavedModel : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.SavedModel) */ {
+ public:
+  SavedModel();
+  virtual ~SavedModel();
+
+  SavedModel(const SavedModel& from);
+
+  inline SavedModel& operator=(const SavedModel& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  SavedModel(SavedModel&& from) noexcept
+    : SavedModel() {
+    *this = ::std::move(from);
+  }
+
+  inline SavedModel& operator=(SavedModel&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const SavedModel& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const SavedModel* internal_default_instance() {
+    return reinterpret_cast<const SavedModel*>(
+               &_SavedModel_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    0;
+
+  void UnsafeArenaSwap(SavedModel* other);
+  void Swap(SavedModel* other);
+  friend void swap(SavedModel& a, SavedModel& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline SavedModel* New() const final {
+    return CreateMaybeMessage<SavedModel>(NULL);
+  }
+
+  SavedModel* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<SavedModel>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const SavedModel& from);
+  void MergeFrom(const SavedModel& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(SavedModel* other);
+  protected:
+  explicit SavedModel(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // repeated .tensorflow.MetaGraphDef meta_graphs = 2;
+  int meta_graphs_size() const;
+  void clear_meta_graphs();
+  static const int kMetaGraphsFieldNumber = 2;
+  ::tensorflow::MetaGraphDef* mutable_meta_graphs(int index);
+  ::google::protobuf::RepeatedPtrField< ::tensorflow::MetaGraphDef >*
+      mutable_meta_graphs();
+  const ::tensorflow::MetaGraphDef& meta_graphs(int index) const;
+  ::tensorflow::MetaGraphDef* add_meta_graphs();
+  const ::google::protobuf::RepeatedPtrField< ::tensorflow::MetaGraphDef >&
+      meta_graphs() const;
+
+  // int64 saved_model_schema_version = 1;
+  void clear_saved_model_schema_version();
+  static const int kSavedModelSchemaVersionFieldNumber = 1;
+  ::google::protobuf::int64 saved_model_schema_version() const;
+  void set_saved_model_schema_version(::google::protobuf::int64 value);
+
+  // @@protoc_insertion_point(class_scope:tensorflow.SavedModel)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  ::google::protobuf::RepeatedPtrField< ::tensorflow::MetaGraphDef > meta_graphs_;
+  ::google::protobuf::int64 saved_model_schema_version_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fprotobuf_2fsaved_5fmodel_2eproto;
+};
+// ===================================================================
+
+
+// ===================================================================
+
+#ifdef __GNUC__
+  #pragma GCC diagnostic push
+  #pragma GCC diagnostic ignored "-Wstrict-aliasing"
+#endif  // __GNUC__
+// SavedModel
+
+// int64 saved_model_schema_version = 1;
+inline void SavedModel::clear_saved_model_schema_version() {
+  saved_model_schema_version_ = PROTOBUF_LONGLONG(0);
+}
+inline ::google::protobuf::int64 SavedModel::saved_model_schema_version() const {
+  // @@protoc_insertion_point(field_get:tensorflow.SavedModel.saved_model_schema_version)
+  return saved_model_schema_version_;
+}
+inline void SavedModel::set_saved_model_schema_version(::google::protobuf::int64 value) {
+  
+  saved_model_schema_version_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.SavedModel.saved_model_schema_version)
+}
+
+// repeated .tensorflow.MetaGraphDef meta_graphs = 2;
+inline int SavedModel::meta_graphs_size() const {
+  return meta_graphs_.size();
+}
+inline ::tensorflow::MetaGraphDef* SavedModel::mutable_meta_graphs(int index) {
+  // @@protoc_insertion_point(field_mutable:tensorflow.SavedModel.meta_graphs)
+  return meta_graphs_.Mutable(index);
+}
+inline ::google::protobuf::RepeatedPtrField< ::tensorflow::MetaGraphDef >*
+SavedModel::mutable_meta_graphs() {
+  // @@protoc_insertion_point(field_mutable_list:tensorflow.SavedModel.meta_graphs)
+  return &meta_graphs_;
+}
+inline const ::tensorflow::MetaGraphDef& SavedModel::meta_graphs(int index) const {
+  // @@protoc_insertion_point(field_get:tensorflow.SavedModel.meta_graphs)
+  return meta_graphs_.Get(index);
+}
+inline ::tensorflow::MetaGraphDef* SavedModel::add_meta_graphs() {
+  // @@protoc_insertion_point(field_add:tensorflow.SavedModel.meta_graphs)
+  return meta_graphs_.Add();
+}
+inline const ::google::protobuf::RepeatedPtrField< ::tensorflow::MetaGraphDef >&
+SavedModel::meta_graphs() const {
+  // @@protoc_insertion_point(field_list:tensorflow.SavedModel.meta_graphs)
+  return meta_graphs_;
+}
+
+#ifdef __GNUC__
+  #pragma GCC diagnostic pop
+#endif  // __GNUC__
+
+// @@protoc_insertion_point(namespace_scope)
+
+}  // namespace tensorflow
+
+// @@protoc_insertion_point(global_scope)
+
+#include <google/protobuf/port_undef.inc>
+#endif  // PROTOBUF_INCLUDED_tensorflow_2fcore_2fprotobuf_2fsaved_5fmodel_2eproto
diff --git a/tensorflow/core/protobuf/saved_model.proto b/tensorflow/core/protobuf/saved_model.proto
new file mode 100644 (file)
index 0000000..03789d3
--- /dev/null
@@ -0,0 +1,21 @@
+syntax = "proto3";
+
+package tensorflow;
+option cc_enable_arenas = true;
+option java_outer_classname = "SavedModelProtos";
+option java_multiple_files = true;
+option java_package = "org.tensorflow.framework";
+option go_package = "github.com/tensorflow/tensorflow/tensorflow/go/core/protobuf";
+import "tensorflow/core/protobuf/meta_graph.proto";
+
+// SavedModel is the high level serialization format for TensorFlow Models.
+// See [todo: doc links, similar to session_bundle] for more information.
+message SavedModel {
+  // The schema version of the SavedModel instance. Used for versioning when
+  // making future changes to the specification/implementation. Initial value
+  // at release will be 1.
+  int64 saved_model_schema_version = 1;
+
+  // One or more MetaGraphs.
+  repeated MetaGraphDef meta_graphs = 2;
+}
diff --git a/tensorflow/core/protobuf/saver.pb.cc b/tensorflow/core/protobuf/saver.pb.cc
new file mode 100644 (file)
index 0000000..0106176
--- /dev/null
@@ -0,0 +1,797 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: tensorflow/core/protobuf/saver.proto
+
+#include "tensorflow/core/protobuf/saver.pb.h"
+
+#include <algorithm>
+
+#include <google/protobuf/stubs/common.h>
+#include <google/protobuf/io/coded_stream.h>
+#include <google/protobuf/extension_set.h>
+#include <google/protobuf/wire_format_lite_inl.h>
+#include <google/protobuf/descriptor.h>
+#include <google/protobuf/generated_message_reflection.h>
+#include <google/protobuf/reflection_ops.h>
+#include <google/protobuf/wire_format.h>
+// @@protoc_insertion_point(includes)
+#include <google/protobuf/port_def.inc>
+
+namespace tensorflow {
+class SaverDefDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<SaverDef> _instance;
+} _SaverDef_default_instance_;
+}  // namespace tensorflow
+static void InitDefaultsSaverDef_tensorflow_2fcore_2fprotobuf_2fsaver_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_SaverDef_default_instance_;
+    new (ptr) ::tensorflow::SaverDef();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::SaverDef::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<0> scc_info_SaverDef_tensorflow_2fcore_2fprotobuf_2fsaver_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsSaverDef_tensorflow_2fcore_2fprotobuf_2fsaver_2eproto}, {}};
+
+void InitDefaults_tensorflow_2fcore_2fprotobuf_2fsaver_2eproto() {
+  ::google::protobuf::internal::InitSCC(&scc_info_SaverDef_tensorflow_2fcore_2fprotobuf_2fsaver_2eproto.base);
+}
+
+::google::protobuf::Metadata file_level_metadata_tensorflow_2fcore_2fprotobuf_2fsaver_2eproto[1];
+const ::google::protobuf::EnumDescriptor* file_level_enum_descriptors_tensorflow_2fcore_2fprotobuf_2fsaver_2eproto[1];
+constexpr ::google::protobuf::ServiceDescriptor const** file_level_service_descriptors_tensorflow_2fcore_2fprotobuf_2fsaver_2eproto = nullptr;
+
+const ::google::protobuf::uint32 TableStruct_tensorflow_2fcore_2fprotobuf_2fsaver_2eproto::offsets[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = {
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::SaverDef, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::SaverDef, filename_tensor_name_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::SaverDef, save_tensor_name_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::SaverDef, restore_op_name_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::SaverDef, max_to_keep_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::SaverDef, sharded_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::SaverDef, keep_checkpoint_every_n_hours_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::SaverDef, version_),
+};
+static const ::google::protobuf::internal::MigrationSchema schemas[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = {
+  { 0, -1, sizeof(::tensorflow::SaverDef)},
+};
+
+static ::google::protobuf::Message const * const file_default_instances[] = {
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_SaverDef_default_instance_),
+};
+
+::google::protobuf::internal::AssignDescriptorsTable assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2fsaver_2eproto = {
+  {}, AddDescriptors_tensorflow_2fcore_2fprotobuf_2fsaver_2eproto, "tensorflow/core/protobuf/saver.proto", schemas,
+  file_default_instances, TableStruct_tensorflow_2fcore_2fprotobuf_2fsaver_2eproto::offsets,
+  file_level_metadata_tensorflow_2fcore_2fprotobuf_2fsaver_2eproto, 1, file_level_enum_descriptors_tensorflow_2fcore_2fprotobuf_2fsaver_2eproto, file_level_service_descriptors_tensorflow_2fcore_2fprotobuf_2fsaver_2eproto,
+};
+
+::google::protobuf::internal::DescriptorTable descriptor_table_tensorflow_2fcore_2fprotobuf_2fsaver_2eproto = {
+  false, InitDefaults_tensorflow_2fcore_2fprotobuf_2fsaver_2eproto, 
+  "\n$tensorflow/core/protobuf/saver.proto\022\n"
+  "tensorflow\"\236\002\n\010SaverDef\022\034\n\024filename_tens"
+  "or_name\030\001 \001(\t\022\030\n\020save_tensor_name\030\002 \001(\t\022"
+  "\027\n\017restore_op_name\030\003 \001(\t\022\023\n\013max_to_keep\030"
+  "\004 \001(\005\022\017\n\007sharded\030\005 \001(\010\022%\n\035keep_checkpoin"
+  "t_every_n_hours\030\006 \001(\002\022=\n\007version\030\007 \001(\0162,"
+  ".tensorflow.SaverDef.CheckpointFormatVer"
+  "sion\"5\n\027CheckpointFormatVersion\022\n\n\006LEGAC"
+  "Y\020\000\022\006\n\002V1\020\001\022\006\n\002V2\020\002Be\n\023org.tensorflow.ut"
+  "ilB\013SaverProtosP\001Z<github.com/tensorflow"
+  "/tensorflow/tensorflow/go/core/protobuf\370"
+  "\001\001b\006proto3"
+,
+  "tensorflow/core/protobuf/saver.proto", &assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2fsaver_2eproto, 450,
+};
+
+void AddDescriptors_tensorflow_2fcore_2fprotobuf_2fsaver_2eproto() {
+  static constexpr ::google::protobuf::internal::InitFunc deps[1] =
+  {
+  };
+ ::google::protobuf::internal::AddDescriptors(&descriptor_table_tensorflow_2fcore_2fprotobuf_2fsaver_2eproto, deps, 0);
+}
+
+// Force running AddDescriptors() at dynamic initialization time.
+static bool dynamic_init_dummy_tensorflow_2fcore_2fprotobuf_2fsaver_2eproto = []() { AddDescriptors_tensorflow_2fcore_2fprotobuf_2fsaver_2eproto(); return true; }();
+namespace tensorflow {
+const ::google::protobuf::EnumDescriptor* SaverDef_CheckpointFormatVersion_descriptor() {
+  ::google::protobuf::internal::AssignDescriptors(&assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2fsaver_2eproto);
+  return file_level_enum_descriptors_tensorflow_2fcore_2fprotobuf_2fsaver_2eproto[0];
+}
+bool SaverDef_CheckpointFormatVersion_IsValid(int value) {
+  switch (value) {
+    case 0:
+    case 1:
+    case 2:
+      return true;
+    default:
+      return false;
+  }
+}
+
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const SaverDef_CheckpointFormatVersion SaverDef::LEGACY;
+const SaverDef_CheckpointFormatVersion SaverDef::V1;
+const SaverDef_CheckpointFormatVersion SaverDef::V2;
+const SaverDef_CheckpointFormatVersion SaverDef::CheckpointFormatVersion_MIN;
+const SaverDef_CheckpointFormatVersion SaverDef::CheckpointFormatVersion_MAX;
+const int SaverDef::CheckpointFormatVersion_ARRAYSIZE;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+// ===================================================================
+
+void SaverDef::InitAsDefaultInstance() {
+}
+class SaverDef::HasBitSetters {
+ public:
+};
+
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int SaverDef::kFilenameTensorNameFieldNumber;
+const int SaverDef::kSaveTensorNameFieldNumber;
+const int SaverDef::kRestoreOpNameFieldNumber;
+const int SaverDef::kMaxToKeepFieldNumber;
+const int SaverDef::kShardedFieldNumber;
+const int SaverDef::kKeepCheckpointEveryNHoursFieldNumber;
+const int SaverDef::kVersionFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+SaverDef::SaverDef()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.SaverDef)
+}
+SaverDef::SaverDef(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.SaverDef)
+}
+SaverDef::SaverDef(const SaverDef& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  filename_tensor_name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.filename_tensor_name().size() > 0) {
+    filename_tensor_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.filename_tensor_name(),
+      GetArenaNoVirtual());
+  }
+  save_tensor_name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.save_tensor_name().size() > 0) {
+    save_tensor_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.save_tensor_name(),
+      GetArenaNoVirtual());
+  }
+  restore_op_name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.restore_op_name().size() > 0) {
+    restore_op_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.restore_op_name(),
+      GetArenaNoVirtual());
+  }
+  ::memcpy(&max_to_keep_, &from.max_to_keep_,
+    static_cast<size_t>(reinterpret_cast<char*>(&version_) -
+    reinterpret_cast<char*>(&max_to_keep_)) + sizeof(version_));
+  // @@protoc_insertion_point(copy_constructor:tensorflow.SaverDef)
+}
+
+void SaverDef::SharedCtor() {
+  ::google::protobuf::internal::InitSCC(
+      &scc_info_SaverDef_tensorflow_2fcore_2fprotobuf_2fsaver_2eproto.base);
+  filename_tensor_name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  save_tensor_name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  restore_op_name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  ::memset(&max_to_keep_, 0, static_cast<size_t>(
+      reinterpret_cast<char*>(&version_) -
+      reinterpret_cast<char*>(&max_to_keep_)) + sizeof(version_));
+}
+
+SaverDef::~SaverDef() {
+  // @@protoc_insertion_point(destructor:tensorflow.SaverDef)
+  SharedDtor();
+}
+
+void SaverDef::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+  filename_tensor_name_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  save_tensor_name_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  restore_op_name_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+
+void SaverDef::ArenaDtor(void* object) {
+  SaverDef* _this = reinterpret_cast< SaverDef* >(object);
+  (void)_this;
+}
+void SaverDef::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void SaverDef::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const SaverDef& SaverDef::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_SaverDef_tensorflow_2fcore_2fprotobuf_2fsaver_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void SaverDef::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.SaverDef)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  filename_tensor_name_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+  save_tensor_name_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+  restore_op_name_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+  ::memset(&max_to_keep_, 0, static_cast<size_t>(
+      reinterpret_cast<char*>(&version_) -
+      reinterpret_cast<char*>(&max_to_keep_)) + sizeof(version_));
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* SaverDef::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<SaverDef*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // string filename_tensor_name = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 10) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("tensorflow.SaverDef.filename_tensor_name");
+        parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+        ::std::string* str = msg->mutable_filename_tensor_name();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+        break;
+      }
+      // string save_tensor_name = 2;
+      case 2: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 18) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("tensorflow.SaverDef.save_tensor_name");
+        parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+        ::std::string* str = msg->mutable_save_tensor_name();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+        break;
+      }
+      // string restore_op_name = 3;
+      case 3: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 26) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("tensorflow.SaverDef.restore_op_name");
+        parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+        ::std::string* str = msg->mutable_restore_op_name();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+        break;
+      }
+      // int32 max_to_keep = 4;
+      case 4: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 32) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::google::protobuf::int32 value = val;
+        msg->set_max_to_keep(value);
+        break;
+      }
+      // bool sharded = 5;
+      case 5: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 40) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        bool value = val;
+        msg->set_sharded(value);
+        break;
+      }
+      // float keep_checkpoint_every_n_hours = 6;
+      case 6: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 53) goto handle_unusual;
+        float val;
+        std::memcpy(&val, ptr, 4);
+        ptr += 4;
+        msg->set_keep_checkpoint_every_n_hours(val);
+        break;
+      }
+      // .tensorflow.SaverDef.CheckpointFormatVersion version = 7;
+      case 7: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 56) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::tensorflow::SaverDef_CheckpointFormatVersion value = static_cast<::tensorflow::SaverDef_CheckpointFormatVersion>(val);
+        msg->set_version(value);
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool SaverDef::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.SaverDef)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // string filename_tensor_name = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (10 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_filename_tensor_name()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->filename_tensor_name().data(), static_cast<int>(this->filename_tensor_name().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.SaverDef.filename_tensor_name"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // string save_tensor_name = 2;
+      case 2: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (18 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_save_tensor_name()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->save_tensor_name().data(), static_cast<int>(this->save_tensor_name().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.SaverDef.save_tensor_name"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // string restore_op_name = 3;
+      case 3: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (26 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_restore_op_name()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->restore_op_name().data(), static_cast<int>(this->restore_op_name().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.SaverDef.restore_op_name"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // int32 max_to_keep = 4;
+      case 4: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (32 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
+                 input, &max_to_keep_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // bool sharded = 5;
+      case 5: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (40 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
+                 input, &sharded_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // float keep_checkpoint_every_n_hours = 6;
+      case 6: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (53 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>(
+                 input, &keep_checkpoint_every_n_hours_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // .tensorflow.SaverDef.CheckpointFormatVersion version = 7;
+      case 7: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (56 & 0xFF)) {
+          int value = 0;
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>(
+                 input, &value)));
+          set_version(static_cast< ::tensorflow::SaverDef_CheckpointFormatVersion >(value));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.SaverDef)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.SaverDef)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void SaverDef::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.SaverDef)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // string filename_tensor_name = 1;
+  if (this->filename_tensor_name().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->filename_tensor_name().data(), static_cast<int>(this->filename_tensor_name().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.SaverDef.filename_tensor_name");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      1, this->filename_tensor_name(), output);
+  }
+
+  // string save_tensor_name = 2;
+  if (this->save_tensor_name().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->save_tensor_name().data(), static_cast<int>(this->save_tensor_name().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.SaverDef.save_tensor_name");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      2, this->save_tensor_name(), output);
+  }
+
+  // string restore_op_name = 3;
+  if (this->restore_op_name().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->restore_op_name().data(), static_cast<int>(this->restore_op_name().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.SaverDef.restore_op_name");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      3, this->restore_op_name(), output);
+  }
+
+  // int32 max_to_keep = 4;
+  if (this->max_to_keep() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt32(4, this->max_to_keep(), output);
+  }
+
+  // bool sharded = 5;
+  if (this->sharded() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteBool(5, this->sharded(), output);
+  }
+
+  // float keep_checkpoint_every_n_hours = 6;
+  if (this->keep_checkpoint_every_n_hours() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteFloat(6, this->keep_checkpoint_every_n_hours(), output);
+  }
+
+  // .tensorflow.SaverDef.CheckpointFormatVersion version = 7;
+  if (this->version() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteEnum(
+      7, this->version(), output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.SaverDef)
+}
+
+::google::protobuf::uint8* SaverDef::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.SaverDef)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // string filename_tensor_name = 1;
+  if (this->filename_tensor_name().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->filename_tensor_name().data(), static_cast<int>(this->filename_tensor_name().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.SaverDef.filename_tensor_name");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        1, this->filename_tensor_name(), target);
+  }
+
+  // string save_tensor_name = 2;
+  if (this->save_tensor_name().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->save_tensor_name().data(), static_cast<int>(this->save_tensor_name().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.SaverDef.save_tensor_name");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        2, this->save_tensor_name(), target);
+  }
+
+  // string restore_op_name = 3;
+  if (this->restore_op_name().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->restore_op_name().data(), static_cast<int>(this->restore_op_name().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.SaverDef.restore_op_name");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        3, this->restore_op_name(), target);
+  }
+
+  // int32 max_to_keep = 4;
+  if (this->max_to_keep() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt32ToArray(4, this->max_to_keep(), target);
+  }
+
+  // bool sharded = 5;
+  if (this->sharded() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(5, this->sharded(), target);
+  }
+
+  // float keep_checkpoint_every_n_hours = 6;
+  if (this->keep_checkpoint_every_n_hours() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteFloatToArray(6, this->keep_checkpoint_every_n_hours(), target);
+  }
+
+  // .tensorflow.SaverDef.CheckpointFormatVersion version = 7;
+  if (this->version() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteEnumToArray(
+      7, this->version(), target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.SaverDef)
+  return target;
+}
+
+size_t SaverDef::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.SaverDef)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // string filename_tensor_name = 1;
+  if (this->filename_tensor_name().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->filename_tensor_name());
+  }
+
+  // string save_tensor_name = 2;
+  if (this->save_tensor_name().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->save_tensor_name());
+  }
+
+  // string restore_op_name = 3;
+  if (this->restore_op_name().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->restore_op_name());
+  }
+
+  // int32 max_to_keep = 4;
+  if (this->max_to_keep() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::Int32Size(
+        this->max_to_keep());
+  }
+
+  // bool sharded = 5;
+  if (this->sharded() != 0) {
+    total_size += 1 + 1;
+  }
+
+  // float keep_checkpoint_every_n_hours = 6;
+  if (this->keep_checkpoint_every_n_hours() != 0) {
+    total_size += 1 + 4;
+  }
+
+  // .tensorflow.SaverDef.CheckpointFormatVersion version = 7;
+  if (this->version() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::EnumSize(this->version());
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void SaverDef::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.SaverDef)
+  GOOGLE_DCHECK_NE(&from, this);
+  const SaverDef* source =
+      ::google::protobuf::DynamicCastToGenerated<SaverDef>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.SaverDef)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.SaverDef)
+    MergeFrom(*source);
+  }
+}
+
+void SaverDef::MergeFrom(const SaverDef& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.SaverDef)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  if (from.filename_tensor_name().size() > 0) {
+    set_filename_tensor_name(from.filename_tensor_name());
+  }
+  if (from.save_tensor_name().size() > 0) {
+    set_save_tensor_name(from.save_tensor_name());
+  }
+  if (from.restore_op_name().size() > 0) {
+    set_restore_op_name(from.restore_op_name());
+  }
+  if (from.max_to_keep() != 0) {
+    set_max_to_keep(from.max_to_keep());
+  }
+  if (from.sharded() != 0) {
+    set_sharded(from.sharded());
+  }
+  if (from.keep_checkpoint_every_n_hours() != 0) {
+    set_keep_checkpoint_every_n_hours(from.keep_checkpoint_every_n_hours());
+  }
+  if (from.version() != 0) {
+    set_version(from.version());
+  }
+}
+
+void SaverDef::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.SaverDef)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void SaverDef::CopyFrom(const SaverDef& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.SaverDef)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool SaverDef::IsInitialized() const {
+  return true;
+}
+
+void SaverDef::Swap(SaverDef* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    SaverDef* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void SaverDef::UnsafeArenaSwap(SaverDef* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void SaverDef::InternalSwap(SaverDef* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  filename_tensor_name_.Swap(&other->filename_tensor_name_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+  save_tensor_name_.Swap(&other->save_tensor_name_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+  restore_op_name_.Swap(&other->restore_op_name_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+  swap(max_to_keep_, other->max_to_keep_);
+  swap(sharded_, other->sharded_);
+  swap(keep_checkpoint_every_n_hours_, other->keep_checkpoint_every_n_hours_);
+  swap(version_, other->version_);
+}
+
+::google::protobuf::Metadata SaverDef::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2fsaver_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fprotobuf_2fsaver_2eproto[kIndexInFileMessages];
+}
+
+
+// @@protoc_insertion_point(namespace_scope)
+}  // namespace tensorflow
+namespace google {
+namespace protobuf {
+template<> PROTOBUF_NOINLINE ::tensorflow::SaverDef* Arena::CreateMaybeMessage< ::tensorflow::SaverDef >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::SaverDef >(arena);
+}
+}  // namespace protobuf
+}  // namespace google
+
+// @@protoc_insertion_point(global_scope)
+#include <google/protobuf/port_undef.inc>
diff --git a/tensorflow/core/protobuf/saver.pb.h b/tensorflow/core/protobuf/saver.pb.h
new file mode 100644 (file)
index 0000000..434bae3
--- /dev/null
@@ -0,0 +1,648 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: tensorflow/core/protobuf/saver.proto
+
+#ifndef PROTOBUF_INCLUDED_tensorflow_2fcore_2fprotobuf_2fsaver_2eproto
+#define PROTOBUF_INCLUDED_tensorflow_2fcore_2fprotobuf_2fsaver_2eproto
+
+#include <limits>
+#include <string>
+
+#include <google/protobuf/port_def.inc>
+#if PROTOBUF_VERSION < 3006001
+#error This file was generated by a newer version of protoc which is
+#error incompatible with your Protocol Buffer headers. Please update
+#error your headers.
+#endif
+#if 3006001 < PROTOBUF_MIN_PROTOC_VERSION
+#error This file was generated by an older version of protoc which is
+#error incompatible with your Protocol Buffer headers. Please
+#error regenerate this file with a newer version of protoc.
+#endif
+
+#include <google/protobuf/port_undef.inc>
+#include <google/protobuf/io/coded_stream.h>
+#include <google/protobuf/arena.h>
+#include <google/protobuf/arenastring.h>
+#include <google/protobuf/generated_message_table_driven.h>
+#include <google/protobuf/generated_message_util.h>
+#include <google/protobuf/inlined_string_field.h>
+#include <google/protobuf/metadata.h>
+#include <google/protobuf/message.h>
+#include <google/protobuf/repeated_field.h>  // IWYU pragma: export
+#include <google/protobuf/extension_set.h>  // IWYU pragma: export
+#include <google/protobuf/generated_enum_reflection.h>
+#include <google/protobuf/unknown_field_set.h>
+// @@protoc_insertion_point(includes)
+#include <google/protobuf/port_def.inc>
+#define PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fprotobuf_2fsaver_2eproto
+
+// Internal implementation detail -- do not use these members.
+struct TableStruct_tensorflow_2fcore_2fprotobuf_2fsaver_2eproto {
+  static const ::google::protobuf::internal::ParseTableField entries[]
+    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
+  static const ::google::protobuf::internal::AuxillaryParseTableField aux[]
+    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
+  static const ::google::protobuf::internal::ParseTable schema[1]
+    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
+  static const ::google::protobuf::internal::FieldMetadata field_metadata[];
+  static const ::google::protobuf::internal::SerializationTable serialization_table[];
+  static const ::google::protobuf::uint32 offsets[];
+};
+void AddDescriptors_tensorflow_2fcore_2fprotobuf_2fsaver_2eproto();
+namespace tensorflow {
+class SaverDef;
+class SaverDefDefaultTypeInternal;
+extern SaverDefDefaultTypeInternal _SaverDef_default_instance_;
+}  // namespace tensorflow
+namespace google {
+namespace protobuf {
+template<> ::tensorflow::SaverDef* Arena::CreateMaybeMessage<::tensorflow::SaverDef>(Arena*);
+}  // namespace protobuf
+}  // namespace google
+namespace tensorflow {
+
+enum SaverDef_CheckpointFormatVersion {
+  SaverDef_CheckpointFormatVersion_LEGACY = 0,
+  SaverDef_CheckpointFormatVersion_V1 = 1,
+  SaverDef_CheckpointFormatVersion_V2 = 2,
+  SaverDef_CheckpointFormatVersion_SaverDef_CheckpointFormatVersion_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::google::protobuf::int32>::min(),
+  SaverDef_CheckpointFormatVersion_SaverDef_CheckpointFormatVersion_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::google::protobuf::int32>::max()
+};
+bool SaverDef_CheckpointFormatVersion_IsValid(int value);
+const SaverDef_CheckpointFormatVersion SaverDef_CheckpointFormatVersion_CheckpointFormatVersion_MIN = SaverDef_CheckpointFormatVersion_LEGACY;
+const SaverDef_CheckpointFormatVersion SaverDef_CheckpointFormatVersion_CheckpointFormatVersion_MAX = SaverDef_CheckpointFormatVersion_V2;
+const int SaverDef_CheckpointFormatVersion_CheckpointFormatVersion_ARRAYSIZE = SaverDef_CheckpointFormatVersion_CheckpointFormatVersion_MAX + 1;
+
+const ::google::protobuf::EnumDescriptor* SaverDef_CheckpointFormatVersion_descriptor();
+inline const ::std::string& SaverDef_CheckpointFormatVersion_Name(SaverDef_CheckpointFormatVersion value) {
+  return ::google::protobuf::internal::NameOfEnum(
+    SaverDef_CheckpointFormatVersion_descriptor(), value);
+}
+inline bool SaverDef_CheckpointFormatVersion_Parse(
+    const ::std::string& name, SaverDef_CheckpointFormatVersion* value) {
+  return ::google::protobuf::internal::ParseNamedEnum<SaverDef_CheckpointFormatVersion>(
+    SaverDef_CheckpointFormatVersion_descriptor(), name, value);
+}
+// ===================================================================
+
+class SaverDef : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.SaverDef) */ {
+ public:
+  SaverDef();
+  virtual ~SaverDef();
+
+  SaverDef(const SaverDef& from);
+
+  inline SaverDef& operator=(const SaverDef& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  SaverDef(SaverDef&& from) noexcept
+    : SaverDef() {
+    *this = ::std::move(from);
+  }
+
+  inline SaverDef& operator=(SaverDef&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const SaverDef& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const SaverDef* internal_default_instance() {
+    return reinterpret_cast<const SaverDef*>(
+               &_SaverDef_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    0;
+
+  void UnsafeArenaSwap(SaverDef* other);
+  void Swap(SaverDef* other);
+  friend void swap(SaverDef& a, SaverDef& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline SaverDef* New() const final {
+    return CreateMaybeMessage<SaverDef>(NULL);
+  }
+
+  SaverDef* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<SaverDef>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const SaverDef& from);
+  void MergeFrom(const SaverDef& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(SaverDef* other);
+  protected:
+  explicit SaverDef(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  typedef SaverDef_CheckpointFormatVersion CheckpointFormatVersion;
+  static const CheckpointFormatVersion LEGACY =
+    SaverDef_CheckpointFormatVersion_LEGACY;
+  static const CheckpointFormatVersion V1 =
+    SaverDef_CheckpointFormatVersion_V1;
+  static const CheckpointFormatVersion V2 =
+    SaverDef_CheckpointFormatVersion_V2;
+  static inline bool CheckpointFormatVersion_IsValid(int value) {
+    return SaverDef_CheckpointFormatVersion_IsValid(value);
+  }
+  static const CheckpointFormatVersion CheckpointFormatVersion_MIN =
+    SaverDef_CheckpointFormatVersion_CheckpointFormatVersion_MIN;
+  static const CheckpointFormatVersion CheckpointFormatVersion_MAX =
+    SaverDef_CheckpointFormatVersion_CheckpointFormatVersion_MAX;
+  static const int CheckpointFormatVersion_ARRAYSIZE =
+    SaverDef_CheckpointFormatVersion_CheckpointFormatVersion_ARRAYSIZE;
+  static inline const ::google::protobuf::EnumDescriptor*
+  CheckpointFormatVersion_descriptor() {
+    return SaverDef_CheckpointFormatVersion_descriptor();
+  }
+  static inline const ::std::string& CheckpointFormatVersion_Name(CheckpointFormatVersion value) {
+    return SaverDef_CheckpointFormatVersion_Name(value);
+  }
+  static inline bool CheckpointFormatVersion_Parse(const ::std::string& name,
+      CheckpointFormatVersion* value) {
+    return SaverDef_CheckpointFormatVersion_Parse(name, value);
+  }
+
+  // accessors -------------------------------------------------------
+
+  // string filename_tensor_name = 1;
+  void clear_filename_tensor_name();
+  static const int kFilenameTensorNameFieldNumber = 1;
+  const ::std::string& filename_tensor_name() const;
+  void set_filename_tensor_name(const ::std::string& value);
+  #if LANG_CXX11
+  void set_filename_tensor_name(::std::string&& value);
+  #endif
+  void set_filename_tensor_name(const char* value);
+  void set_filename_tensor_name(const char* value, size_t size);
+  ::std::string* mutable_filename_tensor_name();
+  ::std::string* release_filename_tensor_name();
+  void set_allocated_filename_tensor_name(::std::string* filename_tensor_name);
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  ::std::string* unsafe_arena_release_filename_tensor_name();
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  void unsafe_arena_set_allocated_filename_tensor_name(
+      ::std::string* filename_tensor_name);
+
+  // string save_tensor_name = 2;
+  void clear_save_tensor_name();
+  static const int kSaveTensorNameFieldNumber = 2;
+  const ::std::string& save_tensor_name() const;
+  void set_save_tensor_name(const ::std::string& value);
+  #if LANG_CXX11
+  void set_save_tensor_name(::std::string&& value);
+  #endif
+  void set_save_tensor_name(const char* value);
+  void set_save_tensor_name(const char* value, size_t size);
+  ::std::string* mutable_save_tensor_name();
+  ::std::string* release_save_tensor_name();
+  void set_allocated_save_tensor_name(::std::string* save_tensor_name);
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  ::std::string* unsafe_arena_release_save_tensor_name();
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  void unsafe_arena_set_allocated_save_tensor_name(
+      ::std::string* save_tensor_name);
+
+  // string restore_op_name = 3;
+  void clear_restore_op_name();
+  static const int kRestoreOpNameFieldNumber = 3;
+  const ::std::string& restore_op_name() const;
+  void set_restore_op_name(const ::std::string& value);
+  #if LANG_CXX11
+  void set_restore_op_name(::std::string&& value);
+  #endif
+  void set_restore_op_name(const char* value);
+  void set_restore_op_name(const char* value, size_t size);
+  ::std::string* mutable_restore_op_name();
+  ::std::string* release_restore_op_name();
+  void set_allocated_restore_op_name(::std::string* restore_op_name);
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  ::std::string* unsafe_arena_release_restore_op_name();
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  void unsafe_arena_set_allocated_restore_op_name(
+      ::std::string* restore_op_name);
+
+  // int32 max_to_keep = 4;
+  void clear_max_to_keep();
+  static const int kMaxToKeepFieldNumber = 4;
+  ::google::protobuf::int32 max_to_keep() const;
+  void set_max_to_keep(::google::protobuf::int32 value);
+
+  // bool sharded = 5;
+  void clear_sharded();
+  static const int kShardedFieldNumber = 5;
+  bool sharded() const;
+  void set_sharded(bool value);
+
+  // float keep_checkpoint_every_n_hours = 6;
+  void clear_keep_checkpoint_every_n_hours();
+  static const int kKeepCheckpointEveryNHoursFieldNumber = 6;
+  float keep_checkpoint_every_n_hours() const;
+  void set_keep_checkpoint_every_n_hours(float value);
+
+  // .tensorflow.SaverDef.CheckpointFormatVersion version = 7;
+  void clear_version();
+  static const int kVersionFieldNumber = 7;
+  ::tensorflow::SaverDef_CheckpointFormatVersion version() const;
+  void set_version(::tensorflow::SaverDef_CheckpointFormatVersion value);
+
+  // @@protoc_insertion_point(class_scope:tensorflow.SaverDef)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  ::google::protobuf::internal::ArenaStringPtr filename_tensor_name_;
+  ::google::protobuf::internal::ArenaStringPtr save_tensor_name_;
+  ::google::protobuf::internal::ArenaStringPtr restore_op_name_;
+  ::google::protobuf::int32 max_to_keep_;
+  bool sharded_;
+  float keep_checkpoint_every_n_hours_;
+  int version_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fprotobuf_2fsaver_2eproto;
+};
+// ===================================================================
+
+
+// ===================================================================
+
+#ifdef __GNUC__
+  #pragma GCC diagnostic push
+  #pragma GCC diagnostic ignored "-Wstrict-aliasing"
+#endif  // __GNUC__
+// SaverDef
+
+// string filename_tensor_name = 1;
+inline void SaverDef::clear_filename_tensor_name() {
+  filename_tensor_name_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline const ::std::string& SaverDef::filename_tensor_name() const {
+  // @@protoc_insertion_point(field_get:tensorflow.SaverDef.filename_tensor_name)
+  return filename_tensor_name_.Get();
+}
+inline void SaverDef::set_filename_tensor_name(const ::std::string& value) {
+  
+  filename_tensor_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set:tensorflow.SaverDef.filename_tensor_name)
+}
+#if LANG_CXX11
+inline void SaverDef::set_filename_tensor_name(::std::string&& value) {
+  
+  filename_tensor_name_.Set(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.SaverDef.filename_tensor_name)
+}
+#endif
+inline void SaverDef::set_filename_tensor_name(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  filename_tensor_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
+              GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_char:tensorflow.SaverDef.filename_tensor_name)
+}
+inline void SaverDef::set_filename_tensor_name(const char* value,
+    size_t size) {
+  
+  filename_tensor_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
+      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.SaverDef.filename_tensor_name)
+}
+inline ::std::string* SaverDef::mutable_filename_tensor_name() {
+  
+  // @@protoc_insertion_point(field_mutable:tensorflow.SaverDef.filename_tensor_name)
+  return filename_tensor_name_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline ::std::string* SaverDef::release_filename_tensor_name() {
+  // @@protoc_insertion_point(field_release:tensorflow.SaverDef.filename_tensor_name)
+  
+  return filename_tensor_name_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline void SaverDef::set_allocated_filename_tensor_name(::std::string* filename_tensor_name) {
+  if (filename_tensor_name != NULL) {
+    
+  } else {
+    
+  }
+  filename_tensor_name_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), filename_tensor_name,
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.SaverDef.filename_tensor_name)
+}
+inline ::std::string* SaverDef::unsafe_arena_release_filename_tensor_name() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.SaverDef.filename_tensor_name)
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  
+  return filename_tensor_name_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      GetArenaNoVirtual());
+}
+inline void SaverDef::unsafe_arena_set_allocated_filename_tensor_name(
+    ::std::string* filename_tensor_name) {
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (filename_tensor_name != NULL) {
+    
+  } else {
+    
+  }
+  filename_tensor_name_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      filename_tensor_name, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.SaverDef.filename_tensor_name)
+}
+
+// string save_tensor_name = 2;
+inline void SaverDef::clear_save_tensor_name() {
+  save_tensor_name_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline const ::std::string& SaverDef::save_tensor_name() const {
+  // @@protoc_insertion_point(field_get:tensorflow.SaverDef.save_tensor_name)
+  return save_tensor_name_.Get();
+}
+inline void SaverDef::set_save_tensor_name(const ::std::string& value) {
+  
+  save_tensor_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set:tensorflow.SaverDef.save_tensor_name)
+}
+#if LANG_CXX11
+inline void SaverDef::set_save_tensor_name(::std::string&& value) {
+  
+  save_tensor_name_.Set(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.SaverDef.save_tensor_name)
+}
+#endif
+inline void SaverDef::set_save_tensor_name(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  save_tensor_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
+              GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_char:tensorflow.SaverDef.save_tensor_name)
+}
+inline void SaverDef::set_save_tensor_name(const char* value,
+    size_t size) {
+  
+  save_tensor_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
+      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.SaverDef.save_tensor_name)
+}
+inline ::std::string* SaverDef::mutable_save_tensor_name() {
+  
+  // @@protoc_insertion_point(field_mutable:tensorflow.SaverDef.save_tensor_name)
+  return save_tensor_name_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline ::std::string* SaverDef::release_save_tensor_name() {
+  // @@protoc_insertion_point(field_release:tensorflow.SaverDef.save_tensor_name)
+  
+  return save_tensor_name_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline void SaverDef::set_allocated_save_tensor_name(::std::string* save_tensor_name) {
+  if (save_tensor_name != NULL) {
+    
+  } else {
+    
+  }
+  save_tensor_name_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), save_tensor_name,
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.SaverDef.save_tensor_name)
+}
+inline ::std::string* SaverDef::unsafe_arena_release_save_tensor_name() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.SaverDef.save_tensor_name)
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  
+  return save_tensor_name_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      GetArenaNoVirtual());
+}
+inline void SaverDef::unsafe_arena_set_allocated_save_tensor_name(
+    ::std::string* save_tensor_name) {
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (save_tensor_name != NULL) {
+    
+  } else {
+    
+  }
+  save_tensor_name_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      save_tensor_name, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.SaverDef.save_tensor_name)
+}
+
+// string restore_op_name = 3;
+inline void SaverDef::clear_restore_op_name() {
+  restore_op_name_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline const ::std::string& SaverDef::restore_op_name() const {
+  // @@protoc_insertion_point(field_get:tensorflow.SaverDef.restore_op_name)
+  return restore_op_name_.Get();
+}
+inline void SaverDef::set_restore_op_name(const ::std::string& value) {
+  
+  restore_op_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set:tensorflow.SaverDef.restore_op_name)
+}
+#if LANG_CXX11
+inline void SaverDef::set_restore_op_name(::std::string&& value) {
+  
+  restore_op_name_.Set(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.SaverDef.restore_op_name)
+}
+#endif
+inline void SaverDef::set_restore_op_name(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  restore_op_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
+              GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_char:tensorflow.SaverDef.restore_op_name)
+}
+inline void SaverDef::set_restore_op_name(const char* value,
+    size_t size) {
+  
+  restore_op_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
+      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.SaverDef.restore_op_name)
+}
+inline ::std::string* SaverDef::mutable_restore_op_name() {
+  
+  // @@protoc_insertion_point(field_mutable:tensorflow.SaverDef.restore_op_name)
+  return restore_op_name_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline ::std::string* SaverDef::release_restore_op_name() {
+  // @@protoc_insertion_point(field_release:tensorflow.SaverDef.restore_op_name)
+  
+  return restore_op_name_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline void SaverDef::set_allocated_restore_op_name(::std::string* restore_op_name) {
+  if (restore_op_name != NULL) {
+    
+  } else {
+    
+  }
+  restore_op_name_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), restore_op_name,
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.SaverDef.restore_op_name)
+}
+inline ::std::string* SaverDef::unsafe_arena_release_restore_op_name() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.SaverDef.restore_op_name)
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  
+  return restore_op_name_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      GetArenaNoVirtual());
+}
+inline void SaverDef::unsafe_arena_set_allocated_restore_op_name(
+    ::std::string* restore_op_name) {
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (restore_op_name != NULL) {
+    
+  } else {
+    
+  }
+  restore_op_name_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      restore_op_name, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.SaverDef.restore_op_name)
+}
+
+// int32 max_to_keep = 4;
+inline void SaverDef::clear_max_to_keep() {
+  max_to_keep_ = 0;
+}
+inline ::google::protobuf::int32 SaverDef::max_to_keep() const {
+  // @@protoc_insertion_point(field_get:tensorflow.SaverDef.max_to_keep)
+  return max_to_keep_;
+}
+inline void SaverDef::set_max_to_keep(::google::protobuf::int32 value) {
+  
+  max_to_keep_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.SaverDef.max_to_keep)
+}
+
+// bool sharded = 5;
+inline void SaverDef::clear_sharded() {
+  sharded_ = false;
+}
+inline bool SaverDef::sharded() const {
+  // @@protoc_insertion_point(field_get:tensorflow.SaverDef.sharded)
+  return sharded_;
+}
+inline void SaverDef::set_sharded(bool value) {
+  
+  sharded_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.SaverDef.sharded)
+}
+
+// float keep_checkpoint_every_n_hours = 6;
+inline void SaverDef::clear_keep_checkpoint_every_n_hours() {
+  keep_checkpoint_every_n_hours_ = 0;
+}
+inline float SaverDef::keep_checkpoint_every_n_hours() const {
+  // @@protoc_insertion_point(field_get:tensorflow.SaverDef.keep_checkpoint_every_n_hours)
+  return keep_checkpoint_every_n_hours_;
+}
+inline void SaverDef::set_keep_checkpoint_every_n_hours(float value) {
+  
+  keep_checkpoint_every_n_hours_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.SaverDef.keep_checkpoint_every_n_hours)
+}
+
+// .tensorflow.SaverDef.CheckpointFormatVersion version = 7;
+inline void SaverDef::clear_version() {
+  version_ = 0;
+}
+inline ::tensorflow::SaverDef_CheckpointFormatVersion SaverDef::version() const {
+  // @@protoc_insertion_point(field_get:tensorflow.SaverDef.version)
+  return static_cast< ::tensorflow::SaverDef_CheckpointFormatVersion >(version_);
+}
+inline void SaverDef::set_version(::tensorflow::SaverDef_CheckpointFormatVersion value) {
+  
+  version_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.SaverDef.version)
+}
+
+#ifdef __GNUC__
+  #pragma GCC diagnostic pop
+#endif  // __GNUC__
+
+// @@protoc_insertion_point(namespace_scope)
+
+}  // namespace tensorflow
+
+namespace google {
+namespace protobuf {
+
+template <> struct is_proto_enum< ::tensorflow::SaverDef_CheckpointFormatVersion> : ::std::true_type {};
+template <>
+inline const EnumDescriptor* GetEnumDescriptor< ::tensorflow::SaverDef_CheckpointFormatVersion>() {
+  return ::tensorflow::SaverDef_CheckpointFormatVersion_descriptor();
+}
+
+}  // namespace protobuf
+}  // namespace google
+
+// @@protoc_insertion_point(global_scope)
+
+#include <google/protobuf/port_undef.inc>
+#endif  // PROTOBUF_INCLUDED_tensorflow_2fcore_2fprotobuf_2fsaver_2eproto
diff --git a/tensorflow/core/protobuf/saver.proto b/tensorflow/core/protobuf/saver.proto
new file mode 100644 (file)
index 0000000..4245386
--- /dev/null
@@ -0,0 +1,47 @@
+syntax = "proto3";
+
+package tensorflow;
+option cc_enable_arenas = true;
+option java_outer_classname = "SaverProtos";
+option java_multiple_files = true;
+option java_package = "org.tensorflow.util";
+option go_package = "github.com/tensorflow/tensorflow/tensorflow/go/core/protobuf";
+
+// Protocol buffer representing the configuration of a Saver.
+message SaverDef {
+  // The name of the tensor in which to specify the filename when saving or
+  // restoring a model checkpoint.
+  string filename_tensor_name = 1;
+
+  // The operation to run when saving a model checkpoint.
+  string save_tensor_name = 2;
+
+  // The operation to run when restoring a model checkpoint.
+  string restore_op_name = 3;
+
+  // Maximum number of checkpoints to keep.  If 0, no checkpoints are deleted.
+  int32 max_to_keep = 4;
+
+  // Shard the save files, one per device that has Variable nodes.
+  bool sharded = 5;
+
+  // How often to keep an additional checkpoint. If not specified, only the last
+  // "max_to_keep" checkpoints are kept; if specified, in addition to keeping
+  // the last "max_to_keep" checkpoints, an additional checkpoint will be kept
+  // for every n hours of training.
+  float keep_checkpoint_every_n_hours = 6;
+
+  // A version number that identifies a different on-disk checkpoint format.
+  // Usually, each subclass of BaseSaverBuilder works with a particular
+  // version/format.  However, it is possible that the same builder may be
+  // upgraded to support a newer checkpoint format in the future.
+  enum CheckpointFormatVersion {
+    // Internal legacy format.
+    LEGACY = 0;
+    // Deprecated format: tf.Saver() which works with tensorflow::table::Table.
+    V1 = 1;
+    // Current format: more efficient.
+    V2 = 2;
+  }
+  CheckpointFormatVersion version = 7;
+}
diff --git a/tensorflow/core/protobuf/tensor_bundle.pb.cc b/tensorflow/core/protobuf/tensor_bundle.pb.cc
new file mode 100644 (file)
index 0000000..fcd91f2
--- /dev/null
@@ -0,0 +1,1267 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: tensorflow/core/protobuf/tensor_bundle.proto
+
+#include "tensorflow/core/protobuf/tensor_bundle.pb.h"
+
+#include <algorithm>
+
+#include <google/protobuf/stubs/common.h>
+#include <google/protobuf/io/coded_stream.h>
+#include <google/protobuf/extension_set.h>
+#include <google/protobuf/wire_format_lite_inl.h>
+#include <google/protobuf/descriptor.h>
+#include <google/protobuf/generated_message_reflection.h>
+#include <google/protobuf/reflection_ops.h>
+#include <google/protobuf/wire_format.h>
+// @@protoc_insertion_point(includes)
+#include <google/protobuf/port_def.inc>
+
+extern PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fframework_2ftensor_5fshape_2eproto ::google::protobuf::internal::SCCInfo<1> scc_info_TensorShapeProto_tensorflow_2fcore_2fframework_2ftensor_5fshape_2eproto;
+extern PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fframework_2ftensor_5fslice_2eproto ::google::protobuf::internal::SCCInfo<1> scc_info_TensorSliceProto_tensorflow_2fcore_2fframework_2ftensor_5fslice_2eproto;
+extern PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fframework_2fversions_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_VersionDef_tensorflow_2fcore_2fframework_2fversions_2eproto;
+namespace tensorflow {
+class BundleHeaderProtoDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<BundleHeaderProto> _instance;
+} _BundleHeaderProto_default_instance_;
+class BundleEntryProtoDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<BundleEntryProto> _instance;
+} _BundleEntryProto_default_instance_;
+}  // namespace tensorflow
+static void InitDefaultsBundleHeaderProto_tensorflow_2fcore_2fprotobuf_2ftensor_5fbundle_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_BundleHeaderProto_default_instance_;
+    new (ptr) ::tensorflow::BundleHeaderProto();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::BundleHeaderProto::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<1> scc_info_BundleHeaderProto_tensorflow_2fcore_2fprotobuf_2ftensor_5fbundle_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsBundleHeaderProto_tensorflow_2fcore_2fprotobuf_2ftensor_5fbundle_2eproto}, {
+      &scc_info_VersionDef_tensorflow_2fcore_2fframework_2fversions_2eproto.base,}};
+
+static void InitDefaultsBundleEntryProto_tensorflow_2fcore_2fprotobuf_2ftensor_5fbundle_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_BundleEntryProto_default_instance_;
+    new (ptr) ::tensorflow::BundleEntryProto();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::BundleEntryProto::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<2> scc_info_BundleEntryProto_tensorflow_2fcore_2fprotobuf_2ftensor_5fbundle_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 2, InitDefaultsBundleEntryProto_tensorflow_2fcore_2fprotobuf_2ftensor_5fbundle_2eproto}, {
+      &scc_info_TensorShapeProto_tensorflow_2fcore_2fframework_2ftensor_5fshape_2eproto.base,
+      &scc_info_TensorSliceProto_tensorflow_2fcore_2fframework_2ftensor_5fslice_2eproto.base,}};
+
+void InitDefaults_tensorflow_2fcore_2fprotobuf_2ftensor_5fbundle_2eproto() {
+  ::google::protobuf::internal::InitSCC(&scc_info_BundleHeaderProto_tensorflow_2fcore_2fprotobuf_2ftensor_5fbundle_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_BundleEntryProto_tensorflow_2fcore_2fprotobuf_2ftensor_5fbundle_2eproto.base);
+}
+
+::google::protobuf::Metadata file_level_metadata_tensorflow_2fcore_2fprotobuf_2ftensor_5fbundle_2eproto[2];
+const ::google::protobuf::EnumDescriptor* file_level_enum_descriptors_tensorflow_2fcore_2fprotobuf_2ftensor_5fbundle_2eproto[1];
+constexpr ::google::protobuf::ServiceDescriptor const** file_level_service_descriptors_tensorflow_2fcore_2fprotobuf_2ftensor_5fbundle_2eproto = nullptr;
+
+const ::google::protobuf::uint32 TableStruct_tensorflow_2fcore_2fprotobuf_2ftensor_5fbundle_2eproto::offsets[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = {
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::BundleHeaderProto, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::BundleHeaderProto, num_shards_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::BundleHeaderProto, endianness_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::BundleHeaderProto, version_),
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::BundleEntryProto, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::BundleEntryProto, dtype_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::BundleEntryProto, shape_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::BundleEntryProto, shard_id_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::BundleEntryProto, offset_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::BundleEntryProto, size_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::BundleEntryProto, crc32c_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::BundleEntryProto, slices_),
+};
+static const ::google::protobuf::internal::MigrationSchema schemas[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = {
+  { 0, -1, sizeof(::tensorflow::BundleHeaderProto)},
+  { 8, -1, sizeof(::tensorflow::BundleEntryProto)},
+};
+
+static ::google::protobuf::Message const * const file_default_instances[] = {
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_BundleHeaderProto_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_BundleEntryProto_default_instance_),
+};
+
+::google::protobuf::internal::AssignDescriptorsTable assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2ftensor_5fbundle_2eproto = {
+  {}, AddDescriptors_tensorflow_2fcore_2fprotobuf_2ftensor_5fbundle_2eproto, "tensorflow/core/protobuf/tensor_bundle.proto", schemas,
+  file_default_instances, TableStruct_tensorflow_2fcore_2fprotobuf_2ftensor_5fbundle_2eproto::offsets,
+  file_level_metadata_tensorflow_2fcore_2fprotobuf_2ftensor_5fbundle_2eproto, 2, file_level_enum_descriptors_tensorflow_2fcore_2fprotobuf_2ftensor_5fbundle_2eproto, file_level_service_descriptors_tensorflow_2fcore_2fprotobuf_2ftensor_5fbundle_2eproto,
+};
+
+::google::protobuf::internal::DescriptorTable descriptor_table_tensorflow_2fcore_2fprotobuf_2ftensor_5fbundle_2eproto = {
+  false, InitDefaults_tensorflow_2fcore_2fprotobuf_2ftensor_5fbundle_2eproto, 
+  "\n,tensorflow/core/protobuf/tensor_bundle"
+  ".proto\022\ntensorflow\032,tensorflow/core/fram"
+  "ework/tensor_shape.proto\032,tensorflow/cor"
+  "e/framework/tensor_slice.proto\032%tensorfl"
+  "ow/core/framework/types.proto\032(tensorflo"
+  "w/core/framework/versions.proto\"\261\001\n\021Bund"
+  "leHeaderProto\022\022\n\nnum_shards\030\001 \001(\005\022<\n\nend"
+  "ianness\030\002 \001(\0162(.tensorflow.BundleHeaderP"
+  "roto.Endianness\022\'\n\007version\030\003 \001(\0132\026.tenso"
+  "rflow.VersionDef\"!\n\nEndianness\022\n\n\006LITTLE"
+  "\020\000\022\007\n\003BIG\020\001\"\322\001\n\020BundleEntryProto\022#\n\005dtyp"
+  "e\030\001 \001(\0162\024.tensorflow.DataType\022+\n\005shape\030\002"
+  " \001(\0132\034.tensorflow.TensorShapeProto\022\020\n\010sh"
+  "ard_id\030\003 \001(\005\022\016\n\006offset\030\004 \001(\003\022\014\n\004size\030\005 \001"
+  "(\003\022\016\n\006crc32c\030\006 \001(\007\022,\n\006slices\030\007 \003(\0132\034.ten"
+  "sorflow.TensorSliceProtoBl\n\023org.tensorfl"
+  "ow.utilB\022TensorBundleProtosP\001Z<github.co"
+  "m/tensorflow/tensorflow/tensorflow/go/co"
+  "re/protobuf\370\001\001b\006proto3"
+,
+  "tensorflow/core/protobuf/tensor_bundle.proto", &assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2ftensor_5fbundle_2eproto, 742,
+};
+
+void AddDescriptors_tensorflow_2fcore_2fprotobuf_2ftensor_5fbundle_2eproto() {
+  static constexpr ::google::protobuf::internal::InitFunc deps[4] =
+  {
+    ::AddDescriptors_tensorflow_2fcore_2fframework_2ftensor_5fshape_2eproto,
+    ::AddDescriptors_tensorflow_2fcore_2fframework_2ftensor_5fslice_2eproto,
+    ::AddDescriptors_tensorflow_2fcore_2fframework_2ftypes_2eproto,
+    ::AddDescriptors_tensorflow_2fcore_2fframework_2fversions_2eproto,
+  };
+ ::google::protobuf::internal::AddDescriptors(&descriptor_table_tensorflow_2fcore_2fprotobuf_2ftensor_5fbundle_2eproto, deps, 4);
+}
+
+// Force running AddDescriptors() at dynamic initialization time.
+static bool dynamic_init_dummy_tensorflow_2fcore_2fprotobuf_2ftensor_5fbundle_2eproto = []() { AddDescriptors_tensorflow_2fcore_2fprotobuf_2ftensor_5fbundle_2eproto(); return true; }();
+namespace tensorflow {
+const ::google::protobuf::EnumDescriptor* BundleHeaderProto_Endianness_descriptor() {
+  ::google::protobuf::internal::AssignDescriptors(&assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2ftensor_5fbundle_2eproto);
+  return file_level_enum_descriptors_tensorflow_2fcore_2fprotobuf_2ftensor_5fbundle_2eproto[0];
+}
+bool BundleHeaderProto_Endianness_IsValid(int value) {
+  switch (value) {
+    case 0:
+    case 1:
+      return true;
+    default:
+      return false;
+  }
+}
+
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const BundleHeaderProto_Endianness BundleHeaderProto::LITTLE;
+const BundleHeaderProto_Endianness BundleHeaderProto::BIG;
+const BundleHeaderProto_Endianness BundleHeaderProto::Endianness_MIN;
+const BundleHeaderProto_Endianness BundleHeaderProto::Endianness_MAX;
+const int BundleHeaderProto::Endianness_ARRAYSIZE;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+// ===================================================================
+
+void BundleHeaderProto::InitAsDefaultInstance() {
+  ::tensorflow::_BundleHeaderProto_default_instance_._instance.get_mutable()->version_ = const_cast< ::tensorflow::VersionDef*>(
+      ::tensorflow::VersionDef::internal_default_instance());
+}
+class BundleHeaderProto::HasBitSetters {
+ public:
+  static const ::tensorflow::VersionDef& version(const BundleHeaderProto* msg);
+};
+
+const ::tensorflow::VersionDef&
+BundleHeaderProto::HasBitSetters::version(const BundleHeaderProto* msg) {
+  return *msg->version_;
+}
+void BundleHeaderProto::unsafe_arena_set_allocated_version(
+    ::tensorflow::VersionDef* version) {
+  if (GetArenaNoVirtual() == NULL) {
+    delete version_;
+  }
+  version_ = version;
+  if (version) {
+    
+  } else {
+    
+  }
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.BundleHeaderProto.version)
+}
+void BundleHeaderProto::clear_version() {
+  if (GetArenaNoVirtual() == NULL && version_ != NULL) {
+    delete version_;
+  }
+  version_ = NULL;
+}
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int BundleHeaderProto::kNumShardsFieldNumber;
+const int BundleHeaderProto::kEndiannessFieldNumber;
+const int BundleHeaderProto::kVersionFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+BundleHeaderProto::BundleHeaderProto()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.BundleHeaderProto)
+}
+BundleHeaderProto::BundleHeaderProto(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.BundleHeaderProto)
+}
+BundleHeaderProto::BundleHeaderProto(const BundleHeaderProto& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  if (from.has_version()) {
+    version_ = new ::tensorflow::VersionDef(*from.version_);
+  } else {
+    version_ = NULL;
+  }
+  ::memcpy(&num_shards_, &from.num_shards_,
+    static_cast<size_t>(reinterpret_cast<char*>(&endianness_) -
+    reinterpret_cast<char*>(&num_shards_)) + sizeof(endianness_));
+  // @@protoc_insertion_point(copy_constructor:tensorflow.BundleHeaderProto)
+}
+
+void BundleHeaderProto::SharedCtor() {
+  ::google::protobuf::internal::InitSCC(
+      &scc_info_BundleHeaderProto_tensorflow_2fcore_2fprotobuf_2ftensor_5fbundle_2eproto.base);
+  ::memset(&version_, 0, static_cast<size_t>(
+      reinterpret_cast<char*>(&endianness_) -
+      reinterpret_cast<char*>(&version_)) + sizeof(endianness_));
+}
+
+BundleHeaderProto::~BundleHeaderProto() {
+  // @@protoc_insertion_point(destructor:tensorflow.BundleHeaderProto)
+  SharedDtor();
+}
+
+void BundleHeaderProto::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+  if (this != internal_default_instance()) delete version_;
+}
+
+void BundleHeaderProto::ArenaDtor(void* object) {
+  BundleHeaderProto* _this = reinterpret_cast< BundleHeaderProto* >(object);
+  (void)_this;
+}
+void BundleHeaderProto::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void BundleHeaderProto::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const BundleHeaderProto& BundleHeaderProto::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_BundleHeaderProto_tensorflow_2fcore_2fprotobuf_2ftensor_5fbundle_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void BundleHeaderProto::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.BundleHeaderProto)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  if (GetArenaNoVirtual() == NULL && version_ != NULL) {
+    delete version_;
+  }
+  version_ = NULL;
+  ::memset(&num_shards_, 0, static_cast<size_t>(
+      reinterpret_cast<char*>(&endianness_) -
+      reinterpret_cast<char*>(&num_shards_)) + sizeof(endianness_));
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* BundleHeaderProto::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<BundleHeaderProto*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // int32 num_shards = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 8) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::google::protobuf::int32 value = val;
+        msg->set_num_shards(value);
+        break;
+      }
+      // .tensorflow.BundleHeaderProto.Endianness endianness = 2;
+      case 2: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 16) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::tensorflow::BundleHeaderProto_Endianness value = static_cast<::tensorflow::BundleHeaderProto_Endianness>(val);
+        msg->set_endianness(value);
+        break;
+      }
+      // .tensorflow.VersionDef version = 3;
+      case 3: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 26) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        parser_till_end = ::tensorflow::VersionDef::_InternalParse;
+        object = msg->mutable_version();
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                       ptr, newend);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+        ptr = newend;
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool BundleHeaderProto::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.BundleHeaderProto)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // int32 num_shards = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (8 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
+                 input, &num_shards_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // .tensorflow.BundleHeaderProto.Endianness endianness = 2;
+      case 2: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (16 & 0xFF)) {
+          int value = 0;
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>(
+                 input, &value)));
+          set_endianness(static_cast< ::tensorflow::BundleHeaderProto_Endianness >(value));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // .tensorflow.VersionDef version = 3;
+      case 3: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (26 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+               input, mutable_version()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.BundleHeaderProto)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.BundleHeaderProto)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void BundleHeaderProto::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.BundleHeaderProto)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // int32 num_shards = 1;
+  if (this->num_shards() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt32(1, this->num_shards(), output);
+  }
+
+  // .tensorflow.BundleHeaderProto.Endianness endianness = 2;
+  if (this->endianness() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteEnum(
+      2, this->endianness(), output);
+  }
+
+  // .tensorflow.VersionDef version = 3;
+  if (this->has_version()) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      3, HasBitSetters::version(this), output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.BundleHeaderProto)
+}
+
+::google::protobuf::uint8* BundleHeaderProto::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.BundleHeaderProto)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // int32 num_shards = 1;
+  if (this->num_shards() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt32ToArray(1, this->num_shards(), target);
+  }
+
+  // .tensorflow.BundleHeaderProto.Endianness endianness = 2;
+  if (this->endianness() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteEnumToArray(
+      2, this->endianness(), target);
+  }
+
+  // .tensorflow.VersionDef version = 3;
+  if (this->has_version()) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        3, HasBitSetters::version(this), deterministic, target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.BundleHeaderProto)
+  return target;
+}
+
+size_t BundleHeaderProto::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.BundleHeaderProto)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // .tensorflow.VersionDef version = 3;
+  if (this->has_version()) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::MessageSize(
+        *version_);
+  }
+
+  // int32 num_shards = 1;
+  if (this->num_shards() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::Int32Size(
+        this->num_shards());
+  }
+
+  // .tensorflow.BundleHeaderProto.Endianness endianness = 2;
+  if (this->endianness() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::EnumSize(this->endianness());
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void BundleHeaderProto::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.BundleHeaderProto)
+  GOOGLE_DCHECK_NE(&from, this);
+  const BundleHeaderProto* source =
+      ::google::protobuf::DynamicCastToGenerated<BundleHeaderProto>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.BundleHeaderProto)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.BundleHeaderProto)
+    MergeFrom(*source);
+  }
+}
+
+void BundleHeaderProto::MergeFrom(const BundleHeaderProto& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.BundleHeaderProto)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  if (from.has_version()) {
+    mutable_version()->::tensorflow::VersionDef::MergeFrom(from.version());
+  }
+  if (from.num_shards() != 0) {
+    set_num_shards(from.num_shards());
+  }
+  if (from.endianness() != 0) {
+    set_endianness(from.endianness());
+  }
+}
+
+void BundleHeaderProto::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.BundleHeaderProto)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void BundleHeaderProto::CopyFrom(const BundleHeaderProto& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.BundleHeaderProto)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool BundleHeaderProto::IsInitialized() const {
+  return true;
+}
+
+void BundleHeaderProto::Swap(BundleHeaderProto* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    BundleHeaderProto* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void BundleHeaderProto::UnsafeArenaSwap(BundleHeaderProto* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void BundleHeaderProto::InternalSwap(BundleHeaderProto* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  swap(version_, other->version_);
+  swap(num_shards_, other->num_shards_);
+  swap(endianness_, other->endianness_);
+}
+
+::google::protobuf::Metadata BundleHeaderProto::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2ftensor_5fbundle_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fprotobuf_2ftensor_5fbundle_2eproto[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+void BundleEntryProto::InitAsDefaultInstance() {
+  ::tensorflow::_BundleEntryProto_default_instance_._instance.get_mutable()->shape_ = const_cast< ::tensorflow::TensorShapeProto*>(
+      ::tensorflow::TensorShapeProto::internal_default_instance());
+}
+class BundleEntryProto::HasBitSetters {
+ public:
+  static const ::tensorflow::TensorShapeProto& shape(const BundleEntryProto* msg);
+};
+
+const ::tensorflow::TensorShapeProto&
+BundleEntryProto::HasBitSetters::shape(const BundleEntryProto* msg) {
+  return *msg->shape_;
+}
+void BundleEntryProto::unsafe_arena_set_allocated_shape(
+    ::tensorflow::TensorShapeProto* shape) {
+  if (GetArenaNoVirtual() == NULL) {
+    delete shape_;
+  }
+  shape_ = shape;
+  if (shape) {
+    
+  } else {
+    
+  }
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.BundleEntryProto.shape)
+}
+void BundleEntryProto::clear_shape() {
+  if (GetArenaNoVirtual() == NULL && shape_ != NULL) {
+    delete shape_;
+  }
+  shape_ = NULL;
+}
+void BundleEntryProto::clear_slices() {
+  slices_.Clear();
+}
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int BundleEntryProto::kDtypeFieldNumber;
+const int BundleEntryProto::kShapeFieldNumber;
+const int BundleEntryProto::kShardIdFieldNumber;
+const int BundleEntryProto::kOffsetFieldNumber;
+const int BundleEntryProto::kSizeFieldNumber;
+const int BundleEntryProto::kCrc32CFieldNumber;
+const int BundleEntryProto::kSlicesFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+BundleEntryProto::BundleEntryProto()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.BundleEntryProto)
+}
+BundleEntryProto::BundleEntryProto(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena),
+  slices_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.BundleEntryProto)
+}
+BundleEntryProto::BundleEntryProto(const BundleEntryProto& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL),
+      slices_(from.slices_) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  if (from.has_shape()) {
+    shape_ = new ::tensorflow::TensorShapeProto(*from.shape_);
+  } else {
+    shape_ = NULL;
+  }
+  ::memcpy(&dtype_, &from.dtype_,
+    static_cast<size_t>(reinterpret_cast<char*>(&crc32c_) -
+    reinterpret_cast<char*>(&dtype_)) + sizeof(crc32c_));
+  // @@protoc_insertion_point(copy_constructor:tensorflow.BundleEntryProto)
+}
+
+void BundleEntryProto::SharedCtor() {
+  ::google::protobuf::internal::InitSCC(
+      &scc_info_BundleEntryProto_tensorflow_2fcore_2fprotobuf_2ftensor_5fbundle_2eproto.base);
+  ::memset(&shape_, 0, static_cast<size_t>(
+      reinterpret_cast<char*>(&crc32c_) -
+      reinterpret_cast<char*>(&shape_)) + sizeof(crc32c_));
+}
+
+BundleEntryProto::~BundleEntryProto() {
+  // @@protoc_insertion_point(destructor:tensorflow.BundleEntryProto)
+  SharedDtor();
+}
+
+void BundleEntryProto::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+  if (this != internal_default_instance()) delete shape_;
+}
+
+void BundleEntryProto::ArenaDtor(void* object) {
+  BundleEntryProto* _this = reinterpret_cast< BundleEntryProto* >(object);
+  (void)_this;
+}
+void BundleEntryProto::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void BundleEntryProto::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const BundleEntryProto& BundleEntryProto::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_BundleEntryProto_tensorflow_2fcore_2fprotobuf_2ftensor_5fbundle_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void BundleEntryProto::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.BundleEntryProto)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  slices_.Clear();
+  if (GetArenaNoVirtual() == NULL && shape_ != NULL) {
+    delete shape_;
+  }
+  shape_ = NULL;
+  ::memset(&dtype_, 0, static_cast<size_t>(
+      reinterpret_cast<char*>(&crc32c_) -
+      reinterpret_cast<char*>(&dtype_)) + sizeof(crc32c_));
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* BundleEntryProto::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<BundleEntryProto*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // .tensorflow.DataType dtype = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 8) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::tensorflow::DataType value = static_cast<::tensorflow::DataType>(val);
+        msg->set_dtype(value);
+        break;
+      }
+      // .tensorflow.TensorShapeProto shape = 2;
+      case 2: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 18) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        parser_till_end = ::tensorflow::TensorShapeProto::_InternalParse;
+        object = msg->mutable_shape();
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                       ptr, newend);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+        ptr = newend;
+        break;
+      }
+      // int32 shard_id = 3;
+      case 3: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 24) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::google::protobuf::int32 value = val;
+        msg->set_shard_id(value);
+        break;
+      }
+      // int64 offset = 4;
+      case 4: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 32) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::google::protobuf::int64 value = val;
+        msg->set_offset(value);
+        break;
+      }
+      // int64 size = 5;
+      case 5: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 40) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::google::protobuf::int64 value = val;
+        msg->set_size(value);
+        break;
+      }
+      // fixed32 crc32c = 6;
+      case 6: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 53) goto handle_unusual;
+        ::google::protobuf::uint32 val;
+        std::memcpy(&val, ptr, 4);
+        ptr += 4;
+        msg->set_crc32c(val);
+        break;
+      }
+      // repeated .tensorflow.TensorSliceProto slices = 7;
+      case 7: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 58) goto handle_unusual;
+        do {
+          ptr = Varint::Parse32Inline(ptr, &size);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          parser_till_end = ::tensorflow::TensorSliceProto::_InternalParse;
+          object = msg->add_slices();
+          if (size > end - ptr) goto len_delim_till_end;
+          auto newend = ptr + size;
+          bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                         ptr, newend);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          ptr = newend;
+          if (ptr >= end) break;
+        } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 58 && (ptr += 1));
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool BundleEntryProto::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.BundleEntryProto)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // .tensorflow.DataType dtype = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (8 & 0xFF)) {
+          int value = 0;
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>(
+                 input, &value)));
+          set_dtype(static_cast< ::tensorflow::DataType >(value));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // .tensorflow.TensorShapeProto shape = 2;
+      case 2: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (18 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+               input, mutable_shape()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // int32 shard_id = 3;
+      case 3: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (24 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
+                 input, &shard_id_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // int64 offset = 4;
+      case 4: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (32 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>(
+                 input, &offset_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // int64 size = 5;
+      case 5: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (40 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>(
+                 input, &size_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // fixed32 crc32c = 6;
+      case 6: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (53 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_FIXED32>(
+                 input, &crc32c_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // repeated .tensorflow.TensorSliceProto slices = 7;
+      case 7: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (58 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+                input, add_slices()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.BundleEntryProto)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.BundleEntryProto)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void BundleEntryProto::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.BundleEntryProto)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // .tensorflow.DataType dtype = 1;
+  if (this->dtype() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteEnum(
+      1, this->dtype(), output);
+  }
+
+  // .tensorflow.TensorShapeProto shape = 2;
+  if (this->has_shape()) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      2, HasBitSetters::shape(this), output);
+  }
+
+  // int32 shard_id = 3;
+  if (this->shard_id() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt32(3, this->shard_id(), output);
+  }
+
+  // int64 offset = 4;
+  if (this->offset() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt64(4, this->offset(), output);
+  }
+
+  // int64 size = 5;
+  if (this->size() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt64(5, this->size(), output);
+  }
+
+  // fixed32 crc32c = 6;
+  if (this->crc32c() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteFixed32(6, this->crc32c(), output);
+  }
+
+  // repeated .tensorflow.TensorSliceProto slices = 7;
+  for (unsigned int i = 0,
+      n = static_cast<unsigned int>(this->slices_size()); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      7,
+      this->slices(static_cast<int>(i)),
+      output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.BundleEntryProto)
+}
+
+::google::protobuf::uint8* BundleEntryProto::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.BundleEntryProto)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // .tensorflow.DataType dtype = 1;
+  if (this->dtype() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteEnumToArray(
+      1, this->dtype(), target);
+  }
+
+  // .tensorflow.TensorShapeProto shape = 2;
+  if (this->has_shape()) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        2, HasBitSetters::shape(this), deterministic, target);
+  }
+
+  // int32 shard_id = 3;
+  if (this->shard_id() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt32ToArray(3, this->shard_id(), target);
+  }
+
+  // int64 offset = 4;
+  if (this->offset() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt64ToArray(4, this->offset(), target);
+  }
+
+  // int64 size = 5;
+  if (this->size() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt64ToArray(5, this->size(), target);
+  }
+
+  // fixed32 crc32c = 6;
+  if (this->crc32c() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteFixed32ToArray(6, this->crc32c(), target);
+  }
+
+  // repeated .tensorflow.TensorSliceProto slices = 7;
+  for (unsigned int i = 0,
+      n = static_cast<unsigned int>(this->slices_size()); i < n; i++) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        7, this->slices(static_cast<int>(i)), deterministic, target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.BundleEntryProto)
+  return target;
+}
+
+size_t BundleEntryProto::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.BundleEntryProto)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // repeated .tensorflow.TensorSliceProto slices = 7;
+  {
+    unsigned int count = static_cast<unsigned int>(this->slices_size());
+    total_size += 1UL * count;
+    for (unsigned int i = 0; i < count; i++) {
+      total_size +=
+        ::google::protobuf::internal::WireFormatLite::MessageSize(
+          this->slices(static_cast<int>(i)));
+    }
+  }
+
+  // .tensorflow.TensorShapeProto shape = 2;
+  if (this->has_shape()) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::MessageSize(
+        *shape_);
+  }
+
+  // .tensorflow.DataType dtype = 1;
+  if (this->dtype() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::EnumSize(this->dtype());
+  }
+
+  // int32 shard_id = 3;
+  if (this->shard_id() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::Int32Size(
+        this->shard_id());
+  }
+
+  // int64 offset = 4;
+  if (this->offset() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::Int64Size(
+        this->offset());
+  }
+
+  // int64 size = 5;
+  if (this->size() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::Int64Size(
+        this->size());
+  }
+
+  // fixed32 crc32c = 6;
+  if (this->crc32c() != 0) {
+    total_size += 1 + 4;
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void BundleEntryProto::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.BundleEntryProto)
+  GOOGLE_DCHECK_NE(&from, this);
+  const BundleEntryProto* source =
+      ::google::protobuf::DynamicCastToGenerated<BundleEntryProto>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.BundleEntryProto)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.BundleEntryProto)
+    MergeFrom(*source);
+  }
+}
+
+void BundleEntryProto::MergeFrom(const BundleEntryProto& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.BundleEntryProto)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  slices_.MergeFrom(from.slices_);
+  if (from.has_shape()) {
+    mutable_shape()->::tensorflow::TensorShapeProto::MergeFrom(from.shape());
+  }
+  if (from.dtype() != 0) {
+    set_dtype(from.dtype());
+  }
+  if (from.shard_id() != 0) {
+    set_shard_id(from.shard_id());
+  }
+  if (from.offset() != 0) {
+    set_offset(from.offset());
+  }
+  if (from.size() != 0) {
+    set_size(from.size());
+  }
+  if (from.crc32c() != 0) {
+    set_crc32c(from.crc32c());
+  }
+}
+
+void BundleEntryProto::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.BundleEntryProto)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void BundleEntryProto::CopyFrom(const BundleEntryProto& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.BundleEntryProto)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool BundleEntryProto::IsInitialized() const {
+  return true;
+}
+
+void BundleEntryProto::Swap(BundleEntryProto* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    BundleEntryProto* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void BundleEntryProto::UnsafeArenaSwap(BundleEntryProto* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void BundleEntryProto::InternalSwap(BundleEntryProto* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  CastToBase(&slices_)->InternalSwap(CastToBase(&other->slices_));
+  swap(shape_, other->shape_);
+  swap(dtype_, other->dtype_);
+  swap(shard_id_, other->shard_id_);
+  swap(offset_, other->offset_);
+  swap(size_, other->size_);
+  swap(crc32c_, other->crc32c_);
+}
+
+::google::protobuf::Metadata BundleEntryProto::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2ftensor_5fbundle_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fprotobuf_2ftensor_5fbundle_2eproto[kIndexInFileMessages];
+}
+
+
+// @@protoc_insertion_point(namespace_scope)
+}  // namespace tensorflow
+namespace google {
+namespace protobuf {
+template<> PROTOBUF_NOINLINE ::tensorflow::BundleHeaderProto* Arena::CreateMaybeMessage< ::tensorflow::BundleHeaderProto >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::BundleHeaderProto >(arena);
+}
+template<> PROTOBUF_NOINLINE ::tensorflow::BundleEntryProto* Arena::CreateMaybeMessage< ::tensorflow::BundleEntryProto >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::BundleEntryProto >(arena);
+}
+}  // namespace protobuf
+}  // namespace google
+
+// @@protoc_insertion_point(global_scope)
+#include <google/protobuf/port_undef.inc>
diff --git a/tensorflow/core/protobuf/tensor_bundle.pb.h b/tensorflow/core/protobuf/tensor_bundle.pb.h
new file mode 100644 (file)
index 0000000..9a6201c
--- /dev/null
@@ -0,0 +1,722 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: tensorflow/core/protobuf/tensor_bundle.proto
+
+#ifndef PROTOBUF_INCLUDED_tensorflow_2fcore_2fprotobuf_2ftensor_5fbundle_2eproto
+#define PROTOBUF_INCLUDED_tensorflow_2fcore_2fprotobuf_2ftensor_5fbundle_2eproto
+
+#include <limits>
+#include <string>
+
+#include <google/protobuf/port_def.inc>
+#if PROTOBUF_VERSION < 3006001
+#error This file was generated by a newer version of protoc which is
+#error incompatible with your Protocol Buffer headers. Please update
+#error your headers.
+#endif
+#if 3006001 < PROTOBUF_MIN_PROTOC_VERSION
+#error This file was generated by an older version of protoc which is
+#error incompatible with your Protocol Buffer headers. Please
+#error regenerate this file with a newer version of protoc.
+#endif
+
+#include <google/protobuf/port_undef.inc>
+#include <google/protobuf/io/coded_stream.h>
+#include <google/protobuf/arena.h>
+#include <google/protobuf/arenastring.h>
+#include <google/protobuf/generated_message_table_driven.h>
+#include <google/protobuf/generated_message_util.h>
+#include <google/protobuf/inlined_string_field.h>
+#include <google/protobuf/metadata.h>
+#include <google/protobuf/message.h>
+#include <google/protobuf/repeated_field.h>  // IWYU pragma: export
+#include <google/protobuf/extension_set.h>  // IWYU pragma: export
+#include <google/protobuf/generated_enum_reflection.h>
+#include <google/protobuf/unknown_field_set.h>
+#include "tensorflow/core/framework/tensor_shape.pb.h"
+#include "tensorflow/core/framework/tensor_slice.pb.h"
+#include "tensorflow/core/framework/types.pb.h"
+#include "tensorflow/core/framework/versions.pb.h"
+// @@protoc_insertion_point(includes)
+#include <google/protobuf/port_def.inc>
+#define PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fprotobuf_2ftensor_5fbundle_2eproto
+
+// Internal implementation detail -- do not use these members.
+struct TableStruct_tensorflow_2fcore_2fprotobuf_2ftensor_5fbundle_2eproto {
+  static const ::google::protobuf::internal::ParseTableField entries[]
+    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
+  static const ::google::protobuf::internal::AuxillaryParseTableField aux[]
+    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
+  static const ::google::protobuf::internal::ParseTable schema[2]
+    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
+  static const ::google::protobuf::internal::FieldMetadata field_metadata[];
+  static const ::google::protobuf::internal::SerializationTable serialization_table[];
+  static const ::google::protobuf::uint32 offsets[];
+};
+void AddDescriptors_tensorflow_2fcore_2fprotobuf_2ftensor_5fbundle_2eproto();
+namespace tensorflow {
+class BundleEntryProto;
+class BundleEntryProtoDefaultTypeInternal;
+extern BundleEntryProtoDefaultTypeInternal _BundleEntryProto_default_instance_;
+class BundleHeaderProto;
+class BundleHeaderProtoDefaultTypeInternal;
+extern BundleHeaderProtoDefaultTypeInternal _BundleHeaderProto_default_instance_;
+}  // namespace tensorflow
+namespace google {
+namespace protobuf {
+template<> ::tensorflow::BundleEntryProto* Arena::CreateMaybeMessage<::tensorflow::BundleEntryProto>(Arena*);
+template<> ::tensorflow::BundleHeaderProto* Arena::CreateMaybeMessage<::tensorflow::BundleHeaderProto>(Arena*);
+}  // namespace protobuf
+}  // namespace google
+namespace tensorflow {
+
+enum BundleHeaderProto_Endianness {
+  BundleHeaderProto_Endianness_LITTLE = 0,
+  BundleHeaderProto_Endianness_BIG = 1,
+  BundleHeaderProto_Endianness_BundleHeaderProto_Endianness_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::google::protobuf::int32>::min(),
+  BundleHeaderProto_Endianness_BundleHeaderProto_Endianness_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::google::protobuf::int32>::max()
+};
+bool BundleHeaderProto_Endianness_IsValid(int value);
+const BundleHeaderProto_Endianness BundleHeaderProto_Endianness_Endianness_MIN = BundleHeaderProto_Endianness_LITTLE;
+const BundleHeaderProto_Endianness BundleHeaderProto_Endianness_Endianness_MAX = BundleHeaderProto_Endianness_BIG;
+const int BundleHeaderProto_Endianness_Endianness_ARRAYSIZE = BundleHeaderProto_Endianness_Endianness_MAX + 1;
+
+const ::google::protobuf::EnumDescriptor* BundleHeaderProto_Endianness_descriptor();
+inline const ::std::string& BundleHeaderProto_Endianness_Name(BundleHeaderProto_Endianness value) {
+  return ::google::protobuf::internal::NameOfEnum(
+    BundleHeaderProto_Endianness_descriptor(), value);
+}
+inline bool BundleHeaderProto_Endianness_Parse(
+    const ::std::string& name, BundleHeaderProto_Endianness* value) {
+  return ::google::protobuf::internal::ParseNamedEnum<BundleHeaderProto_Endianness>(
+    BundleHeaderProto_Endianness_descriptor(), name, value);
+}
+// ===================================================================
+
+class BundleHeaderProto : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.BundleHeaderProto) */ {
+ public:
+  BundleHeaderProto();
+  virtual ~BundleHeaderProto();
+
+  BundleHeaderProto(const BundleHeaderProto& from);
+
+  inline BundleHeaderProto& operator=(const BundleHeaderProto& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  BundleHeaderProto(BundleHeaderProto&& from) noexcept
+    : BundleHeaderProto() {
+    *this = ::std::move(from);
+  }
+
+  inline BundleHeaderProto& operator=(BundleHeaderProto&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const BundleHeaderProto& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const BundleHeaderProto* internal_default_instance() {
+    return reinterpret_cast<const BundleHeaderProto*>(
+               &_BundleHeaderProto_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    0;
+
+  void UnsafeArenaSwap(BundleHeaderProto* other);
+  void Swap(BundleHeaderProto* other);
+  friend void swap(BundleHeaderProto& a, BundleHeaderProto& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline BundleHeaderProto* New() const final {
+    return CreateMaybeMessage<BundleHeaderProto>(NULL);
+  }
+
+  BundleHeaderProto* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<BundleHeaderProto>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const BundleHeaderProto& from);
+  void MergeFrom(const BundleHeaderProto& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(BundleHeaderProto* other);
+  protected:
+  explicit BundleHeaderProto(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  typedef BundleHeaderProto_Endianness Endianness;
+  static const Endianness LITTLE =
+    BundleHeaderProto_Endianness_LITTLE;
+  static const Endianness BIG =
+    BundleHeaderProto_Endianness_BIG;
+  static inline bool Endianness_IsValid(int value) {
+    return BundleHeaderProto_Endianness_IsValid(value);
+  }
+  static const Endianness Endianness_MIN =
+    BundleHeaderProto_Endianness_Endianness_MIN;
+  static const Endianness Endianness_MAX =
+    BundleHeaderProto_Endianness_Endianness_MAX;
+  static const int Endianness_ARRAYSIZE =
+    BundleHeaderProto_Endianness_Endianness_ARRAYSIZE;
+  static inline const ::google::protobuf::EnumDescriptor*
+  Endianness_descriptor() {
+    return BundleHeaderProto_Endianness_descriptor();
+  }
+  static inline const ::std::string& Endianness_Name(Endianness value) {
+    return BundleHeaderProto_Endianness_Name(value);
+  }
+  static inline bool Endianness_Parse(const ::std::string& name,
+      Endianness* value) {
+    return BundleHeaderProto_Endianness_Parse(name, value);
+  }
+
+  // accessors -------------------------------------------------------
+
+  // .tensorflow.VersionDef version = 3;
+  bool has_version() const;
+  void clear_version();
+  static const int kVersionFieldNumber = 3;
+  const ::tensorflow::VersionDef& version() const;
+  ::tensorflow::VersionDef* release_version();
+  ::tensorflow::VersionDef* mutable_version();
+  void set_allocated_version(::tensorflow::VersionDef* version);
+  void unsafe_arena_set_allocated_version(
+      ::tensorflow::VersionDef* version);
+  ::tensorflow::VersionDef* unsafe_arena_release_version();
+
+  // int32 num_shards = 1;
+  void clear_num_shards();
+  static const int kNumShardsFieldNumber = 1;
+  ::google::protobuf::int32 num_shards() const;
+  void set_num_shards(::google::protobuf::int32 value);
+
+  // .tensorflow.BundleHeaderProto.Endianness endianness = 2;
+  void clear_endianness();
+  static const int kEndiannessFieldNumber = 2;
+  ::tensorflow::BundleHeaderProto_Endianness endianness() const;
+  void set_endianness(::tensorflow::BundleHeaderProto_Endianness value);
+
+  // @@protoc_insertion_point(class_scope:tensorflow.BundleHeaderProto)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  ::tensorflow::VersionDef* version_;
+  ::google::protobuf::int32 num_shards_;
+  int endianness_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fprotobuf_2ftensor_5fbundle_2eproto;
+};
+// -------------------------------------------------------------------
+
+class BundleEntryProto : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.BundleEntryProto) */ {
+ public:
+  BundleEntryProto();
+  virtual ~BundleEntryProto();
+
+  BundleEntryProto(const BundleEntryProto& from);
+
+  inline BundleEntryProto& operator=(const BundleEntryProto& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  BundleEntryProto(BundleEntryProto&& from) noexcept
+    : BundleEntryProto() {
+    *this = ::std::move(from);
+  }
+
+  inline BundleEntryProto& operator=(BundleEntryProto&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const BundleEntryProto& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const BundleEntryProto* internal_default_instance() {
+    return reinterpret_cast<const BundleEntryProto*>(
+               &_BundleEntryProto_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    1;
+
+  void UnsafeArenaSwap(BundleEntryProto* other);
+  void Swap(BundleEntryProto* other);
+  friend void swap(BundleEntryProto& a, BundleEntryProto& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline BundleEntryProto* New() const final {
+    return CreateMaybeMessage<BundleEntryProto>(NULL);
+  }
+
+  BundleEntryProto* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<BundleEntryProto>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const BundleEntryProto& from);
+  void MergeFrom(const BundleEntryProto& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(BundleEntryProto* other);
+  protected:
+  explicit BundleEntryProto(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // repeated .tensorflow.TensorSliceProto slices = 7;
+  int slices_size() const;
+  void clear_slices();
+  static const int kSlicesFieldNumber = 7;
+  ::tensorflow::TensorSliceProto* mutable_slices(int index);
+  ::google::protobuf::RepeatedPtrField< ::tensorflow::TensorSliceProto >*
+      mutable_slices();
+  const ::tensorflow::TensorSliceProto& slices(int index) const;
+  ::tensorflow::TensorSliceProto* add_slices();
+  const ::google::protobuf::RepeatedPtrField< ::tensorflow::TensorSliceProto >&
+      slices() const;
+
+  // .tensorflow.TensorShapeProto shape = 2;
+  bool has_shape() const;
+  void clear_shape();
+  static const int kShapeFieldNumber = 2;
+  const ::tensorflow::TensorShapeProto& shape() const;
+  ::tensorflow::TensorShapeProto* release_shape();
+  ::tensorflow::TensorShapeProto* mutable_shape();
+  void set_allocated_shape(::tensorflow::TensorShapeProto* shape);
+  void unsafe_arena_set_allocated_shape(
+      ::tensorflow::TensorShapeProto* shape);
+  ::tensorflow::TensorShapeProto* unsafe_arena_release_shape();
+
+  // .tensorflow.DataType dtype = 1;
+  void clear_dtype();
+  static const int kDtypeFieldNumber = 1;
+  ::tensorflow::DataType dtype() const;
+  void set_dtype(::tensorflow::DataType value);
+
+  // int32 shard_id = 3;
+  void clear_shard_id();
+  static const int kShardIdFieldNumber = 3;
+  ::google::protobuf::int32 shard_id() const;
+  void set_shard_id(::google::protobuf::int32 value);
+
+  // int64 offset = 4;
+  void clear_offset();
+  static const int kOffsetFieldNumber = 4;
+  ::google::protobuf::int64 offset() const;
+  void set_offset(::google::protobuf::int64 value);
+
+  // int64 size = 5;
+  void clear_size();
+  static const int kSizeFieldNumber = 5;
+  ::google::protobuf::int64 size() const;
+  void set_size(::google::protobuf::int64 value);
+
+  // fixed32 crc32c = 6;
+  void clear_crc32c();
+  static const int kCrc32CFieldNumber = 6;
+  ::google::protobuf::uint32 crc32c() const;
+  void set_crc32c(::google::protobuf::uint32 value);
+
+  // @@protoc_insertion_point(class_scope:tensorflow.BundleEntryProto)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  ::google::protobuf::RepeatedPtrField< ::tensorflow::TensorSliceProto > slices_;
+  ::tensorflow::TensorShapeProto* shape_;
+  int dtype_;
+  ::google::protobuf::int32 shard_id_;
+  ::google::protobuf::int64 offset_;
+  ::google::protobuf::int64 size_;
+  ::google::protobuf::uint32 crc32c_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fprotobuf_2ftensor_5fbundle_2eproto;
+};
+// ===================================================================
+
+
+// ===================================================================
+
+#ifdef __GNUC__
+  #pragma GCC diagnostic push
+  #pragma GCC diagnostic ignored "-Wstrict-aliasing"
+#endif  // __GNUC__
+// BundleHeaderProto
+
+// int32 num_shards = 1;
+inline void BundleHeaderProto::clear_num_shards() {
+  num_shards_ = 0;
+}
+inline ::google::protobuf::int32 BundleHeaderProto::num_shards() const {
+  // @@protoc_insertion_point(field_get:tensorflow.BundleHeaderProto.num_shards)
+  return num_shards_;
+}
+inline void BundleHeaderProto::set_num_shards(::google::protobuf::int32 value) {
+  
+  num_shards_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.BundleHeaderProto.num_shards)
+}
+
+// .tensorflow.BundleHeaderProto.Endianness endianness = 2;
+inline void BundleHeaderProto::clear_endianness() {
+  endianness_ = 0;
+}
+inline ::tensorflow::BundleHeaderProto_Endianness BundleHeaderProto::endianness() const {
+  // @@protoc_insertion_point(field_get:tensorflow.BundleHeaderProto.endianness)
+  return static_cast< ::tensorflow::BundleHeaderProto_Endianness >(endianness_);
+}
+inline void BundleHeaderProto::set_endianness(::tensorflow::BundleHeaderProto_Endianness value) {
+  
+  endianness_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.BundleHeaderProto.endianness)
+}
+
+// .tensorflow.VersionDef version = 3;
+inline bool BundleHeaderProto::has_version() const {
+  return this != internal_default_instance() && version_ != NULL;
+}
+inline const ::tensorflow::VersionDef& BundleHeaderProto::version() const {
+  const ::tensorflow::VersionDef* p = version_;
+  // @@protoc_insertion_point(field_get:tensorflow.BundleHeaderProto.version)
+  return p != NULL ? *p : *reinterpret_cast<const ::tensorflow::VersionDef*>(
+      &::tensorflow::_VersionDef_default_instance_);
+}
+inline ::tensorflow::VersionDef* BundleHeaderProto::release_version() {
+  // @@protoc_insertion_point(field_release:tensorflow.BundleHeaderProto.version)
+  
+  ::tensorflow::VersionDef* temp = version_;
+  if (GetArenaNoVirtual() != NULL) {
+    temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
+  }
+  version_ = NULL;
+  return temp;
+}
+inline ::tensorflow::VersionDef* BundleHeaderProto::unsafe_arena_release_version() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.BundleHeaderProto.version)
+  
+  ::tensorflow::VersionDef* temp = version_;
+  version_ = NULL;
+  return temp;
+}
+inline ::tensorflow::VersionDef* BundleHeaderProto::mutable_version() {
+  
+  if (version_ == NULL) {
+    auto* p = CreateMaybeMessage<::tensorflow::VersionDef>(GetArenaNoVirtual());
+    version_ = p;
+  }
+  // @@protoc_insertion_point(field_mutable:tensorflow.BundleHeaderProto.version)
+  return version_;
+}
+inline void BundleHeaderProto::set_allocated_version(::tensorflow::VersionDef* version) {
+  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
+  if (message_arena == NULL) {
+    delete reinterpret_cast< ::google::protobuf::MessageLite*>(version_);
+  }
+  if (version) {
+    ::google::protobuf::Arena* submessage_arena =
+      reinterpret_cast<::google::protobuf::MessageLite*>(version)->GetArena();
+    if (message_arena != submessage_arena) {
+      version = ::google::protobuf::internal::GetOwnedMessage(
+          message_arena, version, submessage_arena);
+    }
+    
+  } else {
+    
+  }
+  version_ = version;
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.BundleHeaderProto.version)
+}
+
+// -------------------------------------------------------------------
+
+// BundleEntryProto
+
+// .tensorflow.DataType dtype = 1;
+inline void BundleEntryProto::clear_dtype() {
+  dtype_ = 0;
+}
+inline ::tensorflow::DataType BundleEntryProto::dtype() const {
+  // @@protoc_insertion_point(field_get:tensorflow.BundleEntryProto.dtype)
+  return static_cast< ::tensorflow::DataType >(dtype_);
+}
+inline void BundleEntryProto::set_dtype(::tensorflow::DataType value) {
+  
+  dtype_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.BundleEntryProto.dtype)
+}
+
+// .tensorflow.TensorShapeProto shape = 2;
+inline bool BundleEntryProto::has_shape() const {
+  return this != internal_default_instance() && shape_ != NULL;
+}
+inline const ::tensorflow::TensorShapeProto& BundleEntryProto::shape() const {
+  const ::tensorflow::TensorShapeProto* p = shape_;
+  // @@protoc_insertion_point(field_get:tensorflow.BundleEntryProto.shape)
+  return p != NULL ? *p : *reinterpret_cast<const ::tensorflow::TensorShapeProto*>(
+      &::tensorflow::_TensorShapeProto_default_instance_);
+}
+inline ::tensorflow::TensorShapeProto* BundleEntryProto::release_shape() {
+  // @@protoc_insertion_point(field_release:tensorflow.BundleEntryProto.shape)
+  
+  ::tensorflow::TensorShapeProto* temp = shape_;
+  if (GetArenaNoVirtual() != NULL) {
+    temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
+  }
+  shape_ = NULL;
+  return temp;
+}
+inline ::tensorflow::TensorShapeProto* BundleEntryProto::unsafe_arena_release_shape() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.BundleEntryProto.shape)
+  
+  ::tensorflow::TensorShapeProto* temp = shape_;
+  shape_ = NULL;
+  return temp;
+}
+inline ::tensorflow::TensorShapeProto* BundleEntryProto::mutable_shape() {
+  
+  if (shape_ == NULL) {
+    auto* p = CreateMaybeMessage<::tensorflow::TensorShapeProto>(GetArenaNoVirtual());
+    shape_ = p;
+  }
+  // @@protoc_insertion_point(field_mutable:tensorflow.BundleEntryProto.shape)
+  return shape_;
+}
+inline void BundleEntryProto::set_allocated_shape(::tensorflow::TensorShapeProto* shape) {
+  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
+  if (message_arena == NULL) {
+    delete reinterpret_cast< ::google::protobuf::MessageLite*>(shape_);
+  }
+  if (shape) {
+    ::google::protobuf::Arena* submessage_arena =
+      reinterpret_cast<::google::protobuf::MessageLite*>(shape)->GetArena();
+    if (message_arena != submessage_arena) {
+      shape = ::google::protobuf::internal::GetOwnedMessage(
+          message_arena, shape, submessage_arena);
+    }
+    
+  } else {
+    
+  }
+  shape_ = shape;
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.BundleEntryProto.shape)
+}
+
+// int32 shard_id = 3;
+inline void BundleEntryProto::clear_shard_id() {
+  shard_id_ = 0;
+}
+inline ::google::protobuf::int32 BundleEntryProto::shard_id() const {
+  // @@protoc_insertion_point(field_get:tensorflow.BundleEntryProto.shard_id)
+  return shard_id_;
+}
+inline void BundleEntryProto::set_shard_id(::google::protobuf::int32 value) {
+  
+  shard_id_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.BundleEntryProto.shard_id)
+}
+
+// int64 offset = 4;
+inline void BundleEntryProto::clear_offset() {
+  offset_ = PROTOBUF_LONGLONG(0);
+}
+inline ::google::protobuf::int64 BundleEntryProto::offset() const {
+  // @@protoc_insertion_point(field_get:tensorflow.BundleEntryProto.offset)
+  return offset_;
+}
+inline void BundleEntryProto::set_offset(::google::protobuf::int64 value) {
+  
+  offset_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.BundleEntryProto.offset)
+}
+
+// int64 size = 5;
+inline void BundleEntryProto::clear_size() {
+  size_ = PROTOBUF_LONGLONG(0);
+}
+inline ::google::protobuf::int64 BundleEntryProto::size() const {
+  // @@protoc_insertion_point(field_get:tensorflow.BundleEntryProto.size)
+  return size_;
+}
+inline void BundleEntryProto::set_size(::google::protobuf::int64 value) {
+  
+  size_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.BundleEntryProto.size)
+}
+
+// fixed32 crc32c = 6;
+inline void BundleEntryProto::clear_crc32c() {
+  crc32c_ = 0u;
+}
+inline ::google::protobuf::uint32 BundleEntryProto::crc32c() const {
+  // @@protoc_insertion_point(field_get:tensorflow.BundleEntryProto.crc32c)
+  return crc32c_;
+}
+inline void BundleEntryProto::set_crc32c(::google::protobuf::uint32 value) {
+  
+  crc32c_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.BundleEntryProto.crc32c)
+}
+
+// repeated .tensorflow.TensorSliceProto slices = 7;
+inline int BundleEntryProto::slices_size() const {
+  return slices_.size();
+}
+inline ::tensorflow::TensorSliceProto* BundleEntryProto::mutable_slices(int index) {
+  // @@protoc_insertion_point(field_mutable:tensorflow.BundleEntryProto.slices)
+  return slices_.Mutable(index);
+}
+inline ::google::protobuf::RepeatedPtrField< ::tensorflow::TensorSliceProto >*
+BundleEntryProto::mutable_slices() {
+  // @@protoc_insertion_point(field_mutable_list:tensorflow.BundleEntryProto.slices)
+  return &slices_;
+}
+inline const ::tensorflow::TensorSliceProto& BundleEntryProto::slices(int index) const {
+  // @@protoc_insertion_point(field_get:tensorflow.BundleEntryProto.slices)
+  return slices_.Get(index);
+}
+inline ::tensorflow::TensorSliceProto* BundleEntryProto::add_slices() {
+  // @@protoc_insertion_point(field_add:tensorflow.BundleEntryProto.slices)
+  return slices_.Add();
+}
+inline const ::google::protobuf::RepeatedPtrField< ::tensorflow::TensorSliceProto >&
+BundleEntryProto::slices() const {
+  // @@protoc_insertion_point(field_list:tensorflow.BundleEntryProto.slices)
+  return slices_;
+}
+
+#ifdef __GNUC__
+  #pragma GCC diagnostic pop
+#endif  // __GNUC__
+// -------------------------------------------------------------------
+
+
+// @@protoc_insertion_point(namespace_scope)
+
+}  // namespace tensorflow
+
+namespace google {
+namespace protobuf {
+
+template <> struct is_proto_enum< ::tensorflow::BundleHeaderProto_Endianness> : ::std::true_type {};
+template <>
+inline const EnumDescriptor* GetEnumDescriptor< ::tensorflow::BundleHeaderProto_Endianness>() {
+  return ::tensorflow::BundleHeaderProto_Endianness_descriptor();
+}
+
+}  // namespace protobuf
+}  // namespace google
+
+// @@protoc_insertion_point(global_scope)
+
+#include <google/protobuf/port_undef.inc>
+#endif  // PROTOBUF_INCLUDED_tensorflow_2fcore_2fprotobuf_2ftensor_5fbundle_2eproto
diff --git a/tensorflow/core/protobuf/tensor_bundle.proto b/tensorflow/core/protobuf/tensor_bundle.proto
new file mode 100644 (file)
index 0000000..681c01b
--- /dev/null
@@ -0,0 +1,64 @@
+syntax = "proto3";
+
+package tensorflow;
+option cc_enable_arenas = true;
+option java_outer_classname = "TensorBundleProtos";
+option java_multiple_files = true;
+option java_package = "org.tensorflow.util";
+option go_package = "github.com/tensorflow/tensorflow/tensorflow/go/core/protobuf";
+import "tensorflow/core/framework/tensor_shape.proto";
+import "tensorflow/core/framework/tensor_slice.proto";
+import "tensorflow/core/framework/types.proto";
+import "tensorflow/core/framework/versions.proto";
+
+// Protos used in the tensor bundle module (tf/core/util/tensor_bundle/).
+
+// Special header that is associated with a bundle.
+//
+// TODO(zongheng,zhifengc): maybe in the future, we can add information about
+// which binary produced this checkpoint, timestamp, etc. Sometime, these can be
+// valuable debugging information. And if needed, these can be used as defensive
+// information ensuring reader (binary version) of the checkpoint and the writer
+// (binary version) must match within certain range, etc.
+message BundleHeaderProto {
+  // Number of data files in the bundle.
+  int32 num_shards = 1;
+
+  // An enum indicating the endianness of the platform that produced this
+  // bundle.  A bundle can only be read by a platform with matching endianness.
+  // Defaults to LITTLE, as most modern platforms are little-endian.
+  //
+  // Affects the binary tensor data bytes only, not the metadata in protobufs.
+  enum Endianness {
+    LITTLE = 0;
+    BIG = 1;
+  }
+  Endianness endianness = 2;
+
+  // Versioning of the tensor bundle format.
+  VersionDef version = 3;
+}
+
+// Describes the metadata related to a checkpointed tensor.
+message BundleEntryProto {
+  // The tensor dtype and shape.
+  DataType dtype = 1;
+  TensorShapeProto shape = 2;
+  // The binary content of the tensor lies in:
+  //   File "shard_id": bytes [offset, offset + size).
+  int32 shard_id = 3;
+  int64 offset = 4;
+  int64 size = 5;
+
+  // The CRC32C checksum of the tensor bytes.
+  fixed32 crc32c = 6;
+
+  // Iff present, this entry represents a partitioned tensor.  The previous
+  // fields are interpreted as follows:
+  //
+  //   "dtype", "shape": describe the full tensor.
+  //   "shard_id", "offset", "size", "crc32c": all IGNORED.
+  //      These information for each slice can be looked up in their own
+  //      BundleEntryProto, keyed by each "slice_name".
+  repeated TensorSliceProto slices = 7;
+}
diff --git a/tensorflow/core/protobuf/tensorflow_server.pb.cc b/tensorflow/core/protobuf/tensorflow_server.pb.cc
new file mode 100644 (file)
index 0000000..ac6e39a
--- /dev/null
@@ -0,0 +1,742 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: tensorflow/core/protobuf/tensorflow_server.proto
+
+#include "tensorflow/core/protobuf/tensorflow_server.pb.h"
+
+#include <algorithm>
+
+#include <google/protobuf/stubs/common.h>
+#include <google/protobuf/io/coded_stream.h>
+#include <google/protobuf/extension_set.h>
+#include <google/protobuf/wire_format_lite_inl.h>
+#include <google/protobuf/descriptor.h>
+#include <google/protobuf/generated_message_reflection.h>
+#include <google/protobuf/reflection_ops.h>
+#include <google/protobuf/wire_format.h>
+// @@protoc_insertion_point(includes)
+#include <google/protobuf/port_def.inc>
+
+extern PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fprotobuf_2fcluster_2eproto ::google::protobuf::internal::SCCInfo<1> scc_info_ClusterDef_tensorflow_2fcore_2fprotobuf_2fcluster_2eproto;
+extern PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto ::google::protobuf::internal::SCCInfo<7> scc_info_ConfigProto_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto;
+namespace tensorflow {
+class ServerDefDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<ServerDef> _instance;
+} _ServerDef_default_instance_;
+}  // namespace tensorflow
+static void InitDefaultsServerDef_tensorflow_2fcore_2fprotobuf_2ftensorflow_5fserver_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_ServerDef_default_instance_;
+    new (ptr) ::tensorflow::ServerDef();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::ServerDef::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<2> scc_info_ServerDef_tensorflow_2fcore_2fprotobuf_2ftensorflow_5fserver_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 2, InitDefaultsServerDef_tensorflow_2fcore_2fprotobuf_2ftensorflow_5fserver_2eproto}, {
+      &scc_info_ClusterDef_tensorflow_2fcore_2fprotobuf_2fcluster_2eproto.base,
+      &scc_info_ConfigProto_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto.base,}};
+
+void InitDefaults_tensorflow_2fcore_2fprotobuf_2ftensorflow_5fserver_2eproto() {
+  ::google::protobuf::internal::InitSCC(&scc_info_ServerDef_tensorflow_2fcore_2fprotobuf_2ftensorflow_5fserver_2eproto.base);
+}
+
+::google::protobuf::Metadata file_level_metadata_tensorflow_2fcore_2fprotobuf_2ftensorflow_5fserver_2eproto[1];
+constexpr ::google::protobuf::EnumDescriptor const** file_level_enum_descriptors_tensorflow_2fcore_2fprotobuf_2ftensorflow_5fserver_2eproto = nullptr;
+constexpr ::google::protobuf::ServiceDescriptor const** file_level_service_descriptors_tensorflow_2fcore_2fprotobuf_2ftensorflow_5fserver_2eproto = nullptr;
+
+const ::google::protobuf::uint32 TableStruct_tensorflow_2fcore_2fprotobuf_2ftensorflow_5fserver_2eproto::offsets[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = {
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::ServerDef, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::ServerDef, cluster_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::ServerDef, job_name_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::ServerDef, task_index_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::ServerDef, default_session_config_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::ServerDef, protocol_),
+};
+static const ::google::protobuf::internal::MigrationSchema schemas[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = {
+  { 0, -1, sizeof(::tensorflow::ServerDef)},
+};
+
+static ::google::protobuf::Message const * const file_default_instances[] = {
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_ServerDef_default_instance_),
+};
+
+::google::protobuf::internal::AssignDescriptorsTable assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2ftensorflow_5fserver_2eproto = {
+  {}, AddDescriptors_tensorflow_2fcore_2fprotobuf_2ftensorflow_5fserver_2eproto, "tensorflow/core/protobuf/tensorflow_server.proto", schemas,
+  file_default_instances, TableStruct_tensorflow_2fcore_2fprotobuf_2ftensorflow_5fserver_2eproto::offsets,
+  file_level_metadata_tensorflow_2fcore_2fprotobuf_2ftensorflow_5fserver_2eproto, 1, file_level_enum_descriptors_tensorflow_2fcore_2fprotobuf_2ftensorflow_5fserver_2eproto, file_level_service_descriptors_tensorflow_2fcore_2fprotobuf_2ftensorflow_5fserver_2eproto,
+};
+
+::google::protobuf::internal::DescriptorTable descriptor_table_tensorflow_2fcore_2fprotobuf_2ftensorflow_5fserver_2eproto = {
+  false, InitDefaults_tensorflow_2fcore_2fprotobuf_2ftensorflow_5fserver_2eproto, 
+  "\n0tensorflow/core/protobuf/tensorflow_se"
+  "rver.proto\022\ntensorflow\032%tensorflow/core/"
+  "protobuf/config.proto\032&tensorflow/core/p"
+  "rotobuf/cluster.proto\"\245\001\n\tServerDef\022\'\n\007c"
+  "luster\030\001 \001(\0132\026.tensorflow.ClusterDef\022\020\n\010"
+  "job_name\030\002 \001(\t\022\022\n\ntask_index\030\003 \001(\005\0227\n\026de"
+  "fault_session_config\030\004 \001(\0132\027.tensorflow."
+  "ConfigProto\022\020\n\010protocol\030\005 \001(\tBm\n\032org.ten"
+  "sorflow.distruntimeB\014ServerProtosP\001Z<git"
+  "hub.com/tensorflow/tensorflow/tensorflow"
+  "/go/core/protobuf\370\001\001b\006proto3"
+,
+  "tensorflow/core/protobuf/tensorflow_server.proto", &assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2ftensorflow_5fserver_2eproto, 428,
+};
+
+void AddDescriptors_tensorflow_2fcore_2fprotobuf_2ftensorflow_5fserver_2eproto() {
+  static constexpr ::google::protobuf::internal::InitFunc deps[2] =
+  {
+    ::AddDescriptors_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto,
+    ::AddDescriptors_tensorflow_2fcore_2fprotobuf_2fcluster_2eproto,
+  };
+ ::google::protobuf::internal::AddDescriptors(&descriptor_table_tensorflow_2fcore_2fprotobuf_2ftensorflow_5fserver_2eproto, deps, 2);
+}
+
+// Force running AddDescriptors() at dynamic initialization time.
+static bool dynamic_init_dummy_tensorflow_2fcore_2fprotobuf_2ftensorflow_5fserver_2eproto = []() { AddDescriptors_tensorflow_2fcore_2fprotobuf_2ftensorflow_5fserver_2eproto(); return true; }();
+namespace tensorflow {
+
+// ===================================================================
+
+void ServerDef::InitAsDefaultInstance() {
+  ::tensorflow::_ServerDef_default_instance_._instance.get_mutable()->cluster_ = const_cast< ::tensorflow::ClusterDef*>(
+      ::tensorflow::ClusterDef::internal_default_instance());
+  ::tensorflow::_ServerDef_default_instance_._instance.get_mutable()->default_session_config_ = const_cast< ::tensorflow::ConfigProto*>(
+      ::tensorflow::ConfigProto::internal_default_instance());
+}
+class ServerDef::HasBitSetters {
+ public:
+  static const ::tensorflow::ClusterDef& cluster(const ServerDef* msg);
+  static const ::tensorflow::ConfigProto& default_session_config(const ServerDef* msg);
+};
+
+const ::tensorflow::ClusterDef&
+ServerDef::HasBitSetters::cluster(const ServerDef* msg) {
+  return *msg->cluster_;
+}
+const ::tensorflow::ConfigProto&
+ServerDef::HasBitSetters::default_session_config(const ServerDef* msg) {
+  return *msg->default_session_config_;
+}
+void ServerDef::unsafe_arena_set_allocated_cluster(
+    ::tensorflow::ClusterDef* cluster) {
+  if (GetArenaNoVirtual() == NULL) {
+    delete cluster_;
+  }
+  cluster_ = cluster;
+  if (cluster) {
+    
+  } else {
+    
+  }
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.ServerDef.cluster)
+}
+void ServerDef::clear_cluster() {
+  if (GetArenaNoVirtual() == NULL && cluster_ != NULL) {
+    delete cluster_;
+  }
+  cluster_ = NULL;
+}
+void ServerDef::unsafe_arena_set_allocated_default_session_config(
+    ::tensorflow::ConfigProto* default_session_config) {
+  if (GetArenaNoVirtual() == NULL) {
+    delete default_session_config_;
+  }
+  default_session_config_ = default_session_config;
+  if (default_session_config) {
+    
+  } else {
+    
+  }
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.ServerDef.default_session_config)
+}
+void ServerDef::clear_default_session_config() {
+  if (GetArenaNoVirtual() == NULL && default_session_config_ != NULL) {
+    delete default_session_config_;
+  }
+  default_session_config_ = NULL;
+}
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int ServerDef::kClusterFieldNumber;
+const int ServerDef::kJobNameFieldNumber;
+const int ServerDef::kTaskIndexFieldNumber;
+const int ServerDef::kDefaultSessionConfigFieldNumber;
+const int ServerDef::kProtocolFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+ServerDef::ServerDef()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.ServerDef)
+}
+ServerDef::ServerDef(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.ServerDef)
+}
+ServerDef::ServerDef(const ServerDef& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  job_name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.job_name().size() > 0) {
+    job_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.job_name(),
+      GetArenaNoVirtual());
+  }
+  protocol_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.protocol().size() > 0) {
+    protocol_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.protocol(),
+      GetArenaNoVirtual());
+  }
+  if (from.has_cluster()) {
+    cluster_ = new ::tensorflow::ClusterDef(*from.cluster_);
+  } else {
+    cluster_ = NULL;
+  }
+  if (from.has_default_session_config()) {
+    default_session_config_ = new ::tensorflow::ConfigProto(*from.default_session_config_);
+  } else {
+    default_session_config_ = NULL;
+  }
+  task_index_ = from.task_index_;
+  // @@protoc_insertion_point(copy_constructor:tensorflow.ServerDef)
+}
+
+void ServerDef::SharedCtor() {
+  ::google::protobuf::internal::InitSCC(
+      &scc_info_ServerDef_tensorflow_2fcore_2fprotobuf_2ftensorflow_5fserver_2eproto.base);
+  job_name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  protocol_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  ::memset(&cluster_, 0, static_cast<size_t>(
+      reinterpret_cast<char*>(&task_index_) -
+      reinterpret_cast<char*>(&cluster_)) + sizeof(task_index_));
+}
+
+ServerDef::~ServerDef() {
+  // @@protoc_insertion_point(destructor:tensorflow.ServerDef)
+  SharedDtor();
+}
+
+void ServerDef::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+  job_name_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  protocol_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (this != internal_default_instance()) delete cluster_;
+  if (this != internal_default_instance()) delete default_session_config_;
+}
+
+void ServerDef::ArenaDtor(void* object) {
+  ServerDef* _this = reinterpret_cast< ServerDef* >(object);
+  (void)_this;
+}
+void ServerDef::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void ServerDef::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const ServerDef& ServerDef::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_ServerDef_tensorflow_2fcore_2fprotobuf_2ftensorflow_5fserver_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void ServerDef::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.ServerDef)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  job_name_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+  protocol_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+  if (GetArenaNoVirtual() == NULL && cluster_ != NULL) {
+    delete cluster_;
+  }
+  cluster_ = NULL;
+  if (GetArenaNoVirtual() == NULL && default_session_config_ != NULL) {
+    delete default_session_config_;
+  }
+  default_session_config_ = NULL;
+  task_index_ = 0;
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* ServerDef::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<ServerDef*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // .tensorflow.ClusterDef cluster = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 10) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        parser_till_end = ::tensorflow::ClusterDef::_InternalParse;
+        object = msg->mutable_cluster();
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                       ptr, newend);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+        ptr = newend;
+        break;
+      }
+      // string job_name = 2;
+      case 2: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 18) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("tensorflow.ServerDef.job_name");
+        parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+        ::std::string* str = msg->mutable_job_name();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+        break;
+      }
+      // int32 task_index = 3;
+      case 3: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 24) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::google::protobuf::int32 value = val;
+        msg->set_task_index(value);
+        break;
+      }
+      // .tensorflow.ConfigProto default_session_config = 4;
+      case 4: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 34) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        parser_till_end = ::tensorflow::ConfigProto::_InternalParse;
+        object = msg->mutable_default_session_config();
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                       ptr, newend);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+        ptr = newend;
+        break;
+      }
+      // string protocol = 5;
+      case 5: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 42) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("tensorflow.ServerDef.protocol");
+        parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+        ::std::string* str = msg->mutable_protocol();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool ServerDef::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.ServerDef)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // .tensorflow.ClusterDef cluster = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (10 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+               input, mutable_cluster()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // string job_name = 2;
+      case 2: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (18 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_job_name()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->job_name().data(), static_cast<int>(this->job_name().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.ServerDef.job_name"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // int32 task_index = 3;
+      case 3: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (24 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
+                 input, &task_index_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // .tensorflow.ConfigProto default_session_config = 4;
+      case 4: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (34 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+               input, mutable_default_session_config()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // string protocol = 5;
+      case 5: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (42 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_protocol()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->protocol().data(), static_cast<int>(this->protocol().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.ServerDef.protocol"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.ServerDef)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.ServerDef)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void ServerDef::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.ServerDef)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // .tensorflow.ClusterDef cluster = 1;
+  if (this->has_cluster()) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      1, HasBitSetters::cluster(this), output);
+  }
+
+  // string job_name = 2;
+  if (this->job_name().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->job_name().data(), static_cast<int>(this->job_name().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.ServerDef.job_name");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      2, this->job_name(), output);
+  }
+
+  // int32 task_index = 3;
+  if (this->task_index() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt32(3, this->task_index(), output);
+  }
+
+  // .tensorflow.ConfigProto default_session_config = 4;
+  if (this->has_default_session_config()) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      4, HasBitSetters::default_session_config(this), output);
+  }
+
+  // string protocol = 5;
+  if (this->protocol().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->protocol().data(), static_cast<int>(this->protocol().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.ServerDef.protocol");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      5, this->protocol(), output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.ServerDef)
+}
+
+::google::protobuf::uint8* ServerDef::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.ServerDef)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // .tensorflow.ClusterDef cluster = 1;
+  if (this->has_cluster()) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        1, HasBitSetters::cluster(this), deterministic, target);
+  }
+
+  // string job_name = 2;
+  if (this->job_name().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->job_name().data(), static_cast<int>(this->job_name().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.ServerDef.job_name");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        2, this->job_name(), target);
+  }
+
+  // int32 task_index = 3;
+  if (this->task_index() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt32ToArray(3, this->task_index(), target);
+  }
+
+  // .tensorflow.ConfigProto default_session_config = 4;
+  if (this->has_default_session_config()) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        4, HasBitSetters::default_session_config(this), deterministic, target);
+  }
+
+  // string protocol = 5;
+  if (this->protocol().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->protocol().data(), static_cast<int>(this->protocol().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.ServerDef.protocol");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        5, this->protocol(), target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.ServerDef)
+  return target;
+}
+
+size_t ServerDef::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.ServerDef)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // string job_name = 2;
+  if (this->job_name().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->job_name());
+  }
+
+  // string protocol = 5;
+  if (this->protocol().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->protocol());
+  }
+
+  // .tensorflow.ClusterDef cluster = 1;
+  if (this->has_cluster()) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::MessageSize(
+        *cluster_);
+  }
+
+  // .tensorflow.ConfigProto default_session_config = 4;
+  if (this->has_default_session_config()) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::MessageSize(
+        *default_session_config_);
+  }
+
+  // int32 task_index = 3;
+  if (this->task_index() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::Int32Size(
+        this->task_index());
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void ServerDef::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.ServerDef)
+  GOOGLE_DCHECK_NE(&from, this);
+  const ServerDef* source =
+      ::google::protobuf::DynamicCastToGenerated<ServerDef>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.ServerDef)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.ServerDef)
+    MergeFrom(*source);
+  }
+}
+
+void ServerDef::MergeFrom(const ServerDef& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.ServerDef)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  if (from.job_name().size() > 0) {
+    set_job_name(from.job_name());
+  }
+  if (from.protocol().size() > 0) {
+    set_protocol(from.protocol());
+  }
+  if (from.has_cluster()) {
+    mutable_cluster()->::tensorflow::ClusterDef::MergeFrom(from.cluster());
+  }
+  if (from.has_default_session_config()) {
+    mutable_default_session_config()->::tensorflow::ConfigProto::MergeFrom(from.default_session_config());
+  }
+  if (from.task_index() != 0) {
+    set_task_index(from.task_index());
+  }
+}
+
+void ServerDef::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.ServerDef)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void ServerDef::CopyFrom(const ServerDef& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.ServerDef)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool ServerDef::IsInitialized() const {
+  return true;
+}
+
+void ServerDef::Swap(ServerDef* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    ServerDef* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void ServerDef::UnsafeArenaSwap(ServerDef* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void ServerDef::InternalSwap(ServerDef* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  job_name_.Swap(&other->job_name_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+  protocol_.Swap(&other->protocol_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+  swap(cluster_, other->cluster_);
+  swap(default_session_config_, other->default_session_config_);
+  swap(task_index_, other->task_index_);
+}
+
+::google::protobuf::Metadata ServerDef::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2ftensorflow_5fserver_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fprotobuf_2ftensorflow_5fserver_2eproto[kIndexInFileMessages];
+}
+
+
+// @@protoc_insertion_point(namespace_scope)
+}  // namespace tensorflow
+namespace google {
+namespace protobuf {
+template<> PROTOBUF_NOINLINE ::tensorflow::ServerDef* Arena::CreateMaybeMessage< ::tensorflow::ServerDef >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::ServerDef >(arena);
+}
+}  // namespace protobuf
+}  // namespace google
+
+// @@protoc_insertion_point(global_scope)
+#include <google/protobuf/port_undef.inc>
diff --git a/tensorflow/core/protobuf/tensorflow_server.pb.h b/tensorflow/core/protobuf/tensorflow_server.pb.h
new file mode 100644 (file)
index 0000000..787cf83
--- /dev/null
@@ -0,0 +1,563 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: tensorflow/core/protobuf/tensorflow_server.proto
+
+#ifndef PROTOBUF_INCLUDED_tensorflow_2fcore_2fprotobuf_2ftensorflow_5fserver_2eproto
+#define PROTOBUF_INCLUDED_tensorflow_2fcore_2fprotobuf_2ftensorflow_5fserver_2eproto
+
+#include <limits>
+#include <string>
+
+#include <google/protobuf/port_def.inc>
+#if PROTOBUF_VERSION < 3006001
+#error This file was generated by a newer version of protoc which is
+#error incompatible with your Protocol Buffer headers. Please update
+#error your headers.
+#endif
+#if 3006001 < PROTOBUF_MIN_PROTOC_VERSION
+#error This file was generated by an older version of protoc which is
+#error incompatible with your Protocol Buffer headers. Please
+#error regenerate this file with a newer version of protoc.
+#endif
+
+#include <google/protobuf/port_undef.inc>
+#include <google/protobuf/io/coded_stream.h>
+#include <google/protobuf/arena.h>
+#include <google/protobuf/arenastring.h>
+#include <google/protobuf/generated_message_table_driven.h>
+#include <google/protobuf/generated_message_util.h>
+#include <google/protobuf/inlined_string_field.h>
+#include <google/protobuf/metadata.h>
+#include <google/protobuf/message.h>
+#include <google/protobuf/repeated_field.h>  // IWYU pragma: export
+#include <google/protobuf/extension_set.h>  // IWYU pragma: export
+#include <google/protobuf/unknown_field_set.h>
+#include "tensorflow/core/protobuf/config.pb.h"
+#include "tensorflow/core/protobuf/cluster.pb.h"
+// @@protoc_insertion_point(includes)
+#include <google/protobuf/port_def.inc>
+#define PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fprotobuf_2ftensorflow_5fserver_2eproto
+
+// Internal implementation detail -- do not use these members.
+struct TableStruct_tensorflow_2fcore_2fprotobuf_2ftensorflow_5fserver_2eproto {
+  static const ::google::protobuf::internal::ParseTableField entries[]
+    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
+  static const ::google::protobuf::internal::AuxillaryParseTableField aux[]
+    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
+  static const ::google::protobuf::internal::ParseTable schema[1]
+    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
+  static const ::google::protobuf::internal::FieldMetadata field_metadata[];
+  static const ::google::protobuf::internal::SerializationTable serialization_table[];
+  static const ::google::protobuf::uint32 offsets[];
+};
+void AddDescriptors_tensorflow_2fcore_2fprotobuf_2ftensorflow_5fserver_2eproto();
+namespace tensorflow {
+class ServerDef;
+class ServerDefDefaultTypeInternal;
+extern ServerDefDefaultTypeInternal _ServerDef_default_instance_;
+}  // namespace tensorflow
+namespace google {
+namespace protobuf {
+template<> ::tensorflow::ServerDef* Arena::CreateMaybeMessage<::tensorflow::ServerDef>(Arena*);
+}  // namespace protobuf
+}  // namespace google
+namespace tensorflow {
+
+// ===================================================================
+
+class ServerDef : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.ServerDef) */ {
+ public:
+  ServerDef();
+  virtual ~ServerDef();
+
+  ServerDef(const ServerDef& from);
+
+  inline ServerDef& operator=(const ServerDef& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  ServerDef(ServerDef&& from) noexcept
+    : ServerDef() {
+    *this = ::std::move(from);
+  }
+
+  inline ServerDef& operator=(ServerDef&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const ServerDef& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const ServerDef* internal_default_instance() {
+    return reinterpret_cast<const ServerDef*>(
+               &_ServerDef_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    0;
+
+  void UnsafeArenaSwap(ServerDef* other);
+  void Swap(ServerDef* other);
+  friend void swap(ServerDef& a, ServerDef& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline ServerDef* New() const final {
+    return CreateMaybeMessage<ServerDef>(NULL);
+  }
+
+  ServerDef* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<ServerDef>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const ServerDef& from);
+  void MergeFrom(const ServerDef& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(ServerDef* other);
+  protected:
+  explicit ServerDef(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // string job_name = 2;
+  void clear_job_name();
+  static const int kJobNameFieldNumber = 2;
+  const ::std::string& job_name() const;
+  void set_job_name(const ::std::string& value);
+  #if LANG_CXX11
+  void set_job_name(::std::string&& value);
+  #endif
+  void set_job_name(const char* value);
+  void set_job_name(const char* value, size_t size);
+  ::std::string* mutable_job_name();
+  ::std::string* release_job_name();
+  void set_allocated_job_name(::std::string* job_name);
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  ::std::string* unsafe_arena_release_job_name();
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  void unsafe_arena_set_allocated_job_name(
+      ::std::string* job_name);
+
+  // string protocol = 5;
+  void clear_protocol();
+  static const int kProtocolFieldNumber = 5;
+  const ::std::string& protocol() const;
+  void set_protocol(const ::std::string& value);
+  #if LANG_CXX11
+  void set_protocol(::std::string&& value);
+  #endif
+  void set_protocol(const char* value);
+  void set_protocol(const char* value, size_t size);
+  ::std::string* mutable_protocol();
+  ::std::string* release_protocol();
+  void set_allocated_protocol(::std::string* protocol);
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  ::std::string* unsafe_arena_release_protocol();
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  void unsafe_arena_set_allocated_protocol(
+      ::std::string* protocol);
+
+  // .tensorflow.ClusterDef cluster = 1;
+  bool has_cluster() const;
+  void clear_cluster();
+  static const int kClusterFieldNumber = 1;
+  const ::tensorflow::ClusterDef& cluster() const;
+  ::tensorflow::ClusterDef* release_cluster();
+  ::tensorflow::ClusterDef* mutable_cluster();
+  void set_allocated_cluster(::tensorflow::ClusterDef* cluster);
+  void unsafe_arena_set_allocated_cluster(
+      ::tensorflow::ClusterDef* cluster);
+  ::tensorflow::ClusterDef* unsafe_arena_release_cluster();
+
+  // .tensorflow.ConfigProto default_session_config = 4;
+  bool has_default_session_config() const;
+  void clear_default_session_config();
+  static const int kDefaultSessionConfigFieldNumber = 4;
+  const ::tensorflow::ConfigProto& default_session_config() const;
+  ::tensorflow::ConfigProto* release_default_session_config();
+  ::tensorflow::ConfigProto* mutable_default_session_config();
+  void set_allocated_default_session_config(::tensorflow::ConfigProto* default_session_config);
+  void unsafe_arena_set_allocated_default_session_config(
+      ::tensorflow::ConfigProto* default_session_config);
+  ::tensorflow::ConfigProto* unsafe_arena_release_default_session_config();
+
+  // int32 task_index = 3;
+  void clear_task_index();
+  static const int kTaskIndexFieldNumber = 3;
+  ::google::protobuf::int32 task_index() const;
+  void set_task_index(::google::protobuf::int32 value);
+
+  // @@protoc_insertion_point(class_scope:tensorflow.ServerDef)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  ::google::protobuf::internal::ArenaStringPtr job_name_;
+  ::google::protobuf::internal::ArenaStringPtr protocol_;
+  ::tensorflow::ClusterDef* cluster_;
+  ::tensorflow::ConfigProto* default_session_config_;
+  ::google::protobuf::int32 task_index_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fprotobuf_2ftensorflow_5fserver_2eproto;
+};
+// ===================================================================
+
+
+// ===================================================================
+
+#ifdef __GNUC__
+  #pragma GCC diagnostic push
+  #pragma GCC diagnostic ignored "-Wstrict-aliasing"
+#endif  // __GNUC__
+// ServerDef
+
+// .tensorflow.ClusterDef cluster = 1;
+inline bool ServerDef::has_cluster() const {
+  return this != internal_default_instance() && cluster_ != NULL;
+}
+inline const ::tensorflow::ClusterDef& ServerDef::cluster() const {
+  const ::tensorflow::ClusterDef* p = cluster_;
+  // @@protoc_insertion_point(field_get:tensorflow.ServerDef.cluster)
+  return p != NULL ? *p : *reinterpret_cast<const ::tensorflow::ClusterDef*>(
+      &::tensorflow::_ClusterDef_default_instance_);
+}
+inline ::tensorflow::ClusterDef* ServerDef::release_cluster() {
+  // @@protoc_insertion_point(field_release:tensorflow.ServerDef.cluster)
+  
+  ::tensorflow::ClusterDef* temp = cluster_;
+  if (GetArenaNoVirtual() != NULL) {
+    temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
+  }
+  cluster_ = NULL;
+  return temp;
+}
+inline ::tensorflow::ClusterDef* ServerDef::unsafe_arena_release_cluster() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.ServerDef.cluster)
+  
+  ::tensorflow::ClusterDef* temp = cluster_;
+  cluster_ = NULL;
+  return temp;
+}
+inline ::tensorflow::ClusterDef* ServerDef::mutable_cluster() {
+  
+  if (cluster_ == NULL) {
+    auto* p = CreateMaybeMessage<::tensorflow::ClusterDef>(GetArenaNoVirtual());
+    cluster_ = p;
+  }
+  // @@protoc_insertion_point(field_mutable:tensorflow.ServerDef.cluster)
+  return cluster_;
+}
+inline void ServerDef::set_allocated_cluster(::tensorflow::ClusterDef* cluster) {
+  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
+  if (message_arena == NULL) {
+    delete reinterpret_cast< ::google::protobuf::MessageLite*>(cluster_);
+  }
+  if (cluster) {
+    ::google::protobuf::Arena* submessage_arena =
+      reinterpret_cast<::google::protobuf::MessageLite*>(cluster)->GetArena();
+    if (message_arena != submessage_arena) {
+      cluster = ::google::protobuf::internal::GetOwnedMessage(
+          message_arena, cluster, submessage_arena);
+    }
+    
+  } else {
+    
+  }
+  cluster_ = cluster;
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.ServerDef.cluster)
+}
+
+// string job_name = 2;
+inline void ServerDef::clear_job_name() {
+  job_name_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline const ::std::string& ServerDef::job_name() const {
+  // @@protoc_insertion_point(field_get:tensorflow.ServerDef.job_name)
+  return job_name_.Get();
+}
+inline void ServerDef::set_job_name(const ::std::string& value) {
+  
+  job_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set:tensorflow.ServerDef.job_name)
+}
+#if LANG_CXX11
+inline void ServerDef::set_job_name(::std::string&& value) {
+  
+  job_name_.Set(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.ServerDef.job_name)
+}
+#endif
+inline void ServerDef::set_job_name(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  job_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
+              GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_char:tensorflow.ServerDef.job_name)
+}
+inline void ServerDef::set_job_name(const char* value,
+    size_t size) {
+  
+  job_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
+      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.ServerDef.job_name)
+}
+inline ::std::string* ServerDef::mutable_job_name() {
+  
+  // @@protoc_insertion_point(field_mutable:tensorflow.ServerDef.job_name)
+  return job_name_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline ::std::string* ServerDef::release_job_name() {
+  // @@protoc_insertion_point(field_release:tensorflow.ServerDef.job_name)
+  
+  return job_name_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline void ServerDef::set_allocated_job_name(::std::string* job_name) {
+  if (job_name != NULL) {
+    
+  } else {
+    
+  }
+  job_name_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), job_name,
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.ServerDef.job_name)
+}
+inline ::std::string* ServerDef::unsafe_arena_release_job_name() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.ServerDef.job_name)
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  
+  return job_name_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      GetArenaNoVirtual());
+}
+inline void ServerDef::unsafe_arena_set_allocated_job_name(
+    ::std::string* job_name) {
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (job_name != NULL) {
+    
+  } else {
+    
+  }
+  job_name_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      job_name, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.ServerDef.job_name)
+}
+
+// int32 task_index = 3;
+inline void ServerDef::clear_task_index() {
+  task_index_ = 0;
+}
+inline ::google::protobuf::int32 ServerDef::task_index() const {
+  // @@protoc_insertion_point(field_get:tensorflow.ServerDef.task_index)
+  return task_index_;
+}
+inline void ServerDef::set_task_index(::google::protobuf::int32 value) {
+  
+  task_index_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.ServerDef.task_index)
+}
+
+// .tensorflow.ConfigProto default_session_config = 4;
+inline bool ServerDef::has_default_session_config() const {
+  return this != internal_default_instance() && default_session_config_ != NULL;
+}
+inline const ::tensorflow::ConfigProto& ServerDef::default_session_config() const {
+  const ::tensorflow::ConfigProto* p = default_session_config_;
+  // @@protoc_insertion_point(field_get:tensorflow.ServerDef.default_session_config)
+  return p != NULL ? *p : *reinterpret_cast<const ::tensorflow::ConfigProto*>(
+      &::tensorflow::_ConfigProto_default_instance_);
+}
+inline ::tensorflow::ConfigProto* ServerDef::release_default_session_config() {
+  // @@protoc_insertion_point(field_release:tensorflow.ServerDef.default_session_config)
+  
+  ::tensorflow::ConfigProto* temp = default_session_config_;
+  if (GetArenaNoVirtual() != NULL) {
+    temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
+  }
+  default_session_config_ = NULL;
+  return temp;
+}
+inline ::tensorflow::ConfigProto* ServerDef::unsafe_arena_release_default_session_config() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.ServerDef.default_session_config)
+  
+  ::tensorflow::ConfigProto* temp = default_session_config_;
+  default_session_config_ = NULL;
+  return temp;
+}
+inline ::tensorflow::ConfigProto* ServerDef::mutable_default_session_config() {
+  
+  if (default_session_config_ == NULL) {
+    auto* p = CreateMaybeMessage<::tensorflow::ConfigProto>(GetArenaNoVirtual());
+    default_session_config_ = p;
+  }
+  // @@protoc_insertion_point(field_mutable:tensorflow.ServerDef.default_session_config)
+  return default_session_config_;
+}
+inline void ServerDef::set_allocated_default_session_config(::tensorflow::ConfigProto* default_session_config) {
+  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
+  if (message_arena == NULL) {
+    delete reinterpret_cast< ::google::protobuf::MessageLite*>(default_session_config_);
+  }
+  if (default_session_config) {
+    ::google::protobuf::Arena* submessage_arena =
+      reinterpret_cast<::google::protobuf::MessageLite*>(default_session_config)->GetArena();
+    if (message_arena != submessage_arena) {
+      default_session_config = ::google::protobuf::internal::GetOwnedMessage(
+          message_arena, default_session_config, submessage_arena);
+    }
+    
+  } else {
+    
+  }
+  default_session_config_ = default_session_config;
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.ServerDef.default_session_config)
+}
+
+// string protocol = 5;
+inline void ServerDef::clear_protocol() {
+  protocol_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline const ::std::string& ServerDef::protocol() const {
+  // @@protoc_insertion_point(field_get:tensorflow.ServerDef.protocol)
+  return protocol_.Get();
+}
+inline void ServerDef::set_protocol(const ::std::string& value) {
+  
+  protocol_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set:tensorflow.ServerDef.protocol)
+}
+#if LANG_CXX11
+inline void ServerDef::set_protocol(::std::string&& value) {
+  
+  protocol_.Set(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.ServerDef.protocol)
+}
+#endif
+inline void ServerDef::set_protocol(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  protocol_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
+              GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_char:tensorflow.ServerDef.protocol)
+}
+inline void ServerDef::set_protocol(const char* value,
+    size_t size) {
+  
+  protocol_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
+      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.ServerDef.protocol)
+}
+inline ::std::string* ServerDef::mutable_protocol() {
+  
+  // @@protoc_insertion_point(field_mutable:tensorflow.ServerDef.protocol)
+  return protocol_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline ::std::string* ServerDef::release_protocol() {
+  // @@protoc_insertion_point(field_release:tensorflow.ServerDef.protocol)
+  
+  return protocol_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline void ServerDef::set_allocated_protocol(::std::string* protocol) {
+  if (protocol != NULL) {
+    
+  } else {
+    
+  }
+  protocol_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), protocol,
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.ServerDef.protocol)
+}
+inline ::std::string* ServerDef::unsafe_arena_release_protocol() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.ServerDef.protocol)
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  
+  return protocol_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      GetArenaNoVirtual());
+}
+inline void ServerDef::unsafe_arena_set_allocated_protocol(
+    ::std::string* protocol) {
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (protocol != NULL) {
+    
+  } else {
+    
+  }
+  protocol_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      protocol, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.ServerDef.protocol)
+}
+
+#ifdef __GNUC__
+  #pragma GCC diagnostic pop
+#endif  // __GNUC__
+
+// @@protoc_insertion_point(namespace_scope)
+
+}  // namespace tensorflow
+
+// @@protoc_insertion_point(global_scope)
+
+#include <google/protobuf/port_undef.inc>
+#endif  // PROTOBUF_INCLUDED_tensorflow_2fcore_2fprotobuf_2ftensorflow_5fserver_2eproto
diff --git a/tensorflow/core/protobuf/tensorflow_server.proto b/tensorflow/core/protobuf/tensorflow_server.proto
new file mode 100644 (file)
index 0000000..be25804
--- /dev/null
@@ -0,0 +1,51 @@
+/* Copyright 2016 The TensorFlow Authors. All Rights Reserved.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+==============================================================================*/
+
+syntax = "proto3";
+
+import "tensorflow/core/protobuf/config.proto";
+import "tensorflow/core/protobuf/cluster.proto";
+
+package tensorflow;
+option cc_enable_arenas = true;
+option java_outer_classname = "ServerProtos";
+option java_multiple_files = true;
+option java_package = "org.tensorflow.distruntime";
+option go_package = "github.com/tensorflow/tensorflow/tensorflow/go/core/protobuf";
+// Defines the configuration of a single TensorFlow server.
+message ServerDef {
+  // The cluster of which this server is a member.
+  ClusterDef cluster = 1;
+
+  // The name of the job of which this server is a member.
+  //
+  // NOTE(mrry): The `cluster` field must contain a `JobDef` with a `name` field
+  // that matches this name.
+  string job_name = 2;
+
+  // The task index of this server in its job.
+  //
+  // NOTE: The `cluster` field must contain a `JobDef` with a matching `name`
+  // and a mapping in its `tasks` field for this index.
+  int32 task_index = 3;
+
+  // The default configuration for sessions that run on this server.
+  ConfigProto default_session_config = 4;
+
+  // The protocol to be used by this server.
+  //
+  // Acceptable values include: "grpc".
+  string protocol = 5;
+}
diff --git a/tensorflow/core/protobuf/transport_options.pb.cc b/tensorflow/core/protobuf/transport_options.pb.cc
new file mode 100644 (file)
index 0000000..d44a451
--- /dev/null
@@ -0,0 +1,384 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: tensorflow/core/protobuf/transport_options.proto
+
+#include "tensorflow/core/protobuf/transport_options.pb.h"
+
+#include <algorithm>
+
+#include <google/protobuf/stubs/common.h>
+#include <google/protobuf/io/coded_stream.h>
+#include <google/protobuf/extension_set.h>
+#include <google/protobuf/wire_format_lite_inl.h>
+#include <google/protobuf/descriptor.h>
+#include <google/protobuf/generated_message_reflection.h>
+#include <google/protobuf/reflection_ops.h>
+#include <google/protobuf/wire_format.h>
+// @@protoc_insertion_point(includes)
+#include <google/protobuf/port_def.inc>
+
+namespace tensorflow {
+class RecvBufRespExtraDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<RecvBufRespExtra> _instance;
+} _RecvBufRespExtra_default_instance_;
+}  // namespace tensorflow
+static void InitDefaultsRecvBufRespExtra_tensorflow_2fcore_2fprotobuf_2ftransport_5foptions_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_RecvBufRespExtra_default_instance_;
+    new (ptr) ::tensorflow::RecvBufRespExtra();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::RecvBufRespExtra::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<0> scc_info_RecvBufRespExtra_tensorflow_2fcore_2fprotobuf_2ftransport_5foptions_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsRecvBufRespExtra_tensorflow_2fcore_2fprotobuf_2ftransport_5foptions_2eproto}, {}};
+
+void InitDefaults_tensorflow_2fcore_2fprotobuf_2ftransport_5foptions_2eproto() {
+  ::google::protobuf::internal::InitSCC(&scc_info_RecvBufRespExtra_tensorflow_2fcore_2fprotobuf_2ftransport_5foptions_2eproto.base);
+}
+
+::google::protobuf::Metadata file_level_metadata_tensorflow_2fcore_2fprotobuf_2ftransport_5foptions_2eproto[1];
+constexpr ::google::protobuf::EnumDescriptor const** file_level_enum_descriptors_tensorflow_2fcore_2fprotobuf_2ftransport_5foptions_2eproto = nullptr;
+constexpr ::google::protobuf::ServiceDescriptor const** file_level_service_descriptors_tensorflow_2fcore_2fprotobuf_2ftransport_5foptions_2eproto = nullptr;
+
+const ::google::protobuf::uint32 TableStruct_tensorflow_2fcore_2fprotobuf_2ftransport_5foptions_2eproto::offsets[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = {
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::RecvBufRespExtra, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::RecvBufRespExtra, tensor_content_),
+};
+static const ::google::protobuf::internal::MigrationSchema schemas[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = {
+  { 0, -1, sizeof(::tensorflow::RecvBufRespExtra)},
+};
+
+static ::google::protobuf::Message const * const file_default_instances[] = {
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_RecvBufRespExtra_default_instance_),
+};
+
+::google::protobuf::internal::AssignDescriptorsTable assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2ftransport_5foptions_2eproto = {
+  {}, AddDescriptors_tensorflow_2fcore_2fprotobuf_2ftransport_5foptions_2eproto, "tensorflow/core/protobuf/transport_options.proto", schemas,
+  file_default_instances, TableStruct_tensorflow_2fcore_2fprotobuf_2ftransport_5foptions_2eproto::offsets,
+  file_level_metadata_tensorflow_2fcore_2fprotobuf_2ftransport_5foptions_2eproto, 1, file_level_enum_descriptors_tensorflow_2fcore_2fprotobuf_2ftransport_5foptions_2eproto, file_level_service_descriptors_tensorflow_2fcore_2fprotobuf_2ftransport_5foptions_2eproto,
+};
+
+::google::protobuf::internal::DescriptorTable descriptor_table_tensorflow_2fcore_2fprotobuf_2ftransport_5foptions_2eproto = {
+  false, InitDefaults_tensorflow_2fcore_2fprotobuf_2ftransport_5foptions_2eproto, 
+  "\n0tensorflow/core/protobuf/transport_opt"
+  "ions.proto\022\ntensorflow\"*\n\020RecvBufRespExt"
+  "ra\022\026\n\016tensor_content\030\001 \001(\014b\006proto3"
+,
+  "tensorflow/core/protobuf/transport_options.proto", &assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2ftransport_5foptions_2eproto, 114,
+};
+
+void AddDescriptors_tensorflow_2fcore_2fprotobuf_2ftransport_5foptions_2eproto() {
+  static constexpr ::google::protobuf::internal::InitFunc deps[1] =
+  {
+  };
+ ::google::protobuf::internal::AddDescriptors(&descriptor_table_tensorflow_2fcore_2fprotobuf_2ftransport_5foptions_2eproto, deps, 0);
+}
+
+// Force running AddDescriptors() at dynamic initialization time.
+static bool dynamic_init_dummy_tensorflow_2fcore_2fprotobuf_2ftransport_5foptions_2eproto = []() { AddDescriptors_tensorflow_2fcore_2fprotobuf_2ftransport_5foptions_2eproto(); return true; }();
+namespace tensorflow {
+
+// ===================================================================
+
+void RecvBufRespExtra::InitAsDefaultInstance() {
+}
+class RecvBufRespExtra::HasBitSetters {
+ public:
+};
+
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int RecvBufRespExtra::kTensorContentFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+RecvBufRespExtra::RecvBufRespExtra()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.RecvBufRespExtra)
+}
+RecvBufRespExtra::RecvBufRespExtra(const RecvBufRespExtra& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  tensor_content_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.tensor_content().size() > 0) {
+    tensor_content_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.tensor_content_);
+  }
+  // @@protoc_insertion_point(copy_constructor:tensorflow.RecvBufRespExtra)
+}
+
+void RecvBufRespExtra::SharedCtor() {
+  ::google::protobuf::internal::InitSCC(
+      &scc_info_RecvBufRespExtra_tensorflow_2fcore_2fprotobuf_2ftransport_5foptions_2eproto.base);
+  tensor_content_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+
+RecvBufRespExtra::~RecvBufRespExtra() {
+  // @@protoc_insertion_point(destructor:tensorflow.RecvBufRespExtra)
+  SharedDtor();
+}
+
+void RecvBufRespExtra::SharedDtor() {
+  tensor_content_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+
+void RecvBufRespExtra::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const RecvBufRespExtra& RecvBufRespExtra::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_RecvBufRespExtra_tensorflow_2fcore_2fprotobuf_2ftransport_5foptions_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void RecvBufRespExtra::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.RecvBufRespExtra)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  tensor_content_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* RecvBufRespExtra::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<RecvBufRespExtra*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // bytes tensor_content = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 10) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        parser_till_end = ::google::protobuf::internal::StringParser;
+        ::std::string* str = msg->mutable_tensor_content();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        str->append(ptr, size);
+        ptr += size;
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool RecvBufRespExtra::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.RecvBufRespExtra)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // bytes tensor_content = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (10 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadBytes(
+                input, this->mutable_tensor_content()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.RecvBufRespExtra)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.RecvBufRespExtra)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void RecvBufRespExtra::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.RecvBufRespExtra)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // bytes tensor_content = 1;
+  if (this->tensor_content().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteBytesMaybeAliased(
+      1, this->tensor_content(), output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.RecvBufRespExtra)
+}
+
+::google::protobuf::uint8* RecvBufRespExtra::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.RecvBufRespExtra)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // bytes tensor_content = 1;
+  if (this->tensor_content().size() > 0) {
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteBytesToArray(
+        1, this->tensor_content(), target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.RecvBufRespExtra)
+  return target;
+}
+
+size_t RecvBufRespExtra::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.RecvBufRespExtra)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // bytes tensor_content = 1;
+  if (this->tensor_content().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::BytesSize(
+        this->tensor_content());
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void RecvBufRespExtra::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.RecvBufRespExtra)
+  GOOGLE_DCHECK_NE(&from, this);
+  const RecvBufRespExtra* source =
+      ::google::protobuf::DynamicCastToGenerated<RecvBufRespExtra>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.RecvBufRespExtra)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.RecvBufRespExtra)
+    MergeFrom(*source);
+  }
+}
+
+void RecvBufRespExtra::MergeFrom(const RecvBufRespExtra& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.RecvBufRespExtra)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  if (from.tensor_content().size() > 0) {
+
+    tensor_content_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.tensor_content_);
+  }
+}
+
+void RecvBufRespExtra::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.RecvBufRespExtra)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void RecvBufRespExtra::CopyFrom(const RecvBufRespExtra& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.RecvBufRespExtra)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool RecvBufRespExtra::IsInitialized() const {
+  return true;
+}
+
+void RecvBufRespExtra::Swap(RecvBufRespExtra* other) {
+  if (other == this) return;
+  InternalSwap(other);
+}
+void RecvBufRespExtra::InternalSwap(RecvBufRespExtra* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  tensor_content_.Swap(&other->tensor_content_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+}
+
+::google::protobuf::Metadata RecvBufRespExtra::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2ftransport_5foptions_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fprotobuf_2ftransport_5foptions_2eproto[kIndexInFileMessages];
+}
+
+
+// @@protoc_insertion_point(namespace_scope)
+}  // namespace tensorflow
+namespace google {
+namespace protobuf {
+template<> PROTOBUF_NOINLINE ::tensorflow::RecvBufRespExtra* Arena::CreateMaybeMessage< ::tensorflow::RecvBufRespExtra >(Arena* arena) {
+  return Arena::CreateInternal< ::tensorflow::RecvBufRespExtra >(arena);
+}
+}  // namespace protobuf
+}  // namespace google
+
+// @@protoc_insertion_point(global_scope)
+#include <google/protobuf/port_undef.inc>
diff --git a/tensorflow/core/protobuf/transport_options.pb.h b/tensorflow/core/protobuf/transport_options.pb.h
new file mode 100644 (file)
index 0000000..cc9f92e
--- /dev/null
@@ -0,0 +1,257 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: tensorflow/core/protobuf/transport_options.proto
+
+#ifndef PROTOBUF_INCLUDED_tensorflow_2fcore_2fprotobuf_2ftransport_5foptions_2eproto
+#define PROTOBUF_INCLUDED_tensorflow_2fcore_2fprotobuf_2ftransport_5foptions_2eproto
+
+#include <limits>
+#include <string>
+
+#include <google/protobuf/port_def.inc>
+#if PROTOBUF_VERSION < 3006001
+#error This file was generated by a newer version of protoc which is
+#error incompatible with your Protocol Buffer headers. Please update
+#error your headers.
+#endif
+#if 3006001 < PROTOBUF_MIN_PROTOC_VERSION
+#error This file was generated by an older version of protoc which is
+#error incompatible with your Protocol Buffer headers. Please
+#error regenerate this file with a newer version of protoc.
+#endif
+
+#include <google/protobuf/port_undef.inc>
+#include <google/protobuf/io/coded_stream.h>
+#include <google/protobuf/arena.h>
+#include <google/protobuf/arenastring.h>
+#include <google/protobuf/generated_message_table_driven.h>
+#include <google/protobuf/generated_message_util.h>
+#include <google/protobuf/inlined_string_field.h>
+#include <google/protobuf/metadata.h>
+#include <google/protobuf/message.h>
+#include <google/protobuf/repeated_field.h>  // IWYU pragma: export
+#include <google/protobuf/extension_set.h>  // IWYU pragma: export
+#include <google/protobuf/unknown_field_set.h>
+// @@protoc_insertion_point(includes)
+#include <google/protobuf/port_def.inc>
+#define PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fprotobuf_2ftransport_5foptions_2eproto
+
+// Internal implementation detail -- do not use these members.
+struct TableStruct_tensorflow_2fcore_2fprotobuf_2ftransport_5foptions_2eproto {
+  static const ::google::protobuf::internal::ParseTableField entries[]
+    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
+  static const ::google::protobuf::internal::AuxillaryParseTableField aux[]
+    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
+  static const ::google::protobuf::internal::ParseTable schema[1]
+    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
+  static const ::google::protobuf::internal::FieldMetadata field_metadata[];
+  static const ::google::protobuf::internal::SerializationTable serialization_table[];
+  static const ::google::protobuf::uint32 offsets[];
+};
+void AddDescriptors_tensorflow_2fcore_2fprotobuf_2ftransport_5foptions_2eproto();
+namespace tensorflow {
+class RecvBufRespExtra;
+class RecvBufRespExtraDefaultTypeInternal;
+extern RecvBufRespExtraDefaultTypeInternal _RecvBufRespExtra_default_instance_;
+}  // namespace tensorflow
+namespace google {
+namespace protobuf {
+template<> ::tensorflow::RecvBufRespExtra* Arena::CreateMaybeMessage<::tensorflow::RecvBufRespExtra>(Arena*);
+}  // namespace protobuf
+}  // namespace google
+namespace tensorflow {
+
+// ===================================================================
+
+class RecvBufRespExtra : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.RecvBufRespExtra) */ {
+ public:
+  RecvBufRespExtra();
+  virtual ~RecvBufRespExtra();
+
+  RecvBufRespExtra(const RecvBufRespExtra& from);
+
+  inline RecvBufRespExtra& operator=(const RecvBufRespExtra& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  RecvBufRespExtra(RecvBufRespExtra&& from) noexcept
+    : RecvBufRespExtra() {
+    *this = ::std::move(from);
+  }
+
+  inline RecvBufRespExtra& operator=(RecvBufRespExtra&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const RecvBufRespExtra& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const RecvBufRespExtra* internal_default_instance() {
+    return reinterpret_cast<const RecvBufRespExtra*>(
+               &_RecvBufRespExtra_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    0;
+
+  void Swap(RecvBufRespExtra* other);
+  friend void swap(RecvBufRespExtra& a, RecvBufRespExtra& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline RecvBufRespExtra* New() const final {
+    return CreateMaybeMessage<RecvBufRespExtra>(NULL);
+  }
+
+  RecvBufRespExtra* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<RecvBufRespExtra>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const RecvBufRespExtra& from);
+  void MergeFrom(const RecvBufRespExtra& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(RecvBufRespExtra* other);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return NULL;
+  }
+  inline void* MaybeArenaPtr() const {
+    return NULL;
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // bytes tensor_content = 1;
+  void clear_tensor_content();
+  static const int kTensorContentFieldNumber = 1;
+  const ::std::string& tensor_content() const;
+  void set_tensor_content(const ::std::string& value);
+  #if LANG_CXX11
+  void set_tensor_content(::std::string&& value);
+  #endif
+  void set_tensor_content(const char* value);
+  void set_tensor_content(const void* value, size_t size);
+  ::std::string* mutable_tensor_content();
+  ::std::string* release_tensor_content();
+  void set_allocated_tensor_content(::std::string* tensor_content);
+
+  // @@protoc_insertion_point(class_scope:tensorflow.RecvBufRespExtra)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  ::google::protobuf::internal::ArenaStringPtr tensor_content_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fprotobuf_2ftransport_5foptions_2eproto;
+};
+// ===================================================================
+
+
+// ===================================================================
+
+#ifdef __GNUC__
+  #pragma GCC diagnostic push
+  #pragma GCC diagnostic ignored "-Wstrict-aliasing"
+#endif  // __GNUC__
+// RecvBufRespExtra
+
+// bytes tensor_content = 1;
+inline void RecvBufRespExtra::clear_tensor_content() {
+  tensor_content_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+inline const ::std::string& RecvBufRespExtra::tensor_content() const {
+  // @@protoc_insertion_point(field_get:tensorflow.RecvBufRespExtra.tensor_content)
+  return tensor_content_.GetNoArena();
+}
+inline void RecvBufRespExtra::set_tensor_content(const ::std::string& value) {
+  
+  tensor_content_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value);
+  // @@protoc_insertion_point(field_set:tensorflow.RecvBufRespExtra.tensor_content)
+}
+#if LANG_CXX11
+inline void RecvBufRespExtra::set_tensor_content(::std::string&& value) {
+  
+  tensor_content_.SetNoArena(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value));
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.RecvBufRespExtra.tensor_content)
+}
+#endif
+inline void RecvBufRespExtra::set_tensor_content(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  tensor_content_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value));
+  // @@protoc_insertion_point(field_set_char:tensorflow.RecvBufRespExtra.tensor_content)
+}
+inline void RecvBufRespExtra::set_tensor_content(const void* value, size_t size) {
+  
+  tensor_content_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      ::std::string(reinterpret_cast<const char*>(value), size));
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.RecvBufRespExtra.tensor_content)
+}
+inline ::std::string* RecvBufRespExtra::mutable_tensor_content() {
+  
+  // @@protoc_insertion_point(field_mutable:tensorflow.RecvBufRespExtra.tensor_content)
+  return tensor_content_.MutableNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+inline ::std::string* RecvBufRespExtra::release_tensor_content() {
+  // @@protoc_insertion_point(field_release:tensorflow.RecvBufRespExtra.tensor_content)
+  
+  return tensor_content_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+inline void RecvBufRespExtra::set_allocated_tensor_content(::std::string* tensor_content) {
+  if (tensor_content != NULL) {
+    
+  } else {
+    
+  }
+  tensor_content_.SetAllocatedNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), tensor_content);
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.RecvBufRespExtra.tensor_content)
+}
+
+#ifdef __GNUC__
+  #pragma GCC diagnostic pop
+#endif  // __GNUC__
+
+// @@protoc_insertion_point(namespace_scope)
+
+}  // namespace tensorflow
+
+// @@protoc_insertion_point(global_scope)
+
+#include <google/protobuf/port_undef.inc>
+#endif  // PROTOBUF_INCLUDED_tensorflow_2fcore_2fprotobuf_2ftransport_5foptions_2eproto
diff --git a/tensorflow/core/protobuf/transport_options.proto b/tensorflow/core/protobuf/transport_options.proto
new file mode 100644 (file)
index 0000000..d7b1bdd
--- /dev/null
@@ -0,0 +1,8 @@
+syntax = "proto3";
+
+package tensorflow;
+
+// Extra data needed on a non-RDMA RecvBufResponse.
+message RecvBufRespExtra {
+  bytes tensor_content = 1;
+};
diff --git a/tensorflow/core/protobuf/worker.pb.cc b/tensorflow/core/protobuf/worker.pb.cc
new file mode 100644 (file)
index 0000000..25cc225
--- /dev/null
@@ -0,0 +1,16318 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: tensorflow/core/protobuf/worker.proto
+
+#include "tensorflow/core/protobuf/worker.pb.h"
+
+#include <algorithm>
+
+#include <google/protobuf/stubs/common.h>
+#include <google/protobuf/io/coded_stream.h>
+#include <google/protobuf/extension_set.h>
+#include <google/protobuf/wire_format_lite_inl.h>
+#include <google/protobuf/descriptor.h>
+#include <google/protobuf/generated_message_reflection.h>
+#include <google/protobuf/reflection_ops.h>
+#include <google/protobuf/wire_format.h>
+// @@protoc_insertion_point(includes)
+#include <google/protobuf/port_def.inc>
+
+extern PROTOBUF_INTERNAL_EXPORT_google_2fprotobuf_2fany_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_Any_google_2fprotobuf_2fany_2eproto;
+extern PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fframework_2fcost_5fgraph_2eproto ::google::protobuf::internal::SCCInfo<1> scc_info_CostGraphDef_tensorflow_2fcore_2fframework_2fcost_5fgraph_2eproto;
+extern PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fframework_2fdevice_5fattributes_2eproto ::google::protobuf::internal::SCCInfo<1> scc_info_DeviceAttributes_tensorflow_2fcore_2fframework_2fdevice_5fattributes_2eproto;
+extern PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fframework_2fdevice_5fattributes_2eproto ::google::protobuf::internal::SCCInfo<1> scc_info_DeviceLocality_tensorflow_2fcore_2fframework_2fdevice_5fattributes_2eproto;
+extern PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fframework_2fgraph_2eproto ::google::protobuf::internal::SCCInfo<3> scc_info_GraphDef_tensorflow_2fcore_2fframework_2fgraph_2eproto;
+extern PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fframework_2fstep_5fstats_2eproto ::google::protobuf::internal::SCCInfo<1> scc_info_StepStats_tensorflow_2fcore_2fframework_2fstep_5fstats_2eproto;
+extern PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fframework_2ftensor_2eproto ::google::protobuf::internal::SCCInfo<2> scc_info_TensorProto_tensorflow_2fcore_2fframework_2ftensor_2eproto;
+extern PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fframework_2ftensor_5fshape_2eproto ::google::protobuf::internal::SCCInfo<1> scc_info_TensorShapeProto_tensorflow_2fcore_2fframework_2ftensor_5fshape_2eproto;
+extern PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto ::google::protobuf::internal::SCCInfo<2> scc_info_GraphOptions_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto;
+extern PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fprotobuf_2fdebug_2eproto ::google::protobuf::internal::SCCInfo<1> scc_info_DebugOptions_tensorflow_2fcore_2fprotobuf_2fdebug_2eproto;
+extern PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fprotobuf_2fnamed_5ftensor_2eproto ::google::protobuf::internal::SCCInfo<1> scc_info_NamedTensorProto_tensorflow_2fcore_2fprotobuf_2fnamed_5ftensor_2eproto;
+extern PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fprotobuf_2ftensorflow_5fserver_2eproto ::google::protobuf::internal::SCCInfo<2> scc_info_ServerDef_tensorflow_2fcore_2fprotobuf_2ftensorflow_5fserver_2eproto;
+extern PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fprotobuf_2fworker_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_ExecutorOpts_tensorflow_2fcore_2fprotobuf_2fworker_2eproto;
+extern PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fprotobuf_2fworker_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_StepSequence_tensorflow_2fcore_2fprotobuf_2fworker_2eproto;
+extern PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fprotobuf_2fworker_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_TraceOpts_tensorflow_2fcore_2fprotobuf_2fworker_2eproto;
+extern PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fprotobuf_2fworker_2eproto ::google::protobuf::internal::SCCInfo<1> scc_info_LabeledStepStats_tensorflow_2fcore_2fprotobuf_2fworker_2eproto;
+namespace tensorflow {
+class GetStatusRequestDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<GetStatusRequest> _instance;
+} _GetStatusRequest_default_instance_;
+class GetStatusResponseDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<GetStatusResponse> _instance;
+} _GetStatusResponse_default_instance_;
+class CreateWorkerSessionRequestDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<CreateWorkerSessionRequest> _instance;
+} _CreateWorkerSessionRequest_default_instance_;
+class CreateWorkerSessionResponseDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<CreateWorkerSessionResponse> _instance;
+} _CreateWorkerSessionResponse_default_instance_;
+class DeleteWorkerSessionRequestDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<DeleteWorkerSessionRequest> _instance;
+} _DeleteWorkerSessionRequest_default_instance_;
+class DeleteWorkerSessionResponseDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<DeleteWorkerSessionResponse> _instance;
+} _DeleteWorkerSessionResponse_default_instance_;
+class RegisterGraphRequestDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<RegisterGraphRequest> _instance;
+} _RegisterGraphRequest_default_instance_;
+class RegisterGraphResponseDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<RegisterGraphResponse> _instance;
+} _RegisterGraphResponse_default_instance_;
+class DeregisterGraphRequestDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<DeregisterGraphRequest> _instance;
+} _DeregisterGraphRequest_default_instance_;
+class DeregisterGraphResponseDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<DeregisterGraphResponse> _instance;
+} _DeregisterGraphResponse_default_instance_;
+class CleanupAllRequestDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<CleanupAllRequest> _instance;
+} _CleanupAllRequest_default_instance_;
+class CleanupAllResponseDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<CleanupAllResponse> _instance;
+} _CleanupAllResponse_default_instance_;
+class ExecutorOptsDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<ExecutorOpts> _instance;
+} _ExecutorOpts_default_instance_;
+class RunGraphRequestDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<RunGraphRequest> _instance;
+} _RunGraphRequest_default_instance_;
+class RunGraphResponseDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<RunGraphResponse> _instance;
+} _RunGraphResponse_default_instance_;
+class CleanupGraphRequestDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<CleanupGraphRequest> _instance;
+} _CleanupGraphRequest_default_instance_;
+class CleanupGraphResponseDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<CleanupGraphResponse> _instance;
+} _CleanupGraphResponse_default_instance_;
+class RecvTensorRequestDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<RecvTensorRequest> _instance;
+} _RecvTensorRequest_default_instance_;
+class RecvTensorResponseDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<RecvTensorResponse> _instance;
+} _RecvTensorResponse_default_instance_;
+class LoggingRequestDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<LoggingRequest> _instance;
+} _LoggingRequest_default_instance_;
+class LabeledStepStatsDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<LabeledStepStats> _instance;
+} _LabeledStepStats_default_instance_;
+class LoggingResponseDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<LoggingResponse> _instance;
+} _LoggingResponse_default_instance_;
+class TraceOptsDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<TraceOpts> _instance;
+} _TraceOpts_default_instance_;
+class TracingRequestDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<TracingRequest> _instance;
+} _TracingRequest_default_instance_;
+class TracingResponseDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<TracingResponse> _instance;
+} _TracingResponse_default_instance_;
+class RecvBufRequestDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<RecvBufRequest> _instance;
+} _RecvBufRequest_default_instance_;
+class RecvBufResponseDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<RecvBufResponse> _instance;
+} _RecvBufResponse_default_instance_;
+class CompleteGroupRequestDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<CompleteGroupRequest> _instance;
+} _CompleteGroupRequest_default_instance_;
+class CompleteGroupResponseDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<CompleteGroupResponse> _instance;
+} _CompleteGroupResponse_default_instance_;
+class CompleteInstanceRequestDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<CompleteInstanceRequest> _instance;
+} _CompleteInstanceRequest_default_instance_;
+class CompleteInstanceResponseDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<CompleteInstanceResponse> _instance;
+} _CompleteInstanceResponse_default_instance_;
+class GetStepSequenceRequestDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<GetStepSequenceRequest> _instance;
+} _GetStepSequenceRequest_default_instance_;
+class StepSequenceDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<StepSequence> _instance;
+} _StepSequence_default_instance_;
+class GetStepSequenceResponseDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<GetStepSequenceResponse> _instance;
+} _GetStepSequenceResponse_default_instance_;
+}  // namespace tensorflow
+static void InitDefaultsGetStatusRequest_tensorflow_2fcore_2fprotobuf_2fworker_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_GetStatusRequest_default_instance_;
+    new (ptr) ::tensorflow::GetStatusRequest();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::GetStatusRequest::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<0> scc_info_GetStatusRequest_tensorflow_2fcore_2fprotobuf_2fworker_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsGetStatusRequest_tensorflow_2fcore_2fprotobuf_2fworker_2eproto}, {}};
+
+static void InitDefaultsGetStatusResponse_tensorflow_2fcore_2fprotobuf_2fworker_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_GetStatusResponse_default_instance_;
+    new (ptr) ::tensorflow::GetStatusResponse();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::GetStatusResponse::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<1> scc_info_GetStatusResponse_tensorflow_2fcore_2fprotobuf_2fworker_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsGetStatusResponse_tensorflow_2fcore_2fprotobuf_2fworker_2eproto}, {
+      &scc_info_DeviceAttributes_tensorflow_2fcore_2fframework_2fdevice_5fattributes_2eproto.base,}};
+
+static void InitDefaultsCreateWorkerSessionRequest_tensorflow_2fcore_2fprotobuf_2fworker_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_CreateWorkerSessionRequest_default_instance_;
+    new (ptr) ::tensorflow::CreateWorkerSessionRequest();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::CreateWorkerSessionRequest::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<1> scc_info_CreateWorkerSessionRequest_tensorflow_2fcore_2fprotobuf_2fworker_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsCreateWorkerSessionRequest_tensorflow_2fcore_2fprotobuf_2fworker_2eproto}, {
+      &scc_info_ServerDef_tensorflow_2fcore_2fprotobuf_2ftensorflow_5fserver_2eproto.base,}};
+
+static void InitDefaultsCreateWorkerSessionResponse_tensorflow_2fcore_2fprotobuf_2fworker_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_CreateWorkerSessionResponse_default_instance_;
+    new (ptr) ::tensorflow::CreateWorkerSessionResponse();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::CreateWorkerSessionResponse::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<0> scc_info_CreateWorkerSessionResponse_tensorflow_2fcore_2fprotobuf_2fworker_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsCreateWorkerSessionResponse_tensorflow_2fcore_2fprotobuf_2fworker_2eproto}, {}};
+
+static void InitDefaultsDeleteWorkerSessionRequest_tensorflow_2fcore_2fprotobuf_2fworker_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_DeleteWorkerSessionRequest_default_instance_;
+    new (ptr) ::tensorflow::DeleteWorkerSessionRequest();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::DeleteWorkerSessionRequest::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<0> scc_info_DeleteWorkerSessionRequest_tensorflow_2fcore_2fprotobuf_2fworker_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsDeleteWorkerSessionRequest_tensorflow_2fcore_2fprotobuf_2fworker_2eproto}, {}};
+
+static void InitDefaultsDeleteWorkerSessionResponse_tensorflow_2fcore_2fprotobuf_2fworker_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_DeleteWorkerSessionResponse_default_instance_;
+    new (ptr) ::tensorflow::DeleteWorkerSessionResponse();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::DeleteWorkerSessionResponse::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<0> scc_info_DeleteWorkerSessionResponse_tensorflow_2fcore_2fprotobuf_2fworker_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsDeleteWorkerSessionResponse_tensorflow_2fcore_2fprotobuf_2fworker_2eproto}, {}};
+
+static void InitDefaultsRegisterGraphRequest_tensorflow_2fcore_2fprotobuf_2fworker_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_RegisterGraphRequest_default_instance_;
+    new (ptr) ::tensorflow::RegisterGraphRequest();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::RegisterGraphRequest::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<3> scc_info_RegisterGraphRequest_tensorflow_2fcore_2fprotobuf_2fworker_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 3, InitDefaultsRegisterGraphRequest_tensorflow_2fcore_2fprotobuf_2fworker_2eproto}, {
+      &scc_info_GraphDef_tensorflow_2fcore_2fframework_2fgraph_2eproto.base,
+      &scc_info_GraphOptions_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto.base,
+      &scc_info_DebugOptions_tensorflow_2fcore_2fprotobuf_2fdebug_2eproto.base,}};
+
+static void InitDefaultsRegisterGraphResponse_tensorflow_2fcore_2fprotobuf_2fworker_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_RegisterGraphResponse_default_instance_;
+    new (ptr) ::tensorflow::RegisterGraphResponse();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::RegisterGraphResponse::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<0> scc_info_RegisterGraphResponse_tensorflow_2fcore_2fprotobuf_2fworker_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsRegisterGraphResponse_tensorflow_2fcore_2fprotobuf_2fworker_2eproto}, {}};
+
+static void InitDefaultsDeregisterGraphRequest_tensorflow_2fcore_2fprotobuf_2fworker_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_DeregisterGraphRequest_default_instance_;
+    new (ptr) ::tensorflow::DeregisterGraphRequest();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::DeregisterGraphRequest::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<0> scc_info_DeregisterGraphRequest_tensorflow_2fcore_2fprotobuf_2fworker_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsDeregisterGraphRequest_tensorflow_2fcore_2fprotobuf_2fworker_2eproto}, {}};
+
+static void InitDefaultsDeregisterGraphResponse_tensorflow_2fcore_2fprotobuf_2fworker_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_DeregisterGraphResponse_default_instance_;
+    new (ptr) ::tensorflow::DeregisterGraphResponse();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::DeregisterGraphResponse::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<0> scc_info_DeregisterGraphResponse_tensorflow_2fcore_2fprotobuf_2fworker_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsDeregisterGraphResponse_tensorflow_2fcore_2fprotobuf_2fworker_2eproto}, {}};
+
+static void InitDefaultsCleanupAllRequest_tensorflow_2fcore_2fprotobuf_2fworker_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_CleanupAllRequest_default_instance_;
+    new (ptr) ::tensorflow::CleanupAllRequest();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::CleanupAllRequest::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<0> scc_info_CleanupAllRequest_tensorflow_2fcore_2fprotobuf_2fworker_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsCleanupAllRequest_tensorflow_2fcore_2fprotobuf_2fworker_2eproto}, {}};
+
+static void InitDefaultsCleanupAllResponse_tensorflow_2fcore_2fprotobuf_2fworker_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_CleanupAllResponse_default_instance_;
+    new (ptr) ::tensorflow::CleanupAllResponse();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::CleanupAllResponse::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<0> scc_info_CleanupAllResponse_tensorflow_2fcore_2fprotobuf_2fworker_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsCleanupAllResponse_tensorflow_2fcore_2fprotobuf_2fworker_2eproto}, {}};
+
+static void InitDefaultsExecutorOpts_tensorflow_2fcore_2fprotobuf_2fworker_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_ExecutorOpts_default_instance_;
+    new (ptr) ::tensorflow::ExecutorOpts();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::ExecutorOpts::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<0> scc_info_ExecutorOpts_tensorflow_2fcore_2fprotobuf_2fworker_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsExecutorOpts_tensorflow_2fcore_2fprotobuf_2fworker_2eproto}, {}};
+
+static void InitDefaultsRunGraphRequest_tensorflow_2fcore_2fprotobuf_2fworker_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_RunGraphRequest_default_instance_;
+    new (ptr) ::tensorflow::RunGraphRequest();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::RunGraphRequest::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<2> scc_info_RunGraphRequest_tensorflow_2fcore_2fprotobuf_2fworker_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 2, InitDefaultsRunGraphRequest_tensorflow_2fcore_2fprotobuf_2fworker_2eproto}, {
+      &scc_info_ExecutorOpts_tensorflow_2fcore_2fprotobuf_2fworker_2eproto.base,
+      &scc_info_NamedTensorProto_tensorflow_2fcore_2fprotobuf_2fnamed_5ftensor_2eproto.base,}};
+
+static void InitDefaultsRunGraphResponse_tensorflow_2fcore_2fprotobuf_2fworker_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_RunGraphResponse_default_instance_;
+    new (ptr) ::tensorflow::RunGraphResponse();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::RunGraphResponse::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<4> scc_info_RunGraphResponse_tensorflow_2fcore_2fprotobuf_2fworker_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 4, InitDefaultsRunGraphResponse_tensorflow_2fcore_2fprotobuf_2fworker_2eproto}, {
+      &scc_info_NamedTensorProto_tensorflow_2fcore_2fprotobuf_2fnamed_5ftensor_2eproto.base,
+      &scc_info_StepStats_tensorflow_2fcore_2fframework_2fstep_5fstats_2eproto.base,
+      &scc_info_CostGraphDef_tensorflow_2fcore_2fframework_2fcost_5fgraph_2eproto.base,
+      &scc_info_GraphDef_tensorflow_2fcore_2fframework_2fgraph_2eproto.base,}};
+
+static void InitDefaultsCleanupGraphRequest_tensorflow_2fcore_2fprotobuf_2fworker_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_CleanupGraphRequest_default_instance_;
+    new (ptr) ::tensorflow::CleanupGraphRequest();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::CleanupGraphRequest::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<0> scc_info_CleanupGraphRequest_tensorflow_2fcore_2fprotobuf_2fworker_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsCleanupGraphRequest_tensorflow_2fcore_2fprotobuf_2fworker_2eproto}, {}};
+
+static void InitDefaultsCleanupGraphResponse_tensorflow_2fcore_2fprotobuf_2fworker_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_CleanupGraphResponse_default_instance_;
+    new (ptr) ::tensorflow::CleanupGraphResponse();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::CleanupGraphResponse::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<0> scc_info_CleanupGraphResponse_tensorflow_2fcore_2fprotobuf_2fworker_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsCleanupGraphResponse_tensorflow_2fcore_2fprotobuf_2fworker_2eproto}, {}};
+
+static void InitDefaultsRecvTensorRequest_tensorflow_2fcore_2fprotobuf_2fworker_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_RecvTensorRequest_default_instance_;
+    new (ptr) ::tensorflow::RecvTensorRequest();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::RecvTensorRequest::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<2> scc_info_RecvTensorRequest_tensorflow_2fcore_2fprotobuf_2fworker_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 2, InitDefaultsRecvTensorRequest_tensorflow_2fcore_2fprotobuf_2fworker_2eproto}, {
+      &scc_info_DeviceLocality_tensorflow_2fcore_2fframework_2fdevice_5fattributes_2eproto.base,
+      &scc_info_Any_google_2fprotobuf_2fany_2eproto.base,}};
+
+static void InitDefaultsRecvTensorResponse_tensorflow_2fcore_2fprotobuf_2fworker_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_RecvTensorResponse_default_instance_;
+    new (ptr) ::tensorflow::RecvTensorResponse();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::RecvTensorResponse::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<2> scc_info_RecvTensorResponse_tensorflow_2fcore_2fprotobuf_2fworker_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 2, InitDefaultsRecvTensorResponse_tensorflow_2fcore_2fprotobuf_2fworker_2eproto}, {
+      &scc_info_TensorProto_tensorflow_2fcore_2fframework_2ftensor_2eproto.base,
+      &scc_info_Any_google_2fprotobuf_2fany_2eproto.base,}};
+
+static void InitDefaultsLoggingRequest_tensorflow_2fcore_2fprotobuf_2fworker_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_LoggingRequest_default_instance_;
+    new (ptr) ::tensorflow::LoggingRequest();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::LoggingRequest::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<0> scc_info_LoggingRequest_tensorflow_2fcore_2fprotobuf_2fworker_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsLoggingRequest_tensorflow_2fcore_2fprotobuf_2fworker_2eproto}, {}};
+
+static void InitDefaultsLabeledStepStats_tensorflow_2fcore_2fprotobuf_2fworker_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_LabeledStepStats_default_instance_;
+    new (ptr) ::tensorflow::LabeledStepStats();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::LabeledStepStats::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<1> scc_info_LabeledStepStats_tensorflow_2fcore_2fprotobuf_2fworker_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsLabeledStepStats_tensorflow_2fcore_2fprotobuf_2fworker_2eproto}, {
+      &scc_info_StepStats_tensorflow_2fcore_2fframework_2fstep_5fstats_2eproto.base,}};
+
+static void InitDefaultsLoggingResponse_tensorflow_2fcore_2fprotobuf_2fworker_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_LoggingResponse_default_instance_;
+    new (ptr) ::tensorflow::LoggingResponse();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::LoggingResponse::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<1> scc_info_LoggingResponse_tensorflow_2fcore_2fprotobuf_2fworker_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsLoggingResponse_tensorflow_2fcore_2fprotobuf_2fworker_2eproto}, {
+      &scc_info_LabeledStepStats_tensorflow_2fcore_2fprotobuf_2fworker_2eproto.base,}};
+
+static void InitDefaultsTraceOpts_tensorflow_2fcore_2fprotobuf_2fworker_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_TraceOpts_default_instance_;
+    new (ptr) ::tensorflow::TraceOpts();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::TraceOpts::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<0> scc_info_TraceOpts_tensorflow_2fcore_2fprotobuf_2fworker_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsTraceOpts_tensorflow_2fcore_2fprotobuf_2fworker_2eproto}, {}};
+
+static void InitDefaultsTracingRequest_tensorflow_2fcore_2fprotobuf_2fworker_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_TracingRequest_default_instance_;
+    new (ptr) ::tensorflow::TracingRequest();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::TracingRequest::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<1> scc_info_TracingRequest_tensorflow_2fcore_2fprotobuf_2fworker_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsTracingRequest_tensorflow_2fcore_2fprotobuf_2fworker_2eproto}, {
+      &scc_info_TraceOpts_tensorflow_2fcore_2fprotobuf_2fworker_2eproto.base,}};
+
+static void InitDefaultsTracingResponse_tensorflow_2fcore_2fprotobuf_2fworker_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_TracingResponse_default_instance_;
+    new (ptr) ::tensorflow::TracingResponse();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::TracingResponse::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<0> scc_info_TracingResponse_tensorflow_2fcore_2fprotobuf_2fworker_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsTracingResponse_tensorflow_2fcore_2fprotobuf_2fworker_2eproto}, {}};
+
+static void InitDefaultsRecvBufRequest_tensorflow_2fcore_2fprotobuf_2fworker_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_RecvBufRequest_default_instance_;
+    new (ptr) ::tensorflow::RecvBufRequest();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::RecvBufRequest::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<2> scc_info_RecvBufRequest_tensorflow_2fcore_2fprotobuf_2fworker_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 2, InitDefaultsRecvBufRequest_tensorflow_2fcore_2fprotobuf_2fworker_2eproto}, {
+      &scc_info_DeviceLocality_tensorflow_2fcore_2fframework_2fdevice_5fattributes_2eproto.base,
+      &scc_info_Any_google_2fprotobuf_2fany_2eproto.base,}};
+
+static void InitDefaultsRecvBufResponse_tensorflow_2fcore_2fprotobuf_2fworker_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_RecvBufResponse_default_instance_;
+    new (ptr) ::tensorflow::RecvBufResponse();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::RecvBufResponse::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<1> scc_info_RecvBufResponse_tensorflow_2fcore_2fprotobuf_2fworker_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsRecvBufResponse_tensorflow_2fcore_2fprotobuf_2fworker_2eproto}, {
+      &scc_info_Any_google_2fprotobuf_2fany_2eproto.base,}};
+
+static void InitDefaultsCompleteGroupRequest_tensorflow_2fcore_2fprotobuf_2fworker_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_CompleteGroupRequest_default_instance_;
+    new (ptr) ::tensorflow::CompleteGroupRequest();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::CompleteGroupRequest::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<0> scc_info_CompleteGroupRequest_tensorflow_2fcore_2fprotobuf_2fworker_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsCompleteGroupRequest_tensorflow_2fcore_2fprotobuf_2fworker_2eproto}, {}};
+
+static void InitDefaultsCompleteGroupResponse_tensorflow_2fcore_2fprotobuf_2fworker_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_CompleteGroupResponse_default_instance_;
+    new (ptr) ::tensorflow::CompleteGroupResponse();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::CompleteGroupResponse::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<0> scc_info_CompleteGroupResponse_tensorflow_2fcore_2fprotobuf_2fworker_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsCompleteGroupResponse_tensorflow_2fcore_2fprotobuf_2fworker_2eproto}, {}};
+
+static void InitDefaultsCompleteInstanceRequest_tensorflow_2fcore_2fprotobuf_2fworker_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_CompleteInstanceRequest_default_instance_;
+    new (ptr) ::tensorflow::CompleteInstanceRequest();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::CompleteInstanceRequest::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<1> scc_info_CompleteInstanceRequest_tensorflow_2fcore_2fprotobuf_2fworker_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsCompleteInstanceRequest_tensorflow_2fcore_2fprotobuf_2fworker_2eproto}, {
+      &scc_info_TensorShapeProto_tensorflow_2fcore_2fframework_2ftensor_5fshape_2eproto.base,}};
+
+static void InitDefaultsCompleteInstanceResponse_tensorflow_2fcore_2fprotobuf_2fworker_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_CompleteInstanceResponse_default_instance_;
+    new (ptr) ::tensorflow::CompleteInstanceResponse();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::CompleteInstanceResponse::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<0> scc_info_CompleteInstanceResponse_tensorflow_2fcore_2fprotobuf_2fworker_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsCompleteInstanceResponse_tensorflow_2fcore_2fprotobuf_2fworker_2eproto}, {}};
+
+static void InitDefaultsGetStepSequenceRequest_tensorflow_2fcore_2fprotobuf_2fworker_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_GetStepSequenceRequest_default_instance_;
+    new (ptr) ::tensorflow::GetStepSequenceRequest();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::GetStepSequenceRequest::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<0> scc_info_GetStepSequenceRequest_tensorflow_2fcore_2fprotobuf_2fworker_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsGetStepSequenceRequest_tensorflow_2fcore_2fprotobuf_2fworker_2eproto}, {}};
+
+static void InitDefaultsStepSequence_tensorflow_2fcore_2fprotobuf_2fworker_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_StepSequence_default_instance_;
+    new (ptr) ::tensorflow::StepSequence();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::StepSequence::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<0> scc_info_StepSequence_tensorflow_2fcore_2fprotobuf_2fworker_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsStepSequence_tensorflow_2fcore_2fprotobuf_2fworker_2eproto}, {}};
+
+static void InitDefaultsGetStepSequenceResponse_tensorflow_2fcore_2fprotobuf_2fworker_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::tensorflow::_GetStepSequenceResponse_default_instance_;
+    new (ptr) ::tensorflow::GetStepSequenceResponse();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::tensorflow::GetStepSequenceResponse::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<1> scc_info_GetStepSequenceResponse_tensorflow_2fcore_2fprotobuf_2fworker_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsGetStepSequenceResponse_tensorflow_2fcore_2fprotobuf_2fworker_2eproto}, {
+      &scc_info_StepSequence_tensorflow_2fcore_2fprotobuf_2fworker_2eproto.base,}};
+
+void InitDefaults_tensorflow_2fcore_2fprotobuf_2fworker_2eproto() {
+  ::google::protobuf::internal::InitSCC(&scc_info_GetStatusRequest_tensorflow_2fcore_2fprotobuf_2fworker_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_GetStatusResponse_tensorflow_2fcore_2fprotobuf_2fworker_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_CreateWorkerSessionRequest_tensorflow_2fcore_2fprotobuf_2fworker_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_CreateWorkerSessionResponse_tensorflow_2fcore_2fprotobuf_2fworker_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_DeleteWorkerSessionRequest_tensorflow_2fcore_2fprotobuf_2fworker_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_DeleteWorkerSessionResponse_tensorflow_2fcore_2fprotobuf_2fworker_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_RegisterGraphRequest_tensorflow_2fcore_2fprotobuf_2fworker_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_RegisterGraphResponse_tensorflow_2fcore_2fprotobuf_2fworker_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_DeregisterGraphRequest_tensorflow_2fcore_2fprotobuf_2fworker_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_DeregisterGraphResponse_tensorflow_2fcore_2fprotobuf_2fworker_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_CleanupAllRequest_tensorflow_2fcore_2fprotobuf_2fworker_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_CleanupAllResponse_tensorflow_2fcore_2fprotobuf_2fworker_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_ExecutorOpts_tensorflow_2fcore_2fprotobuf_2fworker_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_RunGraphRequest_tensorflow_2fcore_2fprotobuf_2fworker_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_RunGraphResponse_tensorflow_2fcore_2fprotobuf_2fworker_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_CleanupGraphRequest_tensorflow_2fcore_2fprotobuf_2fworker_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_CleanupGraphResponse_tensorflow_2fcore_2fprotobuf_2fworker_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_RecvTensorRequest_tensorflow_2fcore_2fprotobuf_2fworker_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_RecvTensorResponse_tensorflow_2fcore_2fprotobuf_2fworker_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_LoggingRequest_tensorflow_2fcore_2fprotobuf_2fworker_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_LabeledStepStats_tensorflow_2fcore_2fprotobuf_2fworker_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_LoggingResponse_tensorflow_2fcore_2fprotobuf_2fworker_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_TraceOpts_tensorflow_2fcore_2fprotobuf_2fworker_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_TracingRequest_tensorflow_2fcore_2fprotobuf_2fworker_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_TracingResponse_tensorflow_2fcore_2fprotobuf_2fworker_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_RecvBufRequest_tensorflow_2fcore_2fprotobuf_2fworker_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_RecvBufResponse_tensorflow_2fcore_2fprotobuf_2fworker_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_CompleteGroupRequest_tensorflow_2fcore_2fprotobuf_2fworker_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_CompleteGroupResponse_tensorflow_2fcore_2fprotobuf_2fworker_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_CompleteInstanceRequest_tensorflow_2fcore_2fprotobuf_2fworker_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_CompleteInstanceResponse_tensorflow_2fcore_2fprotobuf_2fworker_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_GetStepSequenceRequest_tensorflow_2fcore_2fprotobuf_2fworker_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_StepSequence_tensorflow_2fcore_2fprotobuf_2fworker_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_GetStepSequenceResponse_tensorflow_2fcore_2fprotobuf_2fworker_2eproto.base);
+}
+
+::google::protobuf::Metadata file_level_metadata_tensorflow_2fcore_2fprotobuf_2fworker_2eproto[34];
+constexpr ::google::protobuf::EnumDescriptor const** file_level_enum_descriptors_tensorflow_2fcore_2fprotobuf_2fworker_2eproto = nullptr;
+constexpr ::google::protobuf::ServiceDescriptor const** file_level_service_descriptors_tensorflow_2fcore_2fprotobuf_2fworker_2eproto = nullptr;
+
+const ::google::protobuf::uint32 TableStruct_tensorflow_2fcore_2fprotobuf_2fworker_2eproto::offsets[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = {
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::GetStatusRequest, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::GetStatusResponse, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::GetStatusResponse, device_attributes_),
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::CreateWorkerSessionRequest, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::CreateWorkerSessionRequest, session_handle_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::CreateWorkerSessionRequest, server_def_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::CreateWorkerSessionRequest, isolate_session_state_),
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::CreateWorkerSessionResponse, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::DeleteWorkerSessionRequest, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::DeleteWorkerSessionRequest, session_handle_),
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::DeleteWorkerSessionResponse, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::RegisterGraphRequest, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::RegisterGraphRequest, session_handle_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::RegisterGraphRequest, create_worker_session_called_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::RegisterGraphRequest, graph_def_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::RegisterGraphRequest, has_control_flow_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::RegisterGraphRequest, graph_options_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::RegisterGraphRequest, debug_options_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::RegisterGraphRequest, collective_graph_key_),
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::RegisterGraphResponse, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::RegisterGraphResponse, graph_handle_),
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::DeregisterGraphRequest, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::DeregisterGraphRequest, session_handle_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::DeregisterGraphRequest, create_worker_session_called_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::DeregisterGraphRequest, graph_handle_),
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::DeregisterGraphResponse, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::CleanupAllRequest, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::CleanupAllRequest, container_),
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::CleanupAllResponse, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::ExecutorOpts, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::ExecutorOpts, record_costs_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::ExecutorOpts, record_timeline_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::ExecutorOpts, record_partition_graphs_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::ExecutorOpts, report_tensor_allocations_upon_oom_),
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::RunGraphRequest, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::RunGraphRequest, session_handle_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::RunGraphRequest, create_worker_session_called_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::RunGraphRequest, graph_handle_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::RunGraphRequest, step_id_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::RunGraphRequest, exec_opts_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::RunGraphRequest, send_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::RunGraphRequest, recv_key_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::RunGraphRequest, is_partial_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::RunGraphRequest, is_last_partial_run_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::RunGraphRequest, store_errors_in_response_body_),
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::RunGraphResponse, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::RunGraphResponse, recv_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::RunGraphResponse, step_stats_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::RunGraphResponse, cost_graph_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::RunGraphResponse, partition_graph_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::RunGraphResponse, status_code_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::RunGraphResponse, status_error_message_),
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::CleanupGraphRequest, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::CleanupGraphRequest, step_id_),
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::CleanupGraphResponse, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::RecvTensorRequest, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::RecvTensorRequest, step_id_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::RecvTensorRequest, rendezvous_key_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::RecvTensorRequest, dma_ok_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::RecvTensorRequest, client_locality_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::RecvTensorRequest, server_locality_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::RecvTensorRequest, transport_options_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::RecvTensorRequest, request_id_),
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::RecvTensorResponse, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::RecvTensorResponse, tensor_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::RecvTensorResponse, is_dead_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::RecvTensorResponse, send_start_micros_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::RecvTensorResponse, transport_options_),
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::LoggingRequest, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::LoggingRequest, enable_rpc_logging_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::LoggingRequest, disable_rpc_logging_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::LoggingRequest, clear_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::LoggingRequest, fetch_step_id_),
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::LabeledStepStats, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::LabeledStepStats, step_id_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::LabeledStepStats, step_stats_),
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::LoggingResponse, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::LoggingResponse, step_),
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::TraceOpts, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::TraceOpts, duration_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::TraceOpts, use_step_profiler_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::TraceOpts, use_kernel_profiler_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::TraceOpts, use_extended_profiler_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::TraceOpts, use_gpu_profiler_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::TraceOpts, use_sample_profiler_),
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::TracingRequest, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::TracingRequest, options_),
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::TracingResponse, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::RecvBufRequest, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::RecvBufRequest, step_id_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::RecvBufRequest, buf_rendezvous_key_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::RecvBufRequest, num_bytes_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::RecvBufRequest, buf_ptr_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::RecvBufRequest, client_locality_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::RecvBufRequest, server_locality_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::RecvBufRequest, transport_options_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::RecvBufRequest, src_device_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::RecvBufRequest, dst_device_),
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::RecvBufResponse, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::RecvBufResponse, buf_ptr_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::RecvBufResponse, num_bytes_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::RecvBufResponse, is_dead_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::RecvBufResponse, transport_options_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::RecvBufResponse, send_start_micros_),
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::CompleteGroupRequest, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::CompleteGroupRequest, group_key_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::CompleteGroupRequest, group_size_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::CompleteGroupRequest, device_type_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::CompleteGroupRequest, device_name_),
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::CompleteGroupResponse, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::CompleteGroupResponse, group_key_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::CompleteGroupResponse, group_size_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::CompleteGroupResponse, device_type_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::CompleteGroupResponse, num_tasks_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::CompleteGroupResponse, device_name_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::CompleteGroupResponse, task_name_),
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::CompleteInstanceRequest, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::CompleteInstanceRequest, name_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::CompleteInstanceRequest, type_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::CompleteInstanceRequest, data_type_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::CompleteInstanceRequest, shape_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::CompleteInstanceRequest, group_key_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::CompleteInstanceRequest, group_size_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::CompleteInstanceRequest, instance_key_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::CompleteInstanceRequest, device_type_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::CompleteInstanceRequest, subdiv_offset_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::CompleteInstanceRequest, device_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::CompleteInstanceRequest, is_source_),
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::CompleteInstanceResponse, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::CompleteInstanceResponse, instance_key_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::CompleteInstanceResponse, source_rank_),
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::GetStepSequenceRequest, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::GetStepSequenceRequest, graph_key_),
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::StepSequence, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::StepSequence, graph_key_),
+  PROTOBUF_FIELD_OFFSET(::tensorflow::StepSequence, next_step_id_),
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::GetStepSequenceResponse, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::tensorflow::GetStepSequenceResponse, step_sequence_),
+};
+static const ::google::protobuf::internal::MigrationSchema schemas[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = {
+  { 0, -1, sizeof(::tensorflow::GetStatusRequest)},
+  { 5, -1, sizeof(::tensorflow::GetStatusResponse)},
+  { 11, -1, sizeof(::tensorflow::CreateWorkerSessionRequest)},
+  { 19, -1, sizeof(::tensorflow::CreateWorkerSessionResponse)},
+  { 24, -1, sizeof(::tensorflow::DeleteWorkerSessionRequest)},
+  { 30, -1, sizeof(::tensorflow::DeleteWorkerSessionResponse)},
+  { 35, -1, sizeof(::tensorflow::RegisterGraphRequest)},
+  { 47, -1, sizeof(::tensorflow::RegisterGraphResponse)},
+  { 53, -1, sizeof(::tensorflow::DeregisterGraphRequest)},
+  { 61, -1, sizeof(::tensorflow::DeregisterGraphResponse)},
+  { 66, -1, sizeof(::tensorflow::CleanupAllRequest)},
+  { 72, -1, sizeof(::tensorflow::CleanupAllResponse)},
+  { 77, -1, sizeof(::tensorflow::ExecutorOpts)},
+  { 86, -1, sizeof(::tensorflow::RunGraphRequest)},
+  { 101, -1, sizeof(::tensorflow::RunGraphResponse)},
+  { 112, -1, sizeof(::tensorflow::CleanupGraphRequest)},
+  { 118, -1, sizeof(::tensorflow::CleanupGraphResponse)},
+  { 123, -1, sizeof(::tensorflow::RecvTensorRequest)},
+  { 135, -1, sizeof(::tensorflow::RecvTensorResponse)},
+  { 144, -1, sizeof(::tensorflow::LoggingRequest)},
+  { 153, -1, sizeof(::tensorflow::LabeledStepStats)},
+  { 160, -1, sizeof(::tensorflow::LoggingResponse)},
+  { 166, -1, sizeof(::tensorflow::TraceOpts)},
+  { 177, -1, sizeof(::tensorflow::TracingRequest)},
+  { 183, -1, sizeof(::tensorflow::TracingResponse)},
+  { 188, -1, sizeof(::tensorflow::RecvBufRequest)},
+  { 202, -1, sizeof(::tensorflow::RecvBufResponse)},
+  { 212, -1, sizeof(::tensorflow::CompleteGroupRequest)},
+  { 221, -1, sizeof(::tensorflow::CompleteGroupResponse)},
+  { 232, -1, sizeof(::tensorflow::CompleteInstanceRequest)},
+  { 248, -1, sizeof(::tensorflow::CompleteInstanceResponse)},
+  { 255, -1, sizeof(::tensorflow::GetStepSequenceRequest)},
+  { 261, -1, sizeof(::tensorflow::StepSequence)},
+  { 268, -1, sizeof(::tensorflow::GetStepSequenceResponse)},
+};
+
+static ::google::protobuf::Message const * const file_default_instances[] = {
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_GetStatusRequest_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_GetStatusResponse_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_CreateWorkerSessionRequest_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_CreateWorkerSessionResponse_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_DeleteWorkerSessionRequest_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_DeleteWorkerSessionResponse_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_RegisterGraphRequest_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_RegisterGraphResponse_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_DeregisterGraphRequest_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_DeregisterGraphResponse_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_CleanupAllRequest_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_CleanupAllResponse_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_ExecutorOpts_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_RunGraphRequest_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_RunGraphResponse_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_CleanupGraphRequest_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_CleanupGraphResponse_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_RecvTensorRequest_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_RecvTensorResponse_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_LoggingRequest_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_LabeledStepStats_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_LoggingResponse_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_TraceOpts_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_TracingRequest_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_TracingResponse_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_RecvBufRequest_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_RecvBufResponse_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_CompleteGroupRequest_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_CompleteGroupResponse_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_CompleteInstanceRequest_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_CompleteInstanceResponse_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_GetStepSequenceRequest_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_StepSequence_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::tensorflow::_GetStepSequenceResponse_default_instance_),
+};
+
+::google::protobuf::internal::AssignDescriptorsTable assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2fworker_2eproto = {
+  {}, AddDescriptors_tensorflow_2fcore_2fprotobuf_2fworker_2eproto, "tensorflow/core/protobuf/worker.proto", schemas,
+  file_default_instances, TableStruct_tensorflow_2fcore_2fprotobuf_2fworker_2eproto::offsets,
+  file_level_metadata_tensorflow_2fcore_2fprotobuf_2fworker_2eproto, 34, file_level_enum_descriptors_tensorflow_2fcore_2fprotobuf_2fworker_2eproto, file_level_service_descriptors_tensorflow_2fcore_2fprotobuf_2fworker_2eproto,
+};
+
+::google::protobuf::internal::DescriptorTable descriptor_table_tensorflow_2fcore_2fprotobuf_2fworker_2eproto = {
+  false, InitDefaults_tensorflow_2fcore_2fprotobuf_2fworker_2eproto, 
+  "\n%tensorflow/core/protobuf/worker.proto\022"
+  "\ntensorflow\032\031google/protobuf/any.proto\032*"
+  "tensorflow/core/framework/cost_graph.pro"
+  "to\032*tensorflow/core/framework/step_stats"
+  ".proto\0321tensorflow/core/framework/device"
+  "_attributes.proto\032%tensorflow/core/frame"
+  "work/graph.proto\032&tensorflow/core/framew"
+  "ork/tensor.proto\032,tensorflow/core/framew"
+  "ork/tensor_shape.proto\032%tensorflow/core/"
+  "framework/types.proto\032*tensorflow/core/l"
+  "ib/core/error_codes.proto\032%tensorflow/co"
+  "re/protobuf/config.proto\032$tensorflow/cor"
+  "e/protobuf/debug.proto\032+tensorflow/core/"
+  "protobuf/named_tensor.proto\0320tensorflow/"
+  "core/protobuf/tensorflow_server.proto\"\022\n"
+  "\020GetStatusRequest\"L\n\021GetStatusResponse\0227"
+  "\n\021device_attributes\030\001 \003(\0132\034.tensorflow.D"
+  "eviceAttributes\"~\n\032CreateWorkerSessionRe"
+  "quest\022\026\n\016session_handle\030\001 \001(\t\022)\n\nserver_"
+  "def\030\002 \001(\0132\025.tensorflow.ServerDef\022\035\n\025isol"
+  "ate_session_state\030\003 \001(\010\"\035\n\033CreateWorkerS"
+  "essionResponse\"4\n\032DeleteWorkerSessionReq"
+  "uest\022\026\n\016session_handle\030\001 \001(\t\"\035\n\033DeleteWo"
+  "rkerSessionResponse\"\233\002\n\024RegisterGraphReq"
+  "uest\022\026\n\016session_handle\030\001 \001(\t\022$\n\034create_w"
+  "orker_session_called\030\006 \001(\010\022\'\n\tgraph_def\030"
+  "\002 \001(\0132\024.tensorflow.GraphDef\022\034\n\020has_contr"
+  "ol_flow\030\003 \001(\010B\002\030\001\022/\n\rgraph_options\030\004 \001(\013"
+  "2\030.tensorflow.GraphOptions\022/\n\rdebug_opti"
+  "ons\030\005 \001(\0132\030.tensorflow.DebugOptions\022\034\n\024c"
+  "ollective_graph_key\030\007 \001(\003\"-\n\025RegisterGra"
+  "phResponse\022\024\n\014graph_handle\030\001 \001(\t\"l\n\026Dere"
+  "gisterGraphRequest\022\026\n\016session_handle\030\002 \001"
+  "(\t\022$\n\034create_worker_session_called\030\003 \001(\010"
+  "\022\024\n\014graph_handle\030\001 \001(\t\"\031\n\027DeregisterGrap"
+  "hResponse\"&\n\021CleanupAllRequest\022\021\n\tcontai"
+  "ner\030\001 \003(\t\"\024\n\022CleanupAllResponse\"\212\001\n\014Exec"
+  "utorOpts\022\024\n\014record_costs\030\001 \001(\010\022\027\n\017record"
+  "_timeline\030\003 \001(\010\022\037\n\027record_partition_grap"
+  "hs\030\004 \001(\010\022*\n\"report_tensor_allocations_up"
+  "on_oom\030\005 \001(\010\"\271\002\n\017RunGraphRequest\022\026\n\016sess"
+  "ion_handle\030\010 \001(\t\022$\n\034create_worker_sessio"
+  "n_called\030\n \001(\010\022\024\n\014graph_handle\030\001 \001(\t\022\017\n\007"
+  "step_id\030\002 \001(\003\022+\n\texec_opts\030\005 \001(\0132\030.tenso"
+  "rflow.ExecutorOpts\022*\n\004send\030\003 \003(\0132\034.tenso"
+  "rflow.NamedTensorProto\022\020\n\010recv_key\030\004 \003(\t"
+  "\022\022\n\nis_partial\030\006 \001(\010\022\033\n\023is_last_partial_"
+  "run\030\007 \001(\010\022%\n\035store_errors_in_response_bo"
+  "dy\030\t \001(\010\"\221\002\n\020RunGraphResponse\022*\n\004recv\030\001 "
+  "\003(\0132\034.tensorflow.NamedTensorProto\022)\n\nste"
+  "p_stats\030\002 \001(\0132\025.tensorflow.StepStats\022,\n\n"
+  "cost_graph\030\003 \001(\0132\030.tensorflow.CostGraphD"
+  "ef\022-\n\017partition_graph\030\004 \003(\0132\024.tensorflow"
+  ".GraphDef\022+\n\013status_code\030\005 \001(\0162\026.tensorf"
+  "low.error.Code\022\034\n\024status_error_message\030\006"
+  " \001(\t\"&\n\023CleanupGraphRequest\022\017\n\007step_id\030\001"
+  " \001(\003\"\026\n\024CleanupGraphResponse\"\373\001\n\021RecvTen"
+  "sorRequest\022\017\n\007step_id\030\001 \001(\003\022\026\n\016rendezvou"
+  "s_key\030\002 \001(\t\022\016\n\006dma_ok\030\003 \001(\010\0223\n\017client_lo"
+  "cality\030\004 \001(\0132\032.tensorflow.DeviceLocality"
+  "\0223\n\017server_locality\030\005 \001(\0132\032.tensorflow.D"
+  "eviceLocality\022/\n\021transport_options\030\006 \001(\013"
+  "2\024.google.protobuf.Any\022\022\n\nrequest_id\030\007 \001"
+  "(\003\"\232\001\n\022RecvTensorResponse\022\'\n\006tensor\030\001 \001("
+  "\0132\027.tensorflow.TensorProto\022\017\n\007is_dead\030\002 "
+  "\001(\010\022\031\n\021send_start_micros\030\003 \001(\003\022/\n\021transp"
+  "ort_options\030\004 \001(\0132\024.google.protobuf.Any\""
+  "o\n\016LoggingRequest\022\032\n\022enable_rpc_logging\030"
+  "\001 \001(\010\022\033\n\023disable_rpc_logging\030\004 \001(\010\022\r\n\005cl"
+  "ear\030\002 \001(\010\022\025\n\rfetch_step_id\030\003 \003(\003\"N\n\020Labe"
+  "ledStepStats\022\017\n\007step_id\030\001 \001(\003\022)\n\nstep_st"
+  "ats\030\002 \001(\0132\025.tensorflow.StepStats\"=\n\017Logg"
+  "ingResponse\022*\n\004step\030\001 \003(\0132\034.tensorflow.L"
+  "abeledStepStats\"\253\001\n\tTraceOpts\022\020\n\010duratio"
+  "n\030\001 \001(\001\022\031\n\021use_step_profiler\030\002 \001(\010\022\033\n\023us"
+  "e_kernel_profiler\030\003 \001(\010\022\035\n\025use_extended_"
+  "profiler\030\004 \001(\010\022\030\n\020use_gpu_profiler\030\005 \001(\010"
+  "\022\033\n\023use_sample_profiler\030\006 \001(\010\"8\n\016Tracing"
+  "Request\022&\n\007options\030\001 \001(\0132\025.tensorflow.Tr"
+  "aceOpts\"\021\n\017TracingResponse\"\244\002\n\016RecvBufRe"
+  "quest\022\017\n\007step_id\030\001 \001(\003\022\032\n\022buf_rendezvous"
+  "_key\030\002 \001(\t\022\021\n\tnum_bytes\030\003 \001(\003\022\017\n\007buf_ptr"
+  "\030\004 \001(\006\0223\n\017client_locality\030\005 \001(\0132\032.tensor"
+  "flow.DeviceLocality\0223\n\017server_locality\030\006"
+  " \001(\0132\032.tensorflow.DeviceLocality\022/\n\021tran"
+  "sport_options\030\007 \001(\0132\024.google.protobuf.An"
+  "y\022\022\n\nsrc_device\030\010 \001(\t\022\022\n\ndst_device\030\t \001("
+  "\t\"\222\001\n\017RecvBufResponse\022\017\n\007buf_ptr\030\001 \001(\006\022\021"
+  "\n\tnum_bytes\030\002 \001(\003\022\017\n\007is_dead\030\003 \001(\010\022/\n\021tr"
+  "ansport_options\030\004 \001(\0132\024.google.protobuf."
+  "Any\022\031\n\021send_start_micros\030\005 \001(\003\"g\n\024Comple"
+  "teGroupRequest\022\021\n\tgroup_key\030\001 \001(\005\022\022\n\ngro"
+  "up_size\030\002 \001(\005\022\023\n\013device_type\030\003 \001(\t\022\023\n\013de"
+  "vice_name\030\004 \003(\t\"\216\001\n\025CompleteGroupRespons"
+  "e\022\021\n\tgroup_key\030\001 \001(\005\022\022\n\ngroup_size\030\002 \001(\005"
+  "\022\023\n\013device_type\030\003 \001(\t\022\021\n\tnum_tasks\030\004 \001(\005"
+  "\022\023\n\013device_name\030\005 \003(\t\022\021\n\ttask_name\030\006 \003(\t"
+  "\"\227\002\n\027CompleteInstanceRequest\022\014\n\004name\030\001 \001"
+  "(\t\022\014\n\004type\030\002 \001(\005\022\'\n\tdata_type\030\003 \001(\0162\024.te"
+  "nsorflow.DataType\022+\n\005shape\030\004 \001(\0132\034.tenso"
+  "rflow.TensorShapeProto\022\021\n\tgroup_key\030\005 \001("
+  "\005\022\022\n\ngroup_size\030\006 \001(\005\022\024\n\014instance_key\030\007 "
+  "\001(\005\022\023\n\013device_type\030\010 \001(\t\022\025\n\rsubdiv_offse"
+  "t\030\t \003(\005\022\016\n\006device\030\n \001(\t\022\021\n\tis_source\030\013 \001"
+  "(\010\"E\n\030CompleteInstanceResponse\022\024\n\014instan"
+  "ce_key\030\001 \001(\005\022\023\n\013source_rank\030\002 \001(\005\"+\n\026Get"
+  "StepSequenceRequest\022\021\n\tgraph_key\030\001 \003(\003\"7"
+  "\n\014StepSequence\022\021\n\tgraph_key\030\001 \001(\003\022\024\n\014nex"
+  "t_step_id\030\002 \001(\003\"J\n\027GetStepSequenceRespon"
+  "se\022/\n\rstep_sequence\030\001 \003(\0132\030.tensorflow.S"
+  "tepSequenceBm\n\032org.tensorflow.distruntim"
+  "eB\014WorkerProtosP\001Z<github.com/tensorflow"
+  "/tensorflow/tensorflow/go/core/protobuf\370"
+  "\001\001b\006proto3"
+,
+  "tensorflow/core/protobuf/worker.proto", &assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2fworker_2eproto, 4530,
+};
+
+void AddDescriptors_tensorflow_2fcore_2fprotobuf_2fworker_2eproto() {
+  static constexpr ::google::protobuf::internal::InitFunc deps[13] =
+  {
+    ::AddDescriptors_google_2fprotobuf_2fany_2eproto,
+    ::AddDescriptors_tensorflow_2fcore_2fframework_2fcost_5fgraph_2eproto,
+    ::AddDescriptors_tensorflow_2fcore_2fframework_2fstep_5fstats_2eproto,
+    ::AddDescriptors_tensorflow_2fcore_2fframework_2fdevice_5fattributes_2eproto,
+    ::AddDescriptors_tensorflow_2fcore_2fframework_2fgraph_2eproto,
+    ::AddDescriptors_tensorflow_2fcore_2fframework_2ftensor_2eproto,
+    ::AddDescriptors_tensorflow_2fcore_2fframework_2ftensor_5fshape_2eproto,
+    ::AddDescriptors_tensorflow_2fcore_2fframework_2ftypes_2eproto,
+    ::AddDescriptors_tensorflow_2fcore_2flib_2fcore_2ferror_5fcodes_2eproto,
+    ::AddDescriptors_tensorflow_2fcore_2fprotobuf_2fconfig_2eproto,
+    ::AddDescriptors_tensorflow_2fcore_2fprotobuf_2fdebug_2eproto,
+    ::AddDescriptors_tensorflow_2fcore_2fprotobuf_2fnamed_5ftensor_2eproto,
+    ::AddDescriptors_tensorflow_2fcore_2fprotobuf_2ftensorflow_5fserver_2eproto,
+  };
+ ::google::protobuf::internal::AddDescriptors(&descriptor_table_tensorflow_2fcore_2fprotobuf_2fworker_2eproto, deps, 13);
+}
+
+// Force running AddDescriptors() at dynamic initialization time.
+static bool dynamic_init_dummy_tensorflow_2fcore_2fprotobuf_2fworker_2eproto = []() { AddDescriptors_tensorflow_2fcore_2fprotobuf_2fworker_2eproto(); return true; }();
+namespace tensorflow {
+
+// ===================================================================
+
+void GetStatusRequest::InitAsDefaultInstance() {
+}
+class GetStatusRequest::HasBitSetters {
+ public:
+};
+
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+GetStatusRequest::GetStatusRequest()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.GetStatusRequest)
+}
+GetStatusRequest::GetStatusRequest(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.GetStatusRequest)
+}
+GetStatusRequest::GetStatusRequest(const GetStatusRequest& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  // @@protoc_insertion_point(copy_constructor:tensorflow.GetStatusRequest)
+}
+
+void GetStatusRequest::SharedCtor() {
+}
+
+GetStatusRequest::~GetStatusRequest() {
+  // @@protoc_insertion_point(destructor:tensorflow.GetStatusRequest)
+  SharedDtor();
+}
+
+void GetStatusRequest::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+}
+
+void GetStatusRequest::ArenaDtor(void* object) {
+  GetStatusRequest* _this = reinterpret_cast< GetStatusRequest* >(object);
+  (void)_this;
+}
+void GetStatusRequest::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void GetStatusRequest::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const GetStatusRequest& GetStatusRequest::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_GetStatusRequest_tensorflow_2fcore_2fprotobuf_2fworker_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void GetStatusRequest::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.GetStatusRequest)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* GetStatusRequest::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<GetStatusRequest*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool GetStatusRequest::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.GetStatusRequest)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+  handle_unusual:
+    if (tag == 0) {
+      goto success;
+    }
+    DO_(::google::protobuf::internal::WireFormat::SkipField(
+          input, tag, _internal_metadata_.mutable_unknown_fields()));
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.GetStatusRequest)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.GetStatusRequest)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void GetStatusRequest::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.GetStatusRequest)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.GetStatusRequest)
+}
+
+::google::protobuf::uint8* GetStatusRequest::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.GetStatusRequest)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.GetStatusRequest)
+  return target;
+}
+
+size_t GetStatusRequest::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.GetStatusRequest)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void GetStatusRequest::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.GetStatusRequest)
+  GOOGLE_DCHECK_NE(&from, this);
+  const GetStatusRequest* source =
+      ::google::protobuf::DynamicCastToGenerated<GetStatusRequest>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.GetStatusRequest)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.GetStatusRequest)
+    MergeFrom(*source);
+  }
+}
+
+void GetStatusRequest::MergeFrom(const GetStatusRequest& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.GetStatusRequest)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+}
+
+void GetStatusRequest::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.GetStatusRequest)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void GetStatusRequest::CopyFrom(const GetStatusRequest& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.GetStatusRequest)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool GetStatusRequest::IsInitialized() const {
+  return true;
+}
+
+void GetStatusRequest::Swap(GetStatusRequest* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    GetStatusRequest* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void GetStatusRequest::UnsafeArenaSwap(GetStatusRequest* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void GetStatusRequest::InternalSwap(GetStatusRequest* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+}
+
+::google::protobuf::Metadata GetStatusRequest::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2fworker_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fprotobuf_2fworker_2eproto[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+void GetStatusResponse::InitAsDefaultInstance() {
+}
+class GetStatusResponse::HasBitSetters {
+ public:
+};
+
+void GetStatusResponse::clear_device_attributes() {
+  device_attributes_.Clear();
+}
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int GetStatusResponse::kDeviceAttributesFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+GetStatusResponse::GetStatusResponse()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.GetStatusResponse)
+}
+GetStatusResponse::GetStatusResponse(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena),
+  device_attributes_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.GetStatusResponse)
+}
+GetStatusResponse::GetStatusResponse(const GetStatusResponse& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL),
+      device_attributes_(from.device_attributes_) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  // @@protoc_insertion_point(copy_constructor:tensorflow.GetStatusResponse)
+}
+
+void GetStatusResponse::SharedCtor() {
+  ::google::protobuf::internal::InitSCC(
+      &scc_info_GetStatusResponse_tensorflow_2fcore_2fprotobuf_2fworker_2eproto.base);
+}
+
+GetStatusResponse::~GetStatusResponse() {
+  // @@protoc_insertion_point(destructor:tensorflow.GetStatusResponse)
+  SharedDtor();
+}
+
+void GetStatusResponse::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+}
+
+void GetStatusResponse::ArenaDtor(void* object) {
+  GetStatusResponse* _this = reinterpret_cast< GetStatusResponse* >(object);
+  (void)_this;
+}
+void GetStatusResponse::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void GetStatusResponse::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const GetStatusResponse& GetStatusResponse::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_GetStatusResponse_tensorflow_2fcore_2fprotobuf_2fworker_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void GetStatusResponse::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.GetStatusResponse)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  device_attributes_.Clear();
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* GetStatusResponse::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<GetStatusResponse*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // repeated .tensorflow.DeviceAttributes device_attributes = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 10) goto handle_unusual;
+        do {
+          ptr = Varint::Parse32Inline(ptr, &size);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          parser_till_end = ::tensorflow::DeviceAttributes::_InternalParse;
+          object = msg->add_device_attributes();
+          if (size > end - ptr) goto len_delim_till_end;
+          auto newend = ptr + size;
+          bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                         ptr, newend);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          ptr = newend;
+          if (ptr >= end) break;
+        } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 10 && (ptr += 1));
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool GetStatusResponse::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.GetStatusResponse)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // repeated .tensorflow.DeviceAttributes device_attributes = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (10 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+                input, add_device_attributes()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.GetStatusResponse)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.GetStatusResponse)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void GetStatusResponse::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.GetStatusResponse)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // repeated .tensorflow.DeviceAttributes device_attributes = 1;
+  for (unsigned int i = 0,
+      n = static_cast<unsigned int>(this->device_attributes_size()); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      1,
+      this->device_attributes(static_cast<int>(i)),
+      output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.GetStatusResponse)
+}
+
+::google::protobuf::uint8* GetStatusResponse::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.GetStatusResponse)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // repeated .tensorflow.DeviceAttributes device_attributes = 1;
+  for (unsigned int i = 0,
+      n = static_cast<unsigned int>(this->device_attributes_size()); i < n; i++) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        1, this->device_attributes(static_cast<int>(i)), deterministic, target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.GetStatusResponse)
+  return target;
+}
+
+size_t GetStatusResponse::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.GetStatusResponse)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // repeated .tensorflow.DeviceAttributes device_attributes = 1;
+  {
+    unsigned int count = static_cast<unsigned int>(this->device_attributes_size());
+    total_size += 1UL * count;
+    for (unsigned int i = 0; i < count; i++) {
+      total_size +=
+        ::google::protobuf::internal::WireFormatLite::MessageSize(
+          this->device_attributes(static_cast<int>(i)));
+    }
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void GetStatusResponse::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.GetStatusResponse)
+  GOOGLE_DCHECK_NE(&from, this);
+  const GetStatusResponse* source =
+      ::google::protobuf::DynamicCastToGenerated<GetStatusResponse>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.GetStatusResponse)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.GetStatusResponse)
+    MergeFrom(*source);
+  }
+}
+
+void GetStatusResponse::MergeFrom(const GetStatusResponse& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.GetStatusResponse)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  device_attributes_.MergeFrom(from.device_attributes_);
+}
+
+void GetStatusResponse::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.GetStatusResponse)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void GetStatusResponse::CopyFrom(const GetStatusResponse& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.GetStatusResponse)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool GetStatusResponse::IsInitialized() const {
+  return true;
+}
+
+void GetStatusResponse::Swap(GetStatusResponse* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    GetStatusResponse* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void GetStatusResponse::UnsafeArenaSwap(GetStatusResponse* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void GetStatusResponse::InternalSwap(GetStatusResponse* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  CastToBase(&device_attributes_)->InternalSwap(CastToBase(&other->device_attributes_));
+}
+
+::google::protobuf::Metadata GetStatusResponse::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2fworker_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fprotobuf_2fworker_2eproto[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+void CreateWorkerSessionRequest::InitAsDefaultInstance() {
+  ::tensorflow::_CreateWorkerSessionRequest_default_instance_._instance.get_mutable()->server_def_ = const_cast< ::tensorflow::ServerDef*>(
+      ::tensorflow::ServerDef::internal_default_instance());
+}
+class CreateWorkerSessionRequest::HasBitSetters {
+ public:
+  static const ::tensorflow::ServerDef& server_def(const CreateWorkerSessionRequest* msg);
+};
+
+const ::tensorflow::ServerDef&
+CreateWorkerSessionRequest::HasBitSetters::server_def(const CreateWorkerSessionRequest* msg) {
+  return *msg->server_def_;
+}
+void CreateWorkerSessionRequest::unsafe_arena_set_allocated_server_def(
+    ::tensorflow::ServerDef* server_def) {
+  if (GetArenaNoVirtual() == NULL) {
+    delete server_def_;
+  }
+  server_def_ = server_def;
+  if (server_def) {
+    
+  } else {
+    
+  }
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.CreateWorkerSessionRequest.server_def)
+}
+void CreateWorkerSessionRequest::clear_server_def() {
+  if (GetArenaNoVirtual() == NULL && server_def_ != NULL) {
+    delete server_def_;
+  }
+  server_def_ = NULL;
+}
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int CreateWorkerSessionRequest::kSessionHandleFieldNumber;
+const int CreateWorkerSessionRequest::kServerDefFieldNumber;
+const int CreateWorkerSessionRequest::kIsolateSessionStateFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+CreateWorkerSessionRequest::CreateWorkerSessionRequest()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.CreateWorkerSessionRequest)
+}
+CreateWorkerSessionRequest::CreateWorkerSessionRequest(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.CreateWorkerSessionRequest)
+}
+CreateWorkerSessionRequest::CreateWorkerSessionRequest(const CreateWorkerSessionRequest& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  session_handle_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.session_handle().size() > 0) {
+    session_handle_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.session_handle(),
+      GetArenaNoVirtual());
+  }
+  if (from.has_server_def()) {
+    server_def_ = new ::tensorflow::ServerDef(*from.server_def_);
+  } else {
+    server_def_ = NULL;
+  }
+  isolate_session_state_ = from.isolate_session_state_;
+  // @@protoc_insertion_point(copy_constructor:tensorflow.CreateWorkerSessionRequest)
+}
+
+void CreateWorkerSessionRequest::SharedCtor() {
+  ::google::protobuf::internal::InitSCC(
+      &scc_info_CreateWorkerSessionRequest_tensorflow_2fcore_2fprotobuf_2fworker_2eproto.base);
+  session_handle_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  ::memset(&server_def_, 0, static_cast<size_t>(
+      reinterpret_cast<char*>(&isolate_session_state_) -
+      reinterpret_cast<char*>(&server_def_)) + sizeof(isolate_session_state_));
+}
+
+CreateWorkerSessionRequest::~CreateWorkerSessionRequest() {
+  // @@protoc_insertion_point(destructor:tensorflow.CreateWorkerSessionRequest)
+  SharedDtor();
+}
+
+void CreateWorkerSessionRequest::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+  session_handle_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (this != internal_default_instance()) delete server_def_;
+}
+
+void CreateWorkerSessionRequest::ArenaDtor(void* object) {
+  CreateWorkerSessionRequest* _this = reinterpret_cast< CreateWorkerSessionRequest* >(object);
+  (void)_this;
+}
+void CreateWorkerSessionRequest::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void CreateWorkerSessionRequest::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const CreateWorkerSessionRequest& CreateWorkerSessionRequest::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_CreateWorkerSessionRequest_tensorflow_2fcore_2fprotobuf_2fworker_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void CreateWorkerSessionRequest::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.CreateWorkerSessionRequest)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  session_handle_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+  if (GetArenaNoVirtual() == NULL && server_def_ != NULL) {
+    delete server_def_;
+  }
+  server_def_ = NULL;
+  isolate_session_state_ = false;
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* CreateWorkerSessionRequest::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<CreateWorkerSessionRequest*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // string session_handle = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 10) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("tensorflow.CreateWorkerSessionRequest.session_handle");
+        parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+        ::std::string* str = msg->mutable_session_handle();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+        break;
+      }
+      // .tensorflow.ServerDef server_def = 2;
+      case 2: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 18) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        parser_till_end = ::tensorflow::ServerDef::_InternalParse;
+        object = msg->mutable_server_def();
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                       ptr, newend);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+        ptr = newend;
+        break;
+      }
+      // bool isolate_session_state = 3;
+      case 3: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 24) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        bool value = val;
+        msg->set_isolate_session_state(value);
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool CreateWorkerSessionRequest::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.CreateWorkerSessionRequest)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // string session_handle = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (10 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_session_handle()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->session_handle().data(), static_cast<int>(this->session_handle().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.CreateWorkerSessionRequest.session_handle"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // .tensorflow.ServerDef server_def = 2;
+      case 2: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (18 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+               input, mutable_server_def()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // bool isolate_session_state = 3;
+      case 3: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (24 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
+                 input, &isolate_session_state_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.CreateWorkerSessionRequest)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.CreateWorkerSessionRequest)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void CreateWorkerSessionRequest::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.CreateWorkerSessionRequest)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // string session_handle = 1;
+  if (this->session_handle().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->session_handle().data(), static_cast<int>(this->session_handle().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.CreateWorkerSessionRequest.session_handle");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      1, this->session_handle(), output);
+  }
+
+  // .tensorflow.ServerDef server_def = 2;
+  if (this->has_server_def()) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      2, HasBitSetters::server_def(this), output);
+  }
+
+  // bool isolate_session_state = 3;
+  if (this->isolate_session_state() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteBool(3, this->isolate_session_state(), output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.CreateWorkerSessionRequest)
+}
+
+::google::protobuf::uint8* CreateWorkerSessionRequest::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.CreateWorkerSessionRequest)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // string session_handle = 1;
+  if (this->session_handle().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->session_handle().data(), static_cast<int>(this->session_handle().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.CreateWorkerSessionRequest.session_handle");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        1, this->session_handle(), target);
+  }
+
+  // .tensorflow.ServerDef server_def = 2;
+  if (this->has_server_def()) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        2, HasBitSetters::server_def(this), deterministic, target);
+  }
+
+  // bool isolate_session_state = 3;
+  if (this->isolate_session_state() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(3, this->isolate_session_state(), target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.CreateWorkerSessionRequest)
+  return target;
+}
+
+size_t CreateWorkerSessionRequest::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.CreateWorkerSessionRequest)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // string session_handle = 1;
+  if (this->session_handle().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->session_handle());
+  }
+
+  // .tensorflow.ServerDef server_def = 2;
+  if (this->has_server_def()) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::MessageSize(
+        *server_def_);
+  }
+
+  // bool isolate_session_state = 3;
+  if (this->isolate_session_state() != 0) {
+    total_size += 1 + 1;
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void CreateWorkerSessionRequest::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.CreateWorkerSessionRequest)
+  GOOGLE_DCHECK_NE(&from, this);
+  const CreateWorkerSessionRequest* source =
+      ::google::protobuf::DynamicCastToGenerated<CreateWorkerSessionRequest>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.CreateWorkerSessionRequest)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.CreateWorkerSessionRequest)
+    MergeFrom(*source);
+  }
+}
+
+void CreateWorkerSessionRequest::MergeFrom(const CreateWorkerSessionRequest& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.CreateWorkerSessionRequest)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  if (from.session_handle().size() > 0) {
+    set_session_handle(from.session_handle());
+  }
+  if (from.has_server_def()) {
+    mutable_server_def()->::tensorflow::ServerDef::MergeFrom(from.server_def());
+  }
+  if (from.isolate_session_state() != 0) {
+    set_isolate_session_state(from.isolate_session_state());
+  }
+}
+
+void CreateWorkerSessionRequest::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.CreateWorkerSessionRequest)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void CreateWorkerSessionRequest::CopyFrom(const CreateWorkerSessionRequest& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.CreateWorkerSessionRequest)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool CreateWorkerSessionRequest::IsInitialized() const {
+  return true;
+}
+
+void CreateWorkerSessionRequest::Swap(CreateWorkerSessionRequest* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    CreateWorkerSessionRequest* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void CreateWorkerSessionRequest::UnsafeArenaSwap(CreateWorkerSessionRequest* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void CreateWorkerSessionRequest::InternalSwap(CreateWorkerSessionRequest* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  session_handle_.Swap(&other->session_handle_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+  swap(server_def_, other->server_def_);
+  swap(isolate_session_state_, other->isolate_session_state_);
+}
+
+::google::protobuf::Metadata CreateWorkerSessionRequest::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2fworker_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fprotobuf_2fworker_2eproto[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+void CreateWorkerSessionResponse::InitAsDefaultInstance() {
+}
+class CreateWorkerSessionResponse::HasBitSetters {
+ public:
+};
+
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+CreateWorkerSessionResponse::CreateWorkerSessionResponse()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.CreateWorkerSessionResponse)
+}
+CreateWorkerSessionResponse::CreateWorkerSessionResponse(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.CreateWorkerSessionResponse)
+}
+CreateWorkerSessionResponse::CreateWorkerSessionResponse(const CreateWorkerSessionResponse& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  // @@protoc_insertion_point(copy_constructor:tensorflow.CreateWorkerSessionResponse)
+}
+
+void CreateWorkerSessionResponse::SharedCtor() {
+}
+
+CreateWorkerSessionResponse::~CreateWorkerSessionResponse() {
+  // @@protoc_insertion_point(destructor:tensorflow.CreateWorkerSessionResponse)
+  SharedDtor();
+}
+
+void CreateWorkerSessionResponse::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+}
+
+void CreateWorkerSessionResponse::ArenaDtor(void* object) {
+  CreateWorkerSessionResponse* _this = reinterpret_cast< CreateWorkerSessionResponse* >(object);
+  (void)_this;
+}
+void CreateWorkerSessionResponse::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void CreateWorkerSessionResponse::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const CreateWorkerSessionResponse& CreateWorkerSessionResponse::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_CreateWorkerSessionResponse_tensorflow_2fcore_2fprotobuf_2fworker_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void CreateWorkerSessionResponse::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.CreateWorkerSessionResponse)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* CreateWorkerSessionResponse::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<CreateWorkerSessionResponse*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool CreateWorkerSessionResponse::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.CreateWorkerSessionResponse)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+  handle_unusual:
+    if (tag == 0) {
+      goto success;
+    }
+    DO_(::google::protobuf::internal::WireFormat::SkipField(
+          input, tag, _internal_metadata_.mutable_unknown_fields()));
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.CreateWorkerSessionResponse)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.CreateWorkerSessionResponse)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void CreateWorkerSessionResponse::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.CreateWorkerSessionResponse)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.CreateWorkerSessionResponse)
+}
+
+::google::protobuf::uint8* CreateWorkerSessionResponse::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.CreateWorkerSessionResponse)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.CreateWorkerSessionResponse)
+  return target;
+}
+
+size_t CreateWorkerSessionResponse::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.CreateWorkerSessionResponse)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void CreateWorkerSessionResponse::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.CreateWorkerSessionResponse)
+  GOOGLE_DCHECK_NE(&from, this);
+  const CreateWorkerSessionResponse* source =
+      ::google::protobuf::DynamicCastToGenerated<CreateWorkerSessionResponse>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.CreateWorkerSessionResponse)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.CreateWorkerSessionResponse)
+    MergeFrom(*source);
+  }
+}
+
+void CreateWorkerSessionResponse::MergeFrom(const CreateWorkerSessionResponse& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.CreateWorkerSessionResponse)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+}
+
+void CreateWorkerSessionResponse::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.CreateWorkerSessionResponse)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void CreateWorkerSessionResponse::CopyFrom(const CreateWorkerSessionResponse& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.CreateWorkerSessionResponse)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool CreateWorkerSessionResponse::IsInitialized() const {
+  return true;
+}
+
+void CreateWorkerSessionResponse::Swap(CreateWorkerSessionResponse* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    CreateWorkerSessionResponse* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void CreateWorkerSessionResponse::UnsafeArenaSwap(CreateWorkerSessionResponse* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void CreateWorkerSessionResponse::InternalSwap(CreateWorkerSessionResponse* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+}
+
+::google::protobuf::Metadata CreateWorkerSessionResponse::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2fworker_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fprotobuf_2fworker_2eproto[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+void DeleteWorkerSessionRequest::InitAsDefaultInstance() {
+}
+class DeleteWorkerSessionRequest::HasBitSetters {
+ public:
+};
+
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int DeleteWorkerSessionRequest::kSessionHandleFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+DeleteWorkerSessionRequest::DeleteWorkerSessionRequest()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.DeleteWorkerSessionRequest)
+}
+DeleteWorkerSessionRequest::DeleteWorkerSessionRequest(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.DeleteWorkerSessionRequest)
+}
+DeleteWorkerSessionRequest::DeleteWorkerSessionRequest(const DeleteWorkerSessionRequest& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  session_handle_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.session_handle().size() > 0) {
+    session_handle_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.session_handle(),
+      GetArenaNoVirtual());
+  }
+  // @@protoc_insertion_point(copy_constructor:tensorflow.DeleteWorkerSessionRequest)
+}
+
+void DeleteWorkerSessionRequest::SharedCtor() {
+  ::google::protobuf::internal::InitSCC(
+      &scc_info_DeleteWorkerSessionRequest_tensorflow_2fcore_2fprotobuf_2fworker_2eproto.base);
+  session_handle_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+
+DeleteWorkerSessionRequest::~DeleteWorkerSessionRequest() {
+  // @@protoc_insertion_point(destructor:tensorflow.DeleteWorkerSessionRequest)
+  SharedDtor();
+}
+
+void DeleteWorkerSessionRequest::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+  session_handle_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+
+void DeleteWorkerSessionRequest::ArenaDtor(void* object) {
+  DeleteWorkerSessionRequest* _this = reinterpret_cast< DeleteWorkerSessionRequest* >(object);
+  (void)_this;
+}
+void DeleteWorkerSessionRequest::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void DeleteWorkerSessionRequest::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const DeleteWorkerSessionRequest& DeleteWorkerSessionRequest::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_DeleteWorkerSessionRequest_tensorflow_2fcore_2fprotobuf_2fworker_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void DeleteWorkerSessionRequest::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.DeleteWorkerSessionRequest)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  session_handle_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* DeleteWorkerSessionRequest::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<DeleteWorkerSessionRequest*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // string session_handle = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 10) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("tensorflow.DeleteWorkerSessionRequest.session_handle");
+        parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+        ::std::string* str = msg->mutable_session_handle();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool DeleteWorkerSessionRequest::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.DeleteWorkerSessionRequest)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // string session_handle = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (10 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_session_handle()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->session_handle().data(), static_cast<int>(this->session_handle().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.DeleteWorkerSessionRequest.session_handle"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.DeleteWorkerSessionRequest)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.DeleteWorkerSessionRequest)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void DeleteWorkerSessionRequest::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.DeleteWorkerSessionRequest)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // string session_handle = 1;
+  if (this->session_handle().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->session_handle().data(), static_cast<int>(this->session_handle().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.DeleteWorkerSessionRequest.session_handle");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      1, this->session_handle(), output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.DeleteWorkerSessionRequest)
+}
+
+::google::protobuf::uint8* DeleteWorkerSessionRequest::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.DeleteWorkerSessionRequest)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // string session_handle = 1;
+  if (this->session_handle().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->session_handle().data(), static_cast<int>(this->session_handle().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.DeleteWorkerSessionRequest.session_handle");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        1, this->session_handle(), target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.DeleteWorkerSessionRequest)
+  return target;
+}
+
+size_t DeleteWorkerSessionRequest::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.DeleteWorkerSessionRequest)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // string session_handle = 1;
+  if (this->session_handle().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->session_handle());
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void DeleteWorkerSessionRequest::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.DeleteWorkerSessionRequest)
+  GOOGLE_DCHECK_NE(&from, this);
+  const DeleteWorkerSessionRequest* source =
+      ::google::protobuf::DynamicCastToGenerated<DeleteWorkerSessionRequest>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.DeleteWorkerSessionRequest)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.DeleteWorkerSessionRequest)
+    MergeFrom(*source);
+  }
+}
+
+void DeleteWorkerSessionRequest::MergeFrom(const DeleteWorkerSessionRequest& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.DeleteWorkerSessionRequest)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  if (from.session_handle().size() > 0) {
+    set_session_handle(from.session_handle());
+  }
+}
+
+void DeleteWorkerSessionRequest::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.DeleteWorkerSessionRequest)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void DeleteWorkerSessionRequest::CopyFrom(const DeleteWorkerSessionRequest& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.DeleteWorkerSessionRequest)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool DeleteWorkerSessionRequest::IsInitialized() const {
+  return true;
+}
+
+void DeleteWorkerSessionRequest::Swap(DeleteWorkerSessionRequest* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    DeleteWorkerSessionRequest* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void DeleteWorkerSessionRequest::UnsafeArenaSwap(DeleteWorkerSessionRequest* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void DeleteWorkerSessionRequest::InternalSwap(DeleteWorkerSessionRequest* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  session_handle_.Swap(&other->session_handle_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+}
+
+::google::protobuf::Metadata DeleteWorkerSessionRequest::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2fworker_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fprotobuf_2fworker_2eproto[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+void DeleteWorkerSessionResponse::InitAsDefaultInstance() {
+}
+class DeleteWorkerSessionResponse::HasBitSetters {
+ public:
+};
+
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+DeleteWorkerSessionResponse::DeleteWorkerSessionResponse()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.DeleteWorkerSessionResponse)
+}
+DeleteWorkerSessionResponse::DeleteWorkerSessionResponse(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.DeleteWorkerSessionResponse)
+}
+DeleteWorkerSessionResponse::DeleteWorkerSessionResponse(const DeleteWorkerSessionResponse& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  // @@protoc_insertion_point(copy_constructor:tensorflow.DeleteWorkerSessionResponse)
+}
+
+void DeleteWorkerSessionResponse::SharedCtor() {
+}
+
+DeleteWorkerSessionResponse::~DeleteWorkerSessionResponse() {
+  // @@protoc_insertion_point(destructor:tensorflow.DeleteWorkerSessionResponse)
+  SharedDtor();
+}
+
+void DeleteWorkerSessionResponse::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+}
+
+void DeleteWorkerSessionResponse::ArenaDtor(void* object) {
+  DeleteWorkerSessionResponse* _this = reinterpret_cast< DeleteWorkerSessionResponse* >(object);
+  (void)_this;
+}
+void DeleteWorkerSessionResponse::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void DeleteWorkerSessionResponse::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const DeleteWorkerSessionResponse& DeleteWorkerSessionResponse::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_DeleteWorkerSessionResponse_tensorflow_2fcore_2fprotobuf_2fworker_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void DeleteWorkerSessionResponse::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.DeleteWorkerSessionResponse)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* DeleteWorkerSessionResponse::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<DeleteWorkerSessionResponse*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool DeleteWorkerSessionResponse::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.DeleteWorkerSessionResponse)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+  handle_unusual:
+    if (tag == 0) {
+      goto success;
+    }
+    DO_(::google::protobuf::internal::WireFormat::SkipField(
+          input, tag, _internal_metadata_.mutable_unknown_fields()));
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.DeleteWorkerSessionResponse)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.DeleteWorkerSessionResponse)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void DeleteWorkerSessionResponse::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.DeleteWorkerSessionResponse)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.DeleteWorkerSessionResponse)
+}
+
+::google::protobuf::uint8* DeleteWorkerSessionResponse::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.DeleteWorkerSessionResponse)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.DeleteWorkerSessionResponse)
+  return target;
+}
+
+size_t DeleteWorkerSessionResponse::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.DeleteWorkerSessionResponse)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void DeleteWorkerSessionResponse::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.DeleteWorkerSessionResponse)
+  GOOGLE_DCHECK_NE(&from, this);
+  const DeleteWorkerSessionResponse* source =
+      ::google::protobuf::DynamicCastToGenerated<DeleteWorkerSessionResponse>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.DeleteWorkerSessionResponse)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.DeleteWorkerSessionResponse)
+    MergeFrom(*source);
+  }
+}
+
+void DeleteWorkerSessionResponse::MergeFrom(const DeleteWorkerSessionResponse& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.DeleteWorkerSessionResponse)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+}
+
+void DeleteWorkerSessionResponse::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.DeleteWorkerSessionResponse)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void DeleteWorkerSessionResponse::CopyFrom(const DeleteWorkerSessionResponse& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.DeleteWorkerSessionResponse)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool DeleteWorkerSessionResponse::IsInitialized() const {
+  return true;
+}
+
+void DeleteWorkerSessionResponse::Swap(DeleteWorkerSessionResponse* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    DeleteWorkerSessionResponse* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void DeleteWorkerSessionResponse::UnsafeArenaSwap(DeleteWorkerSessionResponse* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void DeleteWorkerSessionResponse::InternalSwap(DeleteWorkerSessionResponse* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+}
+
+::google::protobuf::Metadata DeleteWorkerSessionResponse::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2fworker_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fprotobuf_2fworker_2eproto[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+void RegisterGraphRequest::InitAsDefaultInstance() {
+  ::tensorflow::_RegisterGraphRequest_default_instance_._instance.get_mutable()->graph_def_ = const_cast< ::tensorflow::GraphDef*>(
+      ::tensorflow::GraphDef::internal_default_instance());
+  ::tensorflow::_RegisterGraphRequest_default_instance_._instance.get_mutable()->graph_options_ = const_cast< ::tensorflow::GraphOptions*>(
+      ::tensorflow::GraphOptions::internal_default_instance());
+  ::tensorflow::_RegisterGraphRequest_default_instance_._instance.get_mutable()->debug_options_ = const_cast< ::tensorflow::DebugOptions*>(
+      ::tensorflow::DebugOptions::internal_default_instance());
+}
+class RegisterGraphRequest::HasBitSetters {
+ public:
+  static const ::tensorflow::GraphDef& graph_def(const RegisterGraphRequest* msg);
+  static const ::tensorflow::GraphOptions& graph_options(const RegisterGraphRequest* msg);
+  static const ::tensorflow::DebugOptions& debug_options(const RegisterGraphRequest* msg);
+};
+
+const ::tensorflow::GraphDef&
+RegisterGraphRequest::HasBitSetters::graph_def(const RegisterGraphRequest* msg) {
+  return *msg->graph_def_;
+}
+const ::tensorflow::GraphOptions&
+RegisterGraphRequest::HasBitSetters::graph_options(const RegisterGraphRequest* msg) {
+  return *msg->graph_options_;
+}
+const ::tensorflow::DebugOptions&
+RegisterGraphRequest::HasBitSetters::debug_options(const RegisterGraphRequest* msg) {
+  return *msg->debug_options_;
+}
+void RegisterGraphRequest::unsafe_arena_set_allocated_graph_def(
+    ::tensorflow::GraphDef* graph_def) {
+  if (GetArenaNoVirtual() == NULL) {
+    delete graph_def_;
+  }
+  graph_def_ = graph_def;
+  if (graph_def) {
+    
+  } else {
+    
+  }
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.RegisterGraphRequest.graph_def)
+}
+void RegisterGraphRequest::clear_graph_def() {
+  if (GetArenaNoVirtual() == NULL && graph_def_ != NULL) {
+    delete graph_def_;
+  }
+  graph_def_ = NULL;
+}
+void RegisterGraphRequest::unsafe_arena_set_allocated_graph_options(
+    ::tensorflow::GraphOptions* graph_options) {
+  if (GetArenaNoVirtual() == NULL) {
+    delete graph_options_;
+  }
+  graph_options_ = graph_options;
+  if (graph_options) {
+    
+  } else {
+    
+  }
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.RegisterGraphRequest.graph_options)
+}
+void RegisterGraphRequest::clear_graph_options() {
+  if (GetArenaNoVirtual() == NULL && graph_options_ != NULL) {
+    delete graph_options_;
+  }
+  graph_options_ = NULL;
+}
+void RegisterGraphRequest::unsafe_arena_set_allocated_debug_options(
+    ::tensorflow::DebugOptions* debug_options) {
+  if (GetArenaNoVirtual() == NULL) {
+    delete debug_options_;
+  }
+  debug_options_ = debug_options;
+  if (debug_options) {
+    
+  } else {
+    
+  }
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.RegisterGraphRequest.debug_options)
+}
+void RegisterGraphRequest::clear_debug_options() {
+  if (GetArenaNoVirtual() == NULL && debug_options_ != NULL) {
+    delete debug_options_;
+  }
+  debug_options_ = NULL;
+}
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int RegisterGraphRequest::kSessionHandleFieldNumber;
+const int RegisterGraphRequest::kCreateWorkerSessionCalledFieldNumber;
+const int RegisterGraphRequest::kGraphDefFieldNumber;
+const int RegisterGraphRequest::kHasControlFlowFieldNumber;
+const int RegisterGraphRequest::kGraphOptionsFieldNumber;
+const int RegisterGraphRequest::kDebugOptionsFieldNumber;
+const int RegisterGraphRequest::kCollectiveGraphKeyFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+RegisterGraphRequest::RegisterGraphRequest()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.RegisterGraphRequest)
+}
+RegisterGraphRequest::RegisterGraphRequest(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.RegisterGraphRequest)
+}
+RegisterGraphRequest::RegisterGraphRequest(const RegisterGraphRequest& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  session_handle_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.session_handle().size() > 0) {
+    session_handle_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.session_handle(),
+      GetArenaNoVirtual());
+  }
+  if (from.has_graph_def()) {
+    graph_def_ = new ::tensorflow::GraphDef(*from.graph_def_);
+  } else {
+    graph_def_ = NULL;
+  }
+  if (from.has_graph_options()) {
+    graph_options_ = new ::tensorflow::GraphOptions(*from.graph_options_);
+  } else {
+    graph_options_ = NULL;
+  }
+  if (from.has_debug_options()) {
+    debug_options_ = new ::tensorflow::DebugOptions(*from.debug_options_);
+  } else {
+    debug_options_ = NULL;
+  }
+  ::memcpy(&collective_graph_key_, &from.collective_graph_key_,
+    static_cast<size_t>(reinterpret_cast<char*>(&has_control_flow_) -
+    reinterpret_cast<char*>(&collective_graph_key_)) + sizeof(has_control_flow_));
+  // @@protoc_insertion_point(copy_constructor:tensorflow.RegisterGraphRequest)
+}
+
+void RegisterGraphRequest::SharedCtor() {
+  ::google::protobuf::internal::InitSCC(
+      &scc_info_RegisterGraphRequest_tensorflow_2fcore_2fprotobuf_2fworker_2eproto.base);
+  session_handle_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  ::memset(&graph_def_, 0, static_cast<size_t>(
+      reinterpret_cast<char*>(&has_control_flow_) -
+      reinterpret_cast<char*>(&graph_def_)) + sizeof(has_control_flow_));
+}
+
+RegisterGraphRequest::~RegisterGraphRequest() {
+  // @@protoc_insertion_point(destructor:tensorflow.RegisterGraphRequest)
+  SharedDtor();
+}
+
+void RegisterGraphRequest::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+  session_handle_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (this != internal_default_instance()) delete graph_def_;
+  if (this != internal_default_instance()) delete graph_options_;
+  if (this != internal_default_instance()) delete debug_options_;
+}
+
+void RegisterGraphRequest::ArenaDtor(void* object) {
+  RegisterGraphRequest* _this = reinterpret_cast< RegisterGraphRequest* >(object);
+  (void)_this;
+}
+void RegisterGraphRequest::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void RegisterGraphRequest::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const RegisterGraphRequest& RegisterGraphRequest::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_RegisterGraphRequest_tensorflow_2fcore_2fprotobuf_2fworker_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void RegisterGraphRequest::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.RegisterGraphRequest)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  session_handle_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+  if (GetArenaNoVirtual() == NULL && graph_def_ != NULL) {
+    delete graph_def_;
+  }
+  graph_def_ = NULL;
+  if (GetArenaNoVirtual() == NULL && graph_options_ != NULL) {
+    delete graph_options_;
+  }
+  graph_options_ = NULL;
+  if (GetArenaNoVirtual() == NULL && debug_options_ != NULL) {
+    delete debug_options_;
+  }
+  debug_options_ = NULL;
+  ::memset(&collective_graph_key_, 0, static_cast<size_t>(
+      reinterpret_cast<char*>(&has_control_flow_) -
+      reinterpret_cast<char*>(&collective_graph_key_)) + sizeof(has_control_flow_));
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* RegisterGraphRequest::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<RegisterGraphRequest*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // string session_handle = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 10) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("tensorflow.RegisterGraphRequest.session_handle");
+        parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+        ::std::string* str = msg->mutable_session_handle();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+        break;
+      }
+      // .tensorflow.GraphDef graph_def = 2;
+      case 2: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 18) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        parser_till_end = ::tensorflow::GraphDef::_InternalParse;
+        object = msg->mutable_graph_def();
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                       ptr, newend);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+        ptr = newend;
+        break;
+      }
+      // bool has_control_flow = 3 [deprecated = true];
+      case 3: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 24) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        bool value = val;
+        msg->set_has_control_flow(value);
+        break;
+      }
+      // .tensorflow.GraphOptions graph_options = 4;
+      case 4: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 34) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        parser_till_end = ::tensorflow::GraphOptions::_InternalParse;
+        object = msg->mutable_graph_options();
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                       ptr, newend);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+        ptr = newend;
+        break;
+      }
+      // .tensorflow.DebugOptions debug_options = 5;
+      case 5: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 42) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        parser_till_end = ::tensorflow::DebugOptions::_InternalParse;
+        object = msg->mutable_debug_options();
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                       ptr, newend);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+        ptr = newend;
+        break;
+      }
+      // bool create_worker_session_called = 6;
+      case 6: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 48) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        bool value = val;
+        msg->set_create_worker_session_called(value);
+        break;
+      }
+      // int64 collective_graph_key = 7;
+      case 7: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 56) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::google::protobuf::int64 value = val;
+        msg->set_collective_graph_key(value);
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool RegisterGraphRequest::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.RegisterGraphRequest)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // string session_handle = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (10 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_session_handle()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->session_handle().data(), static_cast<int>(this->session_handle().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.RegisterGraphRequest.session_handle"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // .tensorflow.GraphDef graph_def = 2;
+      case 2: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (18 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+               input, mutable_graph_def()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // bool has_control_flow = 3 [deprecated = true];
+      case 3: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (24 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
+                 input, &has_control_flow_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // .tensorflow.GraphOptions graph_options = 4;
+      case 4: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (34 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+               input, mutable_graph_options()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // .tensorflow.DebugOptions debug_options = 5;
+      case 5: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (42 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+               input, mutable_debug_options()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // bool create_worker_session_called = 6;
+      case 6: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (48 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
+                 input, &create_worker_session_called_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // int64 collective_graph_key = 7;
+      case 7: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (56 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>(
+                 input, &collective_graph_key_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.RegisterGraphRequest)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.RegisterGraphRequest)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void RegisterGraphRequest::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.RegisterGraphRequest)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // string session_handle = 1;
+  if (this->session_handle().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->session_handle().data(), static_cast<int>(this->session_handle().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.RegisterGraphRequest.session_handle");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      1, this->session_handle(), output);
+  }
+
+  // .tensorflow.GraphDef graph_def = 2;
+  if (this->has_graph_def()) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      2, HasBitSetters::graph_def(this), output);
+  }
+
+  // bool has_control_flow = 3 [deprecated = true];
+  if (this->has_control_flow() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteBool(3, this->has_control_flow(), output);
+  }
+
+  // .tensorflow.GraphOptions graph_options = 4;
+  if (this->has_graph_options()) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      4, HasBitSetters::graph_options(this), output);
+  }
+
+  // .tensorflow.DebugOptions debug_options = 5;
+  if (this->has_debug_options()) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      5, HasBitSetters::debug_options(this), output);
+  }
+
+  // bool create_worker_session_called = 6;
+  if (this->create_worker_session_called() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteBool(6, this->create_worker_session_called(), output);
+  }
+
+  // int64 collective_graph_key = 7;
+  if (this->collective_graph_key() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt64(7, this->collective_graph_key(), output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.RegisterGraphRequest)
+}
+
+::google::protobuf::uint8* RegisterGraphRequest::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.RegisterGraphRequest)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // string session_handle = 1;
+  if (this->session_handle().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->session_handle().data(), static_cast<int>(this->session_handle().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.RegisterGraphRequest.session_handle");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        1, this->session_handle(), target);
+  }
+
+  // .tensorflow.GraphDef graph_def = 2;
+  if (this->has_graph_def()) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        2, HasBitSetters::graph_def(this), deterministic, target);
+  }
+
+  // bool has_control_flow = 3 [deprecated = true];
+  if (this->has_control_flow() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(3, this->has_control_flow(), target);
+  }
+
+  // .tensorflow.GraphOptions graph_options = 4;
+  if (this->has_graph_options()) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        4, HasBitSetters::graph_options(this), deterministic, target);
+  }
+
+  // .tensorflow.DebugOptions debug_options = 5;
+  if (this->has_debug_options()) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        5, HasBitSetters::debug_options(this), deterministic, target);
+  }
+
+  // bool create_worker_session_called = 6;
+  if (this->create_worker_session_called() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(6, this->create_worker_session_called(), target);
+  }
+
+  // int64 collective_graph_key = 7;
+  if (this->collective_graph_key() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt64ToArray(7, this->collective_graph_key(), target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.RegisterGraphRequest)
+  return target;
+}
+
+size_t RegisterGraphRequest::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.RegisterGraphRequest)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // string session_handle = 1;
+  if (this->session_handle().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->session_handle());
+  }
+
+  // .tensorflow.GraphDef graph_def = 2;
+  if (this->has_graph_def()) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::MessageSize(
+        *graph_def_);
+  }
+
+  // .tensorflow.GraphOptions graph_options = 4;
+  if (this->has_graph_options()) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::MessageSize(
+        *graph_options_);
+  }
+
+  // .tensorflow.DebugOptions debug_options = 5;
+  if (this->has_debug_options()) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::MessageSize(
+        *debug_options_);
+  }
+
+  // int64 collective_graph_key = 7;
+  if (this->collective_graph_key() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::Int64Size(
+        this->collective_graph_key());
+  }
+
+  // bool create_worker_session_called = 6;
+  if (this->create_worker_session_called() != 0) {
+    total_size += 1 + 1;
+  }
+
+  // bool has_control_flow = 3 [deprecated = true];
+  if (this->has_control_flow() != 0) {
+    total_size += 1 + 1;
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void RegisterGraphRequest::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.RegisterGraphRequest)
+  GOOGLE_DCHECK_NE(&from, this);
+  const RegisterGraphRequest* source =
+      ::google::protobuf::DynamicCastToGenerated<RegisterGraphRequest>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.RegisterGraphRequest)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.RegisterGraphRequest)
+    MergeFrom(*source);
+  }
+}
+
+void RegisterGraphRequest::MergeFrom(const RegisterGraphRequest& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.RegisterGraphRequest)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  if (from.session_handle().size() > 0) {
+    set_session_handle(from.session_handle());
+  }
+  if (from.has_graph_def()) {
+    mutable_graph_def()->::tensorflow::GraphDef::MergeFrom(from.graph_def());
+  }
+  if (from.has_graph_options()) {
+    mutable_graph_options()->::tensorflow::GraphOptions::MergeFrom(from.graph_options());
+  }
+  if (from.has_debug_options()) {
+    mutable_debug_options()->::tensorflow::DebugOptions::MergeFrom(from.debug_options());
+  }
+  if (from.collective_graph_key() != 0) {
+    set_collective_graph_key(from.collective_graph_key());
+  }
+  if (from.create_worker_session_called() != 0) {
+    set_create_worker_session_called(from.create_worker_session_called());
+  }
+  if (from.has_control_flow() != 0) {
+    set_has_control_flow(from.has_control_flow());
+  }
+}
+
+void RegisterGraphRequest::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.RegisterGraphRequest)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void RegisterGraphRequest::CopyFrom(const RegisterGraphRequest& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.RegisterGraphRequest)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool RegisterGraphRequest::IsInitialized() const {
+  return true;
+}
+
+void RegisterGraphRequest::Swap(RegisterGraphRequest* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    RegisterGraphRequest* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void RegisterGraphRequest::UnsafeArenaSwap(RegisterGraphRequest* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void RegisterGraphRequest::InternalSwap(RegisterGraphRequest* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  session_handle_.Swap(&other->session_handle_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+  swap(graph_def_, other->graph_def_);
+  swap(graph_options_, other->graph_options_);
+  swap(debug_options_, other->debug_options_);
+  swap(collective_graph_key_, other->collective_graph_key_);
+  swap(create_worker_session_called_, other->create_worker_session_called_);
+  swap(has_control_flow_, other->has_control_flow_);
+}
+
+::google::protobuf::Metadata RegisterGraphRequest::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2fworker_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fprotobuf_2fworker_2eproto[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+void RegisterGraphResponse::InitAsDefaultInstance() {
+}
+class RegisterGraphResponse::HasBitSetters {
+ public:
+};
+
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int RegisterGraphResponse::kGraphHandleFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+RegisterGraphResponse::RegisterGraphResponse()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.RegisterGraphResponse)
+}
+RegisterGraphResponse::RegisterGraphResponse(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.RegisterGraphResponse)
+}
+RegisterGraphResponse::RegisterGraphResponse(const RegisterGraphResponse& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  graph_handle_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.graph_handle().size() > 0) {
+    graph_handle_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.graph_handle(),
+      GetArenaNoVirtual());
+  }
+  // @@protoc_insertion_point(copy_constructor:tensorflow.RegisterGraphResponse)
+}
+
+void RegisterGraphResponse::SharedCtor() {
+  ::google::protobuf::internal::InitSCC(
+      &scc_info_RegisterGraphResponse_tensorflow_2fcore_2fprotobuf_2fworker_2eproto.base);
+  graph_handle_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+
+RegisterGraphResponse::~RegisterGraphResponse() {
+  // @@protoc_insertion_point(destructor:tensorflow.RegisterGraphResponse)
+  SharedDtor();
+}
+
+void RegisterGraphResponse::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+  graph_handle_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+
+void RegisterGraphResponse::ArenaDtor(void* object) {
+  RegisterGraphResponse* _this = reinterpret_cast< RegisterGraphResponse* >(object);
+  (void)_this;
+}
+void RegisterGraphResponse::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void RegisterGraphResponse::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const RegisterGraphResponse& RegisterGraphResponse::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_RegisterGraphResponse_tensorflow_2fcore_2fprotobuf_2fworker_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void RegisterGraphResponse::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.RegisterGraphResponse)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  graph_handle_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* RegisterGraphResponse::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<RegisterGraphResponse*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // string graph_handle = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 10) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("tensorflow.RegisterGraphResponse.graph_handle");
+        parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+        ::std::string* str = msg->mutable_graph_handle();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool RegisterGraphResponse::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.RegisterGraphResponse)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // string graph_handle = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (10 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_graph_handle()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->graph_handle().data(), static_cast<int>(this->graph_handle().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.RegisterGraphResponse.graph_handle"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.RegisterGraphResponse)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.RegisterGraphResponse)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void RegisterGraphResponse::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.RegisterGraphResponse)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // string graph_handle = 1;
+  if (this->graph_handle().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->graph_handle().data(), static_cast<int>(this->graph_handle().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.RegisterGraphResponse.graph_handle");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      1, this->graph_handle(), output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.RegisterGraphResponse)
+}
+
+::google::protobuf::uint8* RegisterGraphResponse::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.RegisterGraphResponse)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // string graph_handle = 1;
+  if (this->graph_handle().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->graph_handle().data(), static_cast<int>(this->graph_handle().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.RegisterGraphResponse.graph_handle");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        1, this->graph_handle(), target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.RegisterGraphResponse)
+  return target;
+}
+
+size_t RegisterGraphResponse::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.RegisterGraphResponse)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // string graph_handle = 1;
+  if (this->graph_handle().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->graph_handle());
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void RegisterGraphResponse::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.RegisterGraphResponse)
+  GOOGLE_DCHECK_NE(&from, this);
+  const RegisterGraphResponse* source =
+      ::google::protobuf::DynamicCastToGenerated<RegisterGraphResponse>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.RegisterGraphResponse)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.RegisterGraphResponse)
+    MergeFrom(*source);
+  }
+}
+
+void RegisterGraphResponse::MergeFrom(const RegisterGraphResponse& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.RegisterGraphResponse)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  if (from.graph_handle().size() > 0) {
+    set_graph_handle(from.graph_handle());
+  }
+}
+
+void RegisterGraphResponse::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.RegisterGraphResponse)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void RegisterGraphResponse::CopyFrom(const RegisterGraphResponse& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.RegisterGraphResponse)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool RegisterGraphResponse::IsInitialized() const {
+  return true;
+}
+
+void RegisterGraphResponse::Swap(RegisterGraphResponse* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    RegisterGraphResponse* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void RegisterGraphResponse::UnsafeArenaSwap(RegisterGraphResponse* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void RegisterGraphResponse::InternalSwap(RegisterGraphResponse* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  graph_handle_.Swap(&other->graph_handle_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+}
+
+::google::protobuf::Metadata RegisterGraphResponse::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2fworker_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fprotobuf_2fworker_2eproto[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+void DeregisterGraphRequest::InitAsDefaultInstance() {
+}
+class DeregisterGraphRequest::HasBitSetters {
+ public:
+};
+
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int DeregisterGraphRequest::kSessionHandleFieldNumber;
+const int DeregisterGraphRequest::kCreateWorkerSessionCalledFieldNumber;
+const int DeregisterGraphRequest::kGraphHandleFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+DeregisterGraphRequest::DeregisterGraphRequest()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.DeregisterGraphRequest)
+}
+DeregisterGraphRequest::DeregisterGraphRequest(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.DeregisterGraphRequest)
+}
+DeregisterGraphRequest::DeregisterGraphRequest(const DeregisterGraphRequest& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  graph_handle_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.graph_handle().size() > 0) {
+    graph_handle_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.graph_handle(),
+      GetArenaNoVirtual());
+  }
+  session_handle_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.session_handle().size() > 0) {
+    session_handle_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.session_handle(),
+      GetArenaNoVirtual());
+  }
+  create_worker_session_called_ = from.create_worker_session_called_;
+  // @@protoc_insertion_point(copy_constructor:tensorflow.DeregisterGraphRequest)
+}
+
+void DeregisterGraphRequest::SharedCtor() {
+  ::google::protobuf::internal::InitSCC(
+      &scc_info_DeregisterGraphRequest_tensorflow_2fcore_2fprotobuf_2fworker_2eproto.base);
+  graph_handle_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  session_handle_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  create_worker_session_called_ = false;
+}
+
+DeregisterGraphRequest::~DeregisterGraphRequest() {
+  // @@protoc_insertion_point(destructor:tensorflow.DeregisterGraphRequest)
+  SharedDtor();
+}
+
+void DeregisterGraphRequest::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+  graph_handle_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  session_handle_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+
+void DeregisterGraphRequest::ArenaDtor(void* object) {
+  DeregisterGraphRequest* _this = reinterpret_cast< DeregisterGraphRequest* >(object);
+  (void)_this;
+}
+void DeregisterGraphRequest::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void DeregisterGraphRequest::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const DeregisterGraphRequest& DeregisterGraphRequest::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_DeregisterGraphRequest_tensorflow_2fcore_2fprotobuf_2fworker_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void DeregisterGraphRequest::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.DeregisterGraphRequest)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  graph_handle_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+  session_handle_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+  create_worker_session_called_ = false;
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* DeregisterGraphRequest::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<DeregisterGraphRequest*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // string graph_handle = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 10) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("tensorflow.DeregisterGraphRequest.graph_handle");
+        parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+        ::std::string* str = msg->mutable_graph_handle();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+        break;
+      }
+      // string session_handle = 2;
+      case 2: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 18) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("tensorflow.DeregisterGraphRequest.session_handle");
+        parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+        ::std::string* str = msg->mutable_session_handle();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+        break;
+      }
+      // bool create_worker_session_called = 3;
+      case 3: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 24) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        bool value = val;
+        msg->set_create_worker_session_called(value);
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool DeregisterGraphRequest::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.DeregisterGraphRequest)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // string graph_handle = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (10 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_graph_handle()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->graph_handle().data(), static_cast<int>(this->graph_handle().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.DeregisterGraphRequest.graph_handle"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // string session_handle = 2;
+      case 2: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (18 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_session_handle()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->session_handle().data(), static_cast<int>(this->session_handle().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.DeregisterGraphRequest.session_handle"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // bool create_worker_session_called = 3;
+      case 3: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (24 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
+                 input, &create_worker_session_called_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.DeregisterGraphRequest)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.DeregisterGraphRequest)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void DeregisterGraphRequest::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.DeregisterGraphRequest)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // string graph_handle = 1;
+  if (this->graph_handle().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->graph_handle().data(), static_cast<int>(this->graph_handle().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.DeregisterGraphRequest.graph_handle");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      1, this->graph_handle(), output);
+  }
+
+  // string session_handle = 2;
+  if (this->session_handle().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->session_handle().data(), static_cast<int>(this->session_handle().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.DeregisterGraphRequest.session_handle");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      2, this->session_handle(), output);
+  }
+
+  // bool create_worker_session_called = 3;
+  if (this->create_worker_session_called() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteBool(3, this->create_worker_session_called(), output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.DeregisterGraphRequest)
+}
+
+::google::protobuf::uint8* DeregisterGraphRequest::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.DeregisterGraphRequest)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // string graph_handle = 1;
+  if (this->graph_handle().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->graph_handle().data(), static_cast<int>(this->graph_handle().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.DeregisterGraphRequest.graph_handle");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        1, this->graph_handle(), target);
+  }
+
+  // string session_handle = 2;
+  if (this->session_handle().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->session_handle().data(), static_cast<int>(this->session_handle().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.DeregisterGraphRequest.session_handle");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        2, this->session_handle(), target);
+  }
+
+  // bool create_worker_session_called = 3;
+  if (this->create_worker_session_called() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(3, this->create_worker_session_called(), target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.DeregisterGraphRequest)
+  return target;
+}
+
+size_t DeregisterGraphRequest::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.DeregisterGraphRequest)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // string graph_handle = 1;
+  if (this->graph_handle().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->graph_handle());
+  }
+
+  // string session_handle = 2;
+  if (this->session_handle().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->session_handle());
+  }
+
+  // bool create_worker_session_called = 3;
+  if (this->create_worker_session_called() != 0) {
+    total_size += 1 + 1;
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void DeregisterGraphRequest::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.DeregisterGraphRequest)
+  GOOGLE_DCHECK_NE(&from, this);
+  const DeregisterGraphRequest* source =
+      ::google::protobuf::DynamicCastToGenerated<DeregisterGraphRequest>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.DeregisterGraphRequest)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.DeregisterGraphRequest)
+    MergeFrom(*source);
+  }
+}
+
+void DeregisterGraphRequest::MergeFrom(const DeregisterGraphRequest& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.DeregisterGraphRequest)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  if (from.graph_handle().size() > 0) {
+    set_graph_handle(from.graph_handle());
+  }
+  if (from.session_handle().size() > 0) {
+    set_session_handle(from.session_handle());
+  }
+  if (from.create_worker_session_called() != 0) {
+    set_create_worker_session_called(from.create_worker_session_called());
+  }
+}
+
+void DeregisterGraphRequest::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.DeregisterGraphRequest)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void DeregisterGraphRequest::CopyFrom(const DeregisterGraphRequest& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.DeregisterGraphRequest)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool DeregisterGraphRequest::IsInitialized() const {
+  return true;
+}
+
+void DeregisterGraphRequest::Swap(DeregisterGraphRequest* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    DeregisterGraphRequest* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void DeregisterGraphRequest::UnsafeArenaSwap(DeregisterGraphRequest* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void DeregisterGraphRequest::InternalSwap(DeregisterGraphRequest* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  graph_handle_.Swap(&other->graph_handle_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+  session_handle_.Swap(&other->session_handle_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+  swap(create_worker_session_called_, other->create_worker_session_called_);
+}
+
+::google::protobuf::Metadata DeregisterGraphRequest::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2fworker_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fprotobuf_2fworker_2eproto[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+void DeregisterGraphResponse::InitAsDefaultInstance() {
+}
+class DeregisterGraphResponse::HasBitSetters {
+ public:
+};
+
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+DeregisterGraphResponse::DeregisterGraphResponse()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.DeregisterGraphResponse)
+}
+DeregisterGraphResponse::DeregisterGraphResponse(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.DeregisterGraphResponse)
+}
+DeregisterGraphResponse::DeregisterGraphResponse(const DeregisterGraphResponse& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  // @@protoc_insertion_point(copy_constructor:tensorflow.DeregisterGraphResponse)
+}
+
+void DeregisterGraphResponse::SharedCtor() {
+}
+
+DeregisterGraphResponse::~DeregisterGraphResponse() {
+  // @@protoc_insertion_point(destructor:tensorflow.DeregisterGraphResponse)
+  SharedDtor();
+}
+
+void DeregisterGraphResponse::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+}
+
+void DeregisterGraphResponse::ArenaDtor(void* object) {
+  DeregisterGraphResponse* _this = reinterpret_cast< DeregisterGraphResponse* >(object);
+  (void)_this;
+}
+void DeregisterGraphResponse::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void DeregisterGraphResponse::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const DeregisterGraphResponse& DeregisterGraphResponse::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_DeregisterGraphResponse_tensorflow_2fcore_2fprotobuf_2fworker_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void DeregisterGraphResponse::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.DeregisterGraphResponse)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* DeregisterGraphResponse::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<DeregisterGraphResponse*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool DeregisterGraphResponse::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.DeregisterGraphResponse)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+  handle_unusual:
+    if (tag == 0) {
+      goto success;
+    }
+    DO_(::google::protobuf::internal::WireFormat::SkipField(
+          input, tag, _internal_metadata_.mutable_unknown_fields()));
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.DeregisterGraphResponse)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.DeregisterGraphResponse)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void DeregisterGraphResponse::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.DeregisterGraphResponse)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.DeregisterGraphResponse)
+}
+
+::google::protobuf::uint8* DeregisterGraphResponse::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.DeregisterGraphResponse)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.DeregisterGraphResponse)
+  return target;
+}
+
+size_t DeregisterGraphResponse::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.DeregisterGraphResponse)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void DeregisterGraphResponse::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.DeregisterGraphResponse)
+  GOOGLE_DCHECK_NE(&from, this);
+  const DeregisterGraphResponse* source =
+      ::google::protobuf::DynamicCastToGenerated<DeregisterGraphResponse>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.DeregisterGraphResponse)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.DeregisterGraphResponse)
+    MergeFrom(*source);
+  }
+}
+
+void DeregisterGraphResponse::MergeFrom(const DeregisterGraphResponse& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.DeregisterGraphResponse)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+}
+
+void DeregisterGraphResponse::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.DeregisterGraphResponse)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void DeregisterGraphResponse::CopyFrom(const DeregisterGraphResponse& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.DeregisterGraphResponse)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool DeregisterGraphResponse::IsInitialized() const {
+  return true;
+}
+
+void DeregisterGraphResponse::Swap(DeregisterGraphResponse* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    DeregisterGraphResponse* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void DeregisterGraphResponse::UnsafeArenaSwap(DeregisterGraphResponse* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void DeregisterGraphResponse::InternalSwap(DeregisterGraphResponse* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+}
+
+::google::protobuf::Metadata DeregisterGraphResponse::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2fworker_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fprotobuf_2fworker_2eproto[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+void CleanupAllRequest::InitAsDefaultInstance() {
+}
+class CleanupAllRequest::HasBitSetters {
+ public:
+};
+
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int CleanupAllRequest::kContainerFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+CleanupAllRequest::CleanupAllRequest()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.CleanupAllRequest)
+}
+CleanupAllRequest::CleanupAllRequest(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena),
+  container_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.CleanupAllRequest)
+}
+CleanupAllRequest::CleanupAllRequest(const CleanupAllRequest& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL),
+      container_(from.container_) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  // @@protoc_insertion_point(copy_constructor:tensorflow.CleanupAllRequest)
+}
+
+void CleanupAllRequest::SharedCtor() {
+  ::google::protobuf::internal::InitSCC(
+      &scc_info_CleanupAllRequest_tensorflow_2fcore_2fprotobuf_2fworker_2eproto.base);
+}
+
+CleanupAllRequest::~CleanupAllRequest() {
+  // @@protoc_insertion_point(destructor:tensorflow.CleanupAllRequest)
+  SharedDtor();
+}
+
+void CleanupAllRequest::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+}
+
+void CleanupAllRequest::ArenaDtor(void* object) {
+  CleanupAllRequest* _this = reinterpret_cast< CleanupAllRequest* >(object);
+  (void)_this;
+}
+void CleanupAllRequest::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void CleanupAllRequest::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const CleanupAllRequest& CleanupAllRequest::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_CleanupAllRequest_tensorflow_2fcore_2fprotobuf_2fworker_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void CleanupAllRequest::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.CleanupAllRequest)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  container_.Clear();
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* CleanupAllRequest::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<CleanupAllRequest*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // repeated string container = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 10) goto handle_unusual;
+        do {
+          ptr = Varint::Parse32Inline(ptr, &size);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          ctx->extra_parse_data().SetFieldName("tensorflow.CleanupAllRequest.container");
+          parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+          ::std::string* str = msg->add_container();
+          str->clear();
+          object = str;
+          if (size > end - ptr) goto len_delim_till_end;
+          auto newend = ptr + size;
+          if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+          if (ptr >= end) break;
+        } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 10 && (ptr += 1));
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool CleanupAllRequest::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.CleanupAllRequest)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // repeated string container = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (10 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->add_container()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->container(this->container_size() - 1).data(),
+            static_cast<int>(this->container(this->container_size() - 1).length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.CleanupAllRequest.container"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.CleanupAllRequest)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.CleanupAllRequest)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void CleanupAllRequest::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.CleanupAllRequest)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // repeated string container = 1;
+  for (int i = 0, n = this->container_size(); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->container(i).data(), static_cast<int>(this->container(i).length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.CleanupAllRequest.container");
+    ::google::protobuf::internal::WireFormatLite::WriteString(
+      1, this->container(i), output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.CleanupAllRequest)
+}
+
+::google::protobuf::uint8* CleanupAllRequest::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.CleanupAllRequest)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // repeated string container = 1;
+  for (int i = 0, n = this->container_size(); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->container(i).data(), static_cast<int>(this->container(i).length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.CleanupAllRequest.container");
+    target = ::google::protobuf::internal::WireFormatLite::
+      WriteStringToArray(1, this->container(i), target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.CleanupAllRequest)
+  return target;
+}
+
+size_t CleanupAllRequest::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.CleanupAllRequest)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // repeated string container = 1;
+  total_size += 1 *
+      ::google::protobuf::internal::FromIntSize(this->container_size());
+  for (int i = 0, n = this->container_size(); i < n; i++) {
+    total_size += ::google::protobuf::internal::WireFormatLite::StringSize(
+      this->container(i));
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void CleanupAllRequest::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.CleanupAllRequest)
+  GOOGLE_DCHECK_NE(&from, this);
+  const CleanupAllRequest* source =
+      ::google::protobuf::DynamicCastToGenerated<CleanupAllRequest>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.CleanupAllRequest)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.CleanupAllRequest)
+    MergeFrom(*source);
+  }
+}
+
+void CleanupAllRequest::MergeFrom(const CleanupAllRequest& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.CleanupAllRequest)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  container_.MergeFrom(from.container_);
+}
+
+void CleanupAllRequest::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.CleanupAllRequest)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void CleanupAllRequest::CopyFrom(const CleanupAllRequest& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.CleanupAllRequest)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool CleanupAllRequest::IsInitialized() const {
+  return true;
+}
+
+void CleanupAllRequest::Swap(CleanupAllRequest* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    CleanupAllRequest* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void CleanupAllRequest::UnsafeArenaSwap(CleanupAllRequest* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void CleanupAllRequest::InternalSwap(CleanupAllRequest* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  container_.InternalSwap(CastToBase(&other->container_));
+}
+
+::google::protobuf::Metadata CleanupAllRequest::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2fworker_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fprotobuf_2fworker_2eproto[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+void CleanupAllResponse::InitAsDefaultInstance() {
+}
+class CleanupAllResponse::HasBitSetters {
+ public:
+};
+
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+CleanupAllResponse::CleanupAllResponse()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.CleanupAllResponse)
+}
+CleanupAllResponse::CleanupAllResponse(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.CleanupAllResponse)
+}
+CleanupAllResponse::CleanupAllResponse(const CleanupAllResponse& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  // @@protoc_insertion_point(copy_constructor:tensorflow.CleanupAllResponse)
+}
+
+void CleanupAllResponse::SharedCtor() {
+}
+
+CleanupAllResponse::~CleanupAllResponse() {
+  // @@protoc_insertion_point(destructor:tensorflow.CleanupAllResponse)
+  SharedDtor();
+}
+
+void CleanupAllResponse::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+}
+
+void CleanupAllResponse::ArenaDtor(void* object) {
+  CleanupAllResponse* _this = reinterpret_cast< CleanupAllResponse* >(object);
+  (void)_this;
+}
+void CleanupAllResponse::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void CleanupAllResponse::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const CleanupAllResponse& CleanupAllResponse::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_CleanupAllResponse_tensorflow_2fcore_2fprotobuf_2fworker_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void CleanupAllResponse::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.CleanupAllResponse)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* CleanupAllResponse::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<CleanupAllResponse*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool CleanupAllResponse::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.CleanupAllResponse)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+  handle_unusual:
+    if (tag == 0) {
+      goto success;
+    }
+    DO_(::google::protobuf::internal::WireFormat::SkipField(
+          input, tag, _internal_metadata_.mutable_unknown_fields()));
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.CleanupAllResponse)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.CleanupAllResponse)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void CleanupAllResponse::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.CleanupAllResponse)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.CleanupAllResponse)
+}
+
+::google::protobuf::uint8* CleanupAllResponse::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.CleanupAllResponse)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.CleanupAllResponse)
+  return target;
+}
+
+size_t CleanupAllResponse::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.CleanupAllResponse)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void CleanupAllResponse::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.CleanupAllResponse)
+  GOOGLE_DCHECK_NE(&from, this);
+  const CleanupAllResponse* source =
+      ::google::protobuf::DynamicCastToGenerated<CleanupAllResponse>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.CleanupAllResponse)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.CleanupAllResponse)
+    MergeFrom(*source);
+  }
+}
+
+void CleanupAllResponse::MergeFrom(const CleanupAllResponse& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.CleanupAllResponse)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+}
+
+void CleanupAllResponse::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.CleanupAllResponse)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void CleanupAllResponse::CopyFrom(const CleanupAllResponse& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.CleanupAllResponse)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool CleanupAllResponse::IsInitialized() const {
+  return true;
+}
+
+void CleanupAllResponse::Swap(CleanupAllResponse* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    CleanupAllResponse* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void CleanupAllResponse::UnsafeArenaSwap(CleanupAllResponse* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void CleanupAllResponse::InternalSwap(CleanupAllResponse* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+}
+
+::google::protobuf::Metadata CleanupAllResponse::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2fworker_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fprotobuf_2fworker_2eproto[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+void ExecutorOpts::InitAsDefaultInstance() {
+}
+class ExecutorOpts::HasBitSetters {
+ public:
+};
+
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int ExecutorOpts::kRecordCostsFieldNumber;
+const int ExecutorOpts::kRecordTimelineFieldNumber;
+const int ExecutorOpts::kRecordPartitionGraphsFieldNumber;
+const int ExecutorOpts::kReportTensorAllocationsUponOomFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+ExecutorOpts::ExecutorOpts()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.ExecutorOpts)
+}
+ExecutorOpts::ExecutorOpts(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.ExecutorOpts)
+}
+ExecutorOpts::ExecutorOpts(const ExecutorOpts& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::memcpy(&record_costs_, &from.record_costs_,
+    static_cast<size_t>(reinterpret_cast<char*>(&report_tensor_allocations_upon_oom_) -
+    reinterpret_cast<char*>(&record_costs_)) + sizeof(report_tensor_allocations_upon_oom_));
+  // @@protoc_insertion_point(copy_constructor:tensorflow.ExecutorOpts)
+}
+
+void ExecutorOpts::SharedCtor() {
+  ::memset(&record_costs_, 0, static_cast<size_t>(
+      reinterpret_cast<char*>(&report_tensor_allocations_upon_oom_) -
+      reinterpret_cast<char*>(&record_costs_)) + sizeof(report_tensor_allocations_upon_oom_));
+}
+
+ExecutorOpts::~ExecutorOpts() {
+  // @@protoc_insertion_point(destructor:tensorflow.ExecutorOpts)
+  SharedDtor();
+}
+
+void ExecutorOpts::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+}
+
+void ExecutorOpts::ArenaDtor(void* object) {
+  ExecutorOpts* _this = reinterpret_cast< ExecutorOpts* >(object);
+  (void)_this;
+}
+void ExecutorOpts::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void ExecutorOpts::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const ExecutorOpts& ExecutorOpts::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_ExecutorOpts_tensorflow_2fcore_2fprotobuf_2fworker_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void ExecutorOpts::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.ExecutorOpts)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  ::memset(&record_costs_, 0, static_cast<size_t>(
+      reinterpret_cast<char*>(&report_tensor_allocations_upon_oom_) -
+      reinterpret_cast<char*>(&record_costs_)) + sizeof(report_tensor_allocations_upon_oom_));
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* ExecutorOpts::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<ExecutorOpts*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // bool record_costs = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 8) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        bool value = val;
+        msg->set_record_costs(value);
+        break;
+      }
+      // bool record_timeline = 3;
+      case 3: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 24) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        bool value = val;
+        msg->set_record_timeline(value);
+        break;
+      }
+      // bool record_partition_graphs = 4;
+      case 4: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 32) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        bool value = val;
+        msg->set_record_partition_graphs(value);
+        break;
+      }
+      // bool report_tensor_allocations_upon_oom = 5;
+      case 5: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 40) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        bool value = val;
+        msg->set_report_tensor_allocations_upon_oom(value);
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool ExecutorOpts::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.ExecutorOpts)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // bool record_costs = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (8 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
+                 input, &record_costs_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // bool record_timeline = 3;
+      case 3: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (24 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
+                 input, &record_timeline_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // bool record_partition_graphs = 4;
+      case 4: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (32 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
+                 input, &record_partition_graphs_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // bool report_tensor_allocations_upon_oom = 5;
+      case 5: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (40 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
+                 input, &report_tensor_allocations_upon_oom_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.ExecutorOpts)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.ExecutorOpts)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void ExecutorOpts::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.ExecutorOpts)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // bool record_costs = 1;
+  if (this->record_costs() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteBool(1, this->record_costs(), output);
+  }
+
+  // bool record_timeline = 3;
+  if (this->record_timeline() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteBool(3, this->record_timeline(), output);
+  }
+
+  // bool record_partition_graphs = 4;
+  if (this->record_partition_graphs() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteBool(4, this->record_partition_graphs(), output);
+  }
+
+  // bool report_tensor_allocations_upon_oom = 5;
+  if (this->report_tensor_allocations_upon_oom() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteBool(5, this->report_tensor_allocations_upon_oom(), output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.ExecutorOpts)
+}
+
+::google::protobuf::uint8* ExecutorOpts::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.ExecutorOpts)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // bool record_costs = 1;
+  if (this->record_costs() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(1, this->record_costs(), target);
+  }
+
+  // bool record_timeline = 3;
+  if (this->record_timeline() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(3, this->record_timeline(), target);
+  }
+
+  // bool record_partition_graphs = 4;
+  if (this->record_partition_graphs() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(4, this->record_partition_graphs(), target);
+  }
+
+  // bool report_tensor_allocations_upon_oom = 5;
+  if (this->report_tensor_allocations_upon_oom() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(5, this->report_tensor_allocations_upon_oom(), target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.ExecutorOpts)
+  return target;
+}
+
+size_t ExecutorOpts::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.ExecutorOpts)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // bool record_costs = 1;
+  if (this->record_costs() != 0) {
+    total_size += 1 + 1;
+  }
+
+  // bool record_timeline = 3;
+  if (this->record_timeline() != 0) {
+    total_size += 1 + 1;
+  }
+
+  // bool record_partition_graphs = 4;
+  if (this->record_partition_graphs() != 0) {
+    total_size += 1 + 1;
+  }
+
+  // bool report_tensor_allocations_upon_oom = 5;
+  if (this->report_tensor_allocations_upon_oom() != 0) {
+    total_size += 1 + 1;
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void ExecutorOpts::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.ExecutorOpts)
+  GOOGLE_DCHECK_NE(&from, this);
+  const ExecutorOpts* source =
+      ::google::protobuf::DynamicCastToGenerated<ExecutorOpts>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.ExecutorOpts)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.ExecutorOpts)
+    MergeFrom(*source);
+  }
+}
+
+void ExecutorOpts::MergeFrom(const ExecutorOpts& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.ExecutorOpts)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  if (from.record_costs() != 0) {
+    set_record_costs(from.record_costs());
+  }
+  if (from.record_timeline() != 0) {
+    set_record_timeline(from.record_timeline());
+  }
+  if (from.record_partition_graphs() != 0) {
+    set_record_partition_graphs(from.record_partition_graphs());
+  }
+  if (from.report_tensor_allocations_upon_oom() != 0) {
+    set_report_tensor_allocations_upon_oom(from.report_tensor_allocations_upon_oom());
+  }
+}
+
+void ExecutorOpts::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.ExecutorOpts)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void ExecutorOpts::CopyFrom(const ExecutorOpts& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.ExecutorOpts)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool ExecutorOpts::IsInitialized() const {
+  return true;
+}
+
+void ExecutorOpts::Swap(ExecutorOpts* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    ExecutorOpts* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void ExecutorOpts::UnsafeArenaSwap(ExecutorOpts* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void ExecutorOpts::InternalSwap(ExecutorOpts* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  swap(record_costs_, other->record_costs_);
+  swap(record_timeline_, other->record_timeline_);
+  swap(record_partition_graphs_, other->record_partition_graphs_);
+  swap(report_tensor_allocations_upon_oom_, other->report_tensor_allocations_upon_oom_);
+}
+
+::google::protobuf::Metadata ExecutorOpts::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2fworker_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fprotobuf_2fworker_2eproto[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+void RunGraphRequest::InitAsDefaultInstance() {
+  ::tensorflow::_RunGraphRequest_default_instance_._instance.get_mutable()->exec_opts_ = const_cast< ::tensorflow::ExecutorOpts*>(
+      ::tensorflow::ExecutorOpts::internal_default_instance());
+}
+class RunGraphRequest::HasBitSetters {
+ public:
+  static const ::tensorflow::ExecutorOpts& exec_opts(const RunGraphRequest* msg);
+};
+
+const ::tensorflow::ExecutorOpts&
+RunGraphRequest::HasBitSetters::exec_opts(const RunGraphRequest* msg) {
+  return *msg->exec_opts_;
+}
+void RunGraphRequest::unsafe_arena_set_allocated_exec_opts(
+    ::tensorflow::ExecutorOpts* exec_opts) {
+  if (GetArenaNoVirtual() == NULL) {
+    delete exec_opts_;
+  }
+  exec_opts_ = exec_opts;
+  if (exec_opts) {
+    
+  } else {
+    
+  }
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.RunGraphRequest.exec_opts)
+}
+void RunGraphRequest::clear_send() {
+  send_.Clear();
+}
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int RunGraphRequest::kSessionHandleFieldNumber;
+const int RunGraphRequest::kCreateWorkerSessionCalledFieldNumber;
+const int RunGraphRequest::kGraphHandleFieldNumber;
+const int RunGraphRequest::kStepIdFieldNumber;
+const int RunGraphRequest::kExecOptsFieldNumber;
+const int RunGraphRequest::kSendFieldNumber;
+const int RunGraphRequest::kRecvKeyFieldNumber;
+const int RunGraphRequest::kIsPartialFieldNumber;
+const int RunGraphRequest::kIsLastPartialRunFieldNumber;
+const int RunGraphRequest::kStoreErrorsInResponseBodyFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+RunGraphRequest::RunGraphRequest()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.RunGraphRequest)
+}
+RunGraphRequest::RunGraphRequest(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena),
+  send_(arena),
+  recv_key_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.RunGraphRequest)
+}
+RunGraphRequest::RunGraphRequest(const RunGraphRequest& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL),
+      send_(from.send_),
+      recv_key_(from.recv_key_) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  graph_handle_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.graph_handle().size() > 0) {
+    graph_handle_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.graph_handle(),
+      GetArenaNoVirtual());
+  }
+  session_handle_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.session_handle().size() > 0) {
+    session_handle_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.session_handle(),
+      GetArenaNoVirtual());
+  }
+  if (from.has_exec_opts()) {
+    exec_opts_ = new ::tensorflow::ExecutorOpts(*from.exec_opts_);
+  } else {
+    exec_opts_ = NULL;
+  }
+  ::memcpy(&step_id_, &from.step_id_,
+    static_cast<size_t>(reinterpret_cast<char*>(&store_errors_in_response_body_) -
+    reinterpret_cast<char*>(&step_id_)) + sizeof(store_errors_in_response_body_));
+  // @@protoc_insertion_point(copy_constructor:tensorflow.RunGraphRequest)
+}
+
+void RunGraphRequest::SharedCtor() {
+  ::google::protobuf::internal::InitSCC(
+      &scc_info_RunGraphRequest_tensorflow_2fcore_2fprotobuf_2fworker_2eproto.base);
+  graph_handle_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  session_handle_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  ::memset(&exec_opts_, 0, static_cast<size_t>(
+      reinterpret_cast<char*>(&store_errors_in_response_body_) -
+      reinterpret_cast<char*>(&exec_opts_)) + sizeof(store_errors_in_response_body_));
+}
+
+RunGraphRequest::~RunGraphRequest() {
+  // @@protoc_insertion_point(destructor:tensorflow.RunGraphRequest)
+  SharedDtor();
+}
+
+void RunGraphRequest::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+  graph_handle_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  session_handle_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (this != internal_default_instance()) delete exec_opts_;
+}
+
+void RunGraphRequest::ArenaDtor(void* object) {
+  RunGraphRequest* _this = reinterpret_cast< RunGraphRequest* >(object);
+  (void)_this;
+}
+void RunGraphRequest::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void RunGraphRequest::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const RunGraphRequest& RunGraphRequest::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_RunGraphRequest_tensorflow_2fcore_2fprotobuf_2fworker_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void RunGraphRequest::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.RunGraphRequest)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  send_.Clear();
+  recv_key_.Clear();
+  graph_handle_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+  session_handle_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+  if (GetArenaNoVirtual() == NULL && exec_opts_ != NULL) {
+    delete exec_opts_;
+  }
+  exec_opts_ = NULL;
+  ::memset(&step_id_, 0, static_cast<size_t>(
+      reinterpret_cast<char*>(&store_errors_in_response_body_) -
+      reinterpret_cast<char*>(&step_id_)) + sizeof(store_errors_in_response_body_));
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* RunGraphRequest::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<RunGraphRequest*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // string graph_handle = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 10) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("tensorflow.RunGraphRequest.graph_handle");
+        parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+        ::std::string* str = msg->mutable_graph_handle();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+        break;
+      }
+      // int64 step_id = 2;
+      case 2: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 16) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::google::protobuf::int64 value = val;
+        msg->set_step_id(value);
+        break;
+      }
+      // repeated .tensorflow.NamedTensorProto send = 3;
+      case 3: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 26) goto handle_unusual;
+        do {
+          ptr = Varint::Parse32Inline(ptr, &size);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          parser_till_end = ::tensorflow::NamedTensorProto::_InternalParse;
+          object = msg->add_send();
+          if (size > end - ptr) goto len_delim_till_end;
+          auto newend = ptr + size;
+          bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                         ptr, newend);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          ptr = newend;
+          if (ptr >= end) break;
+        } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 26 && (ptr += 1));
+        break;
+      }
+      // repeated string recv_key = 4;
+      case 4: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 34) goto handle_unusual;
+        do {
+          ptr = Varint::Parse32Inline(ptr, &size);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          ctx->extra_parse_data().SetFieldName("tensorflow.RunGraphRequest.recv_key");
+          parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+          ::std::string* str = msg->add_recv_key();
+          str->clear();
+          object = str;
+          if (size > end - ptr) goto len_delim_till_end;
+          auto newend = ptr + size;
+          if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+          if (ptr >= end) break;
+        } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 34 && (ptr += 1));
+        break;
+      }
+      // .tensorflow.ExecutorOpts exec_opts = 5;
+      case 5: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 42) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        parser_till_end = ::tensorflow::ExecutorOpts::_InternalParse;
+        object = msg->mutable_exec_opts();
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                       ptr, newend);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+        ptr = newend;
+        break;
+      }
+      // bool is_partial = 6;
+      case 6: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 48) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        bool value = val;
+        msg->set_is_partial(value);
+        break;
+      }
+      // bool is_last_partial_run = 7;
+      case 7: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 56) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        bool value = val;
+        msg->set_is_last_partial_run(value);
+        break;
+      }
+      // string session_handle = 8;
+      case 8: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 66) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("tensorflow.RunGraphRequest.session_handle");
+        parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+        ::std::string* str = msg->mutable_session_handle();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+        break;
+      }
+      // bool store_errors_in_response_body = 9;
+      case 9: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 72) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        bool value = val;
+        msg->set_store_errors_in_response_body(value);
+        break;
+      }
+      // bool create_worker_session_called = 10;
+      case 10: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 80) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        bool value = val;
+        msg->set_create_worker_session_called(value);
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool RunGraphRequest::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.RunGraphRequest)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // string graph_handle = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (10 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_graph_handle()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->graph_handle().data(), static_cast<int>(this->graph_handle().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.RunGraphRequest.graph_handle"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // int64 step_id = 2;
+      case 2: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (16 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>(
+                 input, &step_id_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // repeated .tensorflow.NamedTensorProto send = 3;
+      case 3: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (26 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+                input, add_send()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // repeated string recv_key = 4;
+      case 4: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (34 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->add_recv_key()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->recv_key(this->recv_key_size() - 1).data(),
+            static_cast<int>(this->recv_key(this->recv_key_size() - 1).length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.RunGraphRequest.recv_key"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // .tensorflow.ExecutorOpts exec_opts = 5;
+      case 5: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (42 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+               input, mutable_exec_opts()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // bool is_partial = 6;
+      case 6: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (48 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
+                 input, &is_partial_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // bool is_last_partial_run = 7;
+      case 7: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (56 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
+                 input, &is_last_partial_run_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // string session_handle = 8;
+      case 8: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (66 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_session_handle()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->session_handle().data(), static_cast<int>(this->session_handle().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.RunGraphRequest.session_handle"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // bool store_errors_in_response_body = 9;
+      case 9: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (72 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
+                 input, &store_errors_in_response_body_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // bool create_worker_session_called = 10;
+      case 10: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (80 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
+                 input, &create_worker_session_called_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.RunGraphRequest)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.RunGraphRequest)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void RunGraphRequest::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.RunGraphRequest)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // string graph_handle = 1;
+  if (this->graph_handle().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->graph_handle().data(), static_cast<int>(this->graph_handle().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.RunGraphRequest.graph_handle");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      1, this->graph_handle(), output);
+  }
+
+  // int64 step_id = 2;
+  if (this->step_id() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt64(2, this->step_id(), output);
+  }
+
+  // repeated .tensorflow.NamedTensorProto send = 3;
+  for (unsigned int i = 0,
+      n = static_cast<unsigned int>(this->send_size()); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      3,
+      this->send(static_cast<int>(i)),
+      output);
+  }
+
+  // repeated string recv_key = 4;
+  for (int i = 0, n = this->recv_key_size(); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->recv_key(i).data(), static_cast<int>(this->recv_key(i).length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.RunGraphRequest.recv_key");
+    ::google::protobuf::internal::WireFormatLite::WriteString(
+      4, this->recv_key(i), output);
+  }
+
+  // .tensorflow.ExecutorOpts exec_opts = 5;
+  if (this->has_exec_opts()) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      5, HasBitSetters::exec_opts(this), output);
+  }
+
+  // bool is_partial = 6;
+  if (this->is_partial() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteBool(6, this->is_partial(), output);
+  }
+
+  // bool is_last_partial_run = 7;
+  if (this->is_last_partial_run() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteBool(7, this->is_last_partial_run(), output);
+  }
+
+  // string session_handle = 8;
+  if (this->session_handle().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->session_handle().data(), static_cast<int>(this->session_handle().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.RunGraphRequest.session_handle");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      8, this->session_handle(), output);
+  }
+
+  // bool store_errors_in_response_body = 9;
+  if (this->store_errors_in_response_body() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteBool(9, this->store_errors_in_response_body(), output);
+  }
+
+  // bool create_worker_session_called = 10;
+  if (this->create_worker_session_called() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteBool(10, this->create_worker_session_called(), output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.RunGraphRequest)
+}
+
+::google::protobuf::uint8* RunGraphRequest::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.RunGraphRequest)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // string graph_handle = 1;
+  if (this->graph_handle().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->graph_handle().data(), static_cast<int>(this->graph_handle().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.RunGraphRequest.graph_handle");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        1, this->graph_handle(), target);
+  }
+
+  // int64 step_id = 2;
+  if (this->step_id() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt64ToArray(2, this->step_id(), target);
+  }
+
+  // repeated .tensorflow.NamedTensorProto send = 3;
+  for (unsigned int i = 0,
+      n = static_cast<unsigned int>(this->send_size()); i < n; i++) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        3, this->send(static_cast<int>(i)), deterministic, target);
+  }
+
+  // repeated string recv_key = 4;
+  for (int i = 0, n = this->recv_key_size(); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->recv_key(i).data(), static_cast<int>(this->recv_key(i).length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.RunGraphRequest.recv_key");
+    target = ::google::protobuf::internal::WireFormatLite::
+      WriteStringToArray(4, this->recv_key(i), target);
+  }
+
+  // .tensorflow.ExecutorOpts exec_opts = 5;
+  if (this->has_exec_opts()) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        5, HasBitSetters::exec_opts(this), deterministic, target);
+  }
+
+  // bool is_partial = 6;
+  if (this->is_partial() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(6, this->is_partial(), target);
+  }
+
+  // bool is_last_partial_run = 7;
+  if (this->is_last_partial_run() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(7, this->is_last_partial_run(), target);
+  }
+
+  // string session_handle = 8;
+  if (this->session_handle().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->session_handle().data(), static_cast<int>(this->session_handle().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.RunGraphRequest.session_handle");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        8, this->session_handle(), target);
+  }
+
+  // bool store_errors_in_response_body = 9;
+  if (this->store_errors_in_response_body() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(9, this->store_errors_in_response_body(), target);
+  }
+
+  // bool create_worker_session_called = 10;
+  if (this->create_worker_session_called() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(10, this->create_worker_session_called(), target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.RunGraphRequest)
+  return target;
+}
+
+size_t RunGraphRequest::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.RunGraphRequest)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // repeated .tensorflow.NamedTensorProto send = 3;
+  {
+    unsigned int count = static_cast<unsigned int>(this->send_size());
+    total_size += 1UL * count;
+    for (unsigned int i = 0; i < count; i++) {
+      total_size +=
+        ::google::protobuf::internal::WireFormatLite::MessageSize(
+          this->send(static_cast<int>(i)));
+    }
+  }
+
+  // repeated string recv_key = 4;
+  total_size += 1 *
+      ::google::protobuf::internal::FromIntSize(this->recv_key_size());
+  for (int i = 0, n = this->recv_key_size(); i < n; i++) {
+    total_size += ::google::protobuf::internal::WireFormatLite::StringSize(
+      this->recv_key(i));
+  }
+
+  // string graph_handle = 1;
+  if (this->graph_handle().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->graph_handle());
+  }
+
+  // string session_handle = 8;
+  if (this->session_handle().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->session_handle());
+  }
+
+  // .tensorflow.ExecutorOpts exec_opts = 5;
+  if (this->has_exec_opts()) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::MessageSize(
+        *exec_opts_);
+  }
+
+  // int64 step_id = 2;
+  if (this->step_id() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::Int64Size(
+        this->step_id());
+  }
+
+  // bool create_worker_session_called = 10;
+  if (this->create_worker_session_called() != 0) {
+    total_size += 1 + 1;
+  }
+
+  // bool is_partial = 6;
+  if (this->is_partial() != 0) {
+    total_size += 1 + 1;
+  }
+
+  // bool is_last_partial_run = 7;
+  if (this->is_last_partial_run() != 0) {
+    total_size += 1 + 1;
+  }
+
+  // bool store_errors_in_response_body = 9;
+  if (this->store_errors_in_response_body() != 0) {
+    total_size += 1 + 1;
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void RunGraphRequest::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.RunGraphRequest)
+  GOOGLE_DCHECK_NE(&from, this);
+  const RunGraphRequest* source =
+      ::google::protobuf::DynamicCastToGenerated<RunGraphRequest>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.RunGraphRequest)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.RunGraphRequest)
+    MergeFrom(*source);
+  }
+}
+
+void RunGraphRequest::MergeFrom(const RunGraphRequest& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.RunGraphRequest)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  send_.MergeFrom(from.send_);
+  recv_key_.MergeFrom(from.recv_key_);
+  if (from.graph_handle().size() > 0) {
+    set_graph_handle(from.graph_handle());
+  }
+  if (from.session_handle().size() > 0) {
+    set_session_handle(from.session_handle());
+  }
+  if (from.has_exec_opts()) {
+    mutable_exec_opts()->::tensorflow::ExecutorOpts::MergeFrom(from.exec_opts());
+  }
+  if (from.step_id() != 0) {
+    set_step_id(from.step_id());
+  }
+  if (from.create_worker_session_called() != 0) {
+    set_create_worker_session_called(from.create_worker_session_called());
+  }
+  if (from.is_partial() != 0) {
+    set_is_partial(from.is_partial());
+  }
+  if (from.is_last_partial_run() != 0) {
+    set_is_last_partial_run(from.is_last_partial_run());
+  }
+  if (from.store_errors_in_response_body() != 0) {
+    set_store_errors_in_response_body(from.store_errors_in_response_body());
+  }
+}
+
+void RunGraphRequest::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.RunGraphRequest)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void RunGraphRequest::CopyFrom(const RunGraphRequest& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.RunGraphRequest)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool RunGraphRequest::IsInitialized() const {
+  return true;
+}
+
+void RunGraphRequest::Swap(RunGraphRequest* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    RunGraphRequest* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void RunGraphRequest::UnsafeArenaSwap(RunGraphRequest* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void RunGraphRequest::InternalSwap(RunGraphRequest* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  CastToBase(&send_)->InternalSwap(CastToBase(&other->send_));
+  recv_key_.InternalSwap(CastToBase(&other->recv_key_));
+  graph_handle_.Swap(&other->graph_handle_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+  session_handle_.Swap(&other->session_handle_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+  swap(exec_opts_, other->exec_opts_);
+  swap(step_id_, other->step_id_);
+  swap(create_worker_session_called_, other->create_worker_session_called_);
+  swap(is_partial_, other->is_partial_);
+  swap(is_last_partial_run_, other->is_last_partial_run_);
+  swap(store_errors_in_response_body_, other->store_errors_in_response_body_);
+}
+
+::google::protobuf::Metadata RunGraphRequest::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2fworker_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fprotobuf_2fworker_2eproto[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+void RunGraphResponse::InitAsDefaultInstance() {
+  ::tensorflow::_RunGraphResponse_default_instance_._instance.get_mutable()->step_stats_ = const_cast< ::tensorflow::StepStats*>(
+      ::tensorflow::StepStats::internal_default_instance());
+  ::tensorflow::_RunGraphResponse_default_instance_._instance.get_mutable()->cost_graph_ = const_cast< ::tensorflow::CostGraphDef*>(
+      ::tensorflow::CostGraphDef::internal_default_instance());
+}
+class RunGraphResponse::HasBitSetters {
+ public:
+  static const ::tensorflow::StepStats& step_stats(const RunGraphResponse* msg);
+  static const ::tensorflow::CostGraphDef& cost_graph(const RunGraphResponse* msg);
+};
+
+const ::tensorflow::StepStats&
+RunGraphResponse::HasBitSetters::step_stats(const RunGraphResponse* msg) {
+  return *msg->step_stats_;
+}
+const ::tensorflow::CostGraphDef&
+RunGraphResponse::HasBitSetters::cost_graph(const RunGraphResponse* msg) {
+  return *msg->cost_graph_;
+}
+void RunGraphResponse::clear_recv() {
+  recv_.Clear();
+}
+void RunGraphResponse::unsafe_arena_set_allocated_step_stats(
+    ::tensorflow::StepStats* step_stats) {
+  if (GetArenaNoVirtual() == NULL) {
+    delete step_stats_;
+  }
+  step_stats_ = step_stats;
+  if (step_stats) {
+    
+  } else {
+    
+  }
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.RunGraphResponse.step_stats)
+}
+void RunGraphResponse::clear_step_stats() {
+  if (GetArenaNoVirtual() == NULL && step_stats_ != NULL) {
+    delete step_stats_;
+  }
+  step_stats_ = NULL;
+}
+void RunGraphResponse::unsafe_arena_set_allocated_cost_graph(
+    ::tensorflow::CostGraphDef* cost_graph) {
+  if (GetArenaNoVirtual() == NULL) {
+    delete cost_graph_;
+  }
+  cost_graph_ = cost_graph;
+  if (cost_graph) {
+    
+  } else {
+    
+  }
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.RunGraphResponse.cost_graph)
+}
+void RunGraphResponse::clear_cost_graph() {
+  if (GetArenaNoVirtual() == NULL && cost_graph_ != NULL) {
+    delete cost_graph_;
+  }
+  cost_graph_ = NULL;
+}
+void RunGraphResponse::clear_partition_graph() {
+  partition_graph_.Clear();
+}
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int RunGraphResponse::kRecvFieldNumber;
+const int RunGraphResponse::kStepStatsFieldNumber;
+const int RunGraphResponse::kCostGraphFieldNumber;
+const int RunGraphResponse::kPartitionGraphFieldNumber;
+const int RunGraphResponse::kStatusCodeFieldNumber;
+const int RunGraphResponse::kStatusErrorMessageFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+RunGraphResponse::RunGraphResponse()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.RunGraphResponse)
+}
+RunGraphResponse::RunGraphResponse(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena),
+  recv_(arena),
+  partition_graph_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.RunGraphResponse)
+}
+RunGraphResponse::RunGraphResponse(const RunGraphResponse& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL),
+      recv_(from.recv_),
+      partition_graph_(from.partition_graph_) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  status_error_message_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.status_error_message().size() > 0) {
+    status_error_message_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.status_error_message(),
+      GetArenaNoVirtual());
+  }
+  if (from.has_step_stats()) {
+    step_stats_ = new ::tensorflow::StepStats(*from.step_stats_);
+  } else {
+    step_stats_ = NULL;
+  }
+  if (from.has_cost_graph()) {
+    cost_graph_ = new ::tensorflow::CostGraphDef(*from.cost_graph_);
+  } else {
+    cost_graph_ = NULL;
+  }
+  status_code_ = from.status_code_;
+  // @@protoc_insertion_point(copy_constructor:tensorflow.RunGraphResponse)
+}
+
+void RunGraphResponse::SharedCtor() {
+  ::google::protobuf::internal::InitSCC(
+      &scc_info_RunGraphResponse_tensorflow_2fcore_2fprotobuf_2fworker_2eproto.base);
+  status_error_message_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  ::memset(&step_stats_, 0, static_cast<size_t>(
+      reinterpret_cast<char*>(&status_code_) -
+      reinterpret_cast<char*>(&step_stats_)) + sizeof(status_code_));
+}
+
+RunGraphResponse::~RunGraphResponse() {
+  // @@protoc_insertion_point(destructor:tensorflow.RunGraphResponse)
+  SharedDtor();
+}
+
+void RunGraphResponse::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+  status_error_message_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (this != internal_default_instance()) delete step_stats_;
+  if (this != internal_default_instance()) delete cost_graph_;
+}
+
+void RunGraphResponse::ArenaDtor(void* object) {
+  RunGraphResponse* _this = reinterpret_cast< RunGraphResponse* >(object);
+  (void)_this;
+}
+void RunGraphResponse::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void RunGraphResponse::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const RunGraphResponse& RunGraphResponse::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_RunGraphResponse_tensorflow_2fcore_2fprotobuf_2fworker_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void RunGraphResponse::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.RunGraphResponse)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  recv_.Clear();
+  partition_graph_.Clear();
+  status_error_message_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+  if (GetArenaNoVirtual() == NULL && step_stats_ != NULL) {
+    delete step_stats_;
+  }
+  step_stats_ = NULL;
+  if (GetArenaNoVirtual() == NULL && cost_graph_ != NULL) {
+    delete cost_graph_;
+  }
+  cost_graph_ = NULL;
+  status_code_ = 0;
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* RunGraphResponse::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<RunGraphResponse*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // repeated .tensorflow.NamedTensorProto recv = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 10) goto handle_unusual;
+        do {
+          ptr = Varint::Parse32Inline(ptr, &size);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          parser_till_end = ::tensorflow::NamedTensorProto::_InternalParse;
+          object = msg->add_recv();
+          if (size > end - ptr) goto len_delim_till_end;
+          auto newend = ptr + size;
+          bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                         ptr, newend);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          ptr = newend;
+          if (ptr >= end) break;
+        } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 10 && (ptr += 1));
+        break;
+      }
+      // .tensorflow.StepStats step_stats = 2;
+      case 2: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 18) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        parser_till_end = ::tensorflow::StepStats::_InternalParse;
+        object = msg->mutable_step_stats();
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                       ptr, newend);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+        ptr = newend;
+        break;
+      }
+      // .tensorflow.CostGraphDef cost_graph = 3;
+      case 3: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 26) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        parser_till_end = ::tensorflow::CostGraphDef::_InternalParse;
+        object = msg->mutable_cost_graph();
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                       ptr, newend);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+        ptr = newend;
+        break;
+      }
+      // repeated .tensorflow.GraphDef partition_graph = 4;
+      case 4: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 34) goto handle_unusual;
+        do {
+          ptr = Varint::Parse32Inline(ptr, &size);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          parser_till_end = ::tensorflow::GraphDef::_InternalParse;
+          object = msg->add_partition_graph();
+          if (size > end - ptr) goto len_delim_till_end;
+          auto newend = ptr + size;
+          bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                         ptr, newend);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          ptr = newend;
+          if (ptr >= end) break;
+        } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 34 && (ptr += 1));
+        break;
+      }
+      // .tensorflow.error.Code status_code = 5;
+      case 5: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 40) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::tensorflow::error::Code value = static_cast<::tensorflow::error::Code>(val);
+        msg->set_status_code(value);
+        break;
+      }
+      // string status_error_message = 6;
+      case 6: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 50) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("tensorflow.RunGraphResponse.status_error_message");
+        parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+        ::std::string* str = msg->mutable_status_error_message();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool RunGraphResponse::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.RunGraphResponse)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // repeated .tensorflow.NamedTensorProto recv = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (10 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+                input, add_recv()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // .tensorflow.StepStats step_stats = 2;
+      case 2: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (18 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+               input, mutable_step_stats()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // .tensorflow.CostGraphDef cost_graph = 3;
+      case 3: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (26 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+               input, mutable_cost_graph()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // repeated .tensorflow.GraphDef partition_graph = 4;
+      case 4: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (34 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+                input, add_partition_graph()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // .tensorflow.error.Code status_code = 5;
+      case 5: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (40 & 0xFF)) {
+          int value = 0;
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>(
+                 input, &value)));
+          set_status_code(static_cast< ::tensorflow::error::Code >(value));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // string status_error_message = 6;
+      case 6: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (50 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_status_error_message()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->status_error_message().data(), static_cast<int>(this->status_error_message().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.RunGraphResponse.status_error_message"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.RunGraphResponse)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.RunGraphResponse)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void RunGraphResponse::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.RunGraphResponse)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // repeated .tensorflow.NamedTensorProto recv = 1;
+  for (unsigned int i = 0,
+      n = static_cast<unsigned int>(this->recv_size()); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      1,
+      this->recv(static_cast<int>(i)),
+      output);
+  }
+
+  // .tensorflow.StepStats step_stats = 2;
+  if (this->has_step_stats()) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      2, HasBitSetters::step_stats(this), output);
+  }
+
+  // .tensorflow.CostGraphDef cost_graph = 3;
+  if (this->has_cost_graph()) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      3, HasBitSetters::cost_graph(this), output);
+  }
+
+  // repeated .tensorflow.GraphDef partition_graph = 4;
+  for (unsigned int i = 0,
+      n = static_cast<unsigned int>(this->partition_graph_size()); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      4,
+      this->partition_graph(static_cast<int>(i)),
+      output);
+  }
+
+  // .tensorflow.error.Code status_code = 5;
+  if (this->status_code() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteEnum(
+      5, this->status_code(), output);
+  }
+
+  // string status_error_message = 6;
+  if (this->status_error_message().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->status_error_message().data(), static_cast<int>(this->status_error_message().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.RunGraphResponse.status_error_message");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      6, this->status_error_message(), output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.RunGraphResponse)
+}
+
+::google::protobuf::uint8* RunGraphResponse::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.RunGraphResponse)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // repeated .tensorflow.NamedTensorProto recv = 1;
+  for (unsigned int i = 0,
+      n = static_cast<unsigned int>(this->recv_size()); i < n; i++) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        1, this->recv(static_cast<int>(i)), deterministic, target);
+  }
+
+  // .tensorflow.StepStats step_stats = 2;
+  if (this->has_step_stats()) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        2, HasBitSetters::step_stats(this), deterministic, target);
+  }
+
+  // .tensorflow.CostGraphDef cost_graph = 3;
+  if (this->has_cost_graph()) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        3, HasBitSetters::cost_graph(this), deterministic, target);
+  }
+
+  // repeated .tensorflow.GraphDef partition_graph = 4;
+  for (unsigned int i = 0,
+      n = static_cast<unsigned int>(this->partition_graph_size()); i < n; i++) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        4, this->partition_graph(static_cast<int>(i)), deterministic, target);
+  }
+
+  // .tensorflow.error.Code status_code = 5;
+  if (this->status_code() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteEnumToArray(
+      5, this->status_code(), target);
+  }
+
+  // string status_error_message = 6;
+  if (this->status_error_message().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->status_error_message().data(), static_cast<int>(this->status_error_message().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.RunGraphResponse.status_error_message");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        6, this->status_error_message(), target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.RunGraphResponse)
+  return target;
+}
+
+size_t RunGraphResponse::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.RunGraphResponse)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // repeated .tensorflow.NamedTensorProto recv = 1;
+  {
+    unsigned int count = static_cast<unsigned int>(this->recv_size());
+    total_size += 1UL * count;
+    for (unsigned int i = 0; i < count; i++) {
+      total_size +=
+        ::google::protobuf::internal::WireFormatLite::MessageSize(
+          this->recv(static_cast<int>(i)));
+    }
+  }
+
+  // repeated .tensorflow.GraphDef partition_graph = 4;
+  {
+    unsigned int count = static_cast<unsigned int>(this->partition_graph_size());
+    total_size += 1UL * count;
+    for (unsigned int i = 0; i < count; i++) {
+      total_size +=
+        ::google::protobuf::internal::WireFormatLite::MessageSize(
+          this->partition_graph(static_cast<int>(i)));
+    }
+  }
+
+  // string status_error_message = 6;
+  if (this->status_error_message().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->status_error_message());
+  }
+
+  // .tensorflow.StepStats step_stats = 2;
+  if (this->has_step_stats()) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::MessageSize(
+        *step_stats_);
+  }
+
+  // .tensorflow.CostGraphDef cost_graph = 3;
+  if (this->has_cost_graph()) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::MessageSize(
+        *cost_graph_);
+  }
+
+  // .tensorflow.error.Code status_code = 5;
+  if (this->status_code() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::EnumSize(this->status_code());
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void RunGraphResponse::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.RunGraphResponse)
+  GOOGLE_DCHECK_NE(&from, this);
+  const RunGraphResponse* source =
+      ::google::protobuf::DynamicCastToGenerated<RunGraphResponse>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.RunGraphResponse)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.RunGraphResponse)
+    MergeFrom(*source);
+  }
+}
+
+void RunGraphResponse::MergeFrom(const RunGraphResponse& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.RunGraphResponse)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  recv_.MergeFrom(from.recv_);
+  partition_graph_.MergeFrom(from.partition_graph_);
+  if (from.status_error_message().size() > 0) {
+    set_status_error_message(from.status_error_message());
+  }
+  if (from.has_step_stats()) {
+    mutable_step_stats()->::tensorflow::StepStats::MergeFrom(from.step_stats());
+  }
+  if (from.has_cost_graph()) {
+    mutable_cost_graph()->::tensorflow::CostGraphDef::MergeFrom(from.cost_graph());
+  }
+  if (from.status_code() != 0) {
+    set_status_code(from.status_code());
+  }
+}
+
+void RunGraphResponse::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.RunGraphResponse)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void RunGraphResponse::CopyFrom(const RunGraphResponse& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.RunGraphResponse)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool RunGraphResponse::IsInitialized() const {
+  return true;
+}
+
+void RunGraphResponse::Swap(RunGraphResponse* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    RunGraphResponse* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void RunGraphResponse::UnsafeArenaSwap(RunGraphResponse* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void RunGraphResponse::InternalSwap(RunGraphResponse* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  CastToBase(&recv_)->InternalSwap(CastToBase(&other->recv_));
+  CastToBase(&partition_graph_)->InternalSwap(CastToBase(&other->partition_graph_));
+  status_error_message_.Swap(&other->status_error_message_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+  swap(step_stats_, other->step_stats_);
+  swap(cost_graph_, other->cost_graph_);
+  swap(status_code_, other->status_code_);
+}
+
+::google::protobuf::Metadata RunGraphResponse::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2fworker_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fprotobuf_2fworker_2eproto[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+void CleanupGraphRequest::InitAsDefaultInstance() {
+}
+class CleanupGraphRequest::HasBitSetters {
+ public:
+};
+
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int CleanupGraphRequest::kStepIdFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+CleanupGraphRequest::CleanupGraphRequest()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.CleanupGraphRequest)
+}
+CleanupGraphRequest::CleanupGraphRequest(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.CleanupGraphRequest)
+}
+CleanupGraphRequest::CleanupGraphRequest(const CleanupGraphRequest& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  step_id_ = from.step_id_;
+  // @@protoc_insertion_point(copy_constructor:tensorflow.CleanupGraphRequest)
+}
+
+void CleanupGraphRequest::SharedCtor() {
+  step_id_ = PROTOBUF_LONGLONG(0);
+}
+
+CleanupGraphRequest::~CleanupGraphRequest() {
+  // @@protoc_insertion_point(destructor:tensorflow.CleanupGraphRequest)
+  SharedDtor();
+}
+
+void CleanupGraphRequest::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+}
+
+void CleanupGraphRequest::ArenaDtor(void* object) {
+  CleanupGraphRequest* _this = reinterpret_cast< CleanupGraphRequest* >(object);
+  (void)_this;
+}
+void CleanupGraphRequest::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void CleanupGraphRequest::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const CleanupGraphRequest& CleanupGraphRequest::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_CleanupGraphRequest_tensorflow_2fcore_2fprotobuf_2fworker_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void CleanupGraphRequest::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.CleanupGraphRequest)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  step_id_ = PROTOBUF_LONGLONG(0);
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* CleanupGraphRequest::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<CleanupGraphRequest*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // int64 step_id = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 8) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::google::protobuf::int64 value = val;
+        msg->set_step_id(value);
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool CleanupGraphRequest::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.CleanupGraphRequest)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // int64 step_id = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (8 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>(
+                 input, &step_id_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.CleanupGraphRequest)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.CleanupGraphRequest)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void CleanupGraphRequest::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.CleanupGraphRequest)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // int64 step_id = 1;
+  if (this->step_id() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt64(1, this->step_id(), output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.CleanupGraphRequest)
+}
+
+::google::protobuf::uint8* CleanupGraphRequest::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.CleanupGraphRequest)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // int64 step_id = 1;
+  if (this->step_id() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt64ToArray(1, this->step_id(), target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.CleanupGraphRequest)
+  return target;
+}
+
+size_t CleanupGraphRequest::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.CleanupGraphRequest)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // int64 step_id = 1;
+  if (this->step_id() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::Int64Size(
+        this->step_id());
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void CleanupGraphRequest::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.CleanupGraphRequest)
+  GOOGLE_DCHECK_NE(&from, this);
+  const CleanupGraphRequest* source =
+      ::google::protobuf::DynamicCastToGenerated<CleanupGraphRequest>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.CleanupGraphRequest)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.CleanupGraphRequest)
+    MergeFrom(*source);
+  }
+}
+
+void CleanupGraphRequest::MergeFrom(const CleanupGraphRequest& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.CleanupGraphRequest)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  if (from.step_id() != 0) {
+    set_step_id(from.step_id());
+  }
+}
+
+void CleanupGraphRequest::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.CleanupGraphRequest)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void CleanupGraphRequest::CopyFrom(const CleanupGraphRequest& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.CleanupGraphRequest)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool CleanupGraphRequest::IsInitialized() const {
+  return true;
+}
+
+void CleanupGraphRequest::Swap(CleanupGraphRequest* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    CleanupGraphRequest* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void CleanupGraphRequest::UnsafeArenaSwap(CleanupGraphRequest* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void CleanupGraphRequest::InternalSwap(CleanupGraphRequest* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  swap(step_id_, other->step_id_);
+}
+
+::google::protobuf::Metadata CleanupGraphRequest::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2fworker_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fprotobuf_2fworker_2eproto[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+void CleanupGraphResponse::InitAsDefaultInstance() {
+}
+class CleanupGraphResponse::HasBitSetters {
+ public:
+};
+
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+CleanupGraphResponse::CleanupGraphResponse()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.CleanupGraphResponse)
+}
+CleanupGraphResponse::CleanupGraphResponse(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.CleanupGraphResponse)
+}
+CleanupGraphResponse::CleanupGraphResponse(const CleanupGraphResponse& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  // @@protoc_insertion_point(copy_constructor:tensorflow.CleanupGraphResponse)
+}
+
+void CleanupGraphResponse::SharedCtor() {
+}
+
+CleanupGraphResponse::~CleanupGraphResponse() {
+  // @@protoc_insertion_point(destructor:tensorflow.CleanupGraphResponse)
+  SharedDtor();
+}
+
+void CleanupGraphResponse::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+}
+
+void CleanupGraphResponse::ArenaDtor(void* object) {
+  CleanupGraphResponse* _this = reinterpret_cast< CleanupGraphResponse* >(object);
+  (void)_this;
+}
+void CleanupGraphResponse::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void CleanupGraphResponse::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const CleanupGraphResponse& CleanupGraphResponse::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_CleanupGraphResponse_tensorflow_2fcore_2fprotobuf_2fworker_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void CleanupGraphResponse::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.CleanupGraphResponse)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* CleanupGraphResponse::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<CleanupGraphResponse*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool CleanupGraphResponse::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.CleanupGraphResponse)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+  handle_unusual:
+    if (tag == 0) {
+      goto success;
+    }
+    DO_(::google::protobuf::internal::WireFormat::SkipField(
+          input, tag, _internal_metadata_.mutable_unknown_fields()));
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.CleanupGraphResponse)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.CleanupGraphResponse)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void CleanupGraphResponse::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.CleanupGraphResponse)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.CleanupGraphResponse)
+}
+
+::google::protobuf::uint8* CleanupGraphResponse::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.CleanupGraphResponse)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.CleanupGraphResponse)
+  return target;
+}
+
+size_t CleanupGraphResponse::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.CleanupGraphResponse)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void CleanupGraphResponse::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.CleanupGraphResponse)
+  GOOGLE_DCHECK_NE(&from, this);
+  const CleanupGraphResponse* source =
+      ::google::protobuf::DynamicCastToGenerated<CleanupGraphResponse>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.CleanupGraphResponse)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.CleanupGraphResponse)
+    MergeFrom(*source);
+  }
+}
+
+void CleanupGraphResponse::MergeFrom(const CleanupGraphResponse& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.CleanupGraphResponse)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+}
+
+void CleanupGraphResponse::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.CleanupGraphResponse)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void CleanupGraphResponse::CopyFrom(const CleanupGraphResponse& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.CleanupGraphResponse)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool CleanupGraphResponse::IsInitialized() const {
+  return true;
+}
+
+void CleanupGraphResponse::Swap(CleanupGraphResponse* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    CleanupGraphResponse* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void CleanupGraphResponse::UnsafeArenaSwap(CleanupGraphResponse* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void CleanupGraphResponse::InternalSwap(CleanupGraphResponse* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+}
+
+::google::protobuf::Metadata CleanupGraphResponse::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2fworker_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fprotobuf_2fworker_2eproto[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+void RecvTensorRequest::InitAsDefaultInstance() {
+  ::tensorflow::_RecvTensorRequest_default_instance_._instance.get_mutable()->client_locality_ = const_cast< ::tensorflow::DeviceLocality*>(
+      ::tensorflow::DeviceLocality::internal_default_instance());
+  ::tensorflow::_RecvTensorRequest_default_instance_._instance.get_mutable()->server_locality_ = const_cast< ::tensorflow::DeviceLocality*>(
+      ::tensorflow::DeviceLocality::internal_default_instance());
+  ::tensorflow::_RecvTensorRequest_default_instance_._instance.get_mutable()->transport_options_ = const_cast< ::google::protobuf::Any*>(
+      ::google::protobuf::Any::internal_default_instance());
+}
+class RecvTensorRequest::HasBitSetters {
+ public:
+  static const ::tensorflow::DeviceLocality& client_locality(const RecvTensorRequest* msg);
+  static const ::tensorflow::DeviceLocality& server_locality(const RecvTensorRequest* msg);
+  static const ::google::protobuf::Any& transport_options(const RecvTensorRequest* msg);
+};
+
+const ::tensorflow::DeviceLocality&
+RecvTensorRequest::HasBitSetters::client_locality(const RecvTensorRequest* msg) {
+  return *msg->client_locality_;
+}
+const ::tensorflow::DeviceLocality&
+RecvTensorRequest::HasBitSetters::server_locality(const RecvTensorRequest* msg) {
+  return *msg->server_locality_;
+}
+const ::google::protobuf::Any&
+RecvTensorRequest::HasBitSetters::transport_options(const RecvTensorRequest* msg) {
+  return *msg->transport_options_;
+}
+void RecvTensorRequest::unsafe_arena_set_allocated_client_locality(
+    ::tensorflow::DeviceLocality* client_locality) {
+  if (GetArenaNoVirtual() == NULL) {
+    delete client_locality_;
+  }
+  client_locality_ = client_locality;
+  if (client_locality) {
+    
+  } else {
+    
+  }
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.RecvTensorRequest.client_locality)
+}
+void RecvTensorRequest::clear_client_locality() {
+  if (GetArenaNoVirtual() == NULL && client_locality_ != NULL) {
+    delete client_locality_;
+  }
+  client_locality_ = NULL;
+}
+void RecvTensorRequest::unsafe_arena_set_allocated_server_locality(
+    ::tensorflow::DeviceLocality* server_locality) {
+  if (GetArenaNoVirtual() == NULL) {
+    delete server_locality_;
+  }
+  server_locality_ = server_locality;
+  if (server_locality) {
+    
+  } else {
+    
+  }
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.RecvTensorRequest.server_locality)
+}
+void RecvTensorRequest::clear_server_locality() {
+  if (GetArenaNoVirtual() == NULL && server_locality_ != NULL) {
+    delete server_locality_;
+  }
+  server_locality_ = NULL;
+}
+void RecvTensorRequest::unsafe_arena_set_allocated_transport_options(
+    ::google::protobuf::Any* transport_options) {
+  if (GetArenaNoVirtual() == NULL) {
+    delete transport_options_;
+  }
+  transport_options_ = transport_options;
+  if (transport_options) {
+    
+  } else {
+    
+  }
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.RecvTensorRequest.transport_options)
+}
+void RecvTensorRequest::clear_transport_options() {
+  if (GetArenaNoVirtual() == NULL && transport_options_ != NULL) {
+    delete transport_options_;
+  }
+  transport_options_ = NULL;
+}
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int RecvTensorRequest::kStepIdFieldNumber;
+const int RecvTensorRequest::kRendezvousKeyFieldNumber;
+const int RecvTensorRequest::kDmaOkFieldNumber;
+const int RecvTensorRequest::kClientLocalityFieldNumber;
+const int RecvTensorRequest::kServerLocalityFieldNumber;
+const int RecvTensorRequest::kTransportOptionsFieldNumber;
+const int RecvTensorRequest::kRequestIdFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+RecvTensorRequest::RecvTensorRequest()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.RecvTensorRequest)
+}
+RecvTensorRequest::RecvTensorRequest(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.RecvTensorRequest)
+}
+RecvTensorRequest::RecvTensorRequest(const RecvTensorRequest& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  rendezvous_key_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.rendezvous_key().size() > 0) {
+    rendezvous_key_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.rendezvous_key(),
+      GetArenaNoVirtual());
+  }
+  if (from.has_client_locality()) {
+    client_locality_ = new ::tensorflow::DeviceLocality(*from.client_locality_);
+  } else {
+    client_locality_ = NULL;
+  }
+  if (from.has_server_locality()) {
+    server_locality_ = new ::tensorflow::DeviceLocality(*from.server_locality_);
+  } else {
+    server_locality_ = NULL;
+  }
+  if (from.has_transport_options()) {
+    transport_options_ = new ::google::protobuf::Any(*from.transport_options_);
+  } else {
+    transport_options_ = NULL;
+  }
+  ::memcpy(&step_id_, &from.step_id_,
+    static_cast<size_t>(reinterpret_cast<char*>(&dma_ok_) -
+    reinterpret_cast<char*>(&step_id_)) + sizeof(dma_ok_));
+  // @@protoc_insertion_point(copy_constructor:tensorflow.RecvTensorRequest)
+}
+
+void RecvTensorRequest::SharedCtor() {
+  ::google::protobuf::internal::InitSCC(
+      &scc_info_RecvTensorRequest_tensorflow_2fcore_2fprotobuf_2fworker_2eproto.base);
+  rendezvous_key_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  ::memset(&client_locality_, 0, static_cast<size_t>(
+      reinterpret_cast<char*>(&dma_ok_) -
+      reinterpret_cast<char*>(&client_locality_)) + sizeof(dma_ok_));
+}
+
+RecvTensorRequest::~RecvTensorRequest() {
+  // @@protoc_insertion_point(destructor:tensorflow.RecvTensorRequest)
+  SharedDtor();
+}
+
+void RecvTensorRequest::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+  rendezvous_key_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (this != internal_default_instance()) delete client_locality_;
+  if (this != internal_default_instance()) delete server_locality_;
+  if (this != internal_default_instance()) delete transport_options_;
+}
+
+void RecvTensorRequest::ArenaDtor(void* object) {
+  RecvTensorRequest* _this = reinterpret_cast< RecvTensorRequest* >(object);
+  (void)_this;
+}
+void RecvTensorRequest::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void RecvTensorRequest::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const RecvTensorRequest& RecvTensorRequest::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_RecvTensorRequest_tensorflow_2fcore_2fprotobuf_2fworker_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void RecvTensorRequest::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.RecvTensorRequest)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  rendezvous_key_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+  if (GetArenaNoVirtual() == NULL && client_locality_ != NULL) {
+    delete client_locality_;
+  }
+  client_locality_ = NULL;
+  if (GetArenaNoVirtual() == NULL && server_locality_ != NULL) {
+    delete server_locality_;
+  }
+  server_locality_ = NULL;
+  if (GetArenaNoVirtual() == NULL && transport_options_ != NULL) {
+    delete transport_options_;
+  }
+  transport_options_ = NULL;
+  ::memset(&step_id_, 0, static_cast<size_t>(
+      reinterpret_cast<char*>(&dma_ok_) -
+      reinterpret_cast<char*>(&step_id_)) + sizeof(dma_ok_));
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* RecvTensorRequest::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<RecvTensorRequest*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // int64 step_id = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 8) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::google::protobuf::int64 value = val;
+        msg->set_step_id(value);
+        break;
+      }
+      // string rendezvous_key = 2;
+      case 2: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 18) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("tensorflow.RecvTensorRequest.rendezvous_key");
+        parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+        ::std::string* str = msg->mutable_rendezvous_key();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+        break;
+      }
+      // bool dma_ok = 3;
+      case 3: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 24) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        bool value = val;
+        msg->set_dma_ok(value);
+        break;
+      }
+      // .tensorflow.DeviceLocality client_locality = 4;
+      case 4: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 34) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        parser_till_end = ::tensorflow::DeviceLocality::_InternalParse;
+        object = msg->mutable_client_locality();
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                       ptr, newend);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+        ptr = newend;
+        break;
+      }
+      // .tensorflow.DeviceLocality server_locality = 5;
+      case 5: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 42) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        parser_till_end = ::tensorflow::DeviceLocality::_InternalParse;
+        object = msg->mutable_server_locality();
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                       ptr, newend);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+        ptr = newend;
+        break;
+      }
+      // .google.protobuf.Any transport_options = 6;
+      case 6: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 50) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        parser_till_end = ::google::protobuf::Any::_InternalParse;
+        object = msg->mutable_transport_options();
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                       ptr, newend);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+        ptr = newend;
+        break;
+      }
+      // int64 request_id = 7;
+      case 7: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 56) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::google::protobuf::int64 value = val;
+        msg->set_request_id(value);
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool RecvTensorRequest::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.RecvTensorRequest)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // int64 step_id = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (8 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>(
+                 input, &step_id_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // string rendezvous_key = 2;
+      case 2: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (18 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_rendezvous_key()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->rendezvous_key().data(), static_cast<int>(this->rendezvous_key().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.RecvTensorRequest.rendezvous_key"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // bool dma_ok = 3;
+      case 3: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (24 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
+                 input, &dma_ok_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // .tensorflow.DeviceLocality client_locality = 4;
+      case 4: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (34 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+               input, mutable_client_locality()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // .tensorflow.DeviceLocality server_locality = 5;
+      case 5: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (42 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+               input, mutable_server_locality()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // .google.protobuf.Any transport_options = 6;
+      case 6: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (50 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+               input, mutable_transport_options()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // int64 request_id = 7;
+      case 7: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (56 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>(
+                 input, &request_id_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.RecvTensorRequest)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.RecvTensorRequest)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void RecvTensorRequest::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.RecvTensorRequest)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // int64 step_id = 1;
+  if (this->step_id() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt64(1, this->step_id(), output);
+  }
+
+  // string rendezvous_key = 2;
+  if (this->rendezvous_key().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->rendezvous_key().data(), static_cast<int>(this->rendezvous_key().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.RecvTensorRequest.rendezvous_key");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      2, this->rendezvous_key(), output);
+  }
+
+  // bool dma_ok = 3;
+  if (this->dma_ok() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteBool(3, this->dma_ok(), output);
+  }
+
+  // .tensorflow.DeviceLocality client_locality = 4;
+  if (this->has_client_locality()) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      4, HasBitSetters::client_locality(this), output);
+  }
+
+  // .tensorflow.DeviceLocality server_locality = 5;
+  if (this->has_server_locality()) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      5, HasBitSetters::server_locality(this), output);
+  }
+
+  // .google.protobuf.Any transport_options = 6;
+  if (this->has_transport_options()) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      6, HasBitSetters::transport_options(this), output);
+  }
+
+  // int64 request_id = 7;
+  if (this->request_id() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt64(7, this->request_id(), output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.RecvTensorRequest)
+}
+
+::google::protobuf::uint8* RecvTensorRequest::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.RecvTensorRequest)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // int64 step_id = 1;
+  if (this->step_id() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt64ToArray(1, this->step_id(), target);
+  }
+
+  // string rendezvous_key = 2;
+  if (this->rendezvous_key().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->rendezvous_key().data(), static_cast<int>(this->rendezvous_key().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.RecvTensorRequest.rendezvous_key");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        2, this->rendezvous_key(), target);
+  }
+
+  // bool dma_ok = 3;
+  if (this->dma_ok() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(3, this->dma_ok(), target);
+  }
+
+  // .tensorflow.DeviceLocality client_locality = 4;
+  if (this->has_client_locality()) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        4, HasBitSetters::client_locality(this), deterministic, target);
+  }
+
+  // .tensorflow.DeviceLocality server_locality = 5;
+  if (this->has_server_locality()) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        5, HasBitSetters::server_locality(this), deterministic, target);
+  }
+
+  // .google.protobuf.Any transport_options = 6;
+  if (this->has_transport_options()) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        6, HasBitSetters::transport_options(this), deterministic, target);
+  }
+
+  // int64 request_id = 7;
+  if (this->request_id() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt64ToArray(7, this->request_id(), target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.RecvTensorRequest)
+  return target;
+}
+
+size_t RecvTensorRequest::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.RecvTensorRequest)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // string rendezvous_key = 2;
+  if (this->rendezvous_key().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->rendezvous_key());
+  }
+
+  // .tensorflow.DeviceLocality client_locality = 4;
+  if (this->has_client_locality()) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::MessageSize(
+        *client_locality_);
+  }
+
+  // .tensorflow.DeviceLocality server_locality = 5;
+  if (this->has_server_locality()) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::MessageSize(
+        *server_locality_);
+  }
+
+  // .google.protobuf.Any transport_options = 6;
+  if (this->has_transport_options()) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::MessageSize(
+        *transport_options_);
+  }
+
+  // int64 step_id = 1;
+  if (this->step_id() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::Int64Size(
+        this->step_id());
+  }
+
+  // int64 request_id = 7;
+  if (this->request_id() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::Int64Size(
+        this->request_id());
+  }
+
+  // bool dma_ok = 3;
+  if (this->dma_ok() != 0) {
+    total_size += 1 + 1;
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void RecvTensorRequest::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.RecvTensorRequest)
+  GOOGLE_DCHECK_NE(&from, this);
+  const RecvTensorRequest* source =
+      ::google::protobuf::DynamicCastToGenerated<RecvTensorRequest>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.RecvTensorRequest)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.RecvTensorRequest)
+    MergeFrom(*source);
+  }
+}
+
+void RecvTensorRequest::MergeFrom(const RecvTensorRequest& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.RecvTensorRequest)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  if (from.rendezvous_key().size() > 0) {
+    set_rendezvous_key(from.rendezvous_key());
+  }
+  if (from.has_client_locality()) {
+    mutable_client_locality()->::tensorflow::DeviceLocality::MergeFrom(from.client_locality());
+  }
+  if (from.has_server_locality()) {
+    mutable_server_locality()->::tensorflow::DeviceLocality::MergeFrom(from.server_locality());
+  }
+  if (from.has_transport_options()) {
+    mutable_transport_options()->::google::protobuf::Any::MergeFrom(from.transport_options());
+  }
+  if (from.step_id() != 0) {
+    set_step_id(from.step_id());
+  }
+  if (from.request_id() != 0) {
+    set_request_id(from.request_id());
+  }
+  if (from.dma_ok() != 0) {
+    set_dma_ok(from.dma_ok());
+  }
+}
+
+void RecvTensorRequest::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.RecvTensorRequest)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void RecvTensorRequest::CopyFrom(const RecvTensorRequest& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.RecvTensorRequest)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool RecvTensorRequest::IsInitialized() const {
+  return true;
+}
+
+void RecvTensorRequest::Swap(RecvTensorRequest* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    RecvTensorRequest* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void RecvTensorRequest::UnsafeArenaSwap(RecvTensorRequest* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void RecvTensorRequest::InternalSwap(RecvTensorRequest* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  rendezvous_key_.Swap(&other->rendezvous_key_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+  swap(client_locality_, other->client_locality_);
+  swap(server_locality_, other->server_locality_);
+  swap(transport_options_, other->transport_options_);
+  swap(step_id_, other->step_id_);
+  swap(request_id_, other->request_id_);
+  swap(dma_ok_, other->dma_ok_);
+}
+
+::google::protobuf::Metadata RecvTensorRequest::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2fworker_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fprotobuf_2fworker_2eproto[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+void RecvTensorResponse::InitAsDefaultInstance() {
+  ::tensorflow::_RecvTensorResponse_default_instance_._instance.get_mutable()->tensor_ = const_cast< ::tensorflow::TensorProto*>(
+      ::tensorflow::TensorProto::internal_default_instance());
+  ::tensorflow::_RecvTensorResponse_default_instance_._instance.get_mutable()->transport_options_ = const_cast< ::google::protobuf::Any*>(
+      ::google::protobuf::Any::internal_default_instance());
+}
+class RecvTensorResponse::HasBitSetters {
+ public:
+  static const ::tensorflow::TensorProto& tensor(const RecvTensorResponse* msg);
+  static const ::google::protobuf::Any& transport_options(const RecvTensorResponse* msg);
+};
+
+const ::tensorflow::TensorProto&
+RecvTensorResponse::HasBitSetters::tensor(const RecvTensorResponse* msg) {
+  return *msg->tensor_;
+}
+const ::google::protobuf::Any&
+RecvTensorResponse::HasBitSetters::transport_options(const RecvTensorResponse* msg) {
+  return *msg->transport_options_;
+}
+void RecvTensorResponse::unsafe_arena_set_allocated_tensor(
+    ::tensorflow::TensorProto* tensor) {
+  if (GetArenaNoVirtual() == NULL) {
+    delete tensor_;
+  }
+  tensor_ = tensor;
+  if (tensor) {
+    
+  } else {
+    
+  }
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.RecvTensorResponse.tensor)
+}
+void RecvTensorResponse::clear_tensor() {
+  if (GetArenaNoVirtual() == NULL && tensor_ != NULL) {
+    delete tensor_;
+  }
+  tensor_ = NULL;
+}
+void RecvTensorResponse::unsafe_arena_set_allocated_transport_options(
+    ::google::protobuf::Any* transport_options) {
+  if (GetArenaNoVirtual() == NULL) {
+    delete transport_options_;
+  }
+  transport_options_ = transport_options;
+  if (transport_options) {
+    
+  } else {
+    
+  }
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.RecvTensorResponse.transport_options)
+}
+void RecvTensorResponse::clear_transport_options() {
+  if (GetArenaNoVirtual() == NULL && transport_options_ != NULL) {
+    delete transport_options_;
+  }
+  transport_options_ = NULL;
+}
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int RecvTensorResponse::kTensorFieldNumber;
+const int RecvTensorResponse::kIsDeadFieldNumber;
+const int RecvTensorResponse::kSendStartMicrosFieldNumber;
+const int RecvTensorResponse::kTransportOptionsFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+RecvTensorResponse::RecvTensorResponse()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.RecvTensorResponse)
+}
+RecvTensorResponse::RecvTensorResponse(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.RecvTensorResponse)
+}
+RecvTensorResponse::RecvTensorResponse(const RecvTensorResponse& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  if (from.has_tensor()) {
+    tensor_ = new ::tensorflow::TensorProto(*from.tensor_);
+  } else {
+    tensor_ = NULL;
+  }
+  if (from.has_transport_options()) {
+    transport_options_ = new ::google::protobuf::Any(*from.transport_options_);
+  } else {
+    transport_options_ = NULL;
+  }
+  ::memcpy(&send_start_micros_, &from.send_start_micros_,
+    static_cast<size_t>(reinterpret_cast<char*>(&is_dead_) -
+    reinterpret_cast<char*>(&send_start_micros_)) + sizeof(is_dead_));
+  // @@protoc_insertion_point(copy_constructor:tensorflow.RecvTensorResponse)
+}
+
+void RecvTensorResponse::SharedCtor() {
+  ::google::protobuf::internal::InitSCC(
+      &scc_info_RecvTensorResponse_tensorflow_2fcore_2fprotobuf_2fworker_2eproto.base);
+  ::memset(&tensor_, 0, static_cast<size_t>(
+      reinterpret_cast<char*>(&is_dead_) -
+      reinterpret_cast<char*>(&tensor_)) + sizeof(is_dead_));
+}
+
+RecvTensorResponse::~RecvTensorResponse() {
+  // @@protoc_insertion_point(destructor:tensorflow.RecvTensorResponse)
+  SharedDtor();
+}
+
+void RecvTensorResponse::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+  if (this != internal_default_instance()) delete tensor_;
+  if (this != internal_default_instance()) delete transport_options_;
+}
+
+void RecvTensorResponse::ArenaDtor(void* object) {
+  RecvTensorResponse* _this = reinterpret_cast< RecvTensorResponse* >(object);
+  (void)_this;
+}
+void RecvTensorResponse::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void RecvTensorResponse::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const RecvTensorResponse& RecvTensorResponse::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_RecvTensorResponse_tensorflow_2fcore_2fprotobuf_2fworker_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void RecvTensorResponse::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.RecvTensorResponse)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  if (GetArenaNoVirtual() == NULL && tensor_ != NULL) {
+    delete tensor_;
+  }
+  tensor_ = NULL;
+  if (GetArenaNoVirtual() == NULL && transport_options_ != NULL) {
+    delete transport_options_;
+  }
+  transport_options_ = NULL;
+  ::memset(&send_start_micros_, 0, static_cast<size_t>(
+      reinterpret_cast<char*>(&is_dead_) -
+      reinterpret_cast<char*>(&send_start_micros_)) + sizeof(is_dead_));
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* RecvTensorResponse::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<RecvTensorResponse*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // .tensorflow.TensorProto tensor = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 10) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        parser_till_end = ::tensorflow::TensorProto::_InternalParse;
+        object = msg->mutable_tensor();
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                       ptr, newend);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+        ptr = newend;
+        break;
+      }
+      // bool is_dead = 2;
+      case 2: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 16) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        bool value = val;
+        msg->set_is_dead(value);
+        break;
+      }
+      // int64 send_start_micros = 3;
+      case 3: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 24) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::google::protobuf::int64 value = val;
+        msg->set_send_start_micros(value);
+        break;
+      }
+      // .google.protobuf.Any transport_options = 4;
+      case 4: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 34) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        parser_till_end = ::google::protobuf::Any::_InternalParse;
+        object = msg->mutable_transport_options();
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                       ptr, newend);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+        ptr = newend;
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool RecvTensorResponse::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.RecvTensorResponse)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // .tensorflow.TensorProto tensor = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (10 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+               input, mutable_tensor()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // bool is_dead = 2;
+      case 2: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (16 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
+                 input, &is_dead_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // int64 send_start_micros = 3;
+      case 3: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (24 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>(
+                 input, &send_start_micros_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // .google.protobuf.Any transport_options = 4;
+      case 4: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (34 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+               input, mutable_transport_options()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.RecvTensorResponse)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.RecvTensorResponse)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void RecvTensorResponse::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.RecvTensorResponse)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // .tensorflow.TensorProto tensor = 1;
+  if (this->has_tensor()) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      1, HasBitSetters::tensor(this), output);
+  }
+
+  // bool is_dead = 2;
+  if (this->is_dead() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteBool(2, this->is_dead(), output);
+  }
+
+  // int64 send_start_micros = 3;
+  if (this->send_start_micros() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt64(3, this->send_start_micros(), output);
+  }
+
+  // .google.protobuf.Any transport_options = 4;
+  if (this->has_transport_options()) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      4, HasBitSetters::transport_options(this), output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.RecvTensorResponse)
+}
+
+::google::protobuf::uint8* RecvTensorResponse::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.RecvTensorResponse)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // .tensorflow.TensorProto tensor = 1;
+  if (this->has_tensor()) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        1, HasBitSetters::tensor(this), deterministic, target);
+  }
+
+  // bool is_dead = 2;
+  if (this->is_dead() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(2, this->is_dead(), target);
+  }
+
+  // int64 send_start_micros = 3;
+  if (this->send_start_micros() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt64ToArray(3, this->send_start_micros(), target);
+  }
+
+  // .google.protobuf.Any transport_options = 4;
+  if (this->has_transport_options()) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        4, HasBitSetters::transport_options(this), deterministic, target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.RecvTensorResponse)
+  return target;
+}
+
+size_t RecvTensorResponse::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.RecvTensorResponse)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // .tensorflow.TensorProto tensor = 1;
+  if (this->has_tensor()) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::MessageSize(
+        *tensor_);
+  }
+
+  // .google.protobuf.Any transport_options = 4;
+  if (this->has_transport_options()) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::MessageSize(
+        *transport_options_);
+  }
+
+  // int64 send_start_micros = 3;
+  if (this->send_start_micros() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::Int64Size(
+        this->send_start_micros());
+  }
+
+  // bool is_dead = 2;
+  if (this->is_dead() != 0) {
+    total_size += 1 + 1;
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void RecvTensorResponse::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.RecvTensorResponse)
+  GOOGLE_DCHECK_NE(&from, this);
+  const RecvTensorResponse* source =
+      ::google::protobuf::DynamicCastToGenerated<RecvTensorResponse>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.RecvTensorResponse)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.RecvTensorResponse)
+    MergeFrom(*source);
+  }
+}
+
+void RecvTensorResponse::MergeFrom(const RecvTensorResponse& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.RecvTensorResponse)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  if (from.has_tensor()) {
+    mutable_tensor()->::tensorflow::TensorProto::MergeFrom(from.tensor());
+  }
+  if (from.has_transport_options()) {
+    mutable_transport_options()->::google::protobuf::Any::MergeFrom(from.transport_options());
+  }
+  if (from.send_start_micros() != 0) {
+    set_send_start_micros(from.send_start_micros());
+  }
+  if (from.is_dead() != 0) {
+    set_is_dead(from.is_dead());
+  }
+}
+
+void RecvTensorResponse::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.RecvTensorResponse)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void RecvTensorResponse::CopyFrom(const RecvTensorResponse& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.RecvTensorResponse)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool RecvTensorResponse::IsInitialized() const {
+  return true;
+}
+
+void RecvTensorResponse::Swap(RecvTensorResponse* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    RecvTensorResponse* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void RecvTensorResponse::UnsafeArenaSwap(RecvTensorResponse* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void RecvTensorResponse::InternalSwap(RecvTensorResponse* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  swap(tensor_, other->tensor_);
+  swap(transport_options_, other->transport_options_);
+  swap(send_start_micros_, other->send_start_micros_);
+  swap(is_dead_, other->is_dead_);
+}
+
+::google::protobuf::Metadata RecvTensorResponse::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2fworker_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fprotobuf_2fworker_2eproto[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+void LoggingRequest::InitAsDefaultInstance() {
+}
+class LoggingRequest::HasBitSetters {
+ public:
+};
+
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int LoggingRequest::kEnableRpcLoggingFieldNumber;
+const int LoggingRequest::kDisableRpcLoggingFieldNumber;
+const int LoggingRequest::kClearFieldNumber;
+const int LoggingRequest::kFetchStepIdFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+LoggingRequest::LoggingRequest()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.LoggingRequest)
+}
+LoggingRequest::LoggingRequest(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena),
+  fetch_step_id_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.LoggingRequest)
+}
+LoggingRequest::LoggingRequest(const LoggingRequest& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL),
+      fetch_step_id_(from.fetch_step_id_) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::memcpy(&enable_rpc_logging_, &from.enable_rpc_logging_,
+    static_cast<size_t>(reinterpret_cast<char*>(&clear_) -
+    reinterpret_cast<char*>(&enable_rpc_logging_)) + sizeof(clear_));
+  // @@protoc_insertion_point(copy_constructor:tensorflow.LoggingRequest)
+}
+
+void LoggingRequest::SharedCtor() {
+  ::memset(&enable_rpc_logging_, 0, static_cast<size_t>(
+      reinterpret_cast<char*>(&clear_) -
+      reinterpret_cast<char*>(&enable_rpc_logging_)) + sizeof(clear_));
+}
+
+LoggingRequest::~LoggingRequest() {
+  // @@protoc_insertion_point(destructor:tensorflow.LoggingRequest)
+  SharedDtor();
+}
+
+void LoggingRequest::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+}
+
+void LoggingRequest::ArenaDtor(void* object) {
+  LoggingRequest* _this = reinterpret_cast< LoggingRequest* >(object);
+  (void)_this;
+}
+void LoggingRequest::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void LoggingRequest::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const LoggingRequest& LoggingRequest::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_LoggingRequest_tensorflow_2fcore_2fprotobuf_2fworker_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void LoggingRequest::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.LoggingRequest)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  fetch_step_id_.Clear();
+  ::memset(&enable_rpc_logging_, 0, static_cast<size_t>(
+      reinterpret_cast<char*>(&clear_) -
+      reinterpret_cast<char*>(&enable_rpc_logging_)) + sizeof(clear_));
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* LoggingRequest::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<LoggingRequest*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // bool enable_rpc_logging = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 8) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        bool value = val;
+        msg->set_enable_rpc_logging(value);
+        break;
+      }
+      // bool clear = 2;
+      case 2: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 16) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        bool value = val;
+        msg->set_clear(value);
+        break;
+      }
+      // repeated int64 fetch_step_id = 3;
+      case 3: {
+        if (static_cast<::google::protobuf::uint8>(tag) == 26) {
+          ptr = Varint::Parse32Inline(ptr, &size);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          parser_till_end = ::google::protobuf::internal::PackedInt64Parser;
+          object = msg->mutable_fetch_step_id();
+          if (size > end - ptr) goto len_delim_till_end;
+          auto newend = ptr + size;
+          if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+          break;
+        } else if (static_cast<::google::protobuf::uint8>(tag) != 24) goto handle_unusual;
+        do {
+          ::google::protobuf::uint64 val;
+          ptr = Varint::Parse64(ptr, &val);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          ::google::protobuf::int64 value = val;
+          msg->add_fetch_step_id(value);
+          if (ptr >= end) break;
+        } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 24 && (ptr += 1));
+        break;
+      }
+      // bool disable_rpc_logging = 4;
+      case 4: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 32) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        bool value = val;
+        msg->set_disable_rpc_logging(value);
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool LoggingRequest::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.LoggingRequest)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // bool enable_rpc_logging = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (8 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
+                 input, &enable_rpc_logging_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // bool clear = 2;
+      case 2: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (16 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
+                 input, &clear_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // repeated int64 fetch_step_id = 3;
+      case 3: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (26 & 0xFF)) {
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPackedPrimitive<
+                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>(
+                 input, this->mutable_fetch_step_id())));
+        } else if (static_cast< ::google::protobuf::uint8>(tag) == (24 & 0xFF)) {
+          DO_((::google::protobuf::internal::WireFormatLite::ReadRepeatedPrimitiveNoInline<
+                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>(
+                 1, 26u, input, this->mutable_fetch_step_id())));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // bool disable_rpc_logging = 4;
+      case 4: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (32 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
+                 input, &disable_rpc_logging_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.LoggingRequest)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.LoggingRequest)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void LoggingRequest::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.LoggingRequest)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // bool enable_rpc_logging = 1;
+  if (this->enable_rpc_logging() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteBool(1, this->enable_rpc_logging(), output);
+  }
+
+  // bool clear = 2;
+  if (this->clear() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteBool(2, this->clear(), output);
+  }
+
+  // repeated int64 fetch_step_id = 3;
+  if (this->fetch_step_id_size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteTag(3, ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED, output);
+    output->WriteVarint32(_fetch_step_id_cached_byte_size_.load(
+        std::memory_order_relaxed));
+  }
+  for (int i = 0, n = this->fetch_step_id_size(); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt64NoTag(
+      this->fetch_step_id(i), output);
+  }
+
+  // bool disable_rpc_logging = 4;
+  if (this->disable_rpc_logging() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteBool(4, this->disable_rpc_logging(), output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.LoggingRequest)
+}
+
+::google::protobuf::uint8* LoggingRequest::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.LoggingRequest)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // bool enable_rpc_logging = 1;
+  if (this->enable_rpc_logging() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(1, this->enable_rpc_logging(), target);
+  }
+
+  // bool clear = 2;
+  if (this->clear() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(2, this->clear(), target);
+  }
+
+  // repeated int64 fetch_step_id = 3;
+  if (this->fetch_step_id_size() > 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteTagToArray(
+      3,
+      ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED,
+      target);
+    target = ::google::protobuf::io::CodedOutputStream::WriteVarint32ToArray(
+        _fetch_step_id_cached_byte_size_.load(std::memory_order_relaxed),
+         target);
+    target = ::google::protobuf::internal::WireFormatLite::
+      WriteInt64NoTagToArray(this->fetch_step_id_, target);
+  }
+
+  // bool disable_rpc_logging = 4;
+  if (this->disable_rpc_logging() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(4, this->disable_rpc_logging(), target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.LoggingRequest)
+  return target;
+}
+
+size_t LoggingRequest::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.LoggingRequest)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // repeated int64 fetch_step_id = 3;
+  {
+    size_t data_size = ::google::protobuf::internal::WireFormatLite::
+      Int64Size(this->fetch_step_id_);
+    if (data_size > 0) {
+      total_size += 1 +
+        ::google::protobuf::internal::WireFormatLite::Int32Size(
+            static_cast<::google::protobuf::int32>(data_size));
+    }
+    int cached_size = ::google::protobuf::internal::ToCachedSize(data_size);
+    _fetch_step_id_cached_byte_size_.store(cached_size,
+                                    std::memory_order_relaxed);
+    total_size += data_size;
+  }
+
+  // bool enable_rpc_logging = 1;
+  if (this->enable_rpc_logging() != 0) {
+    total_size += 1 + 1;
+  }
+
+  // bool disable_rpc_logging = 4;
+  if (this->disable_rpc_logging() != 0) {
+    total_size += 1 + 1;
+  }
+
+  // bool clear = 2;
+  if (this->clear() != 0) {
+    total_size += 1 + 1;
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void LoggingRequest::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.LoggingRequest)
+  GOOGLE_DCHECK_NE(&from, this);
+  const LoggingRequest* source =
+      ::google::protobuf::DynamicCastToGenerated<LoggingRequest>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.LoggingRequest)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.LoggingRequest)
+    MergeFrom(*source);
+  }
+}
+
+void LoggingRequest::MergeFrom(const LoggingRequest& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.LoggingRequest)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  fetch_step_id_.MergeFrom(from.fetch_step_id_);
+  if (from.enable_rpc_logging() != 0) {
+    set_enable_rpc_logging(from.enable_rpc_logging());
+  }
+  if (from.disable_rpc_logging() != 0) {
+    set_disable_rpc_logging(from.disable_rpc_logging());
+  }
+  if (from.clear() != 0) {
+    set_clear(from.clear());
+  }
+}
+
+void LoggingRequest::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.LoggingRequest)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void LoggingRequest::CopyFrom(const LoggingRequest& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.LoggingRequest)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool LoggingRequest::IsInitialized() const {
+  return true;
+}
+
+void LoggingRequest::Swap(LoggingRequest* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    LoggingRequest* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void LoggingRequest::UnsafeArenaSwap(LoggingRequest* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void LoggingRequest::InternalSwap(LoggingRequest* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  fetch_step_id_.InternalSwap(&other->fetch_step_id_);
+  swap(enable_rpc_logging_, other->enable_rpc_logging_);
+  swap(disable_rpc_logging_, other->disable_rpc_logging_);
+  swap(clear_, other->clear_);
+}
+
+::google::protobuf::Metadata LoggingRequest::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2fworker_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fprotobuf_2fworker_2eproto[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+void LabeledStepStats::InitAsDefaultInstance() {
+  ::tensorflow::_LabeledStepStats_default_instance_._instance.get_mutable()->step_stats_ = const_cast< ::tensorflow::StepStats*>(
+      ::tensorflow::StepStats::internal_default_instance());
+}
+class LabeledStepStats::HasBitSetters {
+ public:
+  static const ::tensorflow::StepStats& step_stats(const LabeledStepStats* msg);
+};
+
+const ::tensorflow::StepStats&
+LabeledStepStats::HasBitSetters::step_stats(const LabeledStepStats* msg) {
+  return *msg->step_stats_;
+}
+void LabeledStepStats::unsafe_arena_set_allocated_step_stats(
+    ::tensorflow::StepStats* step_stats) {
+  if (GetArenaNoVirtual() == NULL) {
+    delete step_stats_;
+  }
+  step_stats_ = step_stats;
+  if (step_stats) {
+    
+  } else {
+    
+  }
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.LabeledStepStats.step_stats)
+}
+void LabeledStepStats::clear_step_stats() {
+  if (GetArenaNoVirtual() == NULL && step_stats_ != NULL) {
+    delete step_stats_;
+  }
+  step_stats_ = NULL;
+}
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int LabeledStepStats::kStepIdFieldNumber;
+const int LabeledStepStats::kStepStatsFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+LabeledStepStats::LabeledStepStats()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.LabeledStepStats)
+}
+LabeledStepStats::LabeledStepStats(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.LabeledStepStats)
+}
+LabeledStepStats::LabeledStepStats(const LabeledStepStats& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  if (from.has_step_stats()) {
+    step_stats_ = new ::tensorflow::StepStats(*from.step_stats_);
+  } else {
+    step_stats_ = NULL;
+  }
+  step_id_ = from.step_id_;
+  // @@protoc_insertion_point(copy_constructor:tensorflow.LabeledStepStats)
+}
+
+void LabeledStepStats::SharedCtor() {
+  ::google::protobuf::internal::InitSCC(
+      &scc_info_LabeledStepStats_tensorflow_2fcore_2fprotobuf_2fworker_2eproto.base);
+  ::memset(&step_stats_, 0, static_cast<size_t>(
+      reinterpret_cast<char*>(&step_id_) -
+      reinterpret_cast<char*>(&step_stats_)) + sizeof(step_id_));
+}
+
+LabeledStepStats::~LabeledStepStats() {
+  // @@protoc_insertion_point(destructor:tensorflow.LabeledStepStats)
+  SharedDtor();
+}
+
+void LabeledStepStats::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+  if (this != internal_default_instance()) delete step_stats_;
+}
+
+void LabeledStepStats::ArenaDtor(void* object) {
+  LabeledStepStats* _this = reinterpret_cast< LabeledStepStats* >(object);
+  (void)_this;
+}
+void LabeledStepStats::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void LabeledStepStats::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const LabeledStepStats& LabeledStepStats::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_LabeledStepStats_tensorflow_2fcore_2fprotobuf_2fworker_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void LabeledStepStats::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.LabeledStepStats)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  if (GetArenaNoVirtual() == NULL && step_stats_ != NULL) {
+    delete step_stats_;
+  }
+  step_stats_ = NULL;
+  step_id_ = PROTOBUF_LONGLONG(0);
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* LabeledStepStats::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<LabeledStepStats*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // int64 step_id = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 8) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::google::protobuf::int64 value = val;
+        msg->set_step_id(value);
+        break;
+      }
+      // .tensorflow.StepStats step_stats = 2;
+      case 2: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 18) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        parser_till_end = ::tensorflow::StepStats::_InternalParse;
+        object = msg->mutable_step_stats();
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                       ptr, newend);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+        ptr = newend;
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool LabeledStepStats::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.LabeledStepStats)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // int64 step_id = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (8 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>(
+                 input, &step_id_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // .tensorflow.StepStats step_stats = 2;
+      case 2: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (18 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+               input, mutable_step_stats()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.LabeledStepStats)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.LabeledStepStats)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void LabeledStepStats::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.LabeledStepStats)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // int64 step_id = 1;
+  if (this->step_id() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt64(1, this->step_id(), output);
+  }
+
+  // .tensorflow.StepStats step_stats = 2;
+  if (this->has_step_stats()) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      2, HasBitSetters::step_stats(this), output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.LabeledStepStats)
+}
+
+::google::protobuf::uint8* LabeledStepStats::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.LabeledStepStats)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // int64 step_id = 1;
+  if (this->step_id() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt64ToArray(1, this->step_id(), target);
+  }
+
+  // .tensorflow.StepStats step_stats = 2;
+  if (this->has_step_stats()) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        2, HasBitSetters::step_stats(this), deterministic, target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.LabeledStepStats)
+  return target;
+}
+
+size_t LabeledStepStats::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.LabeledStepStats)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // .tensorflow.StepStats step_stats = 2;
+  if (this->has_step_stats()) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::MessageSize(
+        *step_stats_);
+  }
+
+  // int64 step_id = 1;
+  if (this->step_id() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::Int64Size(
+        this->step_id());
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void LabeledStepStats::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.LabeledStepStats)
+  GOOGLE_DCHECK_NE(&from, this);
+  const LabeledStepStats* source =
+      ::google::protobuf::DynamicCastToGenerated<LabeledStepStats>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.LabeledStepStats)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.LabeledStepStats)
+    MergeFrom(*source);
+  }
+}
+
+void LabeledStepStats::MergeFrom(const LabeledStepStats& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.LabeledStepStats)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  if (from.has_step_stats()) {
+    mutable_step_stats()->::tensorflow::StepStats::MergeFrom(from.step_stats());
+  }
+  if (from.step_id() != 0) {
+    set_step_id(from.step_id());
+  }
+}
+
+void LabeledStepStats::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.LabeledStepStats)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void LabeledStepStats::CopyFrom(const LabeledStepStats& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.LabeledStepStats)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool LabeledStepStats::IsInitialized() const {
+  return true;
+}
+
+void LabeledStepStats::Swap(LabeledStepStats* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    LabeledStepStats* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void LabeledStepStats::UnsafeArenaSwap(LabeledStepStats* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void LabeledStepStats::InternalSwap(LabeledStepStats* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  swap(step_stats_, other->step_stats_);
+  swap(step_id_, other->step_id_);
+}
+
+::google::protobuf::Metadata LabeledStepStats::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2fworker_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fprotobuf_2fworker_2eproto[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+void LoggingResponse::InitAsDefaultInstance() {
+}
+class LoggingResponse::HasBitSetters {
+ public:
+};
+
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int LoggingResponse::kStepFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+LoggingResponse::LoggingResponse()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.LoggingResponse)
+}
+LoggingResponse::LoggingResponse(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena),
+  step_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.LoggingResponse)
+}
+LoggingResponse::LoggingResponse(const LoggingResponse& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL),
+      step_(from.step_) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  // @@protoc_insertion_point(copy_constructor:tensorflow.LoggingResponse)
+}
+
+void LoggingResponse::SharedCtor() {
+  ::google::protobuf::internal::InitSCC(
+      &scc_info_LoggingResponse_tensorflow_2fcore_2fprotobuf_2fworker_2eproto.base);
+}
+
+LoggingResponse::~LoggingResponse() {
+  // @@protoc_insertion_point(destructor:tensorflow.LoggingResponse)
+  SharedDtor();
+}
+
+void LoggingResponse::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+}
+
+void LoggingResponse::ArenaDtor(void* object) {
+  LoggingResponse* _this = reinterpret_cast< LoggingResponse* >(object);
+  (void)_this;
+}
+void LoggingResponse::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void LoggingResponse::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const LoggingResponse& LoggingResponse::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_LoggingResponse_tensorflow_2fcore_2fprotobuf_2fworker_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void LoggingResponse::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.LoggingResponse)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  step_.Clear();
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* LoggingResponse::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<LoggingResponse*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // repeated .tensorflow.LabeledStepStats step = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 10) goto handle_unusual;
+        do {
+          ptr = Varint::Parse32Inline(ptr, &size);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          parser_till_end = ::tensorflow::LabeledStepStats::_InternalParse;
+          object = msg->add_step();
+          if (size > end - ptr) goto len_delim_till_end;
+          auto newend = ptr + size;
+          bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                         ptr, newend);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          ptr = newend;
+          if (ptr >= end) break;
+        } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 10 && (ptr += 1));
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool LoggingResponse::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.LoggingResponse)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // repeated .tensorflow.LabeledStepStats step = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (10 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+                input, add_step()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.LoggingResponse)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.LoggingResponse)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void LoggingResponse::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.LoggingResponse)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // repeated .tensorflow.LabeledStepStats step = 1;
+  for (unsigned int i = 0,
+      n = static_cast<unsigned int>(this->step_size()); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      1,
+      this->step(static_cast<int>(i)),
+      output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.LoggingResponse)
+}
+
+::google::protobuf::uint8* LoggingResponse::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.LoggingResponse)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // repeated .tensorflow.LabeledStepStats step = 1;
+  for (unsigned int i = 0,
+      n = static_cast<unsigned int>(this->step_size()); i < n; i++) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        1, this->step(static_cast<int>(i)), deterministic, target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.LoggingResponse)
+  return target;
+}
+
+size_t LoggingResponse::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.LoggingResponse)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // repeated .tensorflow.LabeledStepStats step = 1;
+  {
+    unsigned int count = static_cast<unsigned int>(this->step_size());
+    total_size += 1UL * count;
+    for (unsigned int i = 0; i < count; i++) {
+      total_size +=
+        ::google::protobuf::internal::WireFormatLite::MessageSize(
+          this->step(static_cast<int>(i)));
+    }
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void LoggingResponse::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.LoggingResponse)
+  GOOGLE_DCHECK_NE(&from, this);
+  const LoggingResponse* source =
+      ::google::protobuf::DynamicCastToGenerated<LoggingResponse>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.LoggingResponse)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.LoggingResponse)
+    MergeFrom(*source);
+  }
+}
+
+void LoggingResponse::MergeFrom(const LoggingResponse& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.LoggingResponse)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  step_.MergeFrom(from.step_);
+}
+
+void LoggingResponse::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.LoggingResponse)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void LoggingResponse::CopyFrom(const LoggingResponse& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.LoggingResponse)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool LoggingResponse::IsInitialized() const {
+  return true;
+}
+
+void LoggingResponse::Swap(LoggingResponse* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    LoggingResponse* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void LoggingResponse::UnsafeArenaSwap(LoggingResponse* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void LoggingResponse::InternalSwap(LoggingResponse* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  CastToBase(&step_)->InternalSwap(CastToBase(&other->step_));
+}
+
+::google::protobuf::Metadata LoggingResponse::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2fworker_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fprotobuf_2fworker_2eproto[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+void TraceOpts::InitAsDefaultInstance() {
+}
+class TraceOpts::HasBitSetters {
+ public:
+};
+
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int TraceOpts::kDurationFieldNumber;
+const int TraceOpts::kUseStepProfilerFieldNumber;
+const int TraceOpts::kUseKernelProfilerFieldNumber;
+const int TraceOpts::kUseExtendedProfilerFieldNumber;
+const int TraceOpts::kUseGpuProfilerFieldNumber;
+const int TraceOpts::kUseSampleProfilerFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+TraceOpts::TraceOpts()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.TraceOpts)
+}
+TraceOpts::TraceOpts(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.TraceOpts)
+}
+TraceOpts::TraceOpts(const TraceOpts& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::memcpy(&duration_, &from.duration_,
+    static_cast<size_t>(reinterpret_cast<char*>(&use_sample_profiler_) -
+    reinterpret_cast<char*>(&duration_)) + sizeof(use_sample_profiler_));
+  // @@protoc_insertion_point(copy_constructor:tensorflow.TraceOpts)
+}
+
+void TraceOpts::SharedCtor() {
+  ::memset(&duration_, 0, static_cast<size_t>(
+      reinterpret_cast<char*>(&use_sample_profiler_) -
+      reinterpret_cast<char*>(&duration_)) + sizeof(use_sample_profiler_));
+}
+
+TraceOpts::~TraceOpts() {
+  // @@protoc_insertion_point(destructor:tensorflow.TraceOpts)
+  SharedDtor();
+}
+
+void TraceOpts::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+}
+
+void TraceOpts::ArenaDtor(void* object) {
+  TraceOpts* _this = reinterpret_cast< TraceOpts* >(object);
+  (void)_this;
+}
+void TraceOpts::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void TraceOpts::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const TraceOpts& TraceOpts::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_TraceOpts_tensorflow_2fcore_2fprotobuf_2fworker_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void TraceOpts::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.TraceOpts)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  ::memset(&duration_, 0, static_cast<size_t>(
+      reinterpret_cast<char*>(&use_sample_profiler_) -
+      reinterpret_cast<char*>(&duration_)) + sizeof(use_sample_profiler_));
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* TraceOpts::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<TraceOpts*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // double duration = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 9) goto handle_unusual;
+        double val;
+        ::std::memcpy(&val, ptr, 8);
+        ptr += 8;
+        msg->set_duration(val);
+        break;
+      }
+      // bool use_step_profiler = 2;
+      case 2: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 16) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        bool value = val;
+        msg->set_use_step_profiler(value);
+        break;
+      }
+      // bool use_kernel_profiler = 3;
+      case 3: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 24) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        bool value = val;
+        msg->set_use_kernel_profiler(value);
+        break;
+      }
+      // bool use_extended_profiler = 4;
+      case 4: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 32) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        bool value = val;
+        msg->set_use_extended_profiler(value);
+        break;
+      }
+      // bool use_gpu_profiler = 5;
+      case 5: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 40) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        bool value = val;
+        msg->set_use_gpu_profiler(value);
+        break;
+      }
+      // bool use_sample_profiler = 6;
+      case 6: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 48) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        bool value = val;
+        msg->set_use_sample_profiler(value);
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool TraceOpts::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.TraceOpts)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // double duration = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (9 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   double, ::google::protobuf::internal::WireFormatLite::TYPE_DOUBLE>(
+                 input, &duration_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // bool use_step_profiler = 2;
+      case 2: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (16 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
+                 input, &use_step_profiler_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // bool use_kernel_profiler = 3;
+      case 3: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (24 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
+                 input, &use_kernel_profiler_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // bool use_extended_profiler = 4;
+      case 4: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (32 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
+                 input, &use_extended_profiler_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // bool use_gpu_profiler = 5;
+      case 5: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (40 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
+                 input, &use_gpu_profiler_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // bool use_sample_profiler = 6;
+      case 6: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (48 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
+                 input, &use_sample_profiler_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.TraceOpts)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.TraceOpts)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void TraceOpts::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.TraceOpts)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // double duration = 1;
+  if (this->duration() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteDouble(1, this->duration(), output);
+  }
+
+  // bool use_step_profiler = 2;
+  if (this->use_step_profiler() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteBool(2, this->use_step_profiler(), output);
+  }
+
+  // bool use_kernel_profiler = 3;
+  if (this->use_kernel_profiler() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteBool(3, this->use_kernel_profiler(), output);
+  }
+
+  // bool use_extended_profiler = 4;
+  if (this->use_extended_profiler() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteBool(4, this->use_extended_profiler(), output);
+  }
+
+  // bool use_gpu_profiler = 5;
+  if (this->use_gpu_profiler() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteBool(5, this->use_gpu_profiler(), output);
+  }
+
+  // bool use_sample_profiler = 6;
+  if (this->use_sample_profiler() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteBool(6, this->use_sample_profiler(), output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.TraceOpts)
+}
+
+::google::protobuf::uint8* TraceOpts::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.TraceOpts)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // double duration = 1;
+  if (this->duration() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteDoubleToArray(1, this->duration(), target);
+  }
+
+  // bool use_step_profiler = 2;
+  if (this->use_step_profiler() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(2, this->use_step_profiler(), target);
+  }
+
+  // bool use_kernel_profiler = 3;
+  if (this->use_kernel_profiler() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(3, this->use_kernel_profiler(), target);
+  }
+
+  // bool use_extended_profiler = 4;
+  if (this->use_extended_profiler() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(4, this->use_extended_profiler(), target);
+  }
+
+  // bool use_gpu_profiler = 5;
+  if (this->use_gpu_profiler() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(5, this->use_gpu_profiler(), target);
+  }
+
+  // bool use_sample_profiler = 6;
+  if (this->use_sample_profiler() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(6, this->use_sample_profiler(), target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.TraceOpts)
+  return target;
+}
+
+size_t TraceOpts::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.TraceOpts)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // double duration = 1;
+  if (this->duration() != 0) {
+    total_size += 1 + 8;
+  }
+
+  // bool use_step_profiler = 2;
+  if (this->use_step_profiler() != 0) {
+    total_size += 1 + 1;
+  }
+
+  // bool use_kernel_profiler = 3;
+  if (this->use_kernel_profiler() != 0) {
+    total_size += 1 + 1;
+  }
+
+  // bool use_extended_profiler = 4;
+  if (this->use_extended_profiler() != 0) {
+    total_size += 1 + 1;
+  }
+
+  // bool use_gpu_profiler = 5;
+  if (this->use_gpu_profiler() != 0) {
+    total_size += 1 + 1;
+  }
+
+  // bool use_sample_profiler = 6;
+  if (this->use_sample_profiler() != 0) {
+    total_size += 1 + 1;
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void TraceOpts::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.TraceOpts)
+  GOOGLE_DCHECK_NE(&from, this);
+  const TraceOpts* source =
+      ::google::protobuf::DynamicCastToGenerated<TraceOpts>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.TraceOpts)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.TraceOpts)
+    MergeFrom(*source);
+  }
+}
+
+void TraceOpts::MergeFrom(const TraceOpts& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.TraceOpts)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  if (from.duration() != 0) {
+    set_duration(from.duration());
+  }
+  if (from.use_step_profiler() != 0) {
+    set_use_step_profiler(from.use_step_profiler());
+  }
+  if (from.use_kernel_profiler() != 0) {
+    set_use_kernel_profiler(from.use_kernel_profiler());
+  }
+  if (from.use_extended_profiler() != 0) {
+    set_use_extended_profiler(from.use_extended_profiler());
+  }
+  if (from.use_gpu_profiler() != 0) {
+    set_use_gpu_profiler(from.use_gpu_profiler());
+  }
+  if (from.use_sample_profiler() != 0) {
+    set_use_sample_profiler(from.use_sample_profiler());
+  }
+}
+
+void TraceOpts::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.TraceOpts)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void TraceOpts::CopyFrom(const TraceOpts& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.TraceOpts)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool TraceOpts::IsInitialized() const {
+  return true;
+}
+
+void TraceOpts::Swap(TraceOpts* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    TraceOpts* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void TraceOpts::UnsafeArenaSwap(TraceOpts* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void TraceOpts::InternalSwap(TraceOpts* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  swap(duration_, other->duration_);
+  swap(use_step_profiler_, other->use_step_profiler_);
+  swap(use_kernel_profiler_, other->use_kernel_profiler_);
+  swap(use_extended_profiler_, other->use_extended_profiler_);
+  swap(use_gpu_profiler_, other->use_gpu_profiler_);
+  swap(use_sample_profiler_, other->use_sample_profiler_);
+}
+
+::google::protobuf::Metadata TraceOpts::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2fworker_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fprotobuf_2fworker_2eproto[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+void TracingRequest::InitAsDefaultInstance() {
+  ::tensorflow::_TracingRequest_default_instance_._instance.get_mutable()->options_ = const_cast< ::tensorflow::TraceOpts*>(
+      ::tensorflow::TraceOpts::internal_default_instance());
+}
+class TracingRequest::HasBitSetters {
+ public:
+  static const ::tensorflow::TraceOpts& options(const TracingRequest* msg);
+};
+
+const ::tensorflow::TraceOpts&
+TracingRequest::HasBitSetters::options(const TracingRequest* msg) {
+  return *msg->options_;
+}
+void TracingRequest::unsafe_arena_set_allocated_options(
+    ::tensorflow::TraceOpts* options) {
+  if (GetArenaNoVirtual() == NULL) {
+    delete options_;
+  }
+  options_ = options;
+  if (options) {
+    
+  } else {
+    
+  }
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.TracingRequest.options)
+}
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int TracingRequest::kOptionsFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+TracingRequest::TracingRequest()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.TracingRequest)
+}
+TracingRequest::TracingRequest(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.TracingRequest)
+}
+TracingRequest::TracingRequest(const TracingRequest& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  if (from.has_options()) {
+    options_ = new ::tensorflow::TraceOpts(*from.options_);
+  } else {
+    options_ = NULL;
+  }
+  // @@protoc_insertion_point(copy_constructor:tensorflow.TracingRequest)
+}
+
+void TracingRequest::SharedCtor() {
+  ::google::protobuf::internal::InitSCC(
+      &scc_info_TracingRequest_tensorflow_2fcore_2fprotobuf_2fworker_2eproto.base);
+  options_ = NULL;
+}
+
+TracingRequest::~TracingRequest() {
+  // @@protoc_insertion_point(destructor:tensorflow.TracingRequest)
+  SharedDtor();
+}
+
+void TracingRequest::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+  if (this != internal_default_instance()) delete options_;
+}
+
+void TracingRequest::ArenaDtor(void* object) {
+  TracingRequest* _this = reinterpret_cast< TracingRequest* >(object);
+  (void)_this;
+}
+void TracingRequest::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void TracingRequest::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const TracingRequest& TracingRequest::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_TracingRequest_tensorflow_2fcore_2fprotobuf_2fworker_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void TracingRequest::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.TracingRequest)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  if (GetArenaNoVirtual() == NULL && options_ != NULL) {
+    delete options_;
+  }
+  options_ = NULL;
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* TracingRequest::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<TracingRequest*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // .tensorflow.TraceOpts options = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 10) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        parser_till_end = ::tensorflow::TraceOpts::_InternalParse;
+        object = msg->mutable_options();
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                       ptr, newend);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+        ptr = newend;
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool TracingRequest::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.TracingRequest)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // .tensorflow.TraceOpts options = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (10 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+               input, mutable_options()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.TracingRequest)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.TracingRequest)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void TracingRequest::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.TracingRequest)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // .tensorflow.TraceOpts options = 1;
+  if (this->has_options()) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      1, HasBitSetters::options(this), output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.TracingRequest)
+}
+
+::google::protobuf::uint8* TracingRequest::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.TracingRequest)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // .tensorflow.TraceOpts options = 1;
+  if (this->has_options()) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        1, HasBitSetters::options(this), deterministic, target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.TracingRequest)
+  return target;
+}
+
+size_t TracingRequest::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.TracingRequest)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // .tensorflow.TraceOpts options = 1;
+  if (this->has_options()) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::MessageSize(
+        *options_);
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void TracingRequest::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.TracingRequest)
+  GOOGLE_DCHECK_NE(&from, this);
+  const TracingRequest* source =
+      ::google::protobuf::DynamicCastToGenerated<TracingRequest>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.TracingRequest)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.TracingRequest)
+    MergeFrom(*source);
+  }
+}
+
+void TracingRequest::MergeFrom(const TracingRequest& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.TracingRequest)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  if (from.has_options()) {
+    mutable_options()->::tensorflow::TraceOpts::MergeFrom(from.options());
+  }
+}
+
+void TracingRequest::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.TracingRequest)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void TracingRequest::CopyFrom(const TracingRequest& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.TracingRequest)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool TracingRequest::IsInitialized() const {
+  return true;
+}
+
+void TracingRequest::Swap(TracingRequest* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    TracingRequest* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void TracingRequest::UnsafeArenaSwap(TracingRequest* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void TracingRequest::InternalSwap(TracingRequest* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  swap(options_, other->options_);
+}
+
+::google::protobuf::Metadata TracingRequest::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2fworker_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fprotobuf_2fworker_2eproto[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+void TracingResponse::InitAsDefaultInstance() {
+}
+class TracingResponse::HasBitSetters {
+ public:
+};
+
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+TracingResponse::TracingResponse()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.TracingResponse)
+}
+TracingResponse::TracingResponse(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.TracingResponse)
+}
+TracingResponse::TracingResponse(const TracingResponse& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  // @@protoc_insertion_point(copy_constructor:tensorflow.TracingResponse)
+}
+
+void TracingResponse::SharedCtor() {
+}
+
+TracingResponse::~TracingResponse() {
+  // @@protoc_insertion_point(destructor:tensorflow.TracingResponse)
+  SharedDtor();
+}
+
+void TracingResponse::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+}
+
+void TracingResponse::ArenaDtor(void* object) {
+  TracingResponse* _this = reinterpret_cast< TracingResponse* >(object);
+  (void)_this;
+}
+void TracingResponse::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void TracingResponse::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const TracingResponse& TracingResponse::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_TracingResponse_tensorflow_2fcore_2fprotobuf_2fworker_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void TracingResponse::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.TracingResponse)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* TracingResponse::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<TracingResponse*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool TracingResponse::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.TracingResponse)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+  handle_unusual:
+    if (tag == 0) {
+      goto success;
+    }
+    DO_(::google::protobuf::internal::WireFormat::SkipField(
+          input, tag, _internal_metadata_.mutable_unknown_fields()));
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.TracingResponse)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.TracingResponse)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void TracingResponse::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.TracingResponse)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.TracingResponse)
+}
+
+::google::protobuf::uint8* TracingResponse::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.TracingResponse)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.TracingResponse)
+  return target;
+}
+
+size_t TracingResponse::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.TracingResponse)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void TracingResponse::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.TracingResponse)
+  GOOGLE_DCHECK_NE(&from, this);
+  const TracingResponse* source =
+      ::google::protobuf::DynamicCastToGenerated<TracingResponse>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.TracingResponse)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.TracingResponse)
+    MergeFrom(*source);
+  }
+}
+
+void TracingResponse::MergeFrom(const TracingResponse& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.TracingResponse)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+}
+
+void TracingResponse::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.TracingResponse)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void TracingResponse::CopyFrom(const TracingResponse& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.TracingResponse)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool TracingResponse::IsInitialized() const {
+  return true;
+}
+
+void TracingResponse::Swap(TracingResponse* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    TracingResponse* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void TracingResponse::UnsafeArenaSwap(TracingResponse* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void TracingResponse::InternalSwap(TracingResponse* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+}
+
+::google::protobuf::Metadata TracingResponse::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2fworker_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fprotobuf_2fworker_2eproto[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+void RecvBufRequest::InitAsDefaultInstance() {
+  ::tensorflow::_RecvBufRequest_default_instance_._instance.get_mutable()->client_locality_ = const_cast< ::tensorflow::DeviceLocality*>(
+      ::tensorflow::DeviceLocality::internal_default_instance());
+  ::tensorflow::_RecvBufRequest_default_instance_._instance.get_mutable()->server_locality_ = const_cast< ::tensorflow::DeviceLocality*>(
+      ::tensorflow::DeviceLocality::internal_default_instance());
+  ::tensorflow::_RecvBufRequest_default_instance_._instance.get_mutable()->transport_options_ = const_cast< ::google::protobuf::Any*>(
+      ::google::protobuf::Any::internal_default_instance());
+}
+class RecvBufRequest::HasBitSetters {
+ public:
+  static const ::tensorflow::DeviceLocality& client_locality(const RecvBufRequest* msg);
+  static const ::tensorflow::DeviceLocality& server_locality(const RecvBufRequest* msg);
+  static const ::google::protobuf::Any& transport_options(const RecvBufRequest* msg);
+};
+
+const ::tensorflow::DeviceLocality&
+RecvBufRequest::HasBitSetters::client_locality(const RecvBufRequest* msg) {
+  return *msg->client_locality_;
+}
+const ::tensorflow::DeviceLocality&
+RecvBufRequest::HasBitSetters::server_locality(const RecvBufRequest* msg) {
+  return *msg->server_locality_;
+}
+const ::google::protobuf::Any&
+RecvBufRequest::HasBitSetters::transport_options(const RecvBufRequest* msg) {
+  return *msg->transport_options_;
+}
+void RecvBufRequest::unsafe_arena_set_allocated_client_locality(
+    ::tensorflow::DeviceLocality* client_locality) {
+  if (GetArenaNoVirtual() == NULL) {
+    delete client_locality_;
+  }
+  client_locality_ = client_locality;
+  if (client_locality) {
+    
+  } else {
+    
+  }
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.RecvBufRequest.client_locality)
+}
+void RecvBufRequest::clear_client_locality() {
+  if (GetArenaNoVirtual() == NULL && client_locality_ != NULL) {
+    delete client_locality_;
+  }
+  client_locality_ = NULL;
+}
+void RecvBufRequest::unsafe_arena_set_allocated_server_locality(
+    ::tensorflow::DeviceLocality* server_locality) {
+  if (GetArenaNoVirtual() == NULL) {
+    delete server_locality_;
+  }
+  server_locality_ = server_locality;
+  if (server_locality) {
+    
+  } else {
+    
+  }
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.RecvBufRequest.server_locality)
+}
+void RecvBufRequest::clear_server_locality() {
+  if (GetArenaNoVirtual() == NULL && server_locality_ != NULL) {
+    delete server_locality_;
+  }
+  server_locality_ = NULL;
+}
+void RecvBufRequest::unsafe_arena_set_allocated_transport_options(
+    ::google::protobuf::Any* transport_options) {
+  if (GetArenaNoVirtual() == NULL) {
+    delete transport_options_;
+  }
+  transport_options_ = transport_options;
+  if (transport_options) {
+    
+  } else {
+    
+  }
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.RecvBufRequest.transport_options)
+}
+void RecvBufRequest::clear_transport_options() {
+  if (GetArenaNoVirtual() == NULL && transport_options_ != NULL) {
+    delete transport_options_;
+  }
+  transport_options_ = NULL;
+}
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int RecvBufRequest::kStepIdFieldNumber;
+const int RecvBufRequest::kBufRendezvousKeyFieldNumber;
+const int RecvBufRequest::kNumBytesFieldNumber;
+const int RecvBufRequest::kBufPtrFieldNumber;
+const int RecvBufRequest::kClientLocalityFieldNumber;
+const int RecvBufRequest::kServerLocalityFieldNumber;
+const int RecvBufRequest::kTransportOptionsFieldNumber;
+const int RecvBufRequest::kSrcDeviceFieldNumber;
+const int RecvBufRequest::kDstDeviceFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+RecvBufRequest::RecvBufRequest()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.RecvBufRequest)
+}
+RecvBufRequest::RecvBufRequest(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.RecvBufRequest)
+}
+RecvBufRequest::RecvBufRequest(const RecvBufRequest& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  buf_rendezvous_key_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.buf_rendezvous_key().size() > 0) {
+    buf_rendezvous_key_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.buf_rendezvous_key(),
+      GetArenaNoVirtual());
+  }
+  src_device_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.src_device().size() > 0) {
+    src_device_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.src_device(),
+      GetArenaNoVirtual());
+  }
+  dst_device_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.dst_device().size() > 0) {
+    dst_device_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.dst_device(),
+      GetArenaNoVirtual());
+  }
+  if (from.has_client_locality()) {
+    client_locality_ = new ::tensorflow::DeviceLocality(*from.client_locality_);
+  } else {
+    client_locality_ = NULL;
+  }
+  if (from.has_server_locality()) {
+    server_locality_ = new ::tensorflow::DeviceLocality(*from.server_locality_);
+  } else {
+    server_locality_ = NULL;
+  }
+  if (from.has_transport_options()) {
+    transport_options_ = new ::google::protobuf::Any(*from.transport_options_);
+  } else {
+    transport_options_ = NULL;
+  }
+  ::memcpy(&step_id_, &from.step_id_,
+    static_cast<size_t>(reinterpret_cast<char*>(&buf_ptr_) -
+    reinterpret_cast<char*>(&step_id_)) + sizeof(buf_ptr_));
+  // @@protoc_insertion_point(copy_constructor:tensorflow.RecvBufRequest)
+}
+
+void RecvBufRequest::SharedCtor() {
+  ::google::protobuf::internal::InitSCC(
+      &scc_info_RecvBufRequest_tensorflow_2fcore_2fprotobuf_2fworker_2eproto.base);
+  buf_rendezvous_key_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  src_device_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  dst_device_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  ::memset(&client_locality_, 0, static_cast<size_t>(
+      reinterpret_cast<char*>(&buf_ptr_) -
+      reinterpret_cast<char*>(&client_locality_)) + sizeof(buf_ptr_));
+}
+
+RecvBufRequest::~RecvBufRequest() {
+  // @@protoc_insertion_point(destructor:tensorflow.RecvBufRequest)
+  SharedDtor();
+}
+
+void RecvBufRequest::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+  buf_rendezvous_key_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  src_device_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  dst_device_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (this != internal_default_instance()) delete client_locality_;
+  if (this != internal_default_instance()) delete server_locality_;
+  if (this != internal_default_instance()) delete transport_options_;
+}
+
+void RecvBufRequest::ArenaDtor(void* object) {
+  RecvBufRequest* _this = reinterpret_cast< RecvBufRequest* >(object);
+  (void)_this;
+}
+void RecvBufRequest::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void RecvBufRequest::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const RecvBufRequest& RecvBufRequest::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_RecvBufRequest_tensorflow_2fcore_2fprotobuf_2fworker_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void RecvBufRequest::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.RecvBufRequest)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  buf_rendezvous_key_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+  src_device_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+  dst_device_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+  if (GetArenaNoVirtual() == NULL && client_locality_ != NULL) {
+    delete client_locality_;
+  }
+  client_locality_ = NULL;
+  if (GetArenaNoVirtual() == NULL && server_locality_ != NULL) {
+    delete server_locality_;
+  }
+  server_locality_ = NULL;
+  if (GetArenaNoVirtual() == NULL && transport_options_ != NULL) {
+    delete transport_options_;
+  }
+  transport_options_ = NULL;
+  ::memset(&step_id_, 0, static_cast<size_t>(
+      reinterpret_cast<char*>(&buf_ptr_) -
+      reinterpret_cast<char*>(&step_id_)) + sizeof(buf_ptr_));
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* RecvBufRequest::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<RecvBufRequest*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // int64 step_id = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 8) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::google::protobuf::int64 value = val;
+        msg->set_step_id(value);
+        break;
+      }
+      // string buf_rendezvous_key = 2;
+      case 2: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 18) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("tensorflow.RecvBufRequest.buf_rendezvous_key");
+        parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+        ::std::string* str = msg->mutable_buf_rendezvous_key();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+        break;
+      }
+      // int64 num_bytes = 3;
+      case 3: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 24) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::google::protobuf::int64 value = val;
+        msg->set_num_bytes(value);
+        break;
+      }
+      // fixed64 buf_ptr = 4;
+      case 4: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 33) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ::std::memcpy(&val, ptr, 8);
+        ptr += 8;
+        msg->set_buf_ptr(val);
+        break;
+      }
+      // .tensorflow.DeviceLocality client_locality = 5;
+      case 5: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 42) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        parser_till_end = ::tensorflow::DeviceLocality::_InternalParse;
+        object = msg->mutable_client_locality();
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                       ptr, newend);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+        ptr = newend;
+        break;
+      }
+      // .tensorflow.DeviceLocality server_locality = 6;
+      case 6: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 50) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        parser_till_end = ::tensorflow::DeviceLocality::_InternalParse;
+        object = msg->mutable_server_locality();
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                       ptr, newend);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+        ptr = newend;
+        break;
+      }
+      // .google.protobuf.Any transport_options = 7;
+      case 7: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 58) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        parser_till_end = ::google::protobuf::Any::_InternalParse;
+        object = msg->mutable_transport_options();
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                       ptr, newend);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+        ptr = newend;
+        break;
+      }
+      // string src_device = 8;
+      case 8: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 66) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("tensorflow.RecvBufRequest.src_device");
+        parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+        ::std::string* str = msg->mutable_src_device();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+        break;
+      }
+      // string dst_device = 9;
+      case 9: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 74) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("tensorflow.RecvBufRequest.dst_device");
+        parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+        ::std::string* str = msg->mutable_dst_device();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool RecvBufRequest::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.RecvBufRequest)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // int64 step_id = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (8 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>(
+                 input, &step_id_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // string buf_rendezvous_key = 2;
+      case 2: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (18 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_buf_rendezvous_key()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->buf_rendezvous_key().data(), static_cast<int>(this->buf_rendezvous_key().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.RecvBufRequest.buf_rendezvous_key"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // int64 num_bytes = 3;
+      case 3: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (24 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>(
+                 input, &num_bytes_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // fixed64 buf_ptr = 4;
+      case 4: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (33 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_FIXED64>(
+                 input, &buf_ptr_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // .tensorflow.DeviceLocality client_locality = 5;
+      case 5: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (42 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+               input, mutable_client_locality()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // .tensorflow.DeviceLocality server_locality = 6;
+      case 6: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (50 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+               input, mutable_server_locality()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // .google.protobuf.Any transport_options = 7;
+      case 7: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (58 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+               input, mutable_transport_options()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // string src_device = 8;
+      case 8: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (66 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_src_device()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->src_device().data(), static_cast<int>(this->src_device().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.RecvBufRequest.src_device"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // string dst_device = 9;
+      case 9: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (74 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_dst_device()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->dst_device().data(), static_cast<int>(this->dst_device().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.RecvBufRequest.dst_device"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.RecvBufRequest)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.RecvBufRequest)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void RecvBufRequest::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.RecvBufRequest)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // int64 step_id = 1;
+  if (this->step_id() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt64(1, this->step_id(), output);
+  }
+
+  // string buf_rendezvous_key = 2;
+  if (this->buf_rendezvous_key().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->buf_rendezvous_key().data(), static_cast<int>(this->buf_rendezvous_key().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.RecvBufRequest.buf_rendezvous_key");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      2, this->buf_rendezvous_key(), output);
+  }
+
+  // int64 num_bytes = 3;
+  if (this->num_bytes() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt64(3, this->num_bytes(), output);
+  }
+
+  // fixed64 buf_ptr = 4;
+  if (this->buf_ptr() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteFixed64(4, this->buf_ptr(), output);
+  }
+
+  // .tensorflow.DeviceLocality client_locality = 5;
+  if (this->has_client_locality()) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      5, HasBitSetters::client_locality(this), output);
+  }
+
+  // .tensorflow.DeviceLocality server_locality = 6;
+  if (this->has_server_locality()) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      6, HasBitSetters::server_locality(this), output);
+  }
+
+  // .google.protobuf.Any transport_options = 7;
+  if (this->has_transport_options()) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      7, HasBitSetters::transport_options(this), output);
+  }
+
+  // string src_device = 8;
+  if (this->src_device().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->src_device().data(), static_cast<int>(this->src_device().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.RecvBufRequest.src_device");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      8, this->src_device(), output);
+  }
+
+  // string dst_device = 9;
+  if (this->dst_device().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->dst_device().data(), static_cast<int>(this->dst_device().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.RecvBufRequest.dst_device");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      9, this->dst_device(), output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.RecvBufRequest)
+}
+
+::google::protobuf::uint8* RecvBufRequest::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.RecvBufRequest)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // int64 step_id = 1;
+  if (this->step_id() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt64ToArray(1, this->step_id(), target);
+  }
+
+  // string buf_rendezvous_key = 2;
+  if (this->buf_rendezvous_key().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->buf_rendezvous_key().data(), static_cast<int>(this->buf_rendezvous_key().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.RecvBufRequest.buf_rendezvous_key");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        2, this->buf_rendezvous_key(), target);
+  }
+
+  // int64 num_bytes = 3;
+  if (this->num_bytes() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt64ToArray(3, this->num_bytes(), target);
+  }
+
+  // fixed64 buf_ptr = 4;
+  if (this->buf_ptr() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteFixed64ToArray(4, this->buf_ptr(), target);
+  }
+
+  // .tensorflow.DeviceLocality client_locality = 5;
+  if (this->has_client_locality()) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        5, HasBitSetters::client_locality(this), deterministic, target);
+  }
+
+  // .tensorflow.DeviceLocality server_locality = 6;
+  if (this->has_server_locality()) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        6, HasBitSetters::server_locality(this), deterministic, target);
+  }
+
+  // .google.protobuf.Any transport_options = 7;
+  if (this->has_transport_options()) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        7, HasBitSetters::transport_options(this), deterministic, target);
+  }
+
+  // string src_device = 8;
+  if (this->src_device().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->src_device().data(), static_cast<int>(this->src_device().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.RecvBufRequest.src_device");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        8, this->src_device(), target);
+  }
+
+  // string dst_device = 9;
+  if (this->dst_device().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->dst_device().data(), static_cast<int>(this->dst_device().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.RecvBufRequest.dst_device");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        9, this->dst_device(), target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.RecvBufRequest)
+  return target;
+}
+
+size_t RecvBufRequest::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.RecvBufRequest)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // string buf_rendezvous_key = 2;
+  if (this->buf_rendezvous_key().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->buf_rendezvous_key());
+  }
+
+  // string src_device = 8;
+  if (this->src_device().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->src_device());
+  }
+
+  // string dst_device = 9;
+  if (this->dst_device().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->dst_device());
+  }
+
+  // .tensorflow.DeviceLocality client_locality = 5;
+  if (this->has_client_locality()) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::MessageSize(
+        *client_locality_);
+  }
+
+  // .tensorflow.DeviceLocality server_locality = 6;
+  if (this->has_server_locality()) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::MessageSize(
+        *server_locality_);
+  }
+
+  // .google.protobuf.Any transport_options = 7;
+  if (this->has_transport_options()) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::MessageSize(
+        *transport_options_);
+  }
+
+  // int64 step_id = 1;
+  if (this->step_id() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::Int64Size(
+        this->step_id());
+  }
+
+  // int64 num_bytes = 3;
+  if (this->num_bytes() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::Int64Size(
+        this->num_bytes());
+  }
+
+  // fixed64 buf_ptr = 4;
+  if (this->buf_ptr() != 0) {
+    total_size += 1 + 8;
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void RecvBufRequest::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.RecvBufRequest)
+  GOOGLE_DCHECK_NE(&from, this);
+  const RecvBufRequest* source =
+      ::google::protobuf::DynamicCastToGenerated<RecvBufRequest>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.RecvBufRequest)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.RecvBufRequest)
+    MergeFrom(*source);
+  }
+}
+
+void RecvBufRequest::MergeFrom(const RecvBufRequest& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.RecvBufRequest)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  if (from.buf_rendezvous_key().size() > 0) {
+    set_buf_rendezvous_key(from.buf_rendezvous_key());
+  }
+  if (from.src_device().size() > 0) {
+    set_src_device(from.src_device());
+  }
+  if (from.dst_device().size() > 0) {
+    set_dst_device(from.dst_device());
+  }
+  if (from.has_client_locality()) {
+    mutable_client_locality()->::tensorflow::DeviceLocality::MergeFrom(from.client_locality());
+  }
+  if (from.has_server_locality()) {
+    mutable_server_locality()->::tensorflow::DeviceLocality::MergeFrom(from.server_locality());
+  }
+  if (from.has_transport_options()) {
+    mutable_transport_options()->::google::protobuf::Any::MergeFrom(from.transport_options());
+  }
+  if (from.step_id() != 0) {
+    set_step_id(from.step_id());
+  }
+  if (from.num_bytes() != 0) {
+    set_num_bytes(from.num_bytes());
+  }
+  if (from.buf_ptr() != 0) {
+    set_buf_ptr(from.buf_ptr());
+  }
+}
+
+void RecvBufRequest::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.RecvBufRequest)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void RecvBufRequest::CopyFrom(const RecvBufRequest& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.RecvBufRequest)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool RecvBufRequest::IsInitialized() const {
+  return true;
+}
+
+void RecvBufRequest::Swap(RecvBufRequest* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    RecvBufRequest* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void RecvBufRequest::UnsafeArenaSwap(RecvBufRequest* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void RecvBufRequest::InternalSwap(RecvBufRequest* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  buf_rendezvous_key_.Swap(&other->buf_rendezvous_key_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+  src_device_.Swap(&other->src_device_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+  dst_device_.Swap(&other->dst_device_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+  swap(client_locality_, other->client_locality_);
+  swap(server_locality_, other->server_locality_);
+  swap(transport_options_, other->transport_options_);
+  swap(step_id_, other->step_id_);
+  swap(num_bytes_, other->num_bytes_);
+  swap(buf_ptr_, other->buf_ptr_);
+}
+
+::google::protobuf::Metadata RecvBufRequest::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2fworker_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fprotobuf_2fworker_2eproto[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+void RecvBufResponse::InitAsDefaultInstance() {
+  ::tensorflow::_RecvBufResponse_default_instance_._instance.get_mutable()->transport_options_ = const_cast< ::google::protobuf::Any*>(
+      ::google::protobuf::Any::internal_default_instance());
+}
+class RecvBufResponse::HasBitSetters {
+ public:
+  static const ::google::protobuf::Any& transport_options(const RecvBufResponse* msg);
+};
+
+const ::google::protobuf::Any&
+RecvBufResponse::HasBitSetters::transport_options(const RecvBufResponse* msg) {
+  return *msg->transport_options_;
+}
+void RecvBufResponse::unsafe_arena_set_allocated_transport_options(
+    ::google::protobuf::Any* transport_options) {
+  if (GetArenaNoVirtual() == NULL) {
+    delete transport_options_;
+  }
+  transport_options_ = transport_options;
+  if (transport_options) {
+    
+  } else {
+    
+  }
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.RecvBufResponse.transport_options)
+}
+void RecvBufResponse::clear_transport_options() {
+  if (GetArenaNoVirtual() == NULL && transport_options_ != NULL) {
+    delete transport_options_;
+  }
+  transport_options_ = NULL;
+}
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int RecvBufResponse::kBufPtrFieldNumber;
+const int RecvBufResponse::kNumBytesFieldNumber;
+const int RecvBufResponse::kIsDeadFieldNumber;
+const int RecvBufResponse::kTransportOptionsFieldNumber;
+const int RecvBufResponse::kSendStartMicrosFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+RecvBufResponse::RecvBufResponse()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.RecvBufResponse)
+}
+RecvBufResponse::RecvBufResponse(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.RecvBufResponse)
+}
+RecvBufResponse::RecvBufResponse(const RecvBufResponse& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  if (from.has_transport_options()) {
+    transport_options_ = new ::google::protobuf::Any(*from.transport_options_);
+  } else {
+    transport_options_ = NULL;
+  }
+  ::memcpy(&buf_ptr_, &from.buf_ptr_,
+    static_cast<size_t>(reinterpret_cast<char*>(&is_dead_) -
+    reinterpret_cast<char*>(&buf_ptr_)) + sizeof(is_dead_));
+  // @@protoc_insertion_point(copy_constructor:tensorflow.RecvBufResponse)
+}
+
+void RecvBufResponse::SharedCtor() {
+  ::google::protobuf::internal::InitSCC(
+      &scc_info_RecvBufResponse_tensorflow_2fcore_2fprotobuf_2fworker_2eproto.base);
+  ::memset(&transport_options_, 0, static_cast<size_t>(
+      reinterpret_cast<char*>(&is_dead_) -
+      reinterpret_cast<char*>(&transport_options_)) + sizeof(is_dead_));
+}
+
+RecvBufResponse::~RecvBufResponse() {
+  // @@protoc_insertion_point(destructor:tensorflow.RecvBufResponse)
+  SharedDtor();
+}
+
+void RecvBufResponse::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+  if (this != internal_default_instance()) delete transport_options_;
+}
+
+void RecvBufResponse::ArenaDtor(void* object) {
+  RecvBufResponse* _this = reinterpret_cast< RecvBufResponse* >(object);
+  (void)_this;
+}
+void RecvBufResponse::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void RecvBufResponse::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const RecvBufResponse& RecvBufResponse::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_RecvBufResponse_tensorflow_2fcore_2fprotobuf_2fworker_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void RecvBufResponse::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.RecvBufResponse)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  if (GetArenaNoVirtual() == NULL && transport_options_ != NULL) {
+    delete transport_options_;
+  }
+  transport_options_ = NULL;
+  ::memset(&buf_ptr_, 0, static_cast<size_t>(
+      reinterpret_cast<char*>(&is_dead_) -
+      reinterpret_cast<char*>(&buf_ptr_)) + sizeof(is_dead_));
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* RecvBufResponse::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<RecvBufResponse*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // fixed64 buf_ptr = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 9) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ::std::memcpy(&val, ptr, 8);
+        ptr += 8;
+        msg->set_buf_ptr(val);
+        break;
+      }
+      // int64 num_bytes = 2;
+      case 2: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 16) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::google::protobuf::int64 value = val;
+        msg->set_num_bytes(value);
+        break;
+      }
+      // bool is_dead = 3;
+      case 3: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 24) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        bool value = val;
+        msg->set_is_dead(value);
+        break;
+      }
+      // .google.protobuf.Any transport_options = 4;
+      case 4: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 34) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        parser_till_end = ::google::protobuf::Any::_InternalParse;
+        object = msg->mutable_transport_options();
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                       ptr, newend);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+        ptr = newend;
+        break;
+      }
+      // int64 send_start_micros = 5;
+      case 5: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 40) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::google::protobuf::int64 value = val;
+        msg->set_send_start_micros(value);
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool RecvBufResponse::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.RecvBufResponse)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // fixed64 buf_ptr = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (9 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_FIXED64>(
+                 input, &buf_ptr_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // int64 num_bytes = 2;
+      case 2: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (16 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>(
+                 input, &num_bytes_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // bool is_dead = 3;
+      case 3: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (24 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
+                 input, &is_dead_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // .google.protobuf.Any transport_options = 4;
+      case 4: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (34 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+               input, mutable_transport_options()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // int64 send_start_micros = 5;
+      case 5: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (40 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>(
+                 input, &send_start_micros_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.RecvBufResponse)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.RecvBufResponse)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void RecvBufResponse::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.RecvBufResponse)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // fixed64 buf_ptr = 1;
+  if (this->buf_ptr() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteFixed64(1, this->buf_ptr(), output);
+  }
+
+  // int64 num_bytes = 2;
+  if (this->num_bytes() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt64(2, this->num_bytes(), output);
+  }
+
+  // bool is_dead = 3;
+  if (this->is_dead() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteBool(3, this->is_dead(), output);
+  }
+
+  // .google.protobuf.Any transport_options = 4;
+  if (this->has_transport_options()) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      4, HasBitSetters::transport_options(this), output);
+  }
+
+  // int64 send_start_micros = 5;
+  if (this->send_start_micros() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt64(5, this->send_start_micros(), output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.RecvBufResponse)
+}
+
+::google::protobuf::uint8* RecvBufResponse::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.RecvBufResponse)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // fixed64 buf_ptr = 1;
+  if (this->buf_ptr() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteFixed64ToArray(1, this->buf_ptr(), target);
+  }
+
+  // int64 num_bytes = 2;
+  if (this->num_bytes() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt64ToArray(2, this->num_bytes(), target);
+  }
+
+  // bool is_dead = 3;
+  if (this->is_dead() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(3, this->is_dead(), target);
+  }
+
+  // .google.protobuf.Any transport_options = 4;
+  if (this->has_transport_options()) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        4, HasBitSetters::transport_options(this), deterministic, target);
+  }
+
+  // int64 send_start_micros = 5;
+  if (this->send_start_micros() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt64ToArray(5, this->send_start_micros(), target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.RecvBufResponse)
+  return target;
+}
+
+size_t RecvBufResponse::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.RecvBufResponse)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // .google.protobuf.Any transport_options = 4;
+  if (this->has_transport_options()) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::MessageSize(
+        *transport_options_);
+  }
+
+  // fixed64 buf_ptr = 1;
+  if (this->buf_ptr() != 0) {
+    total_size += 1 + 8;
+  }
+
+  // int64 num_bytes = 2;
+  if (this->num_bytes() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::Int64Size(
+        this->num_bytes());
+  }
+
+  // int64 send_start_micros = 5;
+  if (this->send_start_micros() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::Int64Size(
+        this->send_start_micros());
+  }
+
+  // bool is_dead = 3;
+  if (this->is_dead() != 0) {
+    total_size += 1 + 1;
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void RecvBufResponse::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.RecvBufResponse)
+  GOOGLE_DCHECK_NE(&from, this);
+  const RecvBufResponse* source =
+      ::google::protobuf::DynamicCastToGenerated<RecvBufResponse>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.RecvBufResponse)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.RecvBufResponse)
+    MergeFrom(*source);
+  }
+}
+
+void RecvBufResponse::MergeFrom(const RecvBufResponse& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.RecvBufResponse)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  if (from.has_transport_options()) {
+    mutable_transport_options()->::google::protobuf::Any::MergeFrom(from.transport_options());
+  }
+  if (from.buf_ptr() != 0) {
+    set_buf_ptr(from.buf_ptr());
+  }
+  if (from.num_bytes() != 0) {
+    set_num_bytes(from.num_bytes());
+  }
+  if (from.send_start_micros() != 0) {
+    set_send_start_micros(from.send_start_micros());
+  }
+  if (from.is_dead() != 0) {
+    set_is_dead(from.is_dead());
+  }
+}
+
+void RecvBufResponse::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.RecvBufResponse)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void RecvBufResponse::CopyFrom(const RecvBufResponse& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.RecvBufResponse)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool RecvBufResponse::IsInitialized() const {
+  return true;
+}
+
+void RecvBufResponse::Swap(RecvBufResponse* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    RecvBufResponse* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void RecvBufResponse::UnsafeArenaSwap(RecvBufResponse* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void RecvBufResponse::InternalSwap(RecvBufResponse* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  swap(transport_options_, other->transport_options_);
+  swap(buf_ptr_, other->buf_ptr_);
+  swap(num_bytes_, other->num_bytes_);
+  swap(send_start_micros_, other->send_start_micros_);
+  swap(is_dead_, other->is_dead_);
+}
+
+::google::protobuf::Metadata RecvBufResponse::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2fworker_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fprotobuf_2fworker_2eproto[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+void CompleteGroupRequest::InitAsDefaultInstance() {
+}
+class CompleteGroupRequest::HasBitSetters {
+ public:
+};
+
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int CompleteGroupRequest::kGroupKeyFieldNumber;
+const int CompleteGroupRequest::kGroupSizeFieldNumber;
+const int CompleteGroupRequest::kDeviceTypeFieldNumber;
+const int CompleteGroupRequest::kDeviceNameFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+CompleteGroupRequest::CompleteGroupRequest()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.CompleteGroupRequest)
+}
+CompleteGroupRequest::CompleteGroupRequest(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena),
+  device_name_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.CompleteGroupRequest)
+}
+CompleteGroupRequest::CompleteGroupRequest(const CompleteGroupRequest& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL),
+      device_name_(from.device_name_) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  device_type_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.device_type().size() > 0) {
+    device_type_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.device_type(),
+      GetArenaNoVirtual());
+  }
+  ::memcpy(&group_key_, &from.group_key_,
+    static_cast<size_t>(reinterpret_cast<char*>(&group_size_) -
+    reinterpret_cast<char*>(&group_key_)) + sizeof(group_size_));
+  // @@protoc_insertion_point(copy_constructor:tensorflow.CompleteGroupRequest)
+}
+
+void CompleteGroupRequest::SharedCtor() {
+  ::google::protobuf::internal::InitSCC(
+      &scc_info_CompleteGroupRequest_tensorflow_2fcore_2fprotobuf_2fworker_2eproto.base);
+  device_type_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  ::memset(&group_key_, 0, static_cast<size_t>(
+      reinterpret_cast<char*>(&group_size_) -
+      reinterpret_cast<char*>(&group_key_)) + sizeof(group_size_));
+}
+
+CompleteGroupRequest::~CompleteGroupRequest() {
+  // @@protoc_insertion_point(destructor:tensorflow.CompleteGroupRequest)
+  SharedDtor();
+}
+
+void CompleteGroupRequest::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+  device_type_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+
+void CompleteGroupRequest::ArenaDtor(void* object) {
+  CompleteGroupRequest* _this = reinterpret_cast< CompleteGroupRequest* >(object);
+  (void)_this;
+}
+void CompleteGroupRequest::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void CompleteGroupRequest::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const CompleteGroupRequest& CompleteGroupRequest::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_CompleteGroupRequest_tensorflow_2fcore_2fprotobuf_2fworker_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void CompleteGroupRequest::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.CompleteGroupRequest)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  device_name_.Clear();
+  device_type_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+  ::memset(&group_key_, 0, static_cast<size_t>(
+      reinterpret_cast<char*>(&group_size_) -
+      reinterpret_cast<char*>(&group_key_)) + sizeof(group_size_));
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* CompleteGroupRequest::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<CompleteGroupRequest*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // int32 group_key = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 8) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::google::protobuf::int32 value = val;
+        msg->set_group_key(value);
+        break;
+      }
+      // int32 group_size = 2;
+      case 2: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 16) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::google::protobuf::int32 value = val;
+        msg->set_group_size(value);
+        break;
+      }
+      // string device_type = 3;
+      case 3: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 26) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("tensorflow.CompleteGroupRequest.device_type");
+        parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+        ::std::string* str = msg->mutable_device_type();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+        break;
+      }
+      // repeated string device_name = 4;
+      case 4: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 34) goto handle_unusual;
+        do {
+          ptr = Varint::Parse32Inline(ptr, &size);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          ctx->extra_parse_data().SetFieldName("tensorflow.CompleteGroupRequest.device_name");
+          parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+          ::std::string* str = msg->add_device_name();
+          str->clear();
+          object = str;
+          if (size > end - ptr) goto len_delim_till_end;
+          auto newend = ptr + size;
+          if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+          if (ptr >= end) break;
+        } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 34 && (ptr += 1));
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool CompleteGroupRequest::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.CompleteGroupRequest)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // int32 group_key = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (8 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
+                 input, &group_key_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // int32 group_size = 2;
+      case 2: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (16 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
+                 input, &group_size_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // string device_type = 3;
+      case 3: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (26 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_device_type()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->device_type().data(), static_cast<int>(this->device_type().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.CompleteGroupRequest.device_type"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // repeated string device_name = 4;
+      case 4: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (34 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->add_device_name()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->device_name(this->device_name_size() - 1).data(),
+            static_cast<int>(this->device_name(this->device_name_size() - 1).length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.CompleteGroupRequest.device_name"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.CompleteGroupRequest)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.CompleteGroupRequest)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void CompleteGroupRequest::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.CompleteGroupRequest)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // int32 group_key = 1;
+  if (this->group_key() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt32(1, this->group_key(), output);
+  }
+
+  // int32 group_size = 2;
+  if (this->group_size() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt32(2, this->group_size(), output);
+  }
+
+  // string device_type = 3;
+  if (this->device_type().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->device_type().data(), static_cast<int>(this->device_type().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.CompleteGroupRequest.device_type");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      3, this->device_type(), output);
+  }
+
+  // repeated string device_name = 4;
+  for (int i = 0, n = this->device_name_size(); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->device_name(i).data(), static_cast<int>(this->device_name(i).length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.CompleteGroupRequest.device_name");
+    ::google::protobuf::internal::WireFormatLite::WriteString(
+      4, this->device_name(i), output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.CompleteGroupRequest)
+}
+
+::google::protobuf::uint8* CompleteGroupRequest::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.CompleteGroupRequest)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // int32 group_key = 1;
+  if (this->group_key() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt32ToArray(1, this->group_key(), target);
+  }
+
+  // int32 group_size = 2;
+  if (this->group_size() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt32ToArray(2, this->group_size(), target);
+  }
+
+  // string device_type = 3;
+  if (this->device_type().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->device_type().data(), static_cast<int>(this->device_type().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.CompleteGroupRequest.device_type");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        3, this->device_type(), target);
+  }
+
+  // repeated string device_name = 4;
+  for (int i = 0, n = this->device_name_size(); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->device_name(i).data(), static_cast<int>(this->device_name(i).length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.CompleteGroupRequest.device_name");
+    target = ::google::protobuf::internal::WireFormatLite::
+      WriteStringToArray(4, this->device_name(i), target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.CompleteGroupRequest)
+  return target;
+}
+
+size_t CompleteGroupRequest::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.CompleteGroupRequest)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // repeated string device_name = 4;
+  total_size += 1 *
+      ::google::protobuf::internal::FromIntSize(this->device_name_size());
+  for (int i = 0, n = this->device_name_size(); i < n; i++) {
+    total_size += ::google::protobuf::internal::WireFormatLite::StringSize(
+      this->device_name(i));
+  }
+
+  // string device_type = 3;
+  if (this->device_type().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->device_type());
+  }
+
+  // int32 group_key = 1;
+  if (this->group_key() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::Int32Size(
+        this->group_key());
+  }
+
+  // int32 group_size = 2;
+  if (this->group_size() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::Int32Size(
+        this->group_size());
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void CompleteGroupRequest::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.CompleteGroupRequest)
+  GOOGLE_DCHECK_NE(&from, this);
+  const CompleteGroupRequest* source =
+      ::google::protobuf::DynamicCastToGenerated<CompleteGroupRequest>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.CompleteGroupRequest)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.CompleteGroupRequest)
+    MergeFrom(*source);
+  }
+}
+
+void CompleteGroupRequest::MergeFrom(const CompleteGroupRequest& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.CompleteGroupRequest)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  device_name_.MergeFrom(from.device_name_);
+  if (from.device_type().size() > 0) {
+    set_device_type(from.device_type());
+  }
+  if (from.group_key() != 0) {
+    set_group_key(from.group_key());
+  }
+  if (from.group_size() != 0) {
+    set_group_size(from.group_size());
+  }
+}
+
+void CompleteGroupRequest::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.CompleteGroupRequest)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void CompleteGroupRequest::CopyFrom(const CompleteGroupRequest& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.CompleteGroupRequest)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool CompleteGroupRequest::IsInitialized() const {
+  return true;
+}
+
+void CompleteGroupRequest::Swap(CompleteGroupRequest* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    CompleteGroupRequest* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void CompleteGroupRequest::UnsafeArenaSwap(CompleteGroupRequest* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void CompleteGroupRequest::InternalSwap(CompleteGroupRequest* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  device_name_.InternalSwap(CastToBase(&other->device_name_));
+  device_type_.Swap(&other->device_type_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+  swap(group_key_, other->group_key_);
+  swap(group_size_, other->group_size_);
+}
+
+::google::protobuf::Metadata CompleteGroupRequest::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2fworker_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fprotobuf_2fworker_2eproto[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+void CompleteGroupResponse::InitAsDefaultInstance() {
+}
+class CompleteGroupResponse::HasBitSetters {
+ public:
+};
+
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int CompleteGroupResponse::kGroupKeyFieldNumber;
+const int CompleteGroupResponse::kGroupSizeFieldNumber;
+const int CompleteGroupResponse::kDeviceTypeFieldNumber;
+const int CompleteGroupResponse::kNumTasksFieldNumber;
+const int CompleteGroupResponse::kDeviceNameFieldNumber;
+const int CompleteGroupResponse::kTaskNameFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+CompleteGroupResponse::CompleteGroupResponse()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.CompleteGroupResponse)
+}
+CompleteGroupResponse::CompleteGroupResponse(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena),
+  device_name_(arena),
+  task_name_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.CompleteGroupResponse)
+}
+CompleteGroupResponse::CompleteGroupResponse(const CompleteGroupResponse& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL),
+      device_name_(from.device_name_),
+      task_name_(from.task_name_) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  device_type_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.device_type().size() > 0) {
+    device_type_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.device_type(),
+      GetArenaNoVirtual());
+  }
+  ::memcpy(&group_key_, &from.group_key_,
+    static_cast<size_t>(reinterpret_cast<char*>(&num_tasks_) -
+    reinterpret_cast<char*>(&group_key_)) + sizeof(num_tasks_));
+  // @@protoc_insertion_point(copy_constructor:tensorflow.CompleteGroupResponse)
+}
+
+void CompleteGroupResponse::SharedCtor() {
+  ::google::protobuf::internal::InitSCC(
+      &scc_info_CompleteGroupResponse_tensorflow_2fcore_2fprotobuf_2fworker_2eproto.base);
+  device_type_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  ::memset(&group_key_, 0, static_cast<size_t>(
+      reinterpret_cast<char*>(&num_tasks_) -
+      reinterpret_cast<char*>(&group_key_)) + sizeof(num_tasks_));
+}
+
+CompleteGroupResponse::~CompleteGroupResponse() {
+  // @@protoc_insertion_point(destructor:tensorflow.CompleteGroupResponse)
+  SharedDtor();
+}
+
+void CompleteGroupResponse::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+  device_type_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+
+void CompleteGroupResponse::ArenaDtor(void* object) {
+  CompleteGroupResponse* _this = reinterpret_cast< CompleteGroupResponse* >(object);
+  (void)_this;
+}
+void CompleteGroupResponse::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void CompleteGroupResponse::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const CompleteGroupResponse& CompleteGroupResponse::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_CompleteGroupResponse_tensorflow_2fcore_2fprotobuf_2fworker_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void CompleteGroupResponse::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.CompleteGroupResponse)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  device_name_.Clear();
+  task_name_.Clear();
+  device_type_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+  ::memset(&group_key_, 0, static_cast<size_t>(
+      reinterpret_cast<char*>(&num_tasks_) -
+      reinterpret_cast<char*>(&group_key_)) + sizeof(num_tasks_));
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* CompleteGroupResponse::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<CompleteGroupResponse*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // int32 group_key = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 8) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::google::protobuf::int32 value = val;
+        msg->set_group_key(value);
+        break;
+      }
+      // int32 group_size = 2;
+      case 2: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 16) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::google::protobuf::int32 value = val;
+        msg->set_group_size(value);
+        break;
+      }
+      // string device_type = 3;
+      case 3: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 26) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("tensorflow.CompleteGroupResponse.device_type");
+        parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+        ::std::string* str = msg->mutable_device_type();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+        break;
+      }
+      // int32 num_tasks = 4;
+      case 4: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 32) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::google::protobuf::int32 value = val;
+        msg->set_num_tasks(value);
+        break;
+      }
+      // repeated string device_name = 5;
+      case 5: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 42) goto handle_unusual;
+        do {
+          ptr = Varint::Parse32Inline(ptr, &size);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          ctx->extra_parse_data().SetFieldName("tensorflow.CompleteGroupResponse.device_name");
+          parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+          ::std::string* str = msg->add_device_name();
+          str->clear();
+          object = str;
+          if (size > end - ptr) goto len_delim_till_end;
+          auto newend = ptr + size;
+          if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+          if (ptr >= end) break;
+        } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 42 && (ptr += 1));
+        break;
+      }
+      // repeated string task_name = 6;
+      case 6: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 50) goto handle_unusual;
+        do {
+          ptr = Varint::Parse32Inline(ptr, &size);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          ctx->extra_parse_data().SetFieldName("tensorflow.CompleteGroupResponse.task_name");
+          parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+          ::std::string* str = msg->add_task_name();
+          str->clear();
+          object = str;
+          if (size > end - ptr) goto len_delim_till_end;
+          auto newend = ptr + size;
+          if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+          if (ptr >= end) break;
+        } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 50 && (ptr += 1));
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool CompleteGroupResponse::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.CompleteGroupResponse)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // int32 group_key = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (8 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
+                 input, &group_key_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // int32 group_size = 2;
+      case 2: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (16 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
+                 input, &group_size_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // string device_type = 3;
+      case 3: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (26 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_device_type()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->device_type().data(), static_cast<int>(this->device_type().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.CompleteGroupResponse.device_type"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // int32 num_tasks = 4;
+      case 4: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (32 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
+                 input, &num_tasks_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // repeated string device_name = 5;
+      case 5: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (42 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->add_device_name()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->device_name(this->device_name_size() - 1).data(),
+            static_cast<int>(this->device_name(this->device_name_size() - 1).length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.CompleteGroupResponse.device_name"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // repeated string task_name = 6;
+      case 6: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (50 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->add_task_name()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->task_name(this->task_name_size() - 1).data(),
+            static_cast<int>(this->task_name(this->task_name_size() - 1).length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.CompleteGroupResponse.task_name"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.CompleteGroupResponse)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.CompleteGroupResponse)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void CompleteGroupResponse::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.CompleteGroupResponse)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // int32 group_key = 1;
+  if (this->group_key() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt32(1, this->group_key(), output);
+  }
+
+  // int32 group_size = 2;
+  if (this->group_size() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt32(2, this->group_size(), output);
+  }
+
+  // string device_type = 3;
+  if (this->device_type().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->device_type().data(), static_cast<int>(this->device_type().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.CompleteGroupResponse.device_type");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      3, this->device_type(), output);
+  }
+
+  // int32 num_tasks = 4;
+  if (this->num_tasks() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt32(4, this->num_tasks(), output);
+  }
+
+  // repeated string device_name = 5;
+  for (int i = 0, n = this->device_name_size(); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->device_name(i).data(), static_cast<int>(this->device_name(i).length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.CompleteGroupResponse.device_name");
+    ::google::protobuf::internal::WireFormatLite::WriteString(
+      5, this->device_name(i), output);
+  }
+
+  // repeated string task_name = 6;
+  for (int i = 0, n = this->task_name_size(); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->task_name(i).data(), static_cast<int>(this->task_name(i).length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.CompleteGroupResponse.task_name");
+    ::google::protobuf::internal::WireFormatLite::WriteString(
+      6, this->task_name(i), output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.CompleteGroupResponse)
+}
+
+::google::protobuf::uint8* CompleteGroupResponse::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.CompleteGroupResponse)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // int32 group_key = 1;
+  if (this->group_key() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt32ToArray(1, this->group_key(), target);
+  }
+
+  // int32 group_size = 2;
+  if (this->group_size() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt32ToArray(2, this->group_size(), target);
+  }
+
+  // string device_type = 3;
+  if (this->device_type().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->device_type().data(), static_cast<int>(this->device_type().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.CompleteGroupResponse.device_type");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        3, this->device_type(), target);
+  }
+
+  // int32 num_tasks = 4;
+  if (this->num_tasks() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt32ToArray(4, this->num_tasks(), target);
+  }
+
+  // repeated string device_name = 5;
+  for (int i = 0, n = this->device_name_size(); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->device_name(i).data(), static_cast<int>(this->device_name(i).length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.CompleteGroupResponse.device_name");
+    target = ::google::protobuf::internal::WireFormatLite::
+      WriteStringToArray(5, this->device_name(i), target);
+  }
+
+  // repeated string task_name = 6;
+  for (int i = 0, n = this->task_name_size(); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->task_name(i).data(), static_cast<int>(this->task_name(i).length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.CompleteGroupResponse.task_name");
+    target = ::google::protobuf::internal::WireFormatLite::
+      WriteStringToArray(6, this->task_name(i), target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.CompleteGroupResponse)
+  return target;
+}
+
+size_t CompleteGroupResponse::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.CompleteGroupResponse)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // repeated string device_name = 5;
+  total_size += 1 *
+      ::google::protobuf::internal::FromIntSize(this->device_name_size());
+  for (int i = 0, n = this->device_name_size(); i < n; i++) {
+    total_size += ::google::protobuf::internal::WireFormatLite::StringSize(
+      this->device_name(i));
+  }
+
+  // repeated string task_name = 6;
+  total_size += 1 *
+      ::google::protobuf::internal::FromIntSize(this->task_name_size());
+  for (int i = 0, n = this->task_name_size(); i < n; i++) {
+    total_size += ::google::protobuf::internal::WireFormatLite::StringSize(
+      this->task_name(i));
+  }
+
+  // string device_type = 3;
+  if (this->device_type().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->device_type());
+  }
+
+  // int32 group_key = 1;
+  if (this->group_key() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::Int32Size(
+        this->group_key());
+  }
+
+  // int32 group_size = 2;
+  if (this->group_size() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::Int32Size(
+        this->group_size());
+  }
+
+  // int32 num_tasks = 4;
+  if (this->num_tasks() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::Int32Size(
+        this->num_tasks());
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void CompleteGroupResponse::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.CompleteGroupResponse)
+  GOOGLE_DCHECK_NE(&from, this);
+  const CompleteGroupResponse* source =
+      ::google::protobuf::DynamicCastToGenerated<CompleteGroupResponse>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.CompleteGroupResponse)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.CompleteGroupResponse)
+    MergeFrom(*source);
+  }
+}
+
+void CompleteGroupResponse::MergeFrom(const CompleteGroupResponse& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.CompleteGroupResponse)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  device_name_.MergeFrom(from.device_name_);
+  task_name_.MergeFrom(from.task_name_);
+  if (from.device_type().size() > 0) {
+    set_device_type(from.device_type());
+  }
+  if (from.group_key() != 0) {
+    set_group_key(from.group_key());
+  }
+  if (from.group_size() != 0) {
+    set_group_size(from.group_size());
+  }
+  if (from.num_tasks() != 0) {
+    set_num_tasks(from.num_tasks());
+  }
+}
+
+void CompleteGroupResponse::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.CompleteGroupResponse)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void CompleteGroupResponse::CopyFrom(const CompleteGroupResponse& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.CompleteGroupResponse)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool CompleteGroupResponse::IsInitialized() const {
+  return true;
+}
+
+void CompleteGroupResponse::Swap(CompleteGroupResponse* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    CompleteGroupResponse* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void CompleteGroupResponse::UnsafeArenaSwap(CompleteGroupResponse* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void CompleteGroupResponse::InternalSwap(CompleteGroupResponse* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  device_name_.InternalSwap(CastToBase(&other->device_name_));
+  task_name_.InternalSwap(CastToBase(&other->task_name_));
+  device_type_.Swap(&other->device_type_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+  swap(group_key_, other->group_key_);
+  swap(group_size_, other->group_size_);
+  swap(num_tasks_, other->num_tasks_);
+}
+
+::google::protobuf::Metadata CompleteGroupResponse::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2fworker_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fprotobuf_2fworker_2eproto[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+void CompleteInstanceRequest::InitAsDefaultInstance() {
+  ::tensorflow::_CompleteInstanceRequest_default_instance_._instance.get_mutable()->shape_ = const_cast< ::tensorflow::TensorShapeProto*>(
+      ::tensorflow::TensorShapeProto::internal_default_instance());
+}
+class CompleteInstanceRequest::HasBitSetters {
+ public:
+  static const ::tensorflow::TensorShapeProto& shape(const CompleteInstanceRequest* msg);
+};
+
+const ::tensorflow::TensorShapeProto&
+CompleteInstanceRequest::HasBitSetters::shape(const CompleteInstanceRequest* msg) {
+  return *msg->shape_;
+}
+void CompleteInstanceRequest::unsafe_arena_set_allocated_shape(
+    ::tensorflow::TensorShapeProto* shape) {
+  if (GetArenaNoVirtual() == NULL) {
+    delete shape_;
+  }
+  shape_ = shape;
+  if (shape) {
+    
+  } else {
+    
+  }
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.CompleteInstanceRequest.shape)
+}
+void CompleteInstanceRequest::clear_shape() {
+  if (GetArenaNoVirtual() == NULL && shape_ != NULL) {
+    delete shape_;
+  }
+  shape_ = NULL;
+}
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int CompleteInstanceRequest::kNameFieldNumber;
+const int CompleteInstanceRequest::kTypeFieldNumber;
+const int CompleteInstanceRequest::kDataTypeFieldNumber;
+const int CompleteInstanceRequest::kShapeFieldNumber;
+const int CompleteInstanceRequest::kGroupKeyFieldNumber;
+const int CompleteInstanceRequest::kGroupSizeFieldNumber;
+const int CompleteInstanceRequest::kInstanceKeyFieldNumber;
+const int CompleteInstanceRequest::kDeviceTypeFieldNumber;
+const int CompleteInstanceRequest::kSubdivOffsetFieldNumber;
+const int CompleteInstanceRequest::kDeviceFieldNumber;
+const int CompleteInstanceRequest::kIsSourceFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+CompleteInstanceRequest::CompleteInstanceRequest()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.CompleteInstanceRequest)
+}
+CompleteInstanceRequest::CompleteInstanceRequest(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena),
+  subdiv_offset_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.CompleteInstanceRequest)
+}
+CompleteInstanceRequest::CompleteInstanceRequest(const CompleteInstanceRequest& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL),
+      subdiv_offset_(from.subdiv_offset_) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.name().size() > 0) {
+    name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.name(),
+      GetArenaNoVirtual());
+  }
+  device_type_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.device_type().size() > 0) {
+    device_type_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.device_type(),
+      GetArenaNoVirtual());
+  }
+  device_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.device().size() > 0) {
+    device_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.device(),
+      GetArenaNoVirtual());
+  }
+  if (from.has_shape()) {
+    shape_ = new ::tensorflow::TensorShapeProto(*from.shape_);
+  } else {
+    shape_ = NULL;
+  }
+  ::memcpy(&type_, &from.type_,
+    static_cast<size_t>(reinterpret_cast<char*>(&is_source_) -
+    reinterpret_cast<char*>(&type_)) + sizeof(is_source_));
+  // @@protoc_insertion_point(copy_constructor:tensorflow.CompleteInstanceRequest)
+}
+
+void CompleteInstanceRequest::SharedCtor() {
+  ::google::protobuf::internal::InitSCC(
+      &scc_info_CompleteInstanceRequest_tensorflow_2fcore_2fprotobuf_2fworker_2eproto.base);
+  name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  device_type_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  device_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  ::memset(&shape_, 0, static_cast<size_t>(
+      reinterpret_cast<char*>(&is_source_) -
+      reinterpret_cast<char*>(&shape_)) + sizeof(is_source_));
+}
+
+CompleteInstanceRequest::~CompleteInstanceRequest() {
+  // @@protoc_insertion_point(destructor:tensorflow.CompleteInstanceRequest)
+  SharedDtor();
+}
+
+void CompleteInstanceRequest::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+  name_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  device_type_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  device_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (this != internal_default_instance()) delete shape_;
+}
+
+void CompleteInstanceRequest::ArenaDtor(void* object) {
+  CompleteInstanceRequest* _this = reinterpret_cast< CompleteInstanceRequest* >(object);
+  (void)_this;
+}
+void CompleteInstanceRequest::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void CompleteInstanceRequest::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const CompleteInstanceRequest& CompleteInstanceRequest::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_CompleteInstanceRequest_tensorflow_2fcore_2fprotobuf_2fworker_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void CompleteInstanceRequest::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.CompleteInstanceRequest)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  subdiv_offset_.Clear();
+  name_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+  device_type_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+  device_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+  if (GetArenaNoVirtual() == NULL && shape_ != NULL) {
+    delete shape_;
+  }
+  shape_ = NULL;
+  ::memset(&type_, 0, static_cast<size_t>(
+      reinterpret_cast<char*>(&is_source_) -
+      reinterpret_cast<char*>(&type_)) + sizeof(is_source_));
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* CompleteInstanceRequest::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<CompleteInstanceRequest*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // string name = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 10) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("tensorflow.CompleteInstanceRequest.name");
+        parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+        ::std::string* str = msg->mutable_name();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+        break;
+      }
+      // int32 type = 2;
+      case 2: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 16) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::google::protobuf::int32 value = val;
+        msg->set_type(value);
+        break;
+      }
+      // .tensorflow.DataType data_type = 3;
+      case 3: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 24) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::tensorflow::DataType value = static_cast<::tensorflow::DataType>(val);
+        msg->set_data_type(value);
+        break;
+      }
+      // .tensorflow.TensorShapeProto shape = 4;
+      case 4: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 34) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        parser_till_end = ::tensorflow::TensorShapeProto::_InternalParse;
+        object = msg->mutable_shape();
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                       ptr, newend);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+        ptr = newend;
+        break;
+      }
+      // int32 group_key = 5;
+      case 5: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 40) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::google::protobuf::int32 value = val;
+        msg->set_group_key(value);
+        break;
+      }
+      // int32 group_size = 6;
+      case 6: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 48) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::google::protobuf::int32 value = val;
+        msg->set_group_size(value);
+        break;
+      }
+      // int32 instance_key = 7;
+      case 7: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 56) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::google::protobuf::int32 value = val;
+        msg->set_instance_key(value);
+        break;
+      }
+      // string device_type = 8;
+      case 8: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 66) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("tensorflow.CompleteInstanceRequest.device_type");
+        parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+        ::std::string* str = msg->mutable_device_type();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+        break;
+      }
+      // repeated int32 subdiv_offset = 9;
+      case 9: {
+        if (static_cast<::google::protobuf::uint8>(tag) == 74) {
+          ptr = Varint::Parse32Inline(ptr, &size);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          parser_till_end = ::google::protobuf::internal::PackedInt32Parser;
+          object = msg->mutable_subdiv_offset();
+          if (size > end - ptr) goto len_delim_till_end;
+          auto newend = ptr + size;
+          if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+          break;
+        } else if (static_cast<::google::protobuf::uint8>(tag) != 72) goto handle_unusual;
+        do {
+          ::google::protobuf::uint64 val;
+          ptr = Varint::Parse64(ptr, &val);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          ::google::protobuf::int32 value = val;
+          msg->add_subdiv_offset(value);
+          if (ptr >= end) break;
+        } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 72 && (ptr += 1));
+        break;
+      }
+      // string device = 10;
+      case 10: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 82) goto handle_unusual;
+        ptr = Varint::Parse32Inline(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("tensorflow.CompleteInstanceRequest.device");
+        parser_till_end = ::google::protobuf::internal::StringParserUTF8;
+        ::std::string* str = msg->mutable_device();
+        str->clear();
+        object = str;
+        if (size > end - ptr) goto len_delim_till_end;
+        auto newend = ptr + size;
+        if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+        break;
+      }
+      // bool is_source = 11;
+      case 11: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 88) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        bool value = val;
+        msg->set_is_source(value);
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool CompleteInstanceRequest::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.CompleteInstanceRequest)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // string name = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (10 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_name()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->name().data(), static_cast<int>(this->name().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.CompleteInstanceRequest.name"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // int32 type = 2;
+      case 2: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (16 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
+                 input, &type_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // .tensorflow.DataType data_type = 3;
+      case 3: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (24 & 0xFF)) {
+          int value = 0;
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>(
+                 input, &value)));
+          set_data_type(static_cast< ::tensorflow::DataType >(value));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // .tensorflow.TensorShapeProto shape = 4;
+      case 4: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (34 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+               input, mutable_shape()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // int32 group_key = 5;
+      case 5: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (40 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
+                 input, &group_key_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // int32 group_size = 6;
+      case 6: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (48 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
+                 input, &group_size_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // int32 instance_key = 7;
+      case 7: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (56 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
+                 input, &instance_key_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // string device_type = 8;
+      case 8: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (66 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_device_type()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->device_type().data(), static_cast<int>(this->device_type().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.CompleteInstanceRequest.device_type"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // repeated int32 subdiv_offset = 9;
+      case 9: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (74 & 0xFF)) {
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPackedPrimitive<
+                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
+                 input, this->mutable_subdiv_offset())));
+        } else if (static_cast< ::google::protobuf::uint8>(tag) == (72 & 0xFF)) {
+          DO_((::google::protobuf::internal::WireFormatLite::ReadRepeatedPrimitiveNoInline<
+                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
+                 1, 74u, input, this->mutable_subdiv_offset())));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // string device = 10;
+      case 10: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (82 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_device()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->device().data(), static_cast<int>(this->device().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "tensorflow.CompleteInstanceRequest.device"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // bool is_source = 11;
+      case 11: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (88 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
+                 input, &is_source_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.CompleteInstanceRequest)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.CompleteInstanceRequest)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void CompleteInstanceRequest::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.CompleteInstanceRequest)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // string name = 1;
+  if (this->name().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->name().data(), static_cast<int>(this->name().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.CompleteInstanceRequest.name");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      1, this->name(), output);
+  }
+
+  // int32 type = 2;
+  if (this->type() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt32(2, this->type(), output);
+  }
+
+  // .tensorflow.DataType data_type = 3;
+  if (this->data_type() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteEnum(
+      3, this->data_type(), output);
+  }
+
+  // .tensorflow.TensorShapeProto shape = 4;
+  if (this->has_shape()) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      4, HasBitSetters::shape(this), output);
+  }
+
+  // int32 group_key = 5;
+  if (this->group_key() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt32(5, this->group_key(), output);
+  }
+
+  // int32 group_size = 6;
+  if (this->group_size() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt32(6, this->group_size(), output);
+  }
+
+  // int32 instance_key = 7;
+  if (this->instance_key() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt32(7, this->instance_key(), output);
+  }
+
+  // string device_type = 8;
+  if (this->device_type().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->device_type().data(), static_cast<int>(this->device_type().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.CompleteInstanceRequest.device_type");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      8, this->device_type(), output);
+  }
+
+  // repeated int32 subdiv_offset = 9;
+  if (this->subdiv_offset_size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteTag(9, ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED, output);
+    output->WriteVarint32(_subdiv_offset_cached_byte_size_.load(
+        std::memory_order_relaxed));
+  }
+  for (int i = 0, n = this->subdiv_offset_size(); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt32NoTag(
+      this->subdiv_offset(i), output);
+  }
+
+  // string device = 10;
+  if (this->device().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->device().data(), static_cast<int>(this->device().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.CompleteInstanceRequest.device");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      10, this->device(), output);
+  }
+
+  // bool is_source = 11;
+  if (this->is_source() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteBool(11, this->is_source(), output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.CompleteInstanceRequest)
+}
+
+::google::protobuf::uint8* CompleteInstanceRequest::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.CompleteInstanceRequest)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // string name = 1;
+  if (this->name().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->name().data(), static_cast<int>(this->name().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.CompleteInstanceRequest.name");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        1, this->name(), target);
+  }
+
+  // int32 type = 2;
+  if (this->type() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt32ToArray(2, this->type(), target);
+  }
+
+  // .tensorflow.DataType data_type = 3;
+  if (this->data_type() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteEnumToArray(
+      3, this->data_type(), target);
+  }
+
+  // .tensorflow.TensorShapeProto shape = 4;
+  if (this->has_shape()) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        4, HasBitSetters::shape(this), deterministic, target);
+  }
+
+  // int32 group_key = 5;
+  if (this->group_key() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt32ToArray(5, this->group_key(), target);
+  }
+
+  // int32 group_size = 6;
+  if (this->group_size() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt32ToArray(6, this->group_size(), target);
+  }
+
+  // int32 instance_key = 7;
+  if (this->instance_key() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt32ToArray(7, this->instance_key(), target);
+  }
+
+  // string device_type = 8;
+  if (this->device_type().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->device_type().data(), static_cast<int>(this->device_type().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.CompleteInstanceRequest.device_type");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        8, this->device_type(), target);
+  }
+
+  // repeated int32 subdiv_offset = 9;
+  if (this->subdiv_offset_size() > 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteTagToArray(
+      9,
+      ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED,
+      target);
+    target = ::google::protobuf::io::CodedOutputStream::WriteVarint32ToArray(
+        _subdiv_offset_cached_byte_size_.load(std::memory_order_relaxed),
+         target);
+    target = ::google::protobuf::internal::WireFormatLite::
+      WriteInt32NoTagToArray(this->subdiv_offset_, target);
+  }
+
+  // string device = 10;
+  if (this->device().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->device().data(), static_cast<int>(this->device().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "tensorflow.CompleteInstanceRequest.device");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        10, this->device(), target);
+  }
+
+  // bool is_source = 11;
+  if (this->is_source() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(11, this->is_source(), target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.CompleteInstanceRequest)
+  return target;
+}
+
+size_t CompleteInstanceRequest::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.CompleteInstanceRequest)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // repeated int32 subdiv_offset = 9;
+  {
+    size_t data_size = ::google::protobuf::internal::WireFormatLite::
+      Int32Size(this->subdiv_offset_);
+    if (data_size > 0) {
+      total_size += 1 +
+        ::google::protobuf::internal::WireFormatLite::Int32Size(
+            static_cast<::google::protobuf::int32>(data_size));
+    }
+    int cached_size = ::google::protobuf::internal::ToCachedSize(data_size);
+    _subdiv_offset_cached_byte_size_.store(cached_size,
+                                    std::memory_order_relaxed);
+    total_size += data_size;
+  }
+
+  // string name = 1;
+  if (this->name().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->name());
+  }
+
+  // string device_type = 8;
+  if (this->device_type().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->device_type());
+  }
+
+  // string device = 10;
+  if (this->device().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->device());
+  }
+
+  // .tensorflow.TensorShapeProto shape = 4;
+  if (this->has_shape()) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::MessageSize(
+        *shape_);
+  }
+
+  // int32 type = 2;
+  if (this->type() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::Int32Size(
+        this->type());
+  }
+
+  // .tensorflow.DataType data_type = 3;
+  if (this->data_type() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::EnumSize(this->data_type());
+  }
+
+  // int32 group_key = 5;
+  if (this->group_key() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::Int32Size(
+        this->group_key());
+  }
+
+  // int32 group_size = 6;
+  if (this->group_size() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::Int32Size(
+        this->group_size());
+  }
+
+  // int32 instance_key = 7;
+  if (this->instance_key() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::Int32Size(
+        this->instance_key());
+  }
+
+  // bool is_source = 11;
+  if (this->is_source() != 0) {
+    total_size += 1 + 1;
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void CompleteInstanceRequest::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.CompleteInstanceRequest)
+  GOOGLE_DCHECK_NE(&from, this);
+  const CompleteInstanceRequest* source =
+      ::google::protobuf::DynamicCastToGenerated<CompleteInstanceRequest>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.CompleteInstanceRequest)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.CompleteInstanceRequest)
+    MergeFrom(*source);
+  }
+}
+
+void CompleteInstanceRequest::MergeFrom(const CompleteInstanceRequest& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.CompleteInstanceRequest)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  subdiv_offset_.MergeFrom(from.subdiv_offset_);
+  if (from.name().size() > 0) {
+    set_name(from.name());
+  }
+  if (from.device_type().size() > 0) {
+    set_device_type(from.device_type());
+  }
+  if (from.device().size() > 0) {
+    set_device(from.device());
+  }
+  if (from.has_shape()) {
+    mutable_shape()->::tensorflow::TensorShapeProto::MergeFrom(from.shape());
+  }
+  if (from.type() != 0) {
+    set_type(from.type());
+  }
+  if (from.data_type() != 0) {
+    set_data_type(from.data_type());
+  }
+  if (from.group_key() != 0) {
+    set_group_key(from.group_key());
+  }
+  if (from.group_size() != 0) {
+    set_group_size(from.group_size());
+  }
+  if (from.instance_key() != 0) {
+    set_instance_key(from.instance_key());
+  }
+  if (from.is_source() != 0) {
+    set_is_source(from.is_source());
+  }
+}
+
+void CompleteInstanceRequest::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.CompleteInstanceRequest)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void CompleteInstanceRequest::CopyFrom(const CompleteInstanceRequest& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.CompleteInstanceRequest)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool CompleteInstanceRequest::IsInitialized() const {
+  return true;
+}
+
+void CompleteInstanceRequest::Swap(CompleteInstanceRequest* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    CompleteInstanceRequest* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void CompleteInstanceRequest::UnsafeArenaSwap(CompleteInstanceRequest* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void CompleteInstanceRequest::InternalSwap(CompleteInstanceRequest* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  subdiv_offset_.InternalSwap(&other->subdiv_offset_);
+  name_.Swap(&other->name_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+  device_type_.Swap(&other->device_type_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+  device_.Swap(&other->device_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+  swap(shape_, other->shape_);
+  swap(type_, other->type_);
+  swap(data_type_, other->data_type_);
+  swap(group_key_, other->group_key_);
+  swap(group_size_, other->group_size_);
+  swap(instance_key_, other->instance_key_);
+  swap(is_source_, other->is_source_);
+}
+
+::google::protobuf::Metadata CompleteInstanceRequest::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2fworker_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fprotobuf_2fworker_2eproto[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+void CompleteInstanceResponse::InitAsDefaultInstance() {
+}
+class CompleteInstanceResponse::HasBitSetters {
+ public:
+};
+
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int CompleteInstanceResponse::kInstanceKeyFieldNumber;
+const int CompleteInstanceResponse::kSourceRankFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+CompleteInstanceResponse::CompleteInstanceResponse()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.CompleteInstanceResponse)
+}
+CompleteInstanceResponse::CompleteInstanceResponse(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.CompleteInstanceResponse)
+}
+CompleteInstanceResponse::CompleteInstanceResponse(const CompleteInstanceResponse& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::memcpy(&instance_key_, &from.instance_key_,
+    static_cast<size_t>(reinterpret_cast<char*>(&source_rank_) -
+    reinterpret_cast<char*>(&instance_key_)) + sizeof(source_rank_));
+  // @@protoc_insertion_point(copy_constructor:tensorflow.CompleteInstanceResponse)
+}
+
+void CompleteInstanceResponse::SharedCtor() {
+  ::memset(&instance_key_, 0, static_cast<size_t>(
+      reinterpret_cast<char*>(&source_rank_) -
+      reinterpret_cast<char*>(&instance_key_)) + sizeof(source_rank_));
+}
+
+CompleteInstanceResponse::~CompleteInstanceResponse() {
+  // @@protoc_insertion_point(destructor:tensorflow.CompleteInstanceResponse)
+  SharedDtor();
+}
+
+void CompleteInstanceResponse::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+}
+
+void CompleteInstanceResponse::ArenaDtor(void* object) {
+  CompleteInstanceResponse* _this = reinterpret_cast< CompleteInstanceResponse* >(object);
+  (void)_this;
+}
+void CompleteInstanceResponse::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void CompleteInstanceResponse::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const CompleteInstanceResponse& CompleteInstanceResponse::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_CompleteInstanceResponse_tensorflow_2fcore_2fprotobuf_2fworker_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void CompleteInstanceResponse::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.CompleteInstanceResponse)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  ::memset(&instance_key_, 0, static_cast<size_t>(
+      reinterpret_cast<char*>(&source_rank_) -
+      reinterpret_cast<char*>(&instance_key_)) + sizeof(source_rank_));
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* CompleteInstanceResponse::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<CompleteInstanceResponse*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // int32 instance_key = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 8) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::google::protobuf::int32 value = val;
+        msg->set_instance_key(value);
+        break;
+      }
+      // int32 source_rank = 2;
+      case 2: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 16) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::google::protobuf::int32 value = val;
+        msg->set_source_rank(value);
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool CompleteInstanceResponse::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.CompleteInstanceResponse)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // int32 instance_key = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (8 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
+                 input, &instance_key_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // int32 source_rank = 2;
+      case 2: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (16 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
+                 input, &source_rank_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.CompleteInstanceResponse)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.CompleteInstanceResponse)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void CompleteInstanceResponse::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.CompleteInstanceResponse)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // int32 instance_key = 1;
+  if (this->instance_key() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt32(1, this->instance_key(), output);
+  }
+
+  // int32 source_rank = 2;
+  if (this->source_rank() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt32(2, this->source_rank(), output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.CompleteInstanceResponse)
+}
+
+::google::protobuf::uint8* CompleteInstanceResponse::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.CompleteInstanceResponse)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // int32 instance_key = 1;
+  if (this->instance_key() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt32ToArray(1, this->instance_key(), target);
+  }
+
+  // int32 source_rank = 2;
+  if (this->source_rank() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt32ToArray(2, this->source_rank(), target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.CompleteInstanceResponse)
+  return target;
+}
+
+size_t CompleteInstanceResponse::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.CompleteInstanceResponse)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // int32 instance_key = 1;
+  if (this->instance_key() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::Int32Size(
+        this->instance_key());
+  }
+
+  // int32 source_rank = 2;
+  if (this->source_rank() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::Int32Size(
+        this->source_rank());
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void CompleteInstanceResponse::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.CompleteInstanceResponse)
+  GOOGLE_DCHECK_NE(&from, this);
+  const CompleteInstanceResponse* source =
+      ::google::protobuf::DynamicCastToGenerated<CompleteInstanceResponse>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.CompleteInstanceResponse)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.CompleteInstanceResponse)
+    MergeFrom(*source);
+  }
+}
+
+void CompleteInstanceResponse::MergeFrom(const CompleteInstanceResponse& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.CompleteInstanceResponse)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  if (from.instance_key() != 0) {
+    set_instance_key(from.instance_key());
+  }
+  if (from.source_rank() != 0) {
+    set_source_rank(from.source_rank());
+  }
+}
+
+void CompleteInstanceResponse::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.CompleteInstanceResponse)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void CompleteInstanceResponse::CopyFrom(const CompleteInstanceResponse& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.CompleteInstanceResponse)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool CompleteInstanceResponse::IsInitialized() const {
+  return true;
+}
+
+void CompleteInstanceResponse::Swap(CompleteInstanceResponse* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    CompleteInstanceResponse* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void CompleteInstanceResponse::UnsafeArenaSwap(CompleteInstanceResponse* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void CompleteInstanceResponse::InternalSwap(CompleteInstanceResponse* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  swap(instance_key_, other->instance_key_);
+  swap(source_rank_, other->source_rank_);
+}
+
+::google::protobuf::Metadata CompleteInstanceResponse::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2fworker_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fprotobuf_2fworker_2eproto[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+void GetStepSequenceRequest::InitAsDefaultInstance() {
+}
+class GetStepSequenceRequest::HasBitSetters {
+ public:
+};
+
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int GetStepSequenceRequest::kGraphKeyFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+GetStepSequenceRequest::GetStepSequenceRequest()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.GetStepSequenceRequest)
+}
+GetStepSequenceRequest::GetStepSequenceRequest(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena),
+  graph_key_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.GetStepSequenceRequest)
+}
+GetStepSequenceRequest::GetStepSequenceRequest(const GetStepSequenceRequest& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL),
+      graph_key_(from.graph_key_) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  // @@protoc_insertion_point(copy_constructor:tensorflow.GetStepSequenceRequest)
+}
+
+void GetStepSequenceRequest::SharedCtor() {
+}
+
+GetStepSequenceRequest::~GetStepSequenceRequest() {
+  // @@protoc_insertion_point(destructor:tensorflow.GetStepSequenceRequest)
+  SharedDtor();
+}
+
+void GetStepSequenceRequest::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+}
+
+void GetStepSequenceRequest::ArenaDtor(void* object) {
+  GetStepSequenceRequest* _this = reinterpret_cast< GetStepSequenceRequest* >(object);
+  (void)_this;
+}
+void GetStepSequenceRequest::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void GetStepSequenceRequest::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const GetStepSequenceRequest& GetStepSequenceRequest::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_GetStepSequenceRequest_tensorflow_2fcore_2fprotobuf_2fworker_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void GetStepSequenceRequest::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.GetStepSequenceRequest)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  graph_key_.Clear();
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* GetStepSequenceRequest::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<GetStepSequenceRequest*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // repeated int64 graph_key = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) == 10) {
+          ptr = Varint::Parse32Inline(ptr, &size);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          parser_till_end = ::google::protobuf::internal::PackedInt64Parser;
+          object = msg->mutable_graph_key();
+          if (size > end - ptr) goto len_delim_till_end;
+          auto newend = ptr + size;
+          if (size) ptr = parser_till_end(ptr, newend, object, ctx);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr == newend);
+          break;
+        } else if (static_cast<::google::protobuf::uint8>(tag) != 8) goto handle_unusual;
+        do {
+          ::google::protobuf::uint64 val;
+          ptr = Varint::Parse64(ptr, &val);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          ::google::protobuf::int64 value = val;
+          msg->add_graph_key(value);
+          if (ptr >= end) break;
+        } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 8 && (ptr += 1));
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool GetStepSequenceRequest::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.GetStepSequenceRequest)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // repeated int64 graph_key = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (10 & 0xFF)) {
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPackedPrimitive<
+                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>(
+                 input, this->mutable_graph_key())));
+        } else if (static_cast< ::google::protobuf::uint8>(tag) == (8 & 0xFF)) {
+          DO_((::google::protobuf::internal::WireFormatLite::ReadRepeatedPrimitiveNoInline<
+                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>(
+                 1, 10u, input, this->mutable_graph_key())));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.GetStepSequenceRequest)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.GetStepSequenceRequest)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void GetStepSequenceRequest::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.GetStepSequenceRequest)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // repeated int64 graph_key = 1;
+  if (this->graph_key_size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteTag(1, ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED, output);
+    output->WriteVarint32(_graph_key_cached_byte_size_.load(
+        std::memory_order_relaxed));
+  }
+  for (int i = 0, n = this->graph_key_size(); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt64NoTag(
+      this->graph_key(i), output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.GetStepSequenceRequest)
+}
+
+::google::protobuf::uint8* GetStepSequenceRequest::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.GetStepSequenceRequest)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // repeated int64 graph_key = 1;
+  if (this->graph_key_size() > 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteTagToArray(
+      1,
+      ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED,
+      target);
+    target = ::google::protobuf::io::CodedOutputStream::WriteVarint32ToArray(
+        _graph_key_cached_byte_size_.load(std::memory_order_relaxed),
+         target);
+    target = ::google::protobuf::internal::WireFormatLite::
+      WriteInt64NoTagToArray(this->graph_key_, target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.GetStepSequenceRequest)
+  return target;
+}
+
+size_t GetStepSequenceRequest::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.GetStepSequenceRequest)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // repeated int64 graph_key = 1;
+  {
+    size_t data_size = ::google::protobuf::internal::WireFormatLite::
+      Int64Size(this->graph_key_);
+    if (data_size > 0) {
+      total_size += 1 +
+        ::google::protobuf::internal::WireFormatLite::Int32Size(
+            static_cast<::google::protobuf::int32>(data_size));
+    }
+    int cached_size = ::google::protobuf::internal::ToCachedSize(data_size);
+    _graph_key_cached_byte_size_.store(cached_size,
+                                    std::memory_order_relaxed);
+    total_size += data_size;
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void GetStepSequenceRequest::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.GetStepSequenceRequest)
+  GOOGLE_DCHECK_NE(&from, this);
+  const GetStepSequenceRequest* source =
+      ::google::protobuf::DynamicCastToGenerated<GetStepSequenceRequest>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.GetStepSequenceRequest)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.GetStepSequenceRequest)
+    MergeFrom(*source);
+  }
+}
+
+void GetStepSequenceRequest::MergeFrom(const GetStepSequenceRequest& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.GetStepSequenceRequest)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  graph_key_.MergeFrom(from.graph_key_);
+}
+
+void GetStepSequenceRequest::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.GetStepSequenceRequest)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void GetStepSequenceRequest::CopyFrom(const GetStepSequenceRequest& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.GetStepSequenceRequest)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool GetStepSequenceRequest::IsInitialized() const {
+  return true;
+}
+
+void GetStepSequenceRequest::Swap(GetStepSequenceRequest* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    GetStepSequenceRequest* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void GetStepSequenceRequest::UnsafeArenaSwap(GetStepSequenceRequest* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void GetStepSequenceRequest::InternalSwap(GetStepSequenceRequest* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  graph_key_.InternalSwap(&other->graph_key_);
+}
+
+::google::protobuf::Metadata GetStepSequenceRequest::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2fworker_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fprotobuf_2fworker_2eproto[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+void StepSequence::InitAsDefaultInstance() {
+}
+class StepSequence::HasBitSetters {
+ public:
+};
+
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int StepSequence::kGraphKeyFieldNumber;
+const int StepSequence::kNextStepIdFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+StepSequence::StepSequence()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.StepSequence)
+}
+StepSequence::StepSequence(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.StepSequence)
+}
+StepSequence::StepSequence(const StepSequence& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::memcpy(&graph_key_, &from.graph_key_,
+    static_cast<size_t>(reinterpret_cast<char*>(&next_step_id_) -
+    reinterpret_cast<char*>(&graph_key_)) + sizeof(next_step_id_));
+  // @@protoc_insertion_point(copy_constructor:tensorflow.StepSequence)
+}
+
+void StepSequence::SharedCtor() {
+  ::memset(&graph_key_, 0, static_cast<size_t>(
+      reinterpret_cast<char*>(&next_step_id_) -
+      reinterpret_cast<char*>(&graph_key_)) + sizeof(next_step_id_));
+}
+
+StepSequence::~StepSequence() {
+  // @@protoc_insertion_point(destructor:tensorflow.StepSequence)
+  SharedDtor();
+}
+
+void StepSequence::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+}
+
+void StepSequence::ArenaDtor(void* object) {
+  StepSequence* _this = reinterpret_cast< StepSequence* >(object);
+  (void)_this;
+}
+void StepSequence::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void StepSequence::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const StepSequence& StepSequence::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_StepSequence_tensorflow_2fcore_2fprotobuf_2fworker_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void StepSequence::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.StepSequence)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  ::memset(&graph_key_, 0, static_cast<size_t>(
+      reinterpret_cast<char*>(&next_step_id_) -
+      reinterpret_cast<char*>(&graph_key_)) + sizeof(next_step_id_));
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* StepSequence::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<StepSequence*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // int64 graph_key = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 8) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::google::protobuf::int64 value = val;
+        msg->set_graph_key(value);
+        break;
+      }
+      // int64 next_step_id = 2;
+      case 2: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 16) goto handle_unusual;
+        ::google::protobuf::uint64 val;
+        ptr = Varint::Parse64(ptr, &val);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ::google::protobuf::int64 value = val;
+        msg->set_next_step_id(value);
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool StepSequence::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.StepSequence)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // int64 graph_key = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (8 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>(
+                 input, &graph_key_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // int64 next_step_id = 2;
+      case 2: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (16 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>(
+                 input, &next_step_id_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.StepSequence)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.StepSequence)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void StepSequence::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.StepSequence)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // int64 graph_key = 1;
+  if (this->graph_key() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt64(1, this->graph_key(), output);
+  }
+
+  // int64 next_step_id = 2;
+  if (this->next_step_id() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt64(2, this->next_step_id(), output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.StepSequence)
+}
+
+::google::protobuf::uint8* StepSequence::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.StepSequence)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // int64 graph_key = 1;
+  if (this->graph_key() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt64ToArray(1, this->graph_key(), target);
+  }
+
+  // int64 next_step_id = 2;
+  if (this->next_step_id() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt64ToArray(2, this->next_step_id(), target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.StepSequence)
+  return target;
+}
+
+size_t StepSequence::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.StepSequence)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // int64 graph_key = 1;
+  if (this->graph_key() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::Int64Size(
+        this->graph_key());
+  }
+
+  // int64 next_step_id = 2;
+  if (this->next_step_id() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::Int64Size(
+        this->next_step_id());
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void StepSequence::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.StepSequence)
+  GOOGLE_DCHECK_NE(&from, this);
+  const StepSequence* source =
+      ::google::protobuf::DynamicCastToGenerated<StepSequence>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.StepSequence)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.StepSequence)
+    MergeFrom(*source);
+  }
+}
+
+void StepSequence::MergeFrom(const StepSequence& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.StepSequence)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  if (from.graph_key() != 0) {
+    set_graph_key(from.graph_key());
+  }
+  if (from.next_step_id() != 0) {
+    set_next_step_id(from.next_step_id());
+  }
+}
+
+void StepSequence::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.StepSequence)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void StepSequence::CopyFrom(const StepSequence& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.StepSequence)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool StepSequence::IsInitialized() const {
+  return true;
+}
+
+void StepSequence::Swap(StepSequence* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    StepSequence* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void StepSequence::UnsafeArenaSwap(StepSequence* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void StepSequence::InternalSwap(StepSequence* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  swap(graph_key_, other->graph_key_);
+  swap(next_step_id_, other->next_step_id_);
+}
+
+::google::protobuf::Metadata StepSequence::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2fworker_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fprotobuf_2fworker_2eproto[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+void GetStepSequenceResponse::InitAsDefaultInstance() {
+}
+class GetStepSequenceResponse::HasBitSetters {
+ public:
+};
+
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int GetStepSequenceResponse::kStepSequenceFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+GetStepSequenceResponse::GetStepSequenceResponse()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:tensorflow.GetStepSequenceResponse)
+}
+GetStepSequenceResponse::GetStepSequenceResponse(::google::protobuf::Arena* arena)
+  : ::google::protobuf::Message(),
+  _internal_metadata_(arena),
+  step_sequence_(arena) {
+  SharedCtor();
+  RegisterArenaDtor(arena);
+  // @@protoc_insertion_point(arena_constructor:tensorflow.GetStepSequenceResponse)
+}
+GetStepSequenceResponse::GetStepSequenceResponse(const GetStepSequenceResponse& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL),
+      step_sequence_(from.step_sequence_) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  // @@protoc_insertion_point(copy_constructor:tensorflow.GetStepSequenceResponse)
+}
+
+void GetStepSequenceResponse::SharedCtor() {
+  ::google::protobuf::internal::InitSCC(
+      &scc_info_GetStepSequenceResponse_tensorflow_2fcore_2fprotobuf_2fworker_2eproto.base);
+}
+
+GetStepSequenceResponse::~GetStepSequenceResponse() {
+  // @@protoc_insertion_point(destructor:tensorflow.GetStepSequenceResponse)
+  SharedDtor();
+}
+
+void GetStepSequenceResponse::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
+}
+
+void GetStepSequenceResponse::ArenaDtor(void* object) {
+  GetStepSequenceResponse* _this = reinterpret_cast< GetStepSequenceResponse* >(object);
+  (void)_this;
+}
+void GetStepSequenceResponse::RegisterArenaDtor(::google::protobuf::Arena*) {
+}
+void GetStepSequenceResponse::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const GetStepSequenceResponse& GetStepSequenceResponse::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_GetStepSequenceResponse_tensorflow_2fcore_2fprotobuf_2fworker_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void GetStepSequenceResponse::Clear() {
+// @@protoc_insertion_point(message_clear_start:tensorflow.GetStepSequenceResponse)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  step_sequence_.Clear();
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* GetStepSequenceResponse::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<GetStepSequenceResponse*>(object);
+  ::google::protobuf::uint32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ::google::protobuf::uint32 tag;
+    ptr = Varint::Parse32Inline(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // repeated .tensorflow.StepSequence step_sequence = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 10) goto handle_unusual;
+        do {
+          ptr = Varint::Parse32Inline(ptr, &size);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+          parser_till_end = ::tensorflow::StepSequence::_InternalParse;
+          object = msg->add_step_sequence();
+          if (size > end - ptr) goto len_delim_till_end;
+          auto newend = ptr + size;
+          bool ok = ctx->ParseExactRange({parser_till_end, object},
+                                         ptr, newend);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          ptr = newend;
+          if (ptr >= end) break;
+        } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 10 && (ptr += 1));
+        break;
+      }
+      default: {
+      handle_unusual: (void)&&handle_unusual;
+        if ((tag & 7) == 4 || tag == 0) {
+          bool ok = ctx->ValidEndGroup(tag);
+          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end: (void)&&len_delim_till_end;
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                                 {parser_till_end, object}, size);
+group_continues: (void)&&group_continues;
+  GOOGLE_DCHECK(ptr >= end);
+  ctx->StoreGroup({_InternalParse, msg}, {parser_till_end, object}, depth);
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool GetStepSequenceResponse::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:tensorflow.GetStepSequenceResponse)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // repeated .tensorflow.StepSequence step_sequence = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (10 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+                input, add_step_sequence()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:tensorflow.GetStepSequenceResponse)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:tensorflow.GetStepSequenceResponse)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void GetStepSequenceResponse::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:tensorflow.GetStepSequenceResponse)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // repeated .tensorflow.StepSequence step_sequence = 1;
+  for (unsigned int i = 0,
+      n = static_cast<unsigned int>(this->step_sequence_size()); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      1,
+      this->step_sequence(static_cast<int>(i)),
+      output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:tensorflow.GetStepSequenceResponse)
+}
+
+::google::protobuf::uint8* GetStepSequenceResponse::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:tensorflow.GetStepSequenceResponse)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // repeated .tensorflow.StepSequence step_sequence = 1;
+  for (unsigned int i = 0,
+      n = static_cast<unsigned int>(this->step_sequence_size()); i < n; i++) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        1, this->step_sequence(static_cast<int>(i)), deterministic, target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:tensorflow.GetStepSequenceResponse)
+  return target;
+}
+
+size_t GetStepSequenceResponse::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:tensorflow.GetStepSequenceResponse)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // repeated .tensorflow.StepSequence step_sequence = 1;
+  {
+    unsigned int count = static_cast<unsigned int>(this->step_sequence_size());
+    total_size += 1UL * count;
+    for (unsigned int i = 0; i < count; i++) {
+      total_size +=
+        ::google::protobuf::internal::WireFormatLite::MessageSize(
+          this->step_sequence(static_cast<int>(i)));
+    }
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void GetStepSequenceResponse::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:tensorflow.GetStepSequenceResponse)
+  GOOGLE_DCHECK_NE(&from, this);
+  const GetStepSequenceResponse* source =
+      ::google::protobuf::DynamicCastToGenerated<GetStepSequenceResponse>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:tensorflow.GetStepSequenceResponse)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:tensorflow.GetStepSequenceResponse)
+    MergeFrom(*source);
+  }
+}
+
+void GetStepSequenceResponse::MergeFrom(const GetStepSequenceResponse& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:tensorflow.GetStepSequenceResponse)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  step_sequence_.MergeFrom(from.step_sequence_);
+}
+
+void GetStepSequenceResponse::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:tensorflow.GetStepSequenceResponse)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void GetStepSequenceResponse::CopyFrom(const GetStepSequenceResponse& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:tensorflow.GetStepSequenceResponse)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool GetStepSequenceResponse::IsInitialized() const {
+  return true;
+}
+
+void GetStepSequenceResponse::Swap(GetStepSequenceResponse* other) {
+  if (other == this) return;
+  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
+    InternalSwap(other);
+  } else {
+    GetStepSequenceResponse* temp = New(GetArenaNoVirtual());
+    temp->MergeFrom(*other);
+    other->CopyFrom(*this);
+    InternalSwap(temp);
+    if (GetArenaNoVirtual() == NULL) {
+      delete temp;
+    }
+  }
+}
+void GetStepSequenceResponse::UnsafeArenaSwap(GetStepSequenceResponse* other) {
+  if (other == this) return;
+  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
+  InternalSwap(other);
+}
+void GetStepSequenceResponse::InternalSwap(GetStepSequenceResponse* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  CastToBase(&step_sequence_)->InternalSwap(CastToBase(&other->step_sequence_));
+}
+
+::google::protobuf::Metadata GetStepSequenceResponse::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2fworker_2eproto);
+  return ::file_level_metadata_tensorflow_2fcore_2fprotobuf_2fworker_2eproto[kIndexInFileMessages];
+}
+
+
+// @@protoc_insertion_point(namespace_scope)
+}  // namespace tensorflow
+namespace google {
+namespace protobuf {
+template<> PROTOBUF_NOINLINE ::tensorflow::GetStatusRequest* Arena::CreateMaybeMessage< ::tensorflow::GetStatusRequest >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::GetStatusRequest >(arena);
+}
+template<> PROTOBUF_NOINLINE ::tensorflow::GetStatusResponse* Arena::CreateMaybeMessage< ::tensorflow::GetStatusResponse >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::GetStatusResponse >(arena);
+}
+template<> PROTOBUF_NOINLINE ::tensorflow::CreateWorkerSessionRequest* Arena::CreateMaybeMessage< ::tensorflow::CreateWorkerSessionRequest >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::CreateWorkerSessionRequest >(arena);
+}
+template<> PROTOBUF_NOINLINE ::tensorflow::CreateWorkerSessionResponse* Arena::CreateMaybeMessage< ::tensorflow::CreateWorkerSessionResponse >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::CreateWorkerSessionResponse >(arena);
+}
+template<> PROTOBUF_NOINLINE ::tensorflow::DeleteWorkerSessionRequest* Arena::CreateMaybeMessage< ::tensorflow::DeleteWorkerSessionRequest >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::DeleteWorkerSessionRequest >(arena);
+}
+template<> PROTOBUF_NOINLINE ::tensorflow::DeleteWorkerSessionResponse* Arena::CreateMaybeMessage< ::tensorflow::DeleteWorkerSessionResponse >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::DeleteWorkerSessionResponse >(arena);
+}
+template<> PROTOBUF_NOINLINE ::tensorflow::RegisterGraphRequest* Arena::CreateMaybeMessage< ::tensorflow::RegisterGraphRequest >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::RegisterGraphRequest >(arena);
+}
+template<> PROTOBUF_NOINLINE ::tensorflow::RegisterGraphResponse* Arena::CreateMaybeMessage< ::tensorflow::RegisterGraphResponse >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::RegisterGraphResponse >(arena);
+}
+template<> PROTOBUF_NOINLINE ::tensorflow::DeregisterGraphRequest* Arena::CreateMaybeMessage< ::tensorflow::DeregisterGraphRequest >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::DeregisterGraphRequest >(arena);
+}
+template<> PROTOBUF_NOINLINE ::tensorflow::DeregisterGraphResponse* Arena::CreateMaybeMessage< ::tensorflow::DeregisterGraphResponse >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::DeregisterGraphResponse >(arena);
+}
+template<> PROTOBUF_NOINLINE ::tensorflow::CleanupAllRequest* Arena::CreateMaybeMessage< ::tensorflow::CleanupAllRequest >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::CleanupAllRequest >(arena);
+}
+template<> PROTOBUF_NOINLINE ::tensorflow::CleanupAllResponse* Arena::CreateMaybeMessage< ::tensorflow::CleanupAllResponse >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::CleanupAllResponse >(arena);
+}
+template<> PROTOBUF_NOINLINE ::tensorflow::ExecutorOpts* Arena::CreateMaybeMessage< ::tensorflow::ExecutorOpts >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::ExecutorOpts >(arena);
+}
+template<> PROTOBUF_NOINLINE ::tensorflow::RunGraphRequest* Arena::CreateMaybeMessage< ::tensorflow::RunGraphRequest >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::RunGraphRequest >(arena);
+}
+template<> PROTOBUF_NOINLINE ::tensorflow::RunGraphResponse* Arena::CreateMaybeMessage< ::tensorflow::RunGraphResponse >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::RunGraphResponse >(arena);
+}
+template<> PROTOBUF_NOINLINE ::tensorflow::CleanupGraphRequest* Arena::CreateMaybeMessage< ::tensorflow::CleanupGraphRequest >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::CleanupGraphRequest >(arena);
+}
+template<> PROTOBUF_NOINLINE ::tensorflow::CleanupGraphResponse* Arena::CreateMaybeMessage< ::tensorflow::CleanupGraphResponse >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::CleanupGraphResponse >(arena);
+}
+template<> PROTOBUF_NOINLINE ::tensorflow::RecvTensorRequest* Arena::CreateMaybeMessage< ::tensorflow::RecvTensorRequest >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::RecvTensorRequest >(arena);
+}
+template<> PROTOBUF_NOINLINE ::tensorflow::RecvTensorResponse* Arena::CreateMaybeMessage< ::tensorflow::RecvTensorResponse >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::RecvTensorResponse >(arena);
+}
+template<> PROTOBUF_NOINLINE ::tensorflow::LoggingRequest* Arena::CreateMaybeMessage< ::tensorflow::LoggingRequest >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::LoggingRequest >(arena);
+}
+template<> PROTOBUF_NOINLINE ::tensorflow::LabeledStepStats* Arena::CreateMaybeMessage< ::tensorflow::LabeledStepStats >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::LabeledStepStats >(arena);
+}
+template<> PROTOBUF_NOINLINE ::tensorflow::LoggingResponse* Arena::CreateMaybeMessage< ::tensorflow::LoggingResponse >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::LoggingResponse >(arena);
+}
+template<> PROTOBUF_NOINLINE ::tensorflow::TraceOpts* Arena::CreateMaybeMessage< ::tensorflow::TraceOpts >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::TraceOpts >(arena);
+}
+template<> PROTOBUF_NOINLINE ::tensorflow::TracingRequest* Arena::CreateMaybeMessage< ::tensorflow::TracingRequest >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::TracingRequest >(arena);
+}
+template<> PROTOBUF_NOINLINE ::tensorflow::TracingResponse* Arena::CreateMaybeMessage< ::tensorflow::TracingResponse >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::TracingResponse >(arena);
+}
+template<> PROTOBUF_NOINLINE ::tensorflow::RecvBufRequest* Arena::CreateMaybeMessage< ::tensorflow::RecvBufRequest >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::RecvBufRequest >(arena);
+}
+template<> PROTOBUF_NOINLINE ::tensorflow::RecvBufResponse* Arena::CreateMaybeMessage< ::tensorflow::RecvBufResponse >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::RecvBufResponse >(arena);
+}
+template<> PROTOBUF_NOINLINE ::tensorflow::CompleteGroupRequest* Arena::CreateMaybeMessage< ::tensorflow::CompleteGroupRequest >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::CompleteGroupRequest >(arena);
+}
+template<> PROTOBUF_NOINLINE ::tensorflow::CompleteGroupResponse* Arena::CreateMaybeMessage< ::tensorflow::CompleteGroupResponse >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::CompleteGroupResponse >(arena);
+}
+template<> PROTOBUF_NOINLINE ::tensorflow::CompleteInstanceRequest* Arena::CreateMaybeMessage< ::tensorflow::CompleteInstanceRequest >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::CompleteInstanceRequest >(arena);
+}
+template<> PROTOBUF_NOINLINE ::tensorflow::CompleteInstanceResponse* Arena::CreateMaybeMessage< ::tensorflow::CompleteInstanceResponse >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::CompleteInstanceResponse >(arena);
+}
+template<> PROTOBUF_NOINLINE ::tensorflow::GetStepSequenceRequest* Arena::CreateMaybeMessage< ::tensorflow::GetStepSequenceRequest >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::GetStepSequenceRequest >(arena);
+}
+template<> PROTOBUF_NOINLINE ::tensorflow::StepSequence* Arena::CreateMaybeMessage< ::tensorflow::StepSequence >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::StepSequence >(arena);
+}
+template<> PROTOBUF_NOINLINE ::tensorflow::GetStepSequenceResponse* Arena::CreateMaybeMessage< ::tensorflow::GetStepSequenceResponse >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::tensorflow::GetStepSequenceResponse >(arena);
+}
+}  // namespace protobuf
+}  // namespace google
+
+// @@protoc_insertion_point(global_scope)
+#include <google/protobuf/port_undef.inc>
diff --git a/tensorflow/core/protobuf/worker.pb.h b/tensorflow/core/protobuf/worker.pb.h
new file mode 100644 (file)
index 0000000..b60fa44
--- /dev/null
@@ -0,0 +1,9526 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: tensorflow/core/protobuf/worker.proto
+
+#ifndef PROTOBUF_INCLUDED_tensorflow_2fcore_2fprotobuf_2fworker_2eproto
+#define PROTOBUF_INCLUDED_tensorflow_2fcore_2fprotobuf_2fworker_2eproto
+
+#include <limits>
+#include <string>
+
+#include <google/protobuf/port_def.inc>
+#if PROTOBUF_VERSION < 3006001
+#error This file was generated by a newer version of protoc which is
+#error incompatible with your Protocol Buffer headers. Please update
+#error your headers.
+#endif
+#if 3006001 < PROTOBUF_MIN_PROTOC_VERSION
+#error This file was generated by an older version of protoc which is
+#error incompatible with your Protocol Buffer headers. Please
+#error regenerate this file with a newer version of protoc.
+#endif
+
+#include <google/protobuf/port_undef.inc>
+#include <google/protobuf/io/coded_stream.h>
+#include <google/protobuf/arena.h>
+#include <google/protobuf/arenastring.h>
+#include <google/protobuf/generated_message_table_driven.h>
+#include <google/protobuf/generated_message_util.h>
+#include <google/protobuf/inlined_string_field.h>
+#include <google/protobuf/metadata.h>
+#include <google/protobuf/message.h>
+#include <google/protobuf/repeated_field.h>  // IWYU pragma: export
+#include <google/protobuf/extension_set.h>  // IWYU pragma: export
+#include <google/protobuf/unknown_field_set.h>
+#include <google/protobuf/any.pb.h>
+#include "tensorflow/core/framework/cost_graph.pb.h"
+#include "tensorflow/core/framework/step_stats.pb.h"
+#include "tensorflow/core/framework/device_attributes.pb.h"
+#include "tensorflow/core/framework/graph.pb.h"
+#include "tensorflow/core/framework/tensor.pb.h"
+#include "tensorflow/core/framework/tensor_shape.pb.h"
+#include "tensorflow/core/framework/types.pb.h"
+#include "tensorflow/core/lib/core/error_codes.pb.h"
+#include "tensorflow/core/protobuf/config.pb.h"
+#include "tensorflow/core/protobuf/debug.pb.h"
+#include "tensorflow/core/protobuf/named_tensor.pb.h"
+#include "tensorflow/core/protobuf/tensorflow_server.pb.h"
+// @@protoc_insertion_point(includes)
+#include <google/protobuf/port_def.inc>
+#define PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fprotobuf_2fworker_2eproto
+
+// Internal implementation detail -- do not use these members.
+struct TableStruct_tensorflow_2fcore_2fprotobuf_2fworker_2eproto {
+  static const ::google::protobuf::internal::ParseTableField entries[]
+    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
+  static const ::google::protobuf::internal::AuxillaryParseTableField aux[]
+    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
+  static const ::google::protobuf::internal::ParseTable schema[34]
+    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
+  static const ::google::protobuf::internal::FieldMetadata field_metadata[];
+  static const ::google::protobuf::internal::SerializationTable serialization_table[];
+  static const ::google::protobuf::uint32 offsets[];
+};
+void AddDescriptors_tensorflow_2fcore_2fprotobuf_2fworker_2eproto();
+namespace tensorflow {
+class CleanupAllRequest;
+class CleanupAllRequestDefaultTypeInternal;
+extern CleanupAllRequestDefaultTypeInternal _CleanupAllRequest_default_instance_;
+class CleanupAllResponse;
+class CleanupAllResponseDefaultTypeInternal;
+extern CleanupAllResponseDefaultTypeInternal _CleanupAllResponse_default_instance_;
+class CleanupGraphRequest;
+class CleanupGraphRequestDefaultTypeInternal;
+extern CleanupGraphRequestDefaultTypeInternal _CleanupGraphRequest_default_instance_;
+class CleanupGraphResponse;
+class CleanupGraphResponseDefaultTypeInternal;
+extern CleanupGraphResponseDefaultTypeInternal _CleanupGraphResponse_default_instance_;
+class CompleteGroupRequest;
+class CompleteGroupRequestDefaultTypeInternal;
+extern CompleteGroupRequestDefaultTypeInternal _CompleteGroupRequest_default_instance_;
+class CompleteGroupResponse;
+class CompleteGroupResponseDefaultTypeInternal;
+extern CompleteGroupResponseDefaultTypeInternal _CompleteGroupResponse_default_instance_;
+class CompleteInstanceRequest;
+class CompleteInstanceRequestDefaultTypeInternal;
+extern CompleteInstanceRequestDefaultTypeInternal _CompleteInstanceRequest_default_instance_;
+class CompleteInstanceResponse;
+class CompleteInstanceResponseDefaultTypeInternal;
+extern CompleteInstanceResponseDefaultTypeInternal _CompleteInstanceResponse_default_instance_;
+class CreateWorkerSessionRequest;
+class CreateWorkerSessionRequestDefaultTypeInternal;
+extern CreateWorkerSessionRequestDefaultTypeInternal _CreateWorkerSessionRequest_default_instance_;
+class CreateWorkerSessionResponse;
+class CreateWorkerSessionResponseDefaultTypeInternal;
+extern CreateWorkerSessionResponseDefaultTypeInternal _CreateWorkerSessionResponse_default_instance_;
+class DeleteWorkerSessionRequest;
+class DeleteWorkerSessionRequestDefaultTypeInternal;
+extern DeleteWorkerSessionRequestDefaultTypeInternal _DeleteWorkerSessionRequest_default_instance_;
+class DeleteWorkerSessionResponse;
+class DeleteWorkerSessionResponseDefaultTypeInternal;
+extern DeleteWorkerSessionResponseDefaultTypeInternal _DeleteWorkerSessionResponse_default_instance_;
+class DeregisterGraphRequest;
+class DeregisterGraphRequestDefaultTypeInternal;
+extern DeregisterGraphRequestDefaultTypeInternal _DeregisterGraphRequest_default_instance_;
+class DeregisterGraphResponse;
+class DeregisterGraphResponseDefaultTypeInternal;
+extern DeregisterGraphResponseDefaultTypeInternal _DeregisterGraphResponse_default_instance_;
+class ExecutorOpts;
+class ExecutorOptsDefaultTypeInternal;
+extern ExecutorOptsDefaultTypeInternal _ExecutorOpts_default_instance_;
+class GetStatusRequest;
+class GetStatusRequestDefaultTypeInternal;
+extern GetStatusRequestDefaultTypeInternal _GetStatusRequest_default_instance_;
+class GetStatusResponse;
+class GetStatusResponseDefaultTypeInternal;
+extern GetStatusResponseDefaultTypeInternal _GetStatusResponse_default_instance_;
+class GetStepSequenceRequest;
+class GetStepSequenceRequestDefaultTypeInternal;
+extern GetStepSequenceRequestDefaultTypeInternal _GetStepSequenceRequest_default_instance_;
+class GetStepSequenceResponse;
+class GetStepSequenceResponseDefaultTypeInternal;
+extern GetStepSequenceResponseDefaultTypeInternal _GetStepSequenceResponse_default_instance_;
+class LabeledStepStats;
+class LabeledStepStatsDefaultTypeInternal;
+extern LabeledStepStatsDefaultTypeInternal _LabeledStepStats_default_instance_;
+class LoggingRequest;
+class LoggingRequestDefaultTypeInternal;
+extern LoggingRequestDefaultTypeInternal _LoggingRequest_default_instance_;
+class LoggingResponse;
+class LoggingResponseDefaultTypeInternal;
+extern LoggingResponseDefaultTypeInternal _LoggingResponse_default_instance_;
+class RecvBufRequest;
+class RecvBufRequestDefaultTypeInternal;
+extern RecvBufRequestDefaultTypeInternal _RecvBufRequest_default_instance_;
+class RecvBufResponse;
+class RecvBufResponseDefaultTypeInternal;
+extern RecvBufResponseDefaultTypeInternal _RecvBufResponse_default_instance_;
+class RecvTensorRequest;
+class RecvTensorRequestDefaultTypeInternal;
+extern RecvTensorRequestDefaultTypeInternal _RecvTensorRequest_default_instance_;
+class RecvTensorResponse;
+class RecvTensorResponseDefaultTypeInternal;
+extern RecvTensorResponseDefaultTypeInternal _RecvTensorResponse_default_instance_;
+class RegisterGraphRequest;
+class RegisterGraphRequestDefaultTypeInternal;
+extern RegisterGraphRequestDefaultTypeInternal _RegisterGraphRequest_default_instance_;
+class RegisterGraphResponse;
+class RegisterGraphResponseDefaultTypeInternal;
+extern RegisterGraphResponseDefaultTypeInternal _RegisterGraphResponse_default_instance_;
+class RunGraphRequest;
+class RunGraphRequestDefaultTypeInternal;
+extern RunGraphRequestDefaultTypeInternal _RunGraphRequest_default_instance_;
+class RunGraphResponse;
+class RunGraphResponseDefaultTypeInternal;
+extern RunGraphResponseDefaultTypeInternal _RunGraphResponse_default_instance_;
+class StepSequence;
+class StepSequenceDefaultTypeInternal;
+extern StepSequenceDefaultTypeInternal _StepSequence_default_instance_;
+class TraceOpts;
+class TraceOptsDefaultTypeInternal;
+extern TraceOptsDefaultTypeInternal _TraceOpts_default_instance_;
+class TracingRequest;
+class TracingRequestDefaultTypeInternal;
+extern TracingRequestDefaultTypeInternal _TracingRequest_default_instance_;
+class TracingResponse;
+class TracingResponseDefaultTypeInternal;
+extern TracingResponseDefaultTypeInternal _TracingResponse_default_instance_;
+}  // namespace tensorflow
+namespace google {
+namespace protobuf {
+template<> ::tensorflow::CleanupAllRequest* Arena::CreateMaybeMessage<::tensorflow::CleanupAllRequest>(Arena*);
+template<> ::tensorflow::CleanupAllResponse* Arena::CreateMaybeMessage<::tensorflow::CleanupAllResponse>(Arena*);
+template<> ::tensorflow::CleanupGraphRequest* Arena::CreateMaybeMessage<::tensorflow::CleanupGraphRequest>(Arena*);
+template<> ::tensorflow::CleanupGraphResponse* Arena::CreateMaybeMessage<::tensorflow::CleanupGraphResponse>(Arena*);
+template<> ::tensorflow::CompleteGroupRequest* Arena::CreateMaybeMessage<::tensorflow::CompleteGroupRequest>(Arena*);
+template<> ::tensorflow::CompleteGroupResponse* Arena::CreateMaybeMessage<::tensorflow::CompleteGroupResponse>(Arena*);
+template<> ::tensorflow::CompleteInstanceRequest* Arena::CreateMaybeMessage<::tensorflow::CompleteInstanceRequest>(Arena*);
+template<> ::tensorflow::CompleteInstanceResponse* Arena::CreateMaybeMessage<::tensorflow::CompleteInstanceResponse>(Arena*);
+template<> ::tensorflow::CreateWorkerSessionRequest* Arena::CreateMaybeMessage<::tensorflow::CreateWorkerSessionRequest>(Arena*);
+template<> ::tensorflow::CreateWorkerSessionResponse* Arena::CreateMaybeMessage<::tensorflow::CreateWorkerSessionResponse>(Arena*);
+template<> ::tensorflow::DeleteWorkerSessionRequest* Arena::CreateMaybeMessage<::tensorflow::DeleteWorkerSessionRequest>(Arena*);
+template<> ::tensorflow::DeleteWorkerSessionResponse* Arena::CreateMaybeMessage<::tensorflow::DeleteWorkerSessionResponse>(Arena*);
+template<> ::tensorflow::DeregisterGraphRequest* Arena::CreateMaybeMessage<::tensorflow::DeregisterGraphRequest>(Arena*);
+template<> ::tensorflow::DeregisterGraphResponse* Arena::CreateMaybeMessage<::tensorflow::DeregisterGraphResponse>(Arena*);
+template<> ::tensorflow::ExecutorOpts* Arena::CreateMaybeMessage<::tensorflow::ExecutorOpts>(Arena*);
+template<> ::tensorflow::GetStatusRequest* Arena::CreateMaybeMessage<::tensorflow::GetStatusRequest>(Arena*);
+template<> ::tensorflow::GetStatusResponse* Arena::CreateMaybeMessage<::tensorflow::GetStatusResponse>(Arena*);
+template<> ::tensorflow::GetStepSequenceRequest* Arena::CreateMaybeMessage<::tensorflow::GetStepSequenceRequest>(Arena*);
+template<> ::tensorflow::GetStepSequenceResponse* Arena::CreateMaybeMessage<::tensorflow::GetStepSequenceResponse>(Arena*);
+template<> ::tensorflow::LabeledStepStats* Arena::CreateMaybeMessage<::tensorflow::LabeledStepStats>(Arena*);
+template<> ::tensorflow::LoggingRequest* Arena::CreateMaybeMessage<::tensorflow::LoggingRequest>(Arena*);
+template<> ::tensorflow::LoggingResponse* Arena::CreateMaybeMessage<::tensorflow::LoggingResponse>(Arena*);
+template<> ::tensorflow::RecvBufRequest* Arena::CreateMaybeMessage<::tensorflow::RecvBufRequest>(Arena*);
+template<> ::tensorflow::RecvBufResponse* Arena::CreateMaybeMessage<::tensorflow::RecvBufResponse>(Arena*);
+template<> ::tensorflow::RecvTensorRequest* Arena::CreateMaybeMessage<::tensorflow::RecvTensorRequest>(Arena*);
+template<> ::tensorflow::RecvTensorResponse* Arena::CreateMaybeMessage<::tensorflow::RecvTensorResponse>(Arena*);
+template<> ::tensorflow::RegisterGraphRequest* Arena::CreateMaybeMessage<::tensorflow::RegisterGraphRequest>(Arena*);
+template<> ::tensorflow::RegisterGraphResponse* Arena::CreateMaybeMessage<::tensorflow::RegisterGraphResponse>(Arena*);
+template<> ::tensorflow::RunGraphRequest* Arena::CreateMaybeMessage<::tensorflow::RunGraphRequest>(Arena*);
+template<> ::tensorflow::RunGraphResponse* Arena::CreateMaybeMessage<::tensorflow::RunGraphResponse>(Arena*);
+template<> ::tensorflow::StepSequence* Arena::CreateMaybeMessage<::tensorflow::StepSequence>(Arena*);
+template<> ::tensorflow::TraceOpts* Arena::CreateMaybeMessage<::tensorflow::TraceOpts>(Arena*);
+template<> ::tensorflow::TracingRequest* Arena::CreateMaybeMessage<::tensorflow::TracingRequest>(Arena*);
+template<> ::tensorflow::TracingResponse* Arena::CreateMaybeMessage<::tensorflow::TracingResponse>(Arena*);
+}  // namespace protobuf
+}  // namespace google
+namespace tensorflow {
+
+// ===================================================================
+
+class GetStatusRequest : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.GetStatusRequest) */ {
+ public:
+  GetStatusRequest();
+  virtual ~GetStatusRequest();
+
+  GetStatusRequest(const GetStatusRequest& from);
+
+  inline GetStatusRequest& operator=(const GetStatusRequest& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  GetStatusRequest(GetStatusRequest&& from) noexcept
+    : GetStatusRequest() {
+    *this = ::std::move(from);
+  }
+
+  inline GetStatusRequest& operator=(GetStatusRequest&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const GetStatusRequest& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const GetStatusRequest* internal_default_instance() {
+    return reinterpret_cast<const GetStatusRequest*>(
+               &_GetStatusRequest_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    0;
+
+  void UnsafeArenaSwap(GetStatusRequest* other);
+  void Swap(GetStatusRequest* other);
+  friend void swap(GetStatusRequest& a, GetStatusRequest& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline GetStatusRequest* New() const final {
+    return CreateMaybeMessage<GetStatusRequest>(NULL);
+  }
+
+  GetStatusRequest* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<GetStatusRequest>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const GetStatusRequest& from);
+  void MergeFrom(const GetStatusRequest& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(GetStatusRequest* other);
+  protected:
+  explicit GetStatusRequest(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // @@protoc_insertion_point(class_scope:tensorflow.GetStatusRequest)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fprotobuf_2fworker_2eproto;
+};
+// -------------------------------------------------------------------
+
+class GetStatusResponse : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.GetStatusResponse) */ {
+ public:
+  GetStatusResponse();
+  virtual ~GetStatusResponse();
+
+  GetStatusResponse(const GetStatusResponse& from);
+
+  inline GetStatusResponse& operator=(const GetStatusResponse& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  GetStatusResponse(GetStatusResponse&& from) noexcept
+    : GetStatusResponse() {
+    *this = ::std::move(from);
+  }
+
+  inline GetStatusResponse& operator=(GetStatusResponse&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const GetStatusResponse& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const GetStatusResponse* internal_default_instance() {
+    return reinterpret_cast<const GetStatusResponse*>(
+               &_GetStatusResponse_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    1;
+
+  void UnsafeArenaSwap(GetStatusResponse* other);
+  void Swap(GetStatusResponse* other);
+  friend void swap(GetStatusResponse& a, GetStatusResponse& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline GetStatusResponse* New() const final {
+    return CreateMaybeMessage<GetStatusResponse>(NULL);
+  }
+
+  GetStatusResponse* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<GetStatusResponse>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const GetStatusResponse& from);
+  void MergeFrom(const GetStatusResponse& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(GetStatusResponse* other);
+  protected:
+  explicit GetStatusResponse(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // repeated .tensorflow.DeviceAttributes device_attributes = 1;
+  int device_attributes_size() const;
+  void clear_device_attributes();
+  static const int kDeviceAttributesFieldNumber = 1;
+  ::tensorflow::DeviceAttributes* mutable_device_attributes(int index);
+  ::google::protobuf::RepeatedPtrField< ::tensorflow::DeviceAttributes >*
+      mutable_device_attributes();
+  const ::tensorflow::DeviceAttributes& device_attributes(int index) const;
+  ::tensorflow::DeviceAttributes* add_device_attributes();
+  const ::google::protobuf::RepeatedPtrField< ::tensorflow::DeviceAttributes >&
+      device_attributes() const;
+
+  // @@protoc_insertion_point(class_scope:tensorflow.GetStatusResponse)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  ::google::protobuf::RepeatedPtrField< ::tensorflow::DeviceAttributes > device_attributes_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fprotobuf_2fworker_2eproto;
+};
+// -------------------------------------------------------------------
+
+class CreateWorkerSessionRequest : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.CreateWorkerSessionRequest) */ {
+ public:
+  CreateWorkerSessionRequest();
+  virtual ~CreateWorkerSessionRequest();
+
+  CreateWorkerSessionRequest(const CreateWorkerSessionRequest& from);
+
+  inline CreateWorkerSessionRequest& operator=(const CreateWorkerSessionRequest& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  CreateWorkerSessionRequest(CreateWorkerSessionRequest&& from) noexcept
+    : CreateWorkerSessionRequest() {
+    *this = ::std::move(from);
+  }
+
+  inline CreateWorkerSessionRequest& operator=(CreateWorkerSessionRequest&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const CreateWorkerSessionRequest& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const CreateWorkerSessionRequest* internal_default_instance() {
+    return reinterpret_cast<const CreateWorkerSessionRequest*>(
+               &_CreateWorkerSessionRequest_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    2;
+
+  void UnsafeArenaSwap(CreateWorkerSessionRequest* other);
+  void Swap(CreateWorkerSessionRequest* other);
+  friend void swap(CreateWorkerSessionRequest& a, CreateWorkerSessionRequest& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline CreateWorkerSessionRequest* New() const final {
+    return CreateMaybeMessage<CreateWorkerSessionRequest>(NULL);
+  }
+
+  CreateWorkerSessionRequest* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<CreateWorkerSessionRequest>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const CreateWorkerSessionRequest& from);
+  void MergeFrom(const CreateWorkerSessionRequest& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(CreateWorkerSessionRequest* other);
+  protected:
+  explicit CreateWorkerSessionRequest(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // string session_handle = 1;
+  void clear_session_handle();
+  static const int kSessionHandleFieldNumber = 1;
+  const ::std::string& session_handle() const;
+  void set_session_handle(const ::std::string& value);
+  #if LANG_CXX11
+  void set_session_handle(::std::string&& value);
+  #endif
+  void set_session_handle(const char* value);
+  void set_session_handle(const char* value, size_t size);
+  ::std::string* mutable_session_handle();
+  ::std::string* release_session_handle();
+  void set_allocated_session_handle(::std::string* session_handle);
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  ::std::string* unsafe_arena_release_session_handle();
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  void unsafe_arena_set_allocated_session_handle(
+      ::std::string* session_handle);
+
+  // .tensorflow.ServerDef server_def = 2;
+  bool has_server_def() const;
+  void clear_server_def();
+  static const int kServerDefFieldNumber = 2;
+  const ::tensorflow::ServerDef& server_def() const;
+  ::tensorflow::ServerDef* release_server_def();
+  ::tensorflow::ServerDef* mutable_server_def();
+  void set_allocated_server_def(::tensorflow::ServerDef* server_def);
+  void unsafe_arena_set_allocated_server_def(
+      ::tensorflow::ServerDef* server_def);
+  ::tensorflow::ServerDef* unsafe_arena_release_server_def();
+
+  // bool isolate_session_state = 3;
+  void clear_isolate_session_state();
+  static const int kIsolateSessionStateFieldNumber = 3;
+  bool isolate_session_state() const;
+  void set_isolate_session_state(bool value);
+
+  // @@protoc_insertion_point(class_scope:tensorflow.CreateWorkerSessionRequest)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  ::google::protobuf::internal::ArenaStringPtr session_handle_;
+  ::tensorflow::ServerDef* server_def_;
+  bool isolate_session_state_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fprotobuf_2fworker_2eproto;
+};
+// -------------------------------------------------------------------
+
+class CreateWorkerSessionResponse : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.CreateWorkerSessionResponse) */ {
+ public:
+  CreateWorkerSessionResponse();
+  virtual ~CreateWorkerSessionResponse();
+
+  CreateWorkerSessionResponse(const CreateWorkerSessionResponse& from);
+
+  inline CreateWorkerSessionResponse& operator=(const CreateWorkerSessionResponse& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  CreateWorkerSessionResponse(CreateWorkerSessionResponse&& from) noexcept
+    : CreateWorkerSessionResponse() {
+    *this = ::std::move(from);
+  }
+
+  inline CreateWorkerSessionResponse& operator=(CreateWorkerSessionResponse&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const CreateWorkerSessionResponse& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const CreateWorkerSessionResponse* internal_default_instance() {
+    return reinterpret_cast<const CreateWorkerSessionResponse*>(
+               &_CreateWorkerSessionResponse_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    3;
+
+  void UnsafeArenaSwap(CreateWorkerSessionResponse* other);
+  void Swap(CreateWorkerSessionResponse* other);
+  friend void swap(CreateWorkerSessionResponse& a, CreateWorkerSessionResponse& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline CreateWorkerSessionResponse* New() const final {
+    return CreateMaybeMessage<CreateWorkerSessionResponse>(NULL);
+  }
+
+  CreateWorkerSessionResponse* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<CreateWorkerSessionResponse>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const CreateWorkerSessionResponse& from);
+  void MergeFrom(const CreateWorkerSessionResponse& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(CreateWorkerSessionResponse* other);
+  protected:
+  explicit CreateWorkerSessionResponse(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // @@protoc_insertion_point(class_scope:tensorflow.CreateWorkerSessionResponse)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fprotobuf_2fworker_2eproto;
+};
+// -------------------------------------------------------------------
+
+class DeleteWorkerSessionRequest : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.DeleteWorkerSessionRequest) */ {
+ public:
+  DeleteWorkerSessionRequest();
+  virtual ~DeleteWorkerSessionRequest();
+
+  DeleteWorkerSessionRequest(const DeleteWorkerSessionRequest& from);
+
+  inline DeleteWorkerSessionRequest& operator=(const DeleteWorkerSessionRequest& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  DeleteWorkerSessionRequest(DeleteWorkerSessionRequest&& from) noexcept
+    : DeleteWorkerSessionRequest() {
+    *this = ::std::move(from);
+  }
+
+  inline DeleteWorkerSessionRequest& operator=(DeleteWorkerSessionRequest&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const DeleteWorkerSessionRequest& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const DeleteWorkerSessionRequest* internal_default_instance() {
+    return reinterpret_cast<const DeleteWorkerSessionRequest*>(
+               &_DeleteWorkerSessionRequest_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    4;
+
+  void UnsafeArenaSwap(DeleteWorkerSessionRequest* other);
+  void Swap(DeleteWorkerSessionRequest* other);
+  friend void swap(DeleteWorkerSessionRequest& a, DeleteWorkerSessionRequest& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline DeleteWorkerSessionRequest* New() const final {
+    return CreateMaybeMessage<DeleteWorkerSessionRequest>(NULL);
+  }
+
+  DeleteWorkerSessionRequest* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<DeleteWorkerSessionRequest>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const DeleteWorkerSessionRequest& from);
+  void MergeFrom(const DeleteWorkerSessionRequest& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(DeleteWorkerSessionRequest* other);
+  protected:
+  explicit DeleteWorkerSessionRequest(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // string session_handle = 1;
+  void clear_session_handle();
+  static const int kSessionHandleFieldNumber = 1;
+  const ::std::string& session_handle() const;
+  void set_session_handle(const ::std::string& value);
+  #if LANG_CXX11
+  void set_session_handle(::std::string&& value);
+  #endif
+  void set_session_handle(const char* value);
+  void set_session_handle(const char* value, size_t size);
+  ::std::string* mutable_session_handle();
+  ::std::string* release_session_handle();
+  void set_allocated_session_handle(::std::string* session_handle);
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  ::std::string* unsafe_arena_release_session_handle();
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  void unsafe_arena_set_allocated_session_handle(
+      ::std::string* session_handle);
+
+  // @@protoc_insertion_point(class_scope:tensorflow.DeleteWorkerSessionRequest)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  ::google::protobuf::internal::ArenaStringPtr session_handle_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fprotobuf_2fworker_2eproto;
+};
+// -------------------------------------------------------------------
+
+class DeleteWorkerSessionResponse : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.DeleteWorkerSessionResponse) */ {
+ public:
+  DeleteWorkerSessionResponse();
+  virtual ~DeleteWorkerSessionResponse();
+
+  DeleteWorkerSessionResponse(const DeleteWorkerSessionResponse& from);
+
+  inline DeleteWorkerSessionResponse& operator=(const DeleteWorkerSessionResponse& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  DeleteWorkerSessionResponse(DeleteWorkerSessionResponse&& from) noexcept
+    : DeleteWorkerSessionResponse() {
+    *this = ::std::move(from);
+  }
+
+  inline DeleteWorkerSessionResponse& operator=(DeleteWorkerSessionResponse&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const DeleteWorkerSessionResponse& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const DeleteWorkerSessionResponse* internal_default_instance() {
+    return reinterpret_cast<const DeleteWorkerSessionResponse*>(
+               &_DeleteWorkerSessionResponse_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    5;
+
+  void UnsafeArenaSwap(DeleteWorkerSessionResponse* other);
+  void Swap(DeleteWorkerSessionResponse* other);
+  friend void swap(DeleteWorkerSessionResponse& a, DeleteWorkerSessionResponse& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline DeleteWorkerSessionResponse* New() const final {
+    return CreateMaybeMessage<DeleteWorkerSessionResponse>(NULL);
+  }
+
+  DeleteWorkerSessionResponse* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<DeleteWorkerSessionResponse>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const DeleteWorkerSessionResponse& from);
+  void MergeFrom(const DeleteWorkerSessionResponse& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(DeleteWorkerSessionResponse* other);
+  protected:
+  explicit DeleteWorkerSessionResponse(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // @@protoc_insertion_point(class_scope:tensorflow.DeleteWorkerSessionResponse)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fprotobuf_2fworker_2eproto;
+};
+// -------------------------------------------------------------------
+
+class RegisterGraphRequest : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.RegisterGraphRequest) */ {
+ public:
+  RegisterGraphRequest();
+  virtual ~RegisterGraphRequest();
+
+  RegisterGraphRequest(const RegisterGraphRequest& from);
+
+  inline RegisterGraphRequest& operator=(const RegisterGraphRequest& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  RegisterGraphRequest(RegisterGraphRequest&& from) noexcept
+    : RegisterGraphRequest() {
+    *this = ::std::move(from);
+  }
+
+  inline RegisterGraphRequest& operator=(RegisterGraphRequest&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const RegisterGraphRequest& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const RegisterGraphRequest* internal_default_instance() {
+    return reinterpret_cast<const RegisterGraphRequest*>(
+               &_RegisterGraphRequest_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    6;
+
+  void UnsafeArenaSwap(RegisterGraphRequest* other);
+  void Swap(RegisterGraphRequest* other);
+  friend void swap(RegisterGraphRequest& a, RegisterGraphRequest& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline RegisterGraphRequest* New() const final {
+    return CreateMaybeMessage<RegisterGraphRequest>(NULL);
+  }
+
+  RegisterGraphRequest* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<RegisterGraphRequest>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const RegisterGraphRequest& from);
+  void MergeFrom(const RegisterGraphRequest& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(RegisterGraphRequest* other);
+  protected:
+  explicit RegisterGraphRequest(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // string session_handle = 1;
+  void clear_session_handle();
+  static const int kSessionHandleFieldNumber = 1;
+  const ::std::string& session_handle() const;
+  void set_session_handle(const ::std::string& value);
+  #if LANG_CXX11
+  void set_session_handle(::std::string&& value);
+  #endif
+  void set_session_handle(const char* value);
+  void set_session_handle(const char* value, size_t size);
+  ::std::string* mutable_session_handle();
+  ::std::string* release_session_handle();
+  void set_allocated_session_handle(::std::string* session_handle);
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  ::std::string* unsafe_arena_release_session_handle();
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  void unsafe_arena_set_allocated_session_handle(
+      ::std::string* session_handle);
+
+  // .tensorflow.GraphDef graph_def = 2;
+  bool has_graph_def() const;
+  void clear_graph_def();
+  static const int kGraphDefFieldNumber = 2;
+  const ::tensorflow::GraphDef& graph_def() const;
+  ::tensorflow::GraphDef* release_graph_def();
+  ::tensorflow::GraphDef* mutable_graph_def();
+  void set_allocated_graph_def(::tensorflow::GraphDef* graph_def);
+  void unsafe_arena_set_allocated_graph_def(
+      ::tensorflow::GraphDef* graph_def);
+  ::tensorflow::GraphDef* unsafe_arena_release_graph_def();
+
+  // .tensorflow.GraphOptions graph_options = 4;
+  bool has_graph_options() const;
+  void clear_graph_options();
+  static const int kGraphOptionsFieldNumber = 4;
+  const ::tensorflow::GraphOptions& graph_options() const;
+  ::tensorflow::GraphOptions* release_graph_options();
+  ::tensorflow::GraphOptions* mutable_graph_options();
+  void set_allocated_graph_options(::tensorflow::GraphOptions* graph_options);
+  void unsafe_arena_set_allocated_graph_options(
+      ::tensorflow::GraphOptions* graph_options);
+  ::tensorflow::GraphOptions* unsafe_arena_release_graph_options();
+
+  // .tensorflow.DebugOptions debug_options = 5;
+  bool has_debug_options() const;
+  void clear_debug_options();
+  static const int kDebugOptionsFieldNumber = 5;
+  const ::tensorflow::DebugOptions& debug_options() const;
+  ::tensorflow::DebugOptions* release_debug_options();
+  ::tensorflow::DebugOptions* mutable_debug_options();
+  void set_allocated_debug_options(::tensorflow::DebugOptions* debug_options);
+  void unsafe_arena_set_allocated_debug_options(
+      ::tensorflow::DebugOptions* debug_options);
+  ::tensorflow::DebugOptions* unsafe_arena_release_debug_options();
+
+  // int64 collective_graph_key = 7;
+  void clear_collective_graph_key();
+  static const int kCollectiveGraphKeyFieldNumber = 7;
+  ::google::protobuf::int64 collective_graph_key() const;
+  void set_collective_graph_key(::google::protobuf::int64 value);
+
+  // bool create_worker_session_called = 6;
+  void clear_create_worker_session_called();
+  static const int kCreateWorkerSessionCalledFieldNumber = 6;
+  bool create_worker_session_called() const;
+  void set_create_worker_session_called(bool value);
+
+  // bool has_control_flow = 3 [deprecated = true];
+  PROTOBUF_DEPRECATED void clear_has_control_flow();
+  PROTOBUF_DEPRECATED static const int kHasControlFlowFieldNumber = 3;
+  PROTOBUF_DEPRECATED bool has_control_flow() const;
+  PROTOBUF_DEPRECATED void set_has_control_flow(bool value);
+
+  // @@protoc_insertion_point(class_scope:tensorflow.RegisterGraphRequest)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  ::google::protobuf::internal::ArenaStringPtr session_handle_;
+  ::tensorflow::GraphDef* graph_def_;
+  ::tensorflow::GraphOptions* graph_options_;
+  ::tensorflow::DebugOptions* debug_options_;
+  ::google::protobuf::int64 collective_graph_key_;
+  bool create_worker_session_called_;
+  bool has_control_flow_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fprotobuf_2fworker_2eproto;
+};
+// -------------------------------------------------------------------
+
+class RegisterGraphResponse : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.RegisterGraphResponse) */ {
+ public:
+  RegisterGraphResponse();
+  virtual ~RegisterGraphResponse();
+
+  RegisterGraphResponse(const RegisterGraphResponse& from);
+
+  inline RegisterGraphResponse& operator=(const RegisterGraphResponse& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  RegisterGraphResponse(RegisterGraphResponse&& from) noexcept
+    : RegisterGraphResponse() {
+    *this = ::std::move(from);
+  }
+
+  inline RegisterGraphResponse& operator=(RegisterGraphResponse&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const RegisterGraphResponse& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const RegisterGraphResponse* internal_default_instance() {
+    return reinterpret_cast<const RegisterGraphResponse*>(
+               &_RegisterGraphResponse_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    7;
+
+  void UnsafeArenaSwap(RegisterGraphResponse* other);
+  void Swap(RegisterGraphResponse* other);
+  friend void swap(RegisterGraphResponse& a, RegisterGraphResponse& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline RegisterGraphResponse* New() const final {
+    return CreateMaybeMessage<RegisterGraphResponse>(NULL);
+  }
+
+  RegisterGraphResponse* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<RegisterGraphResponse>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const RegisterGraphResponse& from);
+  void MergeFrom(const RegisterGraphResponse& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(RegisterGraphResponse* other);
+  protected:
+  explicit RegisterGraphResponse(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // string graph_handle = 1;
+  void clear_graph_handle();
+  static const int kGraphHandleFieldNumber = 1;
+  const ::std::string& graph_handle() const;
+  void set_graph_handle(const ::std::string& value);
+  #if LANG_CXX11
+  void set_graph_handle(::std::string&& value);
+  #endif
+  void set_graph_handle(const char* value);
+  void set_graph_handle(const char* value, size_t size);
+  ::std::string* mutable_graph_handle();
+  ::std::string* release_graph_handle();
+  void set_allocated_graph_handle(::std::string* graph_handle);
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  ::std::string* unsafe_arena_release_graph_handle();
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  void unsafe_arena_set_allocated_graph_handle(
+      ::std::string* graph_handle);
+
+  // @@protoc_insertion_point(class_scope:tensorflow.RegisterGraphResponse)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  ::google::protobuf::internal::ArenaStringPtr graph_handle_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fprotobuf_2fworker_2eproto;
+};
+// -------------------------------------------------------------------
+
+class DeregisterGraphRequest : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.DeregisterGraphRequest) */ {
+ public:
+  DeregisterGraphRequest();
+  virtual ~DeregisterGraphRequest();
+
+  DeregisterGraphRequest(const DeregisterGraphRequest& from);
+
+  inline DeregisterGraphRequest& operator=(const DeregisterGraphRequest& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  DeregisterGraphRequest(DeregisterGraphRequest&& from) noexcept
+    : DeregisterGraphRequest() {
+    *this = ::std::move(from);
+  }
+
+  inline DeregisterGraphRequest& operator=(DeregisterGraphRequest&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const DeregisterGraphRequest& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const DeregisterGraphRequest* internal_default_instance() {
+    return reinterpret_cast<const DeregisterGraphRequest*>(
+               &_DeregisterGraphRequest_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    8;
+
+  void UnsafeArenaSwap(DeregisterGraphRequest* other);
+  void Swap(DeregisterGraphRequest* other);
+  friend void swap(DeregisterGraphRequest& a, DeregisterGraphRequest& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline DeregisterGraphRequest* New() const final {
+    return CreateMaybeMessage<DeregisterGraphRequest>(NULL);
+  }
+
+  DeregisterGraphRequest* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<DeregisterGraphRequest>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const DeregisterGraphRequest& from);
+  void MergeFrom(const DeregisterGraphRequest& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(DeregisterGraphRequest* other);
+  protected:
+  explicit DeregisterGraphRequest(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // string graph_handle = 1;
+  void clear_graph_handle();
+  static const int kGraphHandleFieldNumber = 1;
+  const ::std::string& graph_handle() const;
+  void set_graph_handle(const ::std::string& value);
+  #if LANG_CXX11
+  void set_graph_handle(::std::string&& value);
+  #endif
+  void set_graph_handle(const char* value);
+  void set_graph_handle(const char* value, size_t size);
+  ::std::string* mutable_graph_handle();
+  ::std::string* release_graph_handle();
+  void set_allocated_graph_handle(::std::string* graph_handle);
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  ::std::string* unsafe_arena_release_graph_handle();
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  void unsafe_arena_set_allocated_graph_handle(
+      ::std::string* graph_handle);
+
+  // string session_handle = 2;
+  void clear_session_handle();
+  static const int kSessionHandleFieldNumber = 2;
+  const ::std::string& session_handle() const;
+  void set_session_handle(const ::std::string& value);
+  #if LANG_CXX11
+  void set_session_handle(::std::string&& value);
+  #endif
+  void set_session_handle(const char* value);
+  void set_session_handle(const char* value, size_t size);
+  ::std::string* mutable_session_handle();
+  ::std::string* release_session_handle();
+  void set_allocated_session_handle(::std::string* session_handle);
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  ::std::string* unsafe_arena_release_session_handle();
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  void unsafe_arena_set_allocated_session_handle(
+      ::std::string* session_handle);
+
+  // bool create_worker_session_called = 3;
+  void clear_create_worker_session_called();
+  static const int kCreateWorkerSessionCalledFieldNumber = 3;
+  bool create_worker_session_called() const;
+  void set_create_worker_session_called(bool value);
+
+  // @@protoc_insertion_point(class_scope:tensorflow.DeregisterGraphRequest)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  ::google::protobuf::internal::ArenaStringPtr graph_handle_;
+  ::google::protobuf::internal::ArenaStringPtr session_handle_;
+  bool create_worker_session_called_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fprotobuf_2fworker_2eproto;
+};
+// -------------------------------------------------------------------
+
+class DeregisterGraphResponse : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.DeregisterGraphResponse) */ {
+ public:
+  DeregisterGraphResponse();
+  virtual ~DeregisterGraphResponse();
+
+  DeregisterGraphResponse(const DeregisterGraphResponse& from);
+
+  inline DeregisterGraphResponse& operator=(const DeregisterGraphResponse& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  DeregisterGraphResponse(DeregisterGraphResponse&& from) noexcept
+    : DeregisterGraphResponse() {
+    *this = ::std::move(from);
+  }
+
+  inline DeregisterGraphResponse& operator=(DeregisterGraphResponse&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const DeregisterGraphResponse& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const DeregisterGraphResponse* internal_default_instance() {
+    return reinterpret_cast<const DeregisterGraphResponse*>(
+               &_DeregisterGraphResponse_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    9;
+
+  void UnsafeArenaSwap(DeregisterGraphResponse* other);
+  void Swap(DeregisterGraphResponse* other);
+  friend void swap(DeregisterGraphResponse& a, DeregisterGraphResponse& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline DeregisterGraphResponse* New() const final {
+    return CreateMaybeMessage<DeregisterGraphResponse>(NULL);
+  }
+
+  DeregisterGraphResponse* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<DeregisterGraphResponse>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const DeregisterGraphResponse& from);
+  void MergeFrom(const DeregisterGraphResponse& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(DeregisterGraphResponse* other);
+  protected:
+  explicit DeregisterGraphResponse(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // @@protoc_insertion_point(class_scope:tensorflow.DeregisterGraphResponse)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fprotobuf_2fworker_2eproto;
+};
+// -------------------------------------------------------------------
+
+class CleanupAllRequest : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.CleanupAllRequest) */ {
+ public:
+  CleanupAllRequest();
+  virtual ~CleanupAllRequest();
+
+  CleanupAllRequest(const CleanupAllRequest& from);
+
+  inline CleanupAllRequest& operator=(const CleanupAllRequest& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  CleanupAllRequest(CleanupAllRequest&& from) noexcept
+    : CleanupAllRequest() {
+    *this = ::std::move(from);
+  }
+
+  inline CleanupAllRequest& operator=(CleanupAllRequest&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const CleanupAllRequest& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const CleanupAllRequest* internal_default_instance() {
+    return reinterpret_cast<const CleanupAllRequest*>(
+               &_CleanupAllRequest_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    10;
+
+  void UnsafeArenaSwap(CleanupAllRequest* other);
+  void Swap(CleanupAllRequest* other);
+  friend void swap(CleanupAllRequest& a, CleanupAllRequest& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline CleanupAllRequest* New() const final {
+    return CreateMaybeMessage<CleanupAllRequest>(NULL);
+  }
+
+  CleanupAllRequest* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<CleanupAllRequest>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const CleanupAllRequest& from);
+  void MergeFrom(const CleanupAllRequest& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(CleanupAllRequest* other);
+  protected:
+  explicit CleanupAllRequest(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // repeated string container = 1;
+  int container_size() const;
+  void clear_container();
+  static const int kContainerFieldNumber = 1;
+  const ::std::string& container(int index) const;
+  ::std::string* mutable_container(int index);
+  void set_container(int index, const ::std::string& value);
+  #if LANG_CXX11
+  void set_container(int index, ::std::string&& value);
+  #endif
+  void set_container(int index, const char* value);
+  void set_container(int index, const char* value, size_t size);
+  ::std::string* add_container();
+  void add_container(const ::std::string& value);
+  #if LANG_CXX11
+  void add_container(::std::string&& value);
+  #endif
+  void add_container(const char* value);
+  void add_container(const char* value, size_t size);
+  const ::google::protobuf::RepeatedPtrField<::std::string>& container() const;
+  ::google::protobuf::RepeatedPtrField<::std::string>* mutable_container();
+
+  // @@protoc_insertion_point(class_scope:tensorflow.CleanupAllRequest)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  ::google::protobuf::RepeatedPtrField<::std::string> container_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fprotobuf_2fworker_2eproto;
+};
+// -------------------------------------------------------------------
+
+class CleanupAllResponse : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.CleanupAllResponse) */ {
+ public:
+  CleanupAllResponse();
+  virtual ~CleanupAllResponse();
+
+  CleanupAllResponse(const CleanupAllResponse& from);
+
+  inline CleanupAllResponse& operator=(const CleanupAllResponse& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  CleanupAllResponse(CleanupAllResponse&& from) noexcept
+    : CleanupAllResponse() {
+    *this = ::std::move(from);
+  }
+
+  inline CleanupAllResponse& operator=(CleanupAllResponse&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const CleanupAllResponse& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const CleanupAllResponse* internal_default_instance() {
+    return reinterpret_cast<const CleanupAllResponse*>(
+               &_CleanupAllResponse_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    11;
+
+  void UnsafeArenaSwap(CleanupAllResponse* other);
+  void Swap(CleanupAllResponse* other);
+  friend void swap(CleanupAllResponse& a, CleanupAllResponse& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline CleanupAllResponse* New() const final {
+    return CreateMaybeMessage<CleanupAllResponse>(NULL);
+  }
+
+  CleanupAllResponse* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<CleanupAllResponse>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const CleanupAllResponse& from);
+  void MergeFrom(const CleanupAllResponse& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(CleanupAllResponse* other);
+  protected:
+  explicit CleanupAllResponse(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // @@protoc_insertion_point(class_scope:tensorflow.CleanupAllResponse)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fprotobuf_2fworker_2eproto;
+};
+// -------------------------------------------------------------------
+
+class ExecutorOpts : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.ExecutorOpts) */ {
+ public:
+  ExecutorOpts();
+  virtual ~ExecutorOpts();
+
+  ExecutorOpts(const ExecutorOpts& from);
+
+  inline ExecutorOpts& operator=(const ExecutorOpts& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  ExecutorOpts(ExecutorOpts&& from) noexcept
+    : ExecutorOpts() {
+    *this = ::std::move(from);
+  }
+
+  inline ExecutorOpts& operator=(ExecutorOpts&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const ExecutorOpts& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const ExecutorOpts* internal_default_instance() {
+    return reinterpret_cast<const ExecutorOpts*>(
+               &_ExecutorOpts_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    12;
+
+  void UnsafeArenaSwap(ExecutorOpts* other);
+  void Swap(ExecutorOpts* other);
+  friend void swap(ExecutorOpts& a, ExecutorOpts& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline ExecutorOpts* New() const final {
+    return CreateMaybeMessage<ExecutorOpts>(NULL);
+  }
+
+  ExecutorOpts* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<ExecutorOpts>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const ExecutorOpts& from);
+  void MergeFrom(const ExecutorOpts& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(ExecutorOpts* other);
+  protected:
+  explicit ExecutorOpts(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // bool record_costs = 1;
+  void clear_record_costs();
+  static const int kRecordCostsFieldNumber = 1;
+  bool record_costs() const;
+  void set_record_costs(bool value);
+
+  // bool record_timeline = 3;
+  void clear_record_timeline();
+  static const int kRecordTimelineFieldNumber = 3;
+  bool record_timeline() const;
+  void set_record_timeline(bool value);
+
+  // bool record_partition_graphs = 4;
+  void clear_record_partition_graphs();
+  static const int kRecordPartitionGraphsFieldNumber = 4;
+  bool record_partition_graphs() const;
+  void set_record_partition_graphs(bool value);
+
+  // bool report_tensor_allocations_upon_oom = 5;
+  void clear_report_tensor_allocations_upon_oom();
+  static const int kReportTensorAllocationsUponOomFieldNumber = 5;
+  bool report_tensor_allocations_upon_oom() const;
+  void set_report_tensor_allocations_upon_oom(bool value);
+
+  // @@protoc_insertion_point(class_scope:tensorflow.ExecutorOpts)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  bool record_costs_;
+  bool record_timeline_;
+  bool record_partition_graphs_;
+  bool report_tensor_allocations_upon_oom_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fprotobuf_2fworker_2eproto;
+};
+// -------------------------------------------------------------------
+
+class RunGraphRequest : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.RunGraphRequest) */ {
+ public:
+  RunGraphRequest();
+  virtual ~RunGraphRequest();
+
+  RunGraphRequest(const RunGraphRequest& from);
+
+  inline RunGraphRequest& operator=(const RunGraphRequest& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  RunGraphRequest(RunGraphRequest&& from) noexcept
+    : RunGraphRequest() {
+    *this = ::std::move(from);
+  }
+
+  inline RunGraphRequest& operator=(RunGraphRequest&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const RunGraphRequest& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const RunGraphRequest* internal_default_instance() {
+    return reinterpret_cast<const RunGraphRequest*>(
+               &_RunGraphRequest_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    13;
+
+  void UnsafeArenaSwap(RunGraphRequest* other);
+  void Swap(RunGraphRequest* other);
+  friend void swap(RunGraphRequest& a, RunGraphRequest& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline RunGraphRequest* New() const final {
+    return CreateMaybeMessage<RunGraphRequest>(NULL);
+  }
+
+  RunGraphRequest* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<RunGraphRequest>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const RunGraphRequest& from);
+  void MergeFrom(const RunGraphRequest& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(RunGraphRequest* other);
+  protected:
+  explicit RunGraphRequest(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // repeated .tensorflow.NamedTensorProto send = 3;
+  int send_size() const;
+  void clear_send();
+  static const int kSendFieldNumber = 3;
+  ::tensorflow::NamedTensorProto* mutable_send(int index);
+  ::google::protobuf::RepeatedPtrField< ::tensorflow::NamedTensorProto >*
+      mutable_send();
+  const ::tensorflow::NamedTensorProto& send(int index) const;
+  ::tensorflow::NamedTensorProto* add_send();
+  const ::google::protobuf::RepeatedPtrField< ::tensorflow::NamedTensorProto >&
+      send() const;
+
+  // repeated string recv_key = 4;
+  int recv_key_size() const;
+  void clear_recv_key();
+  static const int kRecvKeyFieldNumber = 4;
+  const ::std::string& recv_key(int index) const;
+  ::std::string* mutable_recv_key(int index);
+  void set_recv_key(int index, const ::std::string& value);
+  #if LANG_CXX11
+  void set_recv_key(int index, ::std::string&& value);
+  #endif
+  void set_recv_key(int index, const char* value);
+  void set_recv_key(int index, const char* value, size_t size);
+  ::std::string* add_recv_key();
+  void add_recv_key(const ::std::string& value);
+  #if LANG_CXX11
+  void add_recv_key(::std::string&& value);
+  #endif
+  void add_recv_key(const char* value);
+  void add_recv_key(const char* value, size_t size);
+  const ::google::protobuf::RepeatedPtrField<::std::string>& recv_key() const;
+  ::google::protobuf::RepeatedPtrField<::std::string>* mutable_recv_key();
+
+  // string graph_handle = 1;
+  void clear_graph_handle();
+  static const int kGraphHandleFieldNumber = 1;
+  const ::std::string& graph_handle() const;
+  void set_graph_handle(const ::std::string& value);
+  #if LANG_CXX11
+  void set_graph_handle(::std::string&& value);
+  #endif
+  void set_graph_handle(const char* value);
+  void set_graph_handle(const char* value, size_t size);
+  ::std::string* mutable_graph_handle();
+  ::std::string* release_graph_handle();
+  void set_allocated_graph_handle(::std::string* graph_handle);
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  ::std::string* unsafe_arena_release_graph_handle();
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  void unsafe_arena_set_allocated_graph_handle(
+      ::std::string* graph_handle);
+
+  // string session_handle = 8;
+  void clear_session_handle();
+  static const int kSessionHandleFieldNumber = 8;
+  const ::std::string& session_handle() const;
+  void set_session_handle(const ::std::string& value);
+  #if LANG_CXX11
+  void set_session_handle(::std::string&& value);
+  #endif
+  void set_session_handle(const char* value);
+  void set_session_handle(const char* value, size_t size);
+  ::std::string* mutable_session_handle();
+  ::std::string* release_session_handle();
+  void set_allocated_session_handle(::std::string* session_handle);
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  ::std::string* unsafe_arena_release_session_handle();
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  void unsafe_arena_set_allocated_session_handle(
+      ::std::string* session_handle);
+
+  // .tensorflow.ExecutorOpts exec_opts = 5;
+  bool has_exec_opts() const;
+  void clear_exec_opts();
+  static const int kExecOptsFieldNumber = 5;
+  const ::tensorflow::ExecutorOpts& exec_opts() const;
+  ::tensorflow::ExecutorOpts* release_exec_opts();
+  ::tensorflow::ExecutorOpts* mutable_exec_opts();
+  void set_allocated_exec_opts(::tensorflow::ExecutorOpts* exec_opts);
+  void unsafe_arena_set_allocated_exec_opts(
+      ::tensorflow::ExecutorOpts* exec_opts);
+  ::tensorflow::ExecutorOpts* unsafe_arena_release_exec_opts();
+
+  // int64 step_id = 2;
+  void clear_step_id();
+  static const int kStepIdFieldNumber = 2;
+  ::google::protobuf::int64 step_id() const;
+  void set_step_id(::google::protobuf::int64 value);
+
+  // bool create_worker_session_called = 10;
+  void clear_create_worker_session_called();
+  static const int kCreateWorkerSessionCalledFieldNumber = 10;
+  bool create_worker_session_called() const;
+  void set_create_worker_session_called(bool value);
+
+  // bool is_partial = 6;
+  void clear_is_partial();
+  static const int kIsPartialFieldNumber = 6;
+  bool is_partial() const;
+  void set_is_partial(bool value);
+
+  // bool is_last_partial_run = 7;
+  void clear_is_last_partial_run();
+  static const int kIsLastPartialRunFieldNumber = 7;
+  bool is_last_partial_run() const;
+  void set_is_last_partial_run(bool value);
+
+  // bool store_errors_in_response_body = 9;
+  void clear_store_errors_in_response_body();
+  static const int kStoreErrorsInResponseBodyFieldNumber = 9;
+  bool store_errors_in_response_body() const;
+  void set_store_errors_in_response_body(bool value);
+
+  // @@protoc_insertion_point(class_scope:tensorflow.RunGraphRequest)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  ::google::protobuf::RepeatedPtrField< ::tensorflow::NamedTensorProto > send_;
+  ::google::protobuf::RepeatedPtrField<::std::string> recv_key_;
+  ::google::protobuf::internal::ArenaStringPtr graph_handle_;
+  ::google::protobuf::internal::ArenaStringPtr session_handle_;
+  ::tensorflow::ExecutorOpts* exec_opts_;
+  ::google::protobuf::int64 step_id_;
+  bool create_worker_session_called_;
+  bool is_partial_;
+  bool is_last_partial_run_;
+  bool store_errors_in_response_body_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fprotobuf_2fworker_2eproto;
+};
+// -------------------------------------------------------------------
+
+class RunGraphResponse : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.RunGraphResponse) */ {
+ public:
+  RunGraphResponse();
+  virtual ~RunGraphResponse();
+
+  RunGraphResponse(const RunGraphResponse& from);
+
+  inline RunGraphResponse& operator=(const RunGraphResponse& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  RunGraphResponse(RunGraphResponse&& from) noexcept
+    : RunGraphResponse() {
+    *this = ::std::move(from);
+  }
+
+  inline RunGraphResponse& operator=(RunGraphResponse&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const RunGraphResponse& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const RunGraphResponse* internal_default_instance() {
+    return reinterpret_cast<const RunGraphResponse*>(
+               &_RunGraphResponse_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    14;
+
+  void UnsafeArenaSwap(RunGraphResponse* other);
+  void Swap(RunGraphResponse* other);
+  friend void swap(RunGraphResponse& a, RunGraphResponse& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline RunGraphResponse* New() const final {
+    return CreateMaybeMessage<RunGraphResponse>(NULL);
+  }
+
+  RunGraphResponse* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<RunGraphResponse>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const RunGraphResponse& from);
+  void MergeFrom(const RunGraphResponse& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(RunGraphResponse* other);
+  protected:
+  explicit RunGraphResponse(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // repeated .tensorflow.NamedTensorProto recv = 1;
+  int recv_size() const;
+  void clear_recv();
+  static const int kRecvFieldNumber = 1;
+  ::tensorflow::NamedTensorProto* mutable_recv(int index);
+  ::google::protobuf::RepeatedPtrField< ::tensorflow::NamedTensorProto >*
+      mutable_recv();
+  const ::tensorflow::NamedTensorProto& recv(int index) const;
+  ::tensorflow::NamedTensorProto* add_recv();
+  const ::google::protobuf::RepeatedPtrField< ::tensorflow::NamedTensorProto >&
+      recv() const;
+
+  // repeated .tensorflow.GraphDef partition_graph = 4;
+  int partition_graph_size() const;
+  void clear_partition_graph();
+  static const int kPartitionGraphFieldNumber = 4;
+  ::tensorflow::GraphDef* mutable_partition_graph(int index);
+  ::google::protobuf::RepeatedPtrField< ::tensorflow::GraphDef >*
+      mutable_partition_graph();
+  const ::tensorflow::GraphDef& partition_graph(int index) const;
+  ::tensorflow::GraphDef* add_partition_graph();
+  const ::google::protobuf::RepeatedPtrField< ::tensorflow::GraphDef >&
+      partition_graph() const;
+
+  // string status_error_message = 6;
+  void clear_status_error_message();
+  static const int kStatusErrorMessageFieldNumber = 6;
+  const ::std::string& status_error_message() const;
+  void set_status_error_message(const ::std::string& value);
+  #if LANG_CXX11
+  void set_status_error_message(::std::string&& value);
+  #endif
+  void set_status_error_message(const char* value);
+  void set_status_error_message(const char* value, size_t size);
+  ::std::string* mutable_status_error_message();
+  ::std::string* release_status_error_message();
+  void set_allocated_status_error_message(::std::string* status_error_message);
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  ::std::string* unsafe_arena_release_status_error_message();
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  void unsafe_arena_set_allocated_status_error_message(
+      ::std::string* status_error_message);
+
+  // .tensorflow.StepStats step_stats = 2;
+  bool has_step_stats() const;
+  void clear_step_stats();
+  static const int kStepStatsFieldNumber = 2;
+  const ::tensorflow::StepStats& step_stats() const;
+  ::tensorflow::StepStats* release_step_stats();
+  ::tensorflow::StepStats* mutable_step_stats();
+  void set_allocated_step_stats(::tensorflow::StepStats* step_stats);
+  void unsafe_arena_set_allocated_step_stats(
+      ::tensorflow::StepStats* step_stats);
+  ::tensorflow::StepStats* unsafe_arena_release_step_stats();
+
+  // .tensorflow.CostGraphDef cost_graph = 3;
+  bool has_cost_graph() const;
+  void clear_cost_graph();
+  static const int kCostGraphFieldNumber = 3;
+  const ::tensorflow::CostGraphDef& cost_graph() const;
+  ::tensorflow::CostGraphDef* release_cost_graph();
+  ::tensorflow::CostGraphDef* mutable_cost_graph();
+  void set_allocated_cost_graph(::tensorflow::CostGraphDef* cost_graph);
+  void unsafe_arena_set_allocated_cost_graph(
+      ::tensorflow::CostGraphDef* cost_graph);
+  ::tensorflow::CostGraphDef* unsafe_arena_release_cost_graph();
+
+  // .tensorflow.error.Code status_code = 5;
+  void clear_status_code();
+  static const int kStatusCodeFieldNumber = 5;
+  ::tensorflow::error::Code status_code() const;
+  void set_status_code(::tensorflow::error::Code value);
+
+  // @@protoc_insertion_point(class_scope:tensorflow.RunGraphResponse)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  ::google::protobuf::RepeatedPtrField< ::tensorflow::NamedTensorProto > recv_;
+  ::google::protobuf::RepeatedPtrField< ::tensorflow::GraphDef > partition_graph_;
+  ::google::protobuf::internal::ArenaStringPtr status_error_message_;
+  ::tensorflow::StepStats* step_stats_;
+  ::tensorflow::CostGraphDef* cost_graph_;
+  int status_code_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fprotobuf_2fworker_2eproto;
+};
+// -------------------------------------------------------------------
+
+class CleanupGraphRequest : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.CleanupGraphRequest) */ {
+ public:
+  CleanupGraphRequest();
+  virtual ~CleanupGraphRequest();
+
+  CleanupGraphRequest(const CleanupGraphRequest& from);
+
+  inline CleanupGraphRequest& operator=(const CleanupGraphRequest& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  CleanupGraphRequest(CleanupGraphRequest&& from) noexcept
+    : CleanupGraphRequest() {
+    *this = ::std::move(from);
+  }
+
+  inline CleanupGraphRequest& operator=(CleanupGraphRequest&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const CleanupGraphRequest& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const CleanupGraphRequest* internal_default_instance() {
+    return reinterpret_cast<const CleanupGraphRequest*>(
+               &_CleanupGraphRequest_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    15;
+
+  void UnsafeArenaSwap(CleanupGraphRequest* other);
+  void Swap(CleanupGraphRequest* other);
+  friend void swap(CleanupGraphRequest& a, CleanupGraphRequest& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline CleanupGraphRequest* New() const final {
+    return CreateMaybeMessage<CleanupGraphRequest>(NULL);
+  }
+
+  CleanupGraphRequest* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<CleanupGraphRequest>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const CleanupGraphRequest& from);
+  void MergeFrom(const CleanupGraphRequest& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(CleanupGraphRequest* other);
+  protected:
+  explicit CleanupGraphRequest(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // int64 step_id = 1;
+  void clear_step_id();
+  static const int kStepIdFieldNumber = 1;
+  ::google::protobuf::int64 step_id() const;
+  void set_step_id(::google::protobuf::int64 value);
+
+  // @@protoc_insertion_point(class_scope:tensorflow.CleanupGraphRequest)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  ::google::protobuf::int64 step_id_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fprotobuf_2fworker_2eproto;
+};
+// -------------------------------------------------------------------
+
+class CleanupGraphResponse : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.CleanupGraphResponse) */ {
+ public:
+  CleanupGraphResponse();
+  virtual ~CleanupGraphResponse();
+
+  CleanupGraphResponse(const CleanupGraphResponse& from);
+
+  inline CleanupGraphResponse& operator=(const CleanupGraphResponse& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  CleanupGraphResponse(CleanupGraphResponse&& from) noexcept
+    : CleanupGraphResponse() {
+    *this = ::std::move(from);
+  }
+
+  inline CleanupGraphResponse& operator=(CleanupGraphResponse&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const CleanupGraphResponse& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const CleanupGraphResponse* internal_default_instance() {
+    return reinterpret_cast<const CleanupGraphResponse*>(
+               &_CleanupGraphResponse_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    16;
+
+  void UnsafeArenaSwap(CleanupGraphResponse* other);
+  void Swap(CleanupGraphResponse* other);
+  friend void swap(CleanupGraphResponse& a, CleanupGraphResponse& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline CleanupGraphResponse* New() const final {
+    return CreateMaybeMessage<CleanupGraphResponse>(NULL);
+  }
+
+  CleanupGraphResponse* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<CleanupGraphResponse>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const CleanupGraphResponse& from);
+  void MergeFrom(const CleanupGraphResponse& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(CleanupGraphResponse* other);
+  protected:
+  explicit CleanupGraphResponse(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // @@protoc_insertion_point(class_scope:tensorflow.CleanupGraphResponse)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fprotobuf_2fworker_2eproto;
+};
+// -------------------------------------------------------------------
+
+class RecvTensorRequest : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.RecvTensorRequest) */ {
+ public:
+  RecvTensorRequest();
+  virtual ~RecvTensorRequest();
+
+  RecvTensorRequest(const RecvTensorRequest& from);
+
+  inline RecvTensorRequest& operator=(const RecvTensorRequest& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  RecvTensorRequest(RecvTensorRequest&& from) noexcept
+    : RecvTensorRequest() {
+    *this = ::std::move(from);
+  }
+
+  inline RecvTensorRequest& operator=(RecvTensorRequest&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const RecvTensorRequest& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const RecvTensorRequest* internal_default_instance() {
+    return reinterpret_cast<const RecvTensorRequest*>(
+               &_RecvTensorRequest_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    17;
+
+  void UnsafeArenaSwap(RecvTensorRequest* other);
+  void Swap(RecvTensorRequest* other);
+  friend void swap(RecvTensorRequest& a, RecvTensorRequest& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline RecvTensorRequest* New() const final {
+    return CreateMaybeMessage<RecvTensorRequest>(NULL);
+  }
+
+  RecvTensorRequest* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<RecvTensorRequest>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const RecvTensorRequest& from);
+  void MergeFrom(const RecvTensorRequest& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(RecvTensorRequest* other);
+  protected:
+  explicit RecvTensorRequest(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // string rendezvous_key = 2;
+  void clear_rendezvous_key();
+  static const int kRendezvousKeyFieldNumber = 2;
+  const ::std::string& rendezvous_key() const;
+  void set_rendezvous_key(const ::std::string& value);
+  #if LANG_CXX11
+  void set_rendezvous_key(::std::string&& value);
+  #endif
+  void set_rendezvous_key(const char* value);
+  void set_rendezvous_key(const char* value, size_t size);
+  ::std::string* mutable_rendezvous_key();
+  ::std::string* release_rendezvous_key();
+  void set_allocated_rendezvous_key(::std::string* rendezvous_key);
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  ::std::string* unsafe_arena_release_rendezvous_key();
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  void unsafe_arena_set_allocated_rendezvous_key(
+      ::std::string* rendezvous_key);
+
+  // .tensorflow.DeviceLocality client_locality = 4;
+  bool has_client_locality() const;
+  void clear_client_locality();
+  static const int kClientLocalityFieldNumber = 4;
+  const ::tensorflow::DeviceLocality& client_locality() const;
+  ::tensorflow::DeviceLocality* release_client_locality();
+  ::tensorflow::DeviceLocality* mutable_client_locality();
+  void set_allocated_client_locality(::tensorflow::DeviceLocality* client_locality);
+  void unsafe_arena_set_allocated_client_locality(
+      ::tensorflow::DeviceLocality* client_locality);
+  ::tensorflow::DeviceLocality* unsafe_arena_release_client_locality();
+
+  // .tensorflow.DeviceLocality server_locality = 5;
+  bool has_server_locality() const;
+  void clear_server_locality();
+  static const int kServerLocalityFieldNumber = 5;
+  const ::tensorflow::DeviceLocality& server_locality() const;
+  ::tensorflow::DeviceLocality* release_server_locality();
+  ::tensorflow::DeviceLocality* mutable_server_locality();
+  void set_allocated_server_locality(::tensorflow::DeviceLocality* server_locality);
+  void unsafe_arena_set_allocated_server_locality(
+      ::tensorflow::DeviceLocality* server_locality);
+  ::tensorflow::DeviceLocality* unsafe_arena_release_server_locality();
+
+  // .google.protobuf.Any transport_options = 6;
+  bool has_transport_options() const;
+  void clear_transport_options();
+  static const int kTransportOptionsFieldNumber = 6;
+  const ::google::protobuf::Any& transport_options() const;
+  ::google::protobuf::Any* release_transport_options();
+  ::google::protobuf::Any* mutable_transport_options();
+  void set_allocated_transport_options(::google::protobuf::Any* transport_options);
+  void unsafe_arena_set_allocated_transport_options(
+      ::google::protobuf::Any* transport_options);
+  ::google::protobuf::Any* unsafe_arena_release_transport_options();
+
+  // int64 step_id = 1;
+  void clear_step_id();
+  static const int kStepIdFieldNumber = 1;
+  ::google::protobuf::int64 step_id() const;
+  void set_step_id(::google::protobuf::int64 value);
+
+  // int64 request_id = 7;
+  void clear_request_id();
+  static const int kRequestIdFieldNumber = 7;
+  ::google::protobuf::int64 request_id() const;
+  void set_request_id(::google::protobuf::int64 value);
+
+  // bool dma_ok = 3;
+  void clear_dma_ok();
+  static const int kDmaOkFieldNumber = 3;
+  bool dma_ok() const;
+  void set_dma_ok(bool value);
+
+  // @@protoc_insertion_point(class_scope:tensorflow.RecvTensorRequest)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  ::google::protobuf::internal::ArenaStringPtr rendezvous_key_;
+  ::tensorflow::DeviceLocality* client_locality_;
+  ::tensorflow::DeviceLocality* server_locality_;
+  ::google::protobuf::Any* transport_options_;
+  ::google::protobuf::int64 step_id_;
+  ::google::protobuf::int64 request_id_;
+  bool dma_ok_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fprotobuf_2fworker_2eproto;
+};
+// -------------------------------------------------------------------
+
+class RecvTensorResponse : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.RecvTensorResponse) */ {
+ public:
+  RecvTensorResponse();
+  virtual ~RecvTensorResponse();
+
+  RecvTensorResponse(const RecvTensorResponse& from);
+
+  inline RecvTensorResponse& operator=(const RecvTensorResponse& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  RecvTensorResponse(RecvTensorResponse&& from) noexcept
+    : RecvTensorResponse() {
+    *this = ::std::move(from);
+  }
+
+  inline RecvTensorResponse& operator=(RecvTensorResponse&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const RecvTensorResponse& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const RecvTensorResponse* internal_default_instance() {
+    return reinterpret_cast<const RecvTensorResponse*>(
+               &_RecvTensorResponse_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    18;
+
+  void UnsafeArenaSwap(RecvTensorResponse* other);
+  void Swap(RecvTensorResponse* other);
+  friend void swap(RecvTensorResponse& a, RecvTensorResponse& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline RecvTensorResponse* New() const final {
+    return CreateMaybeMessage<RecvTensorResponse>(NULL);
+  }
+
+  RecvTensorResponse* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<RecvTensorResponse>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const RecvTensorResponse& from);
+  void MergeFrom(const RecvTensorResponse& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(RecvTensorResponse* other);
+  protected:
+  explicit RecvTensorResponse(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // .tensorflow.TensorProto tensor = 1;
+  bool has_tensor() const;
+  void clear_tensor();
+  static const int kTensorFieldNumber = 1;
+  const ::tensorflow::TensorProto& tensor() const;
+  ::tensorflow::TensorProto* release_tensor();
+  ::tensorflow::TensorProto* mutable_tensor();
+  void set_allocated_tensor(::tensorflow::TensorProto* tensor);
+  void unsafe_arena_set_allocated_tensor(
+      ::tensorflow::TensorProto* tensor);
+  ::tensorflow::TensorProto* unsafe_arena_release_tensor();
+
+  // .google.protobuf.Any transport_options = 4;
+  bool has_transport_options() const;
+  void clear_transport_options();
+  static const int kTransportOptionsFieldNumber = 4;
+  const ::google::protobuf::Any& transport_options() const;
+  ::google::protobuf::Any* release_transport_options();
+  ::google::protobuf::Any* mutable_transport_options();
+  void set_allocated_transport_options(::google::protobuf::Any* transport_options);
+  void unsafe_arena_set_allocated_transport_options(
+      ::google::protobuf::Any* transport_options);
+  ::google::protobuf::Any* unsafe_arena_release_transport_options();
+
+  // int64 send_start_micros = 3;
+  void clear_send_start_micros();
+  static const int kSendStartMicrosFieldNumber = 3;
+  ::google::protobuf::int64 send_start_micros() const;
+  void set_send_start_micros(::google::protobuf::int64 value);
+
+  // bool is_dead = 2;
+  void clear_is_dead();
+  static const int kIsDeadFieldNumber = 2;
+  bool is_dead() const;
+  void set_is_dead(bool value);
+
+  // @@protoc_insertion_point(class_scope:tensorflow.RecvTensorResponse)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  ::tensorflow::TensorProto* tensor_;
+  ::google::protobuf::Any* transport_options_;
+  ::google::protobuf::int64 send_start_micros_;
+  bool is_dead_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fprotobuf_2fworker_2eproto;
+};
+// -------------------------------------------------------------------
+
+class LoggingRequest : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.LoggingRequest) */ {
+ public:
+  LoggingRequest();
+  virtual ~LoggingRequest();
+
+  LoggingRequest(const LoggingRequest& from);
+
+  inline LoggingRequest& operator=(const LoggingRequest& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  LoggingRequest(LoggingRequest&& from) noexcept
+    : LoggingRequest() {
+    *this = ::std::move(from);
+  }
+
+  inline LoggingRequest& operator=(LoggingRequest&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const LoggingRequest& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const LoggingRequest* internal_default_instance() {
+    return reinterpret_cast<const LoggingRequest*>(
+               &_LoggingRequest_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    19;
+
+  void UnsafeArenaSwap(LoggingRequest* other);
+  void Swap(LoggingRequest* other);
+  friend void swap(LoggingRequest& a, LoggingRequest& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline LoggingRequest* New() const final {
+    return CreateMaybeMessage<LoggingRequest>(NULL);
+  }
+
+  LoggingRequest* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<LoggingRequest>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const LoggingRequest& from);
+  void MergeFrom(const LoggingRequest& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(LoggingRequest* other);
+  protected:
+  explicit LoggingRequest(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // repeated int64 fetch_step_id = 3;
+  int fetch_step_id_size() const;
+  void clear_fetch_step_id();
+  static const int kFetchStepIdFieldNumber = 3;
+  ::google::protobuf::int64 fetch_step_id(int index) const;
+  void set_fetch_step_id(int index, ::google::protobuf::int64 value);
+  void add_fetch_step_id(::google::protobuf::int64 value);
+  const ::google::protobuf::RepeatedField< ::google::protobuf::int64 >&
+      fetch_step_id() const;
+  ::google::protobuf::RepeatedField< ::google::protobuf::int64 >*
+      mutable_fetch_step_id();
+
+  // bool enable_rpc_logging = 1;
+  void clear_enable_rpc_logging();
+  static const int kEnableRpcLoggingFieldNumber = 1;
+  bool enable_rpc_logging() const;
+  void set_enable_rpc_logging(bool value);
+
+  // bool disable_rpc_logging = 4;
+  void clear_disable_rpc_logging();
+  static const int kDisableRpcLoggingFieldNumber = 4;
+  bool disable_rpc_logging() const;
+  void set_disable_rpc_logging(bool value);
+
+  // bool clear = 2;
+  void clear_clear();
+  static const int kClearFieldNumber = 2;
+  bool clear() const;
+  void set_clear(bool value);
+
+  // @@protoc_insertion_point(class_scope:tensorflow.LoggingRequest)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  ::google::protobuf::RepeatedField< ::google::protobuf::int64 > fetch_step_id_;
+  mutable std::atomic<int> _fetch_step_id_cached_byte_size_;
+  bool enable_rpc_logging_;
+  bool disable_rpc_logging_;
+  bool clear_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fprotobuf_2fworker_2eproto;
+};
+// -------------------------------------------------------------------
+
+class LabeledStepStats : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.LabeledStepStats) */ {
+ public:
+  LabeledStepStats();
+  virtual ~LabeledStepStats();
+
+  LabeledStepStats(const LabeledStepStats& from);
+
+  inline LabeledStepStats& operator=(const LabeledStepStats& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  LabeledStepStats(LabeledStepStats&& from) noexcept
+    : LabeledStepStats() {
+    *this = ::std::move(from);
+  }
+
+  inline LabeledStepStats& operator=(LabeledStepStats&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const LabeledStepStats& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const LabeledStepStats* internal_default_instance() {
+    return reinterpret_cast<const LabeledStepStats*>(
+               &_LabeledStepStats_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    20;
+
+  void UnsafeArenaSwap(LabeledStepStats* other);
+  void Swap(LabeledStepStats* other);
+  friend void swap(LabeledStepStats& a, LabeledStepStats& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline LabeledStepStats* New() const final {
+    return CreateMaybeMessage<LabeledStepStats>(NULL);
+  }
+
+  LabeledStepStats* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<LabeledStepStats>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const LabeledStepStats& from);
+  void MergeFrom(const LabeledStepStats& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(LabeledStepStats* other);
+  protected:
+  explicit LabeledStepStats(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // .tensorflow.StepStats step_stats = 2;
+  bool has_step_stats() const;
+  void clear_step_stats();
+  static const int kStepStatsFieldNumber = 2;
+  const ::tensorflow::StepStats& step_stats() const;
+  ::tensorflow::StepStats* release_step_stats();
+  ::tensorflow::StepStats* mutable_step_stats();
+  void set_allocated_step_stats(::tensorflow::StepStats* step_stats);
+  void unsafe_arena_set_allocated_step_stats(
+      ::tensorflow::StepStats* step_stats);
+  ::tensorflow::StepStats* unsafe_arena_release_step_stats();
+
+  // int64 step_id = 1;
+  void clear_step_id();
+  static const int kStepIdFieldNumber = 1;
+  ::google::protobuf::int64 step_id() const;
+  void set_step_id(::google::protobuf::int64 value);
+
+  // @@protoc_insertion_point(class_scope:tensorflow.LabeledStepStats)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  ::tensorflow::StepStats* step_stats_;
+  ::google::protobuf::int64 step_id_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fprotobuf_2fworker_2eproto;
+};
+// -------------------------------------------------------------------
+
+class LoggingResponse : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.LoggingResponse) */ {
+ public:
+  LoggingResponse();
+  virtual ~LoggingResponse();
+
+  LoggingResponse(const LoggingResponse& from);
+
+  inline LoggingResponse& operator=(const LoggingResponse& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  LoggingResponse(LoggingResponse&& from) noexcept
+    : LoggingResponse() {
+    *this = ::std::move(from);
+  }
+
+  inline LoggingResponse& operator=(LoggingResponse&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const LoggingResponse& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const LoggingResponse* internal_default_instance() {
+    return reinterpret_cast<const LoggingResponse*>(
+               &_LoggingResponse_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    21;
+
+  void UnsafeArenaSwap(LoggingResponse* other);
+  void Swap(LoggingResponse* other);
+  friend void swap(LoggingResponse& a, LoggingResponse& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline LoggingResponse* New() const final {
+    return CreateMaybeMessage<LoggingResponse>(NULL);
+  }
+
+  LoggingResponse* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<LoggingResponse>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const LoggingResponse& from);
+  void MergeFrom(const LoggingResponse& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(LoggingResponse* other);
+  protected:
+  explicit LoggingResponse(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // repeated .tensorflow.LabeledStepStats step = 1;
+  int step_size() const;
+  void clear_step();
+  static const int kStepFieldNumber = 1;
+  ::tensorflow::LabeledStepStats* mutable_step(int index);
+  ::google::protobuf::RepeatedPtrField< ::tensorflow::LabeledStepStats >*
+      mutable_step();
+  const ::tensorflow::LabeledStepStats& step(int index) const;
+  ::tensorflow::LabeledStepStats* add_step();
+  const ::google::protobuf::RepeatedPtrField< ::tensorflow::LabeledStepStats >&
+      step() const;
+
+  // @@protoc_insertion_point(class_scope:tensorflow.LoggingResponse)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  ::google::protobuf::RepeatedPtrField< ::tensorflow::LabeledStepStats > step_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fprotobuf_2fworker_2eproto;
+};
+// -------------------------------------------------------------------
+
+class TraceOpts : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.TraceOpts) */ {
+ public:
+  TraceOpts();
+  virtual ~TraceOpts();
+
+  TraceOpts(const TraceOpts& from);
+
+  inline TraceOpts& operator=(const TraceOpts& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  TraceOpts(TraceOpts&& from) noexcept
+    : TraceOpts() {
+    *this = ::std::move(from);
+  }
+
+  inline TraceOpts& operator=(TraceOpts&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const TraceOpts& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const TraceOpts* internal_default_instance() {
+    return reinterpret_cast<const TraceOpts*>(
+               &_TraceOpts_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    22;
+
+  void UnsafeArenaSwap(TraceOpts* other);
+  void Swap(TraceOpts* other);
+  friend void swap(TraceOpts& a, TraceOpts& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline TraceOpts* New() const final {
+    return CreateMaybeMessage<TraceOpts>(NULL);
+  }
+
+  TraceOpts* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<TraceOpts>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const TraceOpts& from);
+  void MergeFrom(const TraceOpts& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(TraceOpts* other);
+  protected:
+  explicit TraceOpts(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // double duration = 1;
+  void clear_duration();
+  static const int kDurationFieldNumber = 1;
+  double duration() const;
+  void set_duration(double value);
+
+  // bool use_step_profiler = 2;
+  void clear_use_step_profiler();
+  static const int kUseStepProfilerFieldNumber = 2;
+  bool use_step_profiler() const;
+  void set_use_step_profiler(bool value);
+
+  // bool use_kernel_profiler = 3;
+  void clear_use_kernel_profiler();
+  static const int kUseKernelProfilerFieldNumber = 3;
+  bool use_kernel_profiler() const;
+  void set_use_kernel_profiler(bool value);
+
+  // bool use_extended_profiler = 4;
+  void clear_use_extended_profiler();
+  static const int kUseExtendedProfilerFieldNumber = 4;
+  bool use_extended_profiler() const;
+  void set_use_extended_profiler(bool value);
+
+  // bool use_gpu_profiler = 5;
+  void clear_use_gpu_profiler();
+  static const int kUseGpuProfilerFieldNumber = 5;
+  bool use_gpu_profiler() const;
+  void set_use_gpu_profiler(bool value);
+
+  // bool use_sample_profiler = 6;
+  void clear_use_sample_profiler();
+  static const int kUseSampleProfilerFieldNumber = 6;
+  bool use_sample_profiler() const;
+  void set_use_sample_profiler(bool value);
+
+  // @@protoc_insertion_point(class_scope:tensorflow.TraceOpts)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  double duration_;
+  bool use_step_profiler_;
+  bool use_kernel_profiler_;
+  bool use_extended_profiler_;
+  bool use_gpu_profiler_;
+  bool use_sample_profiler_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fprotobuf_2fworker_2eproto;
+};
+// -------------------------------------------------------------------
+
+class TracingRequest : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.TracingRequest) */ {
+ public:
+  TracingRequest();
+  virtual ~TracingRequest();
+
+  TracingRequest(const TracingRequest& from);
+
+  inline TracingRequest& operator=(const TracingRequest& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  TracingRequest(TracingRequest&& from) noexcept
+    : TracingRequest() {
+    *this = ::std::move(from);
+  }
+
+  inline TracingRequest& operator=(TracingRequest&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const TracingRequest& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const TracingRequest* internal_default_instance() {
+    return reinterpret_cast<const TracingRequest*>(
+               &_TracingRequest_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    23;
+
+  void UnsafeArenaSwap(TracingRequest* other);
+  void Swap(TracingRequest* other);
+  friend void swap(TracingRequest& a, TracingRequest& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline TracingRequest* New() const final {
+    return CreateMaybeMessage<TracingRequest>(NULL);
+  }
+
+  TracingRequest* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<TracingRequest>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const TracingRequest& from);
+  void MergeFrom(const TracingRequest& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(TracingRequest* other);
+  protected:
+  explicit TracingRequest(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // .tensorflow.TraceOpts options = 1;
+  bool has_options() const;
+  void clear_options();
+  static const int kOptionsFieldNumber = 1;
+  const ::tensorflow::TraceOpts& options() const;
+  ::tensorflow::TraceOpts* release_options();
+  ::tensorflow::TraceOpts* mutable_options();
+  void set_allocated_options(::tensorflow::TraceOpts* options);
+  void unsafe_arena_set_allocated_options(
+      ::tensorflow::TraceOpts* options);
+  ::tensorflow::TraceOpts* unsafe_arena_release_options();
+
+  // @@protoc_insertion_point(class_scope:tensorflow.TracingRequest)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  ::tensorflow::TraceOpts* options_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fprotobuf_2fworker_2eproto;
+};
+// -------------------------------------------------------------------
+
+class TracingResponse : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.TracingResponse) */ {
+ public:
+  TracingResponse();
+  virtual ~TracingResponse();
+
+  TracingResponse(const TracingResponse& from);
+
+  inline TracingResponse& operator=(const TracingResponse& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  TracingResponse(TracingResponse&& from) noexcept
+    : TracingResponse() {
+    *this = ::std::move(from);
+  }
+
+  inline TracingResponse& operator=(TracingResponse&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const TracingResponse& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const TracingResponse* internal_default_instance() {
+    return reinterpret_cast<const TracingResponse*>(
+               &_TracingResponse_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    24;
+
+  void UnsafeArenaSwap(TracingResponse* other);
+  void Swap(TracingResponse* other);
+  friend void swap(TracingResponse& a, TracingResponse& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline TracingResponse* New() const final {
+    return CreateMaybeMessage<TracingResponse>(NULL);
+  }
+
+  TracingResponse* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<TracingResponse>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const TracingResponse& from);
+  void MergeFrom(const TracingResponse& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(TracingResponse* other);
+  protected:
+  explicit TracingResponse(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // @@protoc_insertion_point(class_scope:tensorflow.TracingResponse)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fprotobuf_2fworker_2eproto;
+};
+// -------------------------------------------------------------------
+
+class RecvBufRequest : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.RecvBufRequest) */ {
+ public:
+  RecvBufRequest();
+  virtual ~RecvBufRequest();
+
+  RecvBufRequest(const RecvBufRequest& from);
+
+  inline RecvBufRequest& operator=(const RecvBufRequest& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  RecvBufRequest(RecvBufRequest&& from) noexcept
+    : RecvBufRequest() {
+    *this = ::std::move(from);
+  }
+
+  inline RecvBufRequest& operator=(RecvBufRequest&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const RecvBufRequest& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const RecvBufRequest* internal_default_instance() {
+    return reinterpret_cast<const RecvBufRequest*>(
+               &_RecvBufRequest_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    25;
+
+  void UnsafeArenaSwap(RecvBufRequest* other);
+  void Swap(RecvBufRequest* other);
+  friend void swap(RecvBufRequest& a, RecvBufRequest& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline RecvBufRequest* New() const final {
+    return CreateMaybeMessage<RecvBufRequest>(NULL);
+  }
+
+  RecvBufRequest* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<RecvBufRequest>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const RecvBufRequest& from);
+  void MergeFrom(const RecvBufRequest& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(RecvBufRequest* other);
+  protected:
+  explicit RecvBufRequest(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // string buf_rendezvous_key = 2;
+  void clear_buf_rendezvous_key();
+  static const int kBufRendezvousKeyFieldNumber = 2;
+  const ::std::string& buf_rendezvous_key() const;
+  void set_buf_rendezvous_key(const ::std::string& value);
+  #if LANG_CXX11
+  void set_buf_rendezvous_key(::std::string&& value);
+  #endif
+  void set_buf_rendezvous_key(const char* value);
+  void set_buf_rendezvous_key(const char* value, size_t size);
+  ::std::string* mutable_buf_rendezvous_key();
+  ::std::string* release_buf_rendezvous_key();
+  void set_allocated_buf_rendezvous_key(::std::string* buf_rendezvous_key);
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  ::std::string* unsafe_arena_release_buf_rendezvous_key();
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  void unsafe_arena_set_allocated_buf_rendezvous_key(
+      ::std::string* buf_rendezvous_key);
+
+  // string src_device = 8;
+  void clear_src_device();
+  static const int kSrcDeviceFieldNumber = 8;
+  const ::std::string& src_device() const;
+  void set_src_device(const ::std::string& value);
+  #if LANG_CXX11
+  void set_src_device(::std::string&& value);
+  #endif
+  void set_src_device(const char* value);
+  void set_src_device(const char* value, size_t size);
+  ::std::string* mutable_src_device();
+  ::std::string* release_src_device();
+  void set_allocated_src_device(::std::string* src_device);
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  ::std::string* unsafe_arena_release_src_device();
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  void unsafe_arena_set_allocated_src_device(
+      ::std::string* src_device);
+
+  // string dst_device = 9;
+  void clear_dst_device();
+  static const int kDstDeviceFieldNumber = 9;
+  const ::std::string& dst_device() const;
+  void set_dst_device(const ::std::string& value);
+  #if LANG_CXX11
+  void set_dst_device(::std::string&& value);
+  #endif
+  void set_dst_device(const char* value);
+  void set_dst_device(const char* value, size_t size);
+  ::std::string* mutable_dst_device();
+  ::std::string* release_dst_device();
+  void set_allocated_dst_device(::std::string* dst_device);
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  ::std::string* unsafe_arena_release_dst_device();
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  void unsafe_arena_set_allocated_dst_device(
+      ::std::string* dst_device);
+
+  // .tensorflow.DeviceLocality client_locality = 5;
+  bool has_client_locality() const;
+  void clear_client_locality();
+  static const int kClientLocalityFieldNumber = 5;
+  const ::tensorflow::DeviceLocality& client_locality() const;
+  ::tensorflow::DeviceLocality* release_client_locality();
+  ::tensorflow::DeviceLocality* mutable_client_locality();
+  void set_allocated_client_locality(::tensorflow::DeviceLocality* client_locality);
+  void unsafe_arena_set_allocated_client_locality(
+      ::tensorflow::DeviceLocality* client_locality);
+  ::tensorflow::DeviceLocality* unsafe_arena_release_client_locality();
+
+  // .tensorflow.DeviceLocality server_locality = 6;
+  bool has_server_locality() const;
+  void clear_server_locality();
+  static const int kServerLocalityFieldNumber = 6;
+  const ::tensorflow::DeviceLocality& server_locality() const;
+  ::tensorflow::DeviceLocality* release_server_locality();
+  ::tensorflow::DeviceLocality* mutable_server_locality();
+  void set_allocated_server_locality(::tensorflow::DeviceLocality* server_locality);
+  void unsafe_arena_set_allocated_server_locality(
+      ::tensorflow::DeviceLocality* server_locality);
+  ::tensorflow::DeviceLocality* unsafe_arena_release_server_locality();
+
+  // .google.protobuf.Any transport_options = 7;
+  bool has_transport_options() const;
+  void clear_transport_options();
+  static const int kTransportOptionsFieldNumber = 7;
+  const ::google::protobuf::Any& transport_options() const;
+  ::google::protobuf::Any* release_transport_options();
+  ::google::protobuf::Any* mutable_transport_options();
+  void set_allocated_transport_options(::google::protobuf::Any* transport_options);
+  void unsafe_arena_set_allocated_transport_options(
+      ::google::protobuf::Any* transport_options);
+  ::google::protobuf::Any* unsafe_arena_release_transport_options();
+
+  // int64 step_id = 1;
+  void clear_step_id();
+  static const int kStepIdFieldNumber = 1;
+  ::google::protobuf::int64 step_id() const;
+  void set_step_id(::google::protobuf::int64 value);
+
+  // int64 num_bytes = 3;
+  void clear_num_bytes();
+  static const int kNumBytesFieldNumber = 3;
+  ::google::protobuf::int64 num_bytes() const;
+  void set_num_bytes(::google::protobuf::int64 value);
+
+  // fixed64 buf_ptr = 4;
+  void clear_buf_ptr();
+  static const int kBufPtrFieldNumber = 4;
+  ::google::protobuf::uint64 buf_ptr() const;
+  void set_buf_ptr(::google::protobuf::uint64 value);
+
+  // @@protoc_insertion_point(class_scope:tensorflow.RecvBufRequest)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  ::google::protobuf::internal::ArenaStringPtr buf_rendezvous_key_;
+  ::google::protobuf::internal::ArenaStringPtr src_device_;
+  ::google::protobuf::internal::ArenaStringPtr dst_device_;
+  ::tensorflow::DeviceLocality* client_locality_;
+  ::tensorflow::DeviceLocality* server_locality_;
+  ::google::protobuf::Any* transport_options_;
+  ::google::protobuf::int64 step_id_;
+  ::google::protobuf::int64 num_bytes_;
+  ::google::protobuf::uint64 buf_ptr_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fprotobuf_2fworker_2eproto;
+};
+// -------------------------------------------------------------------
+
+class RecvBufResponse : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.RecvBufResponse) */ {
+ public:
+  RecvBufResponse();
+  virtual ~RecvBufResponse();
+
+  RecvBufResponse(const RecvBufResponse& from);
+
+  inline RecvBufResponse& operator=(const RecvBufResponse& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  RecvBufResponse(RecvBufResponse&& from) noexcept
+    : RecvBufResponse() {
+    *this = ::std::move(from);
+  }
+
+  inline RecvBufResponse& operator=(RecvBufResponse&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const RecvBufResponse& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const RecvBufResponse* internal_default_instance() {
+    return reinterpret_cast<const RecvBufResponse*>(
+               &_RecvBufResponse_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    26;
+
+  void UnsafeArenaSwap(RecvBufResponse* other);
+  void Swap(RecvBufResponse* other);
+  friend void swap(RecvBufResponse& a, RecvBufResponse& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline RecvBufResponse* New() const final {
+    return CreateMaybeMessage<RecvBufResponse>(NULL);
+  }
+
+  RecvBufResponse* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<RecvBufResponse>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const RecvBufResponse& from);
+  void MergeFrom(const RecvBufResponse& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(RecvBufResponse* other);
+  protected:
+  explicit RecvBufResponse(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // .google.protobuf.Any transport_options = 4;
+  bool has_transport_options() const;
+  void clear_transport_options();
+  static const int kTransportOptionsFieldNumber = 4;
+  const ::google::protobuf::Any& transport_options() const;
+  ::google::protobuf::Any* release_transport_options();
+  ::google::protobuf::Any* mutable_transport_options();
+  void set_allocated_transport_options(::google::protobuf::Any* transport_options);
+  void unsafe_arena_set_allocated_transport_options(
+      ::google::protobuf::Any* transport_options);
+  ::google::protobuf::Any* unsafe_arena_release_transport_options();
+
+  // fixed64 buf_ptr = 1;
+  void clear_buf_ptr();
+  static const int kBufPtrFieldNumber = 1;
+  ::google::protobuf::uint64 buf_ptr() const;
+  void set_buf_ptr(::google::protobuf::uint64 value);
+
+  // int64 num_bytes = 2;
+  void clear_num_bytes();
+  static const int kNumBytesFieldNumber = 2;
+  ::google::protobuf::int64 num_bytes() const;
+  void set_num_bytes(::google::protobuf::int64 value);
+
+  // int64 send_start_micros = 5;
+  void clear_send_start_micros();
+  static const int kSendStartMicrosFieldNumber = 5;
+  ::google::protobuf::int64 send_start_micros() const;
+  void set_send_start_micros(::google::protobuf::int64 value);
+
+  // bool is_dead = 3;
+  void clear_is_dead();
+  static const int kIsDeadFieldNumber = 3;
+  bool is_dead() const;
+  void set_is_dead(bool value);
+
+  // @@protoc_insertion_point(class_scope:tensorflow.RecvBufResponse)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  ::google::protobuf::Any* transport_options_;
+  ::google::protobuf::uint64 buf_ptr_;
+  ::google::protobuf::int64 num_bytes_;
+  ::google::protobuf::int64 send_start_micros_;
+  bool is_dead_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fprotobuf_2fworker_2eproto;
+};
+// -------------------------------------------------------------------
+
+class CompleteGroupRequest : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.CompleteGroupRequest) */ {
+ public:
+  CompleteGroupRequest();
+  virtual ~CompleteGroupRequest();
+
+  CompleteGroupRequest(const CompleteGroupRequest& from);
+
+  inline CompleteGroupRequest& operator=(const CompleteGroupRequest& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  CompleteGroupRequest(CompleteGroupRequest&& from) noexcept
+    : CompleteGroupRequest() {
+    *this = ::std::move(from);
+  }
+
+  inline CompleteGroupRequest& operator=(CompleteGroupRequest&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const CompleteGroupRequest& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const CompleteGroupRequest* internal_default_instance() {
+    return reinterpret_cast<const CompleteGroupRequest*>(
+               &_CompleteGroupRequest_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    27;
+
+  void UnsafeArenaSwap(CompleteGroupRequest* other);
+  void Swap(CompleteGroupRequest* other);
+  friend void swap(CompleteGroupRequest& a, CompleteGroupRequest& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline CompleteGroupRequest* New() const final {
+    return CreateMaybeMessage<CompleteGroupRequest>(NULL);
+  }
+
+  CompleteGroupRequest* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<CompleteGroupRequest>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const CompleteGroupRequest& from);
+  void MergeFrom(const CompleteGroupRequest& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(CompleteGroupRequest* other);
+  protected:
+  explicit CompleteGroupRequest(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // repeated string device_name = 4;
+  int device_name_size() const;
+  void clear_device_name();
+  static const int kDeviceNameFieldNumber = 4;
+  const ::std::string& device_name(int index) const;
+  ::std::string* mutable_device_name(int index);
+  void set_device_name(int index, const ::std::string& value);
+  #if LANG_CXX11
+  void set_device_name(int index, ::std::string&& value);
+  #endif
+  void set_device_name(int index, const char* value);
+  void set_device_name(int index, const char* value, size_t size);
+  ::std::string* add_device_name();
+  void add_device_name(const ::std::string& value);
+  #if LANG_CXX11
+  void add_device_name(::std::string&& value);
+  #endif
+  void add_device_name(const char* value);
+  void add_device_name(const char* value, size_t size);
+  const ::google::protobuf::RepeatedPtrField<::std::string>& device_name() const;
+  ::google::protobuf::RepeatedPtrField<::std::string>* mutable_device_name();
+
+  // string device_type = 3;
+  void clear_device_type();
+  static const int kDeviceTypeFieldNumber = 3;
+  const ::std::string& device_type() const;
+  void set_device_type(const ::std::string& value);
+  #if LANG_CXX11
+  void set_device_type(::std::string&& value);
+  #endif
+  void set_device_type(const char* value);
+  void set_device_type(const char* value, size_t size);
+  ::std::string* mutable_device_type();
+  ::std::string* release_device_type();
+  void set_allocated_device_type(::std::string* device_type);
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  ::std::string* unsafe_arena_release_device_type();
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  void unsafe_arena_set_allocated_device_type(
+      ::std::string* device_type);
+
+  // int32 group_key = 1;
+  void clear_group_key();
+  static const int kGroupKeyFieldNumber = 1;
+  ::google::protobuf::int32 group_key() const;
+  void set_group_key(::google::protobuf::int32 value);
+
+  // int32 group_size = 2;
+  void clear_group_size();
+  static const int kGroupSizeFieldNumber = 2;
+  ::google::protobuf::int32 group_size() const;
+  void set_group_size(::google::protobuf::int32 value);
+
+  // @@protoc_insertion_point(class_scope:tensorflow.CompleteGroupRequest)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  ::google::protobuf::RepeatedPtrField<::std::string> device_name_;
+  ::google::protobuf::internal::ArenaStringPtr device_type_;
+  ::google::protobuf::int32 group_key_;
+  ::google::protobuf::int32 group_size_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fprotobuf_2fworker_2eproto;
+};
+// -------------------------------------------------------------------
+
+class CompleteGroupResponse : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.CompleteGroupResponse) */ {
+ public:
+  CompleteGroupResponse();
+  virtual ~CompleteGroupResponse();
+
+  CompleteGroupResponse(const CompleteGroupResponse& from);
+
+  inline CompleteGroupResponse& operator=(const CompleteGroupResponse& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  CompleteGroupResponse(CompleteGroupResponse&& from) noexcept
+    : CompleteGroupResponse() {
+    *this = ::std::move(from);
+  }
+
+  inline CompleteGroupResponse& operator=(CompleteGroupResponse&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const CompleteGroupResponse& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const CompleteGroupResponse* internal_default_instance() {
+    return reinterpret_cast<const CompleteGroupResponse*>(
+               &_CompleteGroupResponse_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    28;
+
+  void UnsafeArenaSwap(CompleteGroupResponse* other);
+  void Swap(CompleteGroupResponse* other);
+  friend void swap(CompleteGroupResponse& a, CompleteGroupResponse& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline CompleteGroupResponse* New() const final {
+    return CreateMaybeMessage<CompleteGroupResponse>(NULL);
+  }
+
+  CompleteGroupResponse* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<CompleteGroupResponse>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const CompleteGroupResponse& from);
+  void MergeFrom(const CompleteGroupResponse& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(CompleteGroupResponse* other);
+  protected:
+  explicit CompleteGroupResponse(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // repeated string device_name = 5;
+  int device_name_size() const;
+  void clear_device_name();
+  static const int kDeviceNameFieldNumber = 5;
+  const ::std::string& device_name(int index) const;
+  ::std::string* mutable_device_name(int index);
+  void set_device_name(int index, const ::std::string& value);
+  #if LANG_CXX11
+  void set_device_name(int index, ::std::string&& value);
+  #endif
+  void set_device_name(int index, const char* value);
+  void set_device_name(int index, const char* value, size_t size);
+  ::std::string* add_device_name();
+  void add_device_name(const ::std::string& value);
+  #if LANG_CXX11
+  void add_device_name(::std::string&& value);
+  #endif
+  void add_device_name(const char* value);
+  void add_device_name(const char* value, size_t size);
+  const ::google::protobuf::RepeatedPtrField<::std::string>& device_name() const;
+  ::google::protobuf::RepeatedPtrField<::std::string>* mutable_device_name();
+
+  // repeated string task_name = 6;
+  int task_name_size() const;
+  void clear_task_name();
+  static const int kTaskNameFieldNumber = 6;
+  const ::std::string& task_name(int index) const;
+  ::std::string* mutable_task_name(int index);
+  void set_task_name(int index, const ::std::string& value);
+  #if LANG_CXX11
+  void set_task_name(int index, ::std::string&& value);
+  #endif
+  void set_task_name(int index, const char* value);
+  void set_task_name(int index, const char* value, size_t size);
+  ::std::string* add_task_name();
+  void add_task_name(const ::std::string& value);
+  #if LANG_CXX11
+  void add_task_name(::std::string&& value);
+  #endif
+  void add_task_name(const char* value);
+  void add_task_name(const char* value, size_t size);
+  const ::google::protobuf::RepeatedPtrField<::std::string>& task_name() const;
+  ::google::protobuf::RepeatedPtrField<::std::string>* mutable_task_name();
+
+  // string device_type = 3;
+  void clear_device_type();
+  static const int kDeviceTypeFieldNumber = 3;
+  const ::std::string& device_type() const;
+  void set_device_type(const ::std::string& value);
+  #if LANG_CXX11
+  void set_device_type(::std::string&& value);
+  #endif
+  void set_device_type(const char* value);
+  void set_device_type(const char* value, size_t size);
+  ::std::string* mutable_device_type();
+  ::std::string* release_device_type();
+  void set_allocated_device_type(::std::string* device_type);
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  ::std::string* unsafe_arena_release_device_type();
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  void unsafe_arena_set_allocated_device_type(
+      ::std::string* device_type);
+
+  // int32 group_key = 1;
+  void clear_group_key();
+  static const int kGroupKeyFieldNumber = 1;
+  ::google::protobuf::int32 group_key() const;
+  void set_group_key(::google::protobuf::int32 value);
+
+  // int32 group_size = 2;
+  void clear_group_size();
+  static const int kGroupSizeFieldNumber = 2;
+  ::google::protobuf::int32 group_size() const;
+  void set_group_size(::google::protobuf::int32 value);
+
+  // int32 num_tasks = 4;
+  void clear_num_tasks();
+  static const int kNumTasksFieldNumber = 4;
+  ::google::protobuf::int32 num_tasks() const;
+  void set_num_tasks(::google::protobuf::int32 value);
+
+  // @@protoc_insertion_point(class_scope:tensorflow.CompleteGroupResponse)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  ::google::protobuf::RepeatedPtrField<::std::string> device_name_;
+  ::google::protobuf::RepeatedPtrField<::std::string> task_name_;
+  ::google::protobuf::internal::ArenaStringPtr device_type_;
+  ::google::protobuf::int32 group_key_;
+  ::google::protobuf::int32 group_size_;
+  ::google::protobuf::int32 num_tasks_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fprotobuf_2fworker_2eproto;
+};
+// -------------------------------------------------------------------
+
+class CompleteInstanceRequest : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.CompleteInstanceRequest) */ {
+ public:
+  CompleteInstanceRequest();
+  virtual ~CompleteInstanceRequest();
+
+  CompleteInstanceRequest(const CompleteInstanceRequest& from);
+
+  inline CompleteInstanceRequest& operator=(const CompleteInstanceRequest& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  CompleteInstanceRequest(CompleteInstanceRequest&& from) noexcept
+    : CompleteInstanceRequest() {
+    *this = ::std::move(from);
+  }
+
+  inline CompleteInstanceRequest& operator=(CompleteInstanceRequest&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const CompleteInstanceRequest& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const CompleteInstanceRequest* internal_default_instance() {
+    return reinterpret_cast<const CompleteInstanceRequest*>(
+               &_CompleteInstanceRequest_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    29;
+
+  void UnsafeArenaSwap(CompleteInstanceRequest* other);
+  void Swap(CompleteInstanceRequest* other);
+  friend void swap(CompleteInstanceRequest& a, CompleteInstanceRequest& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline CompleteInstanceRequest* New() const final {
+    return CreateMaybeMessage<CompleteInstanceRequest>(NULL);
+  }
+
+  CompleteInstanceRequest* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<CompleteInstanceRequest>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const CompleteInstanceRequest& from);
+  void MergeFrom(const CompleteInstanceRequest& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(CompleteInstanceRequest* other);
+  protected:
+  explicit CompleteInstanceRequest(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // repeated int32 subdiv_offset = 9;
+  int subdiv_offset_size() const;
+  void clear_subdiv_offset();
+  static const int kSubdivOffsetFieldNumber = 9;
+  ::google::protobuf::int32 subdiv_offset(int index) const;
+  void set_subdiv_offset(int index, ::google::protobuf::int32 value);
+  void add_subdiv_offset(::google::protobuf::int32 value);
+  const ::google::protobuf::RepeatedField< ::google::protobuf::int32 >&
+      subdiv_offset() const;
+  ::google::protobuf::RepeatedField< ::google::protobuf::int32 >*
+      mutable_subdiv_offset();
+
+  // string name = 1;
+  void clear_name();
+  static const int kNameFieldNumber = 1;
+  const ::std::string& name() const;
+  void set_name(const ::std::string& value);
+  #if LANG_CXX11
+  void set_name(::std::string&& value);
+  #endif
+  void set_name(const char* value);
+  void set_name(const char* value, size_t size);
+  ::std::string* mutable_name();
+  ::std::string* release_name();
+  void set_allocated_name(::std::string* name);
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  ::std::string* unsafe_arena_release_name();
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  void unsafe_arena_set_allocated_name(
+      ::std::string* name);
+
+  // string device_type = 8;
+  void clear_device_type();
+  static const int kDeviceTypeFieldNumber = 8;
+  const ::std::string& device_type() const;
+  void set_device_type(const ::std::string& value);
+  #if LANG_CXX11
+  void set_device_type(::std::string&& value);
+  #endif
+  void set_device_type(const char* value);
+  void set_device_type(const char* value, size_t size);
+  ::std::string* mutable_device_type();
+  ::std::string* release_device_type();
+  void set_allocated_device_type(::std::string* device_type);
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  ::std::string* unsafe_arena_release_device_type();
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  void unsafe_arena_set_allocated_device_type(
+      ::std::string* device_type);
+
+  // string device = 10;
+  void clear_device();
+  static const int kDeviceFieldNumber = 10;
+  const ::std::string& device() const;
+  void set_device(const ::std::string& value);
+  #if LANG_CXX11
+  void set_device(::std::string&& value);
+  #endif
+  void set_device(const char* value);
+  void set_device(const char* value, size_t size);
+  ::std::string* mutable_device();
+  ::std::string* release_device();
+  void set_allocated_device(::std::string* device);
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  ::std::string* unsafe_arena_release_device();
+  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
+  "    string fields are deprecated and will be removed in a"
+  "    future release.")
+  void unsafe_arena_set_allocated_device(
+      ::std::string* device);
+
+  // .tensorflow.TensorShapeProto shape = 4;
+  bool has_shape() const;
+  void clear_shape();
+  static const int kShapeFieldNumber = 4;
+  const ::tensorflow::TensorShapeProto& shape() const;
+  ::tensorflow::TensorShapeProto* release_shape();
+  ::tensorflow::TensorShapeProto* mutable_shape();
+  void set_allocated_shape(::tensorflow::TensorShapeProto* shape);
+  void unsafe_arena_set_allocated_shape(
+      ::tensorflow::TensorShapeProto* shape);
+  ::tensorflow::TensorShapeProto* unsafe_arena_release_shape();
+
+  // int32 type = 2;
+  void clear_type();
+  static const int kTypeFieldNumber = 2;
+  ::google::protobuf::int32 type() const;
+  void set_type(::google::protobuf::int32 value);
+
+  // .tensorflow.DataType data_type = 3;
+  void clear_data_type();
+  static const int kDataTypeFieldNumber = 3;
+  ::tensorflow::DataType data_type() const;
+  void set_data_type(::tensorflow::DataType value);
+
+  // int32 group_key = 5;
+  void clear_group_key();
+  static const int kGroupKeyFieldNumber = 5;
+  ::google::protobuf::int32 group_key() const;
+  void set_group_key(::google::protobuf::int32 value);
+
+  // int32 group_size = 6;
+  void clear_group_size();
+  static const int kGroupSizeFieldNumber = 6;
+  ::google::protobuf::int32 group_size() const;
+  void set_group_size(::google::protobuf::int32 value);
+
+  // int32 instance_key = 7;
+  void clear_instance_key();
+  static const int kInstanceKeyFieldNumber = 7;
+  ::google::protobuf::int32 instance_key() const;
+  void set_instance_key(::google::protobuf::int32 value);
+
+  // bool is_source = 11;
+  void clear_is_source();
+  static const int kIsSourceFieldNumber = 11;
+  bool is_source() const;
+  void set_is_source(bool value);
+
+  // @@protoc_insertion_point(class_scope:tensorflow.CompleteInstanceRequest)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  ::google::protobuf::RepeatedField< ::google::protobuf::int32 > subdiv_offset_;
+  mutable std::atomic<int> _subdiv_offset_cached_byte_size_;
+  ::google::protobuf::internal::ArenaStringPtr name_;
+  ::google::protobuf::internal::ArenaStringPtr device_type_;
+  ::google::protobuf::internal::ArenaStringPtr device_;
+  ::tensorflow::TensorShapeProto* shape_;
+  ::google::protobuf::int32 type_;
+  int data_type_;
+  ::google::protobuf::int32 group_key_;
+  ::google::protobuf::int32 group_size_;
+  ::google::protobuf::int32 instance_key_;
+  bool is_source_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fprotobuf_2fworker_2eproto;
+};
+// -------------------------------------------------------------------
+
+class CompleteInstanceResponse : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.CompleteInstanceResponse) */ {
+ public:
+  CompleteInstanceResponse();
+  virtual ~CompleteInstanceResponse();
+
+  CompleteInstanceResponse(const CompleteInstanceResponse& from);
+
+  inline CompleteInstanceResponse& operator=(const CompleteInstanceResponse& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  CompleteInstanceResponse(CompleteInstanceResponse&& from) noexcept
+    : CompleteInstanceResponse() {
+    *this = ::std::move(from);
+  }
+
+  inline CompleteInstanceResponse& operator=(CompleteInstanceResponse&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const CompleteInstanceResponse& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const CompleteInstanceResponse* internal_default_instance() {
+    return reinterpret_cast<const CompleteInstanceResponse*>(
+               &_CompleteInstanceResponse_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    30;
+
+  void UnsafeArenaSwap(CompleteInstanceResponse* other);
+  void Swap(CompleteInstanceResponse* other);
+  friend void swap(CompleteInstanceResponse& a, CompleteInstanceResponse& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline CompleteInstanceResponse* New() const final {
+    return CreateMaybeMessage<CompleteInstanceResponse>(NULL);
+  }
+
+  CompleteInstanceResponse* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<CompleteInstanceResponse>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const CompleteInstanceResponse& from);
+  void MergeFrom(const CompleteInstanceResponse& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(CompleteInstanceResponse* other);
+  protected:
+  explicit CompleteInstanceResponse(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // int32 instance_key = 1;
+  void clear_instance_key();
+  static const int kInstanceKeyFieldNumber = 1;
+  ::google::protobuf::int32 instance_key() const;
+  void set_instance_key(::google::protobuf::int32 value);
+
+  // int32 source_rank = 2;
+  void clear_source_rank();
+  static const int kSourceRankFieldNumber = 2;
+  ::google::protobuf::int32 source_rank() const;
+  void set_source_rank(::google::protobuf::int32 value);
+
+  // @@protoc_insertion_point(class_scope:tensorflow.CompleteInstanceResponse)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  ::google::protobuf::int32 instance_key_;
+  ::google::protobuf::int32 source_rank_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fprotobuf_2fworker_2eproto;
+};
+// -------------------------------------------------------------------
+
+class GetStepSequenceRequest : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.GetStepSequenceRequest) */ {
+ public:
+  GetStepSequenceRequest();
+  virtual ~GetStepSequenceRequest();
+
+  GetStepSequenceRequest(const GetStepSequenceRequest& from);
+
+  inline GetStepSequenceRequest& operator=(const GetStepSequenceRequest& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  GetStepSequenceRequest(GetStepSequenceRequest&& from) noexcept
+    : GetStepSequenceRequest() {
+    *this = ::std::move(from);
+  }
+
+  inline GetStepSequenceRequest& operator=(GetStepSequenceRequest&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const GetStepSequenceRequest& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const GetStepSequenceRequest* internal_default_instance() {
+    return reinterpret_cast<const GetStepSequenceRequest*>(
+               &_GetStepSequenceRequest_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    31;
+
+  void UnsafeArenaSwap(GetStepSequenceRequest* other);
+  void Swap(GetStepSequenceRequest* other);
+  friend void swap(GetStepSequenceRequest& a, GetStepSequenceRequest& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline GetStepSequenceRequest* New() const final {
+    return CreateMaybeMessage<GetStepSequenceRequest>(NULL);
+  }
+
+  GetStepSequenceRequest* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<GetStepSequenceRequest>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const GetStepSequenceRequest& from);
+  void MergeFrom(const GetStepSequenceRequest& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(GetStepSequenceRequest* other);
+  protected:
+  explicit GetStepSequenceRequest(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // repeated int64 graph_key = 1;
+  int graph_key_size() const;
+  void clear_graph_key();
+  static const int kGraphKeyFieldNumber = 1;
+  ::google::protobuf::int64 graph_key(int index) const;
+  void set_graph_key(int index, ::google::protobuf::int64 value);
+  void add_graph_key(::google::protobuf::int64 value);
+  const ::google::protobuf::RepeatedField< ::google::protobuf::int64 >&
+      graph_key() const;
+  ::google::protobuf::RepeatedField< ::google::protobuf::int64 >*
+      mutable_graph_key();
+
+  // @@protoc_insertion_point(class_scope:tensorflow.GetStepSequenceRequest)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  ::google::protobuf::RepeatedField< ::google::protobuf::int64 > graph_key_;
+  mutable std::atomic<int> _graph_key_cached_byte_size_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fprotobuf_2fworker_2eproto;
+};
+// -------------------------------------------------------------------
+
+class StepSequence : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.StepSequence) */ {
+ public:
+  StepSequence();
+  virtual ~StepSequence();
+
+  StepSequence(const StepSequence& from);
+
+  inline StepSequence& operator=(const StepSequence& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  StepSequence(StepSequence&& from) noexcept
+    : StepSequence() {
+    *this = ::std::move(from);
+  }
+
+  inline StepSequence& operator=(StepSequence&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const StepSequence& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const StepSequence* internal_default_instance() {
+    return reinterpret_cast<const StepSequence*>(
+               &_StepSequence_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    32;
+
+  void UnsafeArenaSwap(StepSequence* other);
+  void Swap(StepSequence* other);
+  friend void swap(StepSequence& a, StepSequence& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline StepSequence* New() const final {
+    return CreateMaybeMessage<StepSequence>(NULL);
+  }
+
+  StepSequence* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<StepSequence>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const StepSequence& from);
+  void MergeFrom(const StepSequence& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(StepSequence* other);
+  protected:
+  explicit StepSequence(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // int64 graph_key = 1;
+  void clear_graph_key();
+  static const int kGraphKeyFieldNumber = 1;
+  ::google::protobuf::int64 graph_key() const;
+  void set_graph_key(::google::protobuf::int64 value);
+
+  // int64 next_step_id = 2;
+  void clear_next_step_id();
+  static const int kNextStepIdFieldNumber = 2;
+  ::google::protobuf::int64 next_step_id() const;
+  void set_next_step_id(::google::protobuf::int64 value);
+
+  // @@protoc_insertion_point(class_scope:tensorflow.StepSequence)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  ::google::protobuf::int64 graph_key_;
+  ::google::protobuf::int64 next_step_id_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fprotobuf_2fworker_2eproto;
+};
+// -------------------------------------------------------------------
+
+class GetStepSequenceResponse : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.GetStepSequenceResponse) */ {
+ public:
+  GetStepSequenceResponse();
+  virtual ~GetStepSequenceResponse();
+
+  GetStepSequenceResponse(const GetStepSequenceResponse& from);
+
+  inline GetStepSequenceResponse& operator=(const GetStepSequenceResponse& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  GetStepSequenceResponse(GetStepSequenceResponse&& from) noexcept
+    : GetStepSequenceResponse() {
+    *this = ::std::move(from);
+  }
+
+  inline GetStepSequenceResponse& operator=(GetStepSequenceResponse&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline ::google::protobuf::Arena* GetArena() const final {
+    return GetArenaNoVirtual();
+  }
+  inline void* GetMaybeArenaPointer() const final {
+    return MaybeArenaPtr();
+  }
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const GetStepSequenceResponse& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const GetStepSequenceResponse* internal_default_instance() {
+    return reinterpret_cast<const GetStepSequenceResponse*>(
+               &_GetStepSequenceResponse_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    33;
+
+  void UnsafeArenaSwap(GetStepSequenceResponse* other);
+  void Swap(GetStepSequenceResponse* other);
+  friend void swap(GetStepSequenceResponse& a, GetStepSequenceResponse& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline GetStepSequenceResponse* New() const final {
+    return CreateMaybeMessage<GetStepSequenceResponse>(NULL);
+  }
+
+  GetStepSequenceResponse* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<GetStepSequenceResponse>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const GetStepSequenceResponse& from);
+  void MergeFrom(const GetStepSequenceResponse& from);
+  void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(GetStepSequenceResponse* other);
+  protected:
+  explicit GetStepSequenceResponse(::google::protobuf::Arena* arena);
+  private:
+  static void ArenaDtor(void* object);
+  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return _internal_metadata_.arena();
+  }
+  inline void* MaybeArenaPtr() const {
+    return _internal_metadata_.raw_arena_ptr();
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // repeated .tensorflow.StepSequence step_sequence = 1;
+  int step_sequence_size() const;
+  void clear_step_sequence();
+  static const int kStepSequenceFieldNumber = 1;
+  ::tensorflow::StepSequence* mutable_step_sequence(int index);
+  ::google::protobuf::RepeatedPtrField< ::tensorflow::StepSequence >*
+      mutable_step_sequence();
+  const ::tensorflow::StepSequence& step_sequence(int index) const;
+  ::tensorflow::StepSequence* add_step_sequence();
+  const ::google::protobuf::RepeatedPtrField< ::tensorflow::StepSequence >&
+      step_sequence() const;
+
+  // @@protoc_insertion_point(class_scope:tensorflow.GetStepSequenceResponse)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  ::google::protobuf::RepeatedPtrField< ::tensorflow::StepSequence > step_sequence_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_tensorflow_2fcore_2fprotobuf_2fworker_2eproto;
+};
+// ===================================================================
+
+
+// ===================================================================
+
+#ifdef __GNUC__
+  #pragma GCC diagnostic push
+  #pragma GCC diagnostic ignored "-Wstrict-aliasing"
+#endif  // __GNUC__
+// GetStatusRequest
+
+// -------------------------------------------------------------------
+
+// GetStatusResponse
+
+// repeated .tensorflow.DeviceAttributes device_attributes = 1;
+inline int GetStatusResponse::device_attributes_size() const {
+  return device_attributes_.size();
+}
+inline ::tensorflow::DeviceAttributes* GetStatusResponse::mutable_device_attributes(int index) {
+  // @@protoc_insertion_point(field_mutable:tensorflow.GetStatusResponse.device_attributes)
+  return device_attributes_.Mutable(index);
+}
+inline ::google::protobuf::RepeatedPtrField< ::tensorflow::DeviceAttributes >*
+GetStatusResponse::mutable_device_attributes() {
+  // @@protoc_insertion_point(field_mutable_list:tensorflow.GetStatusResponse.device_attributes)
+  return &device_attributes_;
+}
+inline const ::tensorflow::DeviceAttributes& GetStatusResponse::device_attributes(int index) const {
+  // @@protoc_insertion_point(field_get:tensorflow.GetStatusResponse.device_attributes)
+  return device_attributes_.Get(index);
+}
+inline ::tensorflow::DeviceAttributes* GetStatusResponse::add_device_attributes() {
+  // @@protoc_insertion_point(field_add:tensorflow.GetStatusResponse.device_attributes)
+  return device_attributes_.Add();
+}
+inline const ::google::protobuf::RepeatedPtrField< ::tensorflow::DeviceAttributes >&
+GetStatusResponse::device_attributes() const {
+  // @@protoc_insertion_point(field_list:tensorflow.GetStatusResponse.device_attributes)
+  return device_attributes_;
+}
+
+// -------------------------------------------------------------------
+
+// CreateWorkerSessionRequest
+
+// string session_handle = 1;
+inline void CreateWorkerSessionRequest::clear_session_handle() {
+  session_handle_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline const ::std::string& CreateWorkerSessionRequest::session_handle() const {
+  // @@protoc_insertion_point(field_get:tensorflow.CreateWorkerSessionRequest.session_handle)
+  return session_handle_.Get();
+}
+inline void CreateWorkerSessionRequest::set_session_handle(const ::std::string& value) {
+  
+  session_handle_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set:tensorflow.CreateWorkerSessionRequest.session_handle)
+}
+#if LANG_CXX11
+inline void CreateWorkerSessionRequest::set_session_handle(::std::string&& value) {
+  
+  session_handle_.Set(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.CreateWorkerSessionRequest.session_handle)
+}
+#endif
+inline void CreateWorkerSessionRequest::set_session_handle(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  session_handle_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
+              GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_char:tensorflow.CreateWorkerSessionRequest.session_handle)
+}
+inline void CreateWorkerSessionRequest::set_session_handle(const char* value,
+    size_t size) {
+  
+  session_handle_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
+      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.CreateWorkerSessionRequest.session_handle)
+}
+inline ::std::string* CreateWorkerSessionRequest::mutable_session_handle() {
+  
+  // @@protoc_insertion_point(field_mutable:tensorflow.CreateWorkerSessionRequest.session_handle)
+  return session_handle_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline ::std::string* CreateWorkerSessionRequest::release_session_handle() {
+  // @@protoc_insertion_point(field_release:tensorflow.CreateWorkerSessionRequest.session_handle)
+  
+  return session_handle_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline void CreateWorkerSessionRequest::set_allocated_session_handle(::std::string* session_handle) {
+  if (session_handle != NULL) {
+    
+  } else {
+    
+  }
+  session_handle_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), session_handle,
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.CreateWorkerSessionRequest.session_handle)
+}
+inline ::std::string* CreateWorkerSessionRequest::unsafe_arena_release_session_handle() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.CreateWorkerSessionRequest.session_handle)
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  
+  return session_handle_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      GetArenaNoVirtual());
+}
+inline void CreateWorkerSessionRequest::unsafe_arena_set_allocated_session_handle(
+    ::std::string* session_handle) {
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (session_handle != NULL) {
+    
+  } else {
+    
+  }
+  session_handle_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      session_handle, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.CreateWorkerSessionRequest.session_handle)
+}
+
+// .tensorflow.ServerDef server_def = 2;
+inline bool CreateWorkerSessionRequest::has_server_def() const {
+  return this != internal_default_instance() && server_def_ != NULL;
+}
+inline const ::tensorflow::ServerDef& CreateWorkerSessionRequest::server_def() const {
+  const ::tensorflow::ServerDef* p = server_def_;
+  // @@protoc_insertion_point(field_get:tensorflow.CreateWorkerSessionRequest.server_def)
+  return p != NULL ? *p : *reinterpret_cast<const ::tensorflow::ServerDef*>(
+      &::tensorflow::_ServerDef_default_instance_);
+}
+inline ::tensorflow::ServerDef* CreateWorkerSessionRequest::release_server_def() {
+  // @@protoc_insertion_point(field_release:tensorflow.CreateWorkerSessionRequest.server_def)
+  
+  ::tensorflow::ServerDef* temp = server_def_;
+  if (GetArenaNoVirtual() != NULL) {
+    temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
+  }
+  server_def_ = NULL;
+  return temp;
+}
+inline ::tensorflow::ServerDef* CreateWorkerSessionRequest::unsafe_arena_release_server_def() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.CreateWorkerSessionRequest.server_def)
+  
+  ::tensorflow::ServerDef* temp = server_def_;
+  server_def_ = NULL;
+  return temp;
+}
+inline ::tensorflow::ServerDef* CreateWorkerSessionRequest::mutable_server_def() {
+  
+  if (server_def_ == NULL) {
+    auto* p = CreateMaybeMessage<::tensorflow::ServerDef>(GetArenaNoVirtual());
+    server_def_ = p;
+  }
+  // @@protoc_insertion_point(field_mutable:tensorflow.CreateWorkerSessionRequest.server_def)
+  return server_def_;
+}
+inline void CreateWorkerSessionRequest::set_allocated_server_def(::tensorflow::ServerDef* server_def) {
+  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
+  if (message_arena == NULL) {
+    delete reinterpret_cast< ::google::protobuf::MessageLite*>(server_def_);
+  }
+  if (server_def) {
+    ::google::protobuf::Arena* submessage_arena =
+      reinterpret_cast<::google::protobuf::MessageLite*>(server_def)->GetArena();
+    if (message_arena != submessage_arena) {
+      server_def = ::google::protobuf::internal::GetOwnedMessage(
+          message_arena, server_def, submessage_arena);
+    }
+    
+  } else {
+    
+  }
+  server_def_ = server_def;
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.CreateWorkerSessionRequest.server_def)
+}
+
+// bool isolate_session_state = 3;
+inline void CreateWorkerSessionRequest::clear_isolate_session_state() {
+  isolate_session_state_ = false;
+}
+inline bool CreateWorkerSessionRequest::isolate_session_state() const {
+  // @@protoc_insertion_point(field_get:tensorflow.CreateWorkerSessionRequest.isolate_session_state)
+  return isolate_session_state_;
+}
+inline void CreateWorkerSessionRequest::set_isolate_session_state(bool value) {
+  
+  isolate_session_state_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.CreateWorkerSessionRequest.isolate_session_state)
+}
+
+// -------------------------------------------------------------------
+
+// CreateWorkerSessionResponse
+
+// -------------------------------------------------------------------
+
+// DeleteWorkerSessionRequest
+
+// string session_handle = 1;
+inline void DeleteWorkerSessionRequest::clear_session_handle() {
+  session_handle_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline const ::std::string& DeleteWorkerSessionRequest::session_handle() const {
+  // @@protoc_insertion_point(field_get:tensorflow.DeleteWorkerSessionRequest.session_handle)
+  return session_handle_.Get();
+}
+inline void DeleteWorkerSessionRequest::set_session_handle(const ::std::string& value) {
+  
+  session_handle_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set:tensorflow.DeleteWorkerSessionRequest.session_handle)
+}
+#if LANG_CXX11
+inline void DeleteWorkerSessionRequest::set_session_handle(::std::string&& value) {
+  
+  session_handle_.Set(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.DeleteWorkerSessionRequest.session_handle)
+}
+#endif
+inline void DeleteWorkerSessionRequest::set_session_handle(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  session_handle_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
+              GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_char:tensorflow.DeleteWorkerSessionRequest.session_handle)
+}
+inline void DeleteWorkerSessionRequest::set_session_handle(const char* value,
+    size_t size) {
+  
+  session_handle_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
+      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.DeleteWorkerSessionRequest.session_handle)
+}
+inline ::std::string* DeleteWorkerSessionRequest::mutable_session_handle() {
+  
+  // @@protoc_insertion_point(field_mutable:tensorflow.DeleteWorkerSessionRequest.session_handle)
+  return session_handle_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline ::std::string* DeleteWorkerSessionRequest::release_session_handle() {
+  // @@protoc_insertion_point(field_release:tensorflow.DeleteWorkerSessionRequest.session_handle)
+  
+  return session_handle_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline void DeleteWorkerSessionRequest::set_allocated_session_handle(::std::string* session_handle) {
+  if (session_handle != NULL) {
+    
+  } else {
+    
+  }
+  session_handle_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), session_handle,
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.DeleteWorkerSessionRequest.session_handle)
+}
+inline ::std::string* DeleteWorkerSessionRequest::unsafe_arena_release_session_handle() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.DeleteWorkerSessionRequest.session_handle)
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  
+  return session_handle_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      GetArenaNoVirtual());
+}
+inline void DeleteWorkerSessionRequest::unsafe_arena_set_allocated_session_handle(
+    ::std::string* session_handle) {
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (session_handle != NULL) {
+    
+  } else {
+    
+  }
+  session_handle_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      session_handle, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.DeleteWorkerSessionRequest.session_handle)
+}
+
+// -------------------------------------------------------------------
+
+// DeleteWorkerSessionResponse
+
+// -------------------------------------------------------------------
+
+// RegisterGraphRequest
+
+// string session_handle = 1;
+inline void RegisterGraphRequest::clear_session_handle() {
+  session_handle_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline const ::std::string& RegisterGraphRequest::session_handle() const {
+  // @@protoc_insertion_point(field_get:tensorflow.RegisterGraphRequest.session_handle)
+  return session_handle_.Get();
+}
+inline void RegisterGraphRequest::set_session_handle(const ::std::string& value) {
+  
+  session_handle_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set:tensorflow.RegisterGraphRequest.session_handle)
+}
+#if LANG_CXX11
+inline void RegisterGraphRequest::set_session_handle(::std::string&& value) {
+  
+  session_handle_.Set(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.RegisterGraphRequest.session_handle)
+}
+#endif
+inline void RegisterGraphRequest::set_session_handle(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  session_handle_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
+              GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_char:tensorflow.RegisterGraphRequest.session_handle)
+}
+inline void RegisterGraphRequest::set_session_handle(const char* value,
+    size_t size) {
+  
+  session_handle_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
+      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.RegisterGraphRequest.session_handle)
+}
+inline ::std::string* RegisterGraphRequest::mutable_session_handle() {
+  
+  // @@protoc_insertion_point(field_mutable:tensorflow.RegisterGraphRequest.session_handle)
+  return session_handle_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline ::std::string* RegisterGraphRequest::release_session_handle() {
+  // @@protoc_insertion_point(field_release:tensorflow.RegisterGraphRequest.session_handle)
+  
+  return session_handle_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline void RegisterGraphRequest::set_allocated_session_handle(::std::string* session_handle) {
+  if (session_handle != NULL) {
+    
+  } else {
+    
+  }
+  session_handle_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), session_handle,
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.RegisterGraphRequest.session_handle)
+}
+inline ::std::string* RegisterGraphRequest::unsafe_arena_release_session_handle() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.RegisterGraphRequest.session_handle)
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  
+  return session_handle_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      GetArenaNoVirtual());
+}
+inline void RegisterGraphRequest::unsafe_arena_set_allocated_session_handle(
+    ::std::string* session_handle) {
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (session_handle != NULL) {
+    
+  } else {
+    
+  }
+  session_handle_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      session_handle, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.RegisterGraphRequest.session_handle)
+}
+
+// bool create_worker_session_called = 6;
+inline void RegisterGraphRequest::clear_create_worker_session_called() {
+  create_worker_session_called_ = false;
+}
+inline bool RegisterGraphRequest::create_worker_session_called() const {
+  // @@protoc_insertion_point(field_get:tensorflow.RegisterGraphRequest.create_worker_session_called)
+  return create_worker_session_called_;
+}
+inline void RegisterGraphRequest::set_create_worker_session_called(bool value) {
+  
+  create_worker_session_called_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.RegisterGraphRequest.create_worker_session_called)
+}
+
+// .tensorflow.GraphDef graph_def = 2;
+inline bool RegisterGraphRequest::has_graph_def() const {
+  return this != internal_default_instance() && graph_def_ != NULL;
+}
+inline const ::tensorflow::GraphDef& RegisterGraphRequest::graph_def() const {
+  const ::tensorflow::GraphDef* p = graph_def_;
+  // @@protoc_insertion_point(field_get:tensorflow.RegisterGraphRequest.graph_def)
+  return p != NULL ? *p : *reinterpret_cast<const ::tensorflow::GraphDef*>(
+      &::tensorflow::_GraphDef_default_instance_);
+}
+inline ::tensorflow::GraphDef* RegisterGraphRequest::release_graph_def() {
+  // @@protoc_insertion_point(field_release:tensorflow.RegisterGraphRequest.graph_def)
+  
+  ::tensorflow::GraphDef* temp = graph_def_;
+  if (GetArenaNoVirtual() != NULL) {
+    temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
+  }
+  graph_def_ = NULL;
+  return temp;
+}
+inline ::tensorflow::GraphDef* RegisterGraphRequest::unsafe_arena_release_graph_def() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.RegisterGraphRequest.graph_def)
+  
+  ::tensorflow::GraphDef* temp = graph_def_;
+  graph_def_ = NULL;
+  return temp;
+}
+inline ::tensorflow::GraphDef* RegisterGraphRequest::mutable_graph_def() {
+  
+  if (graph_def_ == NULL) {
+    auto* p = CreateMaybeMessage<::tensorflow::GraphDef>(GetArenaNoVirtual());
+    graph_def_ = p;
+  }
+  // @@protoc_insertion_point(field_mutable:tensorflow.RegisterGraphRequest.graph_def)
+  return graph_def_;
+}
+inline void RegisterGraphRequest::set_allocated_graph_def(::tensorflow::GraphDef* graph_def) {
+  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
+  if (message_arena == NULL) {
+    delete reinterpret_cast< ::google::protobuf::MessageLite*>(graph_def_);
+  }
+  if (graph_def) {
+    ::google::protobuf::Arena* submessage_arena =
+      reinterpret_cast<::google::protobuf::MessageLite*>(graph_def)->GetArena();
+    if (message_arena != submessage_arena) {
+      graph_def = ::google::protobuf::internal::GetOwnedMessage(
+          message_arena, graph_def, submessage_arena);
+    }
+    
+  } else {
+    
+  }
+  graph_def_ = graph_def;
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.RegisterGraphRequest.graph_def)
+}
+
+// bool has_control_flow = 3 [deprecated = true];
+inline void RegisterGraphRequest::clear_has_control_flow() {
+  has_control_flow_ = false;
+}
+inline bool RegisterGraphRequest::has_control_flow() const {
+  // @@protoc_insertion_point(field_get:tensorflow.RegisterGraphRequest.has_control_flow)
+  return has_control_flow_;
+}
+inline void RegisterGraphRequest::set_has_control_flow(bool value) {
+  
+  has_control_flow_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.RegisterGraphRequest.has_control_flow)
+}
+
+// .tensorflow.GraphOptions graph_options = 4;
+inline bool RegisterGraphRequest::has_graph_options() const {
+  return this != internal_default_instance() && graph_options_ != NULL;
+}
+inline const ::tensorflow::GraphOptions& RegisterGraphRequest::graph_options() const {
+  const ::tensorflow::GraphOptions* p = graph_options_;
+  // @@protoc_insertion_point(field_get:tensorflow.RegisterGraphRequest.graph_options)
+  return p != NULL ? *p : *reinterpret_cast<const ::tensorflow::GraphOptions*>(
+      &::tensorflow::_GraphOptions_default_instance_);
+}
+inline ::tensorflow::GraphOptions* RegisterGraphRequest::release_graph_options() {
+  // @@protoc_insertion_point(field_release:tensorflow.RegisterGraphRequest.graph_options)
+  
+  ::tensorflow::GraphOptions* temp = graph_options_;
+  if (GetArenaNoVirtual() != NULL) {
+    temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
+  }
+  graph_options_ = NULL;
+  return temp;
+}
+inline ::tensorflow::GraphOptions* RegisterGraphRequest::unsafe_arena_release_graph_options() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.RegisterGraphRequest.graph_options)
+  
+  ::tensorflow::GraphOptions* temp = graph_options_;
+  graph_options_ = NULL;
+  return temp;
+}
+inline ::tensorflow::GraphOptions* RegisterGraphRequest::mutable_graph_options() {
+  
+  if (graph_options_ == NULL) {
+    auto* p = CreateMaybeMessage<::tensorflow::GraphOptions>(GetArenaNoVirtual());
+    graph_options_ = p;
+  }
+  // @@protoc_insertion_point(field_mutable:tensorflow.RegisterGraphRequest.graph_options)
+  return graph_options_;
+}
+inline void RegisterGraphRequest::set_allocated_graph_options(::tensorflow::GraphOptions* graph_options) {
+  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
+  if (message_arena == NULL) {
+    delete reinterpret_cast< ::google::protobuf::MessageLite*>(graph_options_);
+  }
+  if (graph_options) {
+    ::google::protobuf::Arena* submessage_arena =
+      reinterpret_cast<::google::protobuf::MessageLite*>(graph_options)->GetArena();
+    if (message_arena != submessage_arena) {
+      graph_options = ::google::protobuf::internal::GetOwnedMessage(
+          message_arena, graph_options, submessage_arena);
+    }
+    
+  } else {
+    
+  }
+  graph_options_ = graph_options;
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.RegisterGraphRequest.graph_options)
+}
+
+// .tensorflow.DebugOptions debug_options = 5;
+inline bool RegisterGraphRequest::has_debug_options() const {
+  return this != internal_default_instance() && debug_options_ != NULL;
+}
+inline const ::tensorflow::DebugOptions& RegisterGraphRequest::debug_options() const {
+  const ::tensorflow::DebugOptions* p = debug_options_;
+  // @@protoc_insertion_point(field_get:tensorflow.RegisterGraphRequest.debug_options)
+  return p != NULL ? *p : *reinterpret_cast<const ::tensorflow::DebugOptions*>(
+      &::tensorflow::_DebugOptions_default_instance_);
+}
+inline ::tensorflow::DebugOptions* RegisterGraphRequest::release_debug_options() {
+  // @@protoc_insertion_point(field_release:tensorflow.RegisterGraphRequest.debug_options)
+  
+  ::tensorflow::DebugOptions* temp = debug_options_;
+  if (GetArenaNoVirtual() != NULL) {
+    temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
+  }
+  debug_options_ = NULL;
+  return temp;
+}
+inline ::tensorflow::DebugOptions* RegisterGraphRequest::unsafe_arena_release_debug_options() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.RegisterGraphRequest.debug_options)
+  
+  ::tensorflow::DebugOptions* temp = debug_options_;
+  debug_options_ = NULL;
+  return temp;
+}
+inline ::tensorflow::DebugOptions* RegisterGraphRequest::mutable_debug_options() {
+  
+  if (debug_options_ == NULL) {
+    auto* p = CreateMaybeMessage<::tensorflow::DebugOptions>(GetArenaNoVirtual());
+    debug_options_ = p;
+  }
+  // @@protoc_insertion_point(field_mutable:tensorflow.RegisterGraphRequest.debug_options)
+  return debug_options_;
+}
+inline void RegisterGraphRequest::set_allocated_debug_options(::tensorflow::DebugOptions* debug_options) {
+  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
+  if (message_arena == NULL) {
+    delete reinterpret_cast< ::google::protobuf::MessageLite*>(debug_options_);
+  }
+  if (debug_options) {
+    ::google::protobuf::Arena* submessage_arena =
+      reinterpret_cast<::google::protobuf::MessageLite*>(debug_options)->GetArena();
+    if (message_arena != submessage_arena) {
+      debug_options = ::google::protobuf::internal::GetOwnedMessage(
+          message_arena, debug_options, submessage_arena);
+    }
+    
+  } else {
+    
+  }
+  debug_options_ = debug_options;
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.RegisterGraphRequest.debug_options)
+}
+
+// int64 collective_graph_key = 7;
+inline void RegisterGraphRequest::clear_collective_graph_key() {
+  collective_graph_key_ = PROTOBUF_LONGLONG(0);
+}
+inline ::google::protobuf::int64 RegisterGraphRequest::collective_graph_key() const {
+  // @@protoc_insertion_point(field_get:tensorflow.RegisterGraphRequest.collective_graph_key)
+  return collective_graph_key_;
+}
+inline void RegisterGraphRequest::set_collective_graph_key(::google::protobuf::int64 value) {
+  
+  collective_graph_key_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.RegisterGraphRequest.collective_graph_key)
+}
+
+// -------------------------------------------------------------------
+
+// RegisterGraphResponse
+
+// string graph_handle = 1;
+inline void RegisterGraphResponse::clear_graph_handle() {
+  graph_handle_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline const ::std::string& RegisterGraphResponse::graph_handle() const {
+  // @@protoc_insertion_point(field_get:tensorflow.RegisterGraphResponse.graph_handle)
+  return graph_handle_.Get();
+}
+inline void RegisterGraphResponse::set_graph_handle(const ::std::string& value) {
+  
+  graph_handle_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set:tensorflow.RegisterGraphResponse.graph_handle)
+}
+#if LANG_CXX11
+inline void RegisterGraphResponse::set_graph_handle(::std::string&& value) {
+  
+  graph_handle_.Set(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.RegisterGraphResponse.graph_handle)
+}
+#endif
+inline void RegisterGraphResponse::set_graph_handle(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  graph_handle_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
+              GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_char:tensorflow.RegisterGraphResponse.graph_handle)
+}
+inline void RegisterGraphResponse::set_graph_handle(const char* value,
+    size_t size) {
+  
+  graph_handle_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
+      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.RegisterGraphResponse.graph_handle)
+}
+inline ::std::string* RegisterGraphResponse::mutable_graph_handle() {
+  
+  // @@protoc_insertion_point(field_mutable:tensorflow.RegisterGraphResponse.graph_handle)
+  return graph_handle_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline ::std::string* RegisterGraphResponse::release_graph_handle() {
+  // @@protoc_insertion_point(field_release:tensorflow.RegisterGraphResponse.graph_handle)
+  
+  return graph_handle_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline void RegisterGraphResponse::set_allocated_graph_handle(::std::string* graph_handle) {
+  if (graph_handle != NULL) {
+    
+  } else {
+    
+  }
+  graph_handle_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), graph_handle,
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.RegisterGraphResponse.graph_handle)
+}
+inline ::std::string* RegisterGraphResponse::unsafe_arena_release_graph_handle() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.RegisterGraphResponse.graph_handle)
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  
+  return graph_handle_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      GetArenaNoVirtual());
+}
+inline void RegisterGraphResponse::unsafe_arena_set_allocated_graph_handle(
+    ::std::string* graph_handle) {
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (graph_handle != NULL) {
+    
+  } else {
+    
+  }
+  graph_handle_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      graph_handle, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.RegisterGraphResponse.graph_handle)
+}
+
+// -------------------------------------------------------------------
+
+// DeregisterGraphRequest
+
+// string session_handle = 2;
+inline void DeregisterGraphRequest::clear_session_handle() {
+  session_handle_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline const ::std::string& DeregisterGraphRequest::session_handle() const {
+  // @@protoc_insertion_point(field_get:tensorflow.DeregisterGraphRequest.session_handle)
+  return session_handle_.Get();
+}
+inline void DeregisterGraphRequest::set_session_handle(const ::std::string& value) {
+  
+  session_handle_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set:tensorflow.DeregisterGraphRequest.session_handle)
+}
+#if LANG_CXX11
+inline void DeregisterGraphRequest::set_session_handle(::std::string&& value) {
+  
+  session_handle_.Set(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.DeregisterGraphRequest.session_handle)
+}
+#endif
+inline void DeregisterGraphRequest::set_session_handle(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  session_handle_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
+              GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_char:tensorflow.DeregisterGraphRequest.session_handle)
+}
+inline void DeregisterGraphRequest::set_session_handle(const char* value,
+    size_t size) {
+  
+  session_handle_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
+      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.DeregisterGraphRequest.session_handle)
+}
+inline ::std::string* DeregisterGraphRequest::mutable_session_handle() {
+  
+  // @@protoc_insertion_point(field_mutable:tensorflow.DeregisterGraphRequest.session_handle)
+  return session_handle_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline ::std::string* DeregisterGraphRequest::release_session_handle() {
+  // @@protoc_insertion_point(field_release:tensorflow.DeregisterGraphRequest.session_handle)
+  
+  return session_handle_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline void DeregisterGraphRequest::set_allocated_session_handle(::std::string* session_handle) {
+  if (session_handle != NULL) {
+    
+  } else {
+    
+  }
+  session_handle_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), session_handle,
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.DeregisterGraphRequest.session_handle)
+}
+inline ::std::string* DeregisterGraphRequest::unsafe_arena_release_session_handle() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.DeregisterGraphRequest.session_handle)
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  
+  return session_handle_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      GetArenaNoVirtual());
+}
+inline void DeregisterGraphRequest::unsafe_arena_set_allocated_session_handle(
+    ::std::string* session_handle) {
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (session_handle != NULL) {
+    
+  } else {
+    
+  }
+  session_handle_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      session_handle, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.DeregisterGraphRequest.session_handle)
+}
+
+// bool create_worker_session_called = 3;
+inline void DeregisterGraphRequest::clear_create_worker_session_called() {
+  create_worker_session_called_ = false;
+}
+inline bool DeregisterGraphRequest::create_worker_session_called() const {
+  // @@protoc_insertion_point(field_get:tensorflow.DeregisterGraphRequest.create_worker_session_called)
+  return create_worker_session_called_;
+}
+inline void DeregisterGraphRequest::set_create_worker_session_called(bool value) {
+  
+  create_worker_session_called_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.DeregisterGraphRequest.create_worker_session_called)
+}
+
+// string graph_handle = 1;
+inline void DeregisterGraphRequest::clear_graph_handle() {
+  graph_handle_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline const ::std::string& DeregisterGraphRequest::graph_handle() const {
+  // @@protoc_insertion_point(field_get:tensorflow.DeregisterGraphRequest.graph_handle)
+  return graph_handle_.Get();
+}
+inline void DeregisterGraphRequest::set_graph_handle(const ::std::string& value) {
+  
+  graph_handle_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set:tensorflow.DeregisterGraphRequest.graph_handle)
+}
+#if LANG_CXX11
+inline void DeregisterGraphRequest::set_graph_handle(::std::string&& value) {
+  
+  graph_handle_.Set(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.DeregisterGraphRequest.graph_handle)
+}
+#endif
+inline void DeregisterGraphRequest::set_graph_handle(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  graph_handle_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
+              GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_char:tensorflow.DeregisterGraphRequest.graph_handle)
+}
+inline void DeregisterGraphRequest::set_graph_handle(const char* value,
+    size_t size) {
+  
+  graph_handle_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
+      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.DeregisterGraphRequest.graph_handle)
+}
+inline ::std::string* DeregisterGraphRequest::mutable_graph_handle() {
+  
+  // @@protoc_insertion_point(field_mutable:tensorflow.DeregisterGraphRequest.graph_handle)
+  return graph_handle_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline ::std::string* DeregisterGraphRequest::release_graph_handle() {
+  // @@protoc_insertion_point(field_release:tensorflow.DeregisterGraphRequest.graph_handle)
+  
+  return graph_handle_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline void DeregisterGraphRequest::set_allocated_graph_handle(::std::string* graph_handle) {
+  if (graph_handle != NULL) {
+    
+  } else {
+    
+  }
+  graph_handle_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), graph_handle,
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.DeregisterGraphRequest.graph_handle)
+}
+inline ::std::string* DeregisterGraphRequest::unsafe_arena_release_graph_handle() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.DeregisterGraphRequest.graph_handle)
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  
+  return graph_handle_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      GetArenaNoVirtual());
+}
+inline void DeregisterGraphRequest::unsafe_arena_set_allocated_graph_handle(
+    ::std::string* graph_handle) {
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (graph_handle != NULL) {
+    
+  } else {
+    
+  }
+  graph_handle_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      graph_handle, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.DeregisterGraphRequest.graph_handle)
+}
+
+// -------------------------------------------------------------------
+
+// DeregisterGraphResponse
+
+// -------------------------------------------------------------------
+
+// CleanupAllRequest
+
+// repeated string container = 1;
+inline int CleanupAllRequest::container_size() const {
+  return container_.size();
+}
+inline void CleanupAllRequest::clear_container() {
+  container_.Clear();
+}
+inline const ::std::string& CleanupAllRequest::container(int index) const {
+  // @@protoc_insertion_point(field_get:tensorflow.CleanupAllRequest.container)
+  return container_.Get(index);
+}
+inline ::std::string* CleanupAllRequest::mutable_container(int index) {
+  // @@protoc_insertion_point(field_mutable:tensorflow.CleanupAllRequest.container)
+  return container_.Mutable(index);
+}
+inline void CleanupAllRequest::set_container(int index, const ::std::string& value) {
+  // @@protoc_insertion_point(field_set:tensorflow.CleanupAllRequest.container)
+  container_.Mutable(index)->assign(value);
+}
+#if LANG_CXX11
+inline void CleanupAllRequest::set_container(int index, ::std::string&& value) {
+  // @@protoc_insertion_point(field_set:tensorflow.CleanupAllRequest.container)
+  container_.Mutable(index)->assign(std::move(value));
+}
+#endif
+inline void CleanupAllRequest::set_container(int index, const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  container_.Mutable(index)->assign(value);
+  // @@protoc_insertion_point(field_set_char:tensorflow.CleanupAllRequest.container)
+}
+inline void CleanupAllRequest::set_container(int index, const char* value, size_t size) {
+  container_.Mutable(index)->assign(
+    reinterpret_cast<const char*>(value), size);
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.CleanupAllRequest.container)
+}
+inline ::std::string* CleanupAllRequest::add_container() {
+  // @@protoc_insertion_point(field_add_mutable:tensorflow.CleanupAllRequest.container)
+  return container_.Add();
+}
+inline void CleanupAllRequest::add_container(const ::std::string& value) {
+  container_.Add()->assign(value);
+  // @@protoc_insertion_point(field_add:tensorflow.CleanupAllRequest.container)
+}
+#if LANG_CXX11
+inline void CleanupAllRequest::add_container(::std::string&& value) {
+  container_.Add(std::move(value));
+  // @@protoc_insertion_point(field_add:tensorflow.CleanupAllRequest.container)
+}
+#endif
+inline void CleanupAllRequest::add_container(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  container_.Add()->assign(value);
+  // @@protoc_insertion_point(field_add_char:tensorflow.CleanupAllRequest.container)
+}
+inline void CleanupAllRequest::add_container(const char* value, size_t size) {
+  container_.Add()->assign(reinterpret_cast<const char*>(value), size);
+  // @@protoc_insertion_point(field_add_pointer:tensorflow.CleanupAllRequest.container)
+}
+inline const ::google::protobuf::RepeatedPtrField<::std::string>&
+CleanupAllRequest::container() const {
+  // @@protoc_insertion_point(field_list:tensorflow.CleanupAllRequest.container)
+  return container_;
+}
+inline ::google::protobuf::RepeatedPtrField<::std::string>*
+CleanupAllRequest::mutable_container() {
+  // @@protoc_insertion_point(field_mutable_list:tensorflow.CleanupAllRequest.container)
+  return &container_;
+}
+
+// -------------------------------------------------------------------
+
+// CleanupAllResponse
+
+// -------------------------------------------------------------------
+
+// ExecutorOpts
+
+// bool record_costs = 1;
+inline void ExecutorOpts::clear_record_costs() {
+  record_costs_ = false;
+}
+inline bool ExecutorOpts::record_costs() const {
+  // @@protoc_insertion_point(field_get:tensorflow.ExecutorOpts.record_costs)
+  return record_costs_;
+}
+inline void ExecutorOpts::set_record_costs(bool value) {
+  
+  record_costs_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.ExecutorOpts.record_costs)
+}
+
+// bool record_timeline = 3;
+inline void ExecutorOpts::clear_record_timeline() {
+  record_timeline_ = false;
+}
+inline bool ExecutorOpts::record_timeline() const {
+  // @@protoc_insertion_point(field_get:tensorflow.ExecutorOpts.record_timeline)
+  return record_timeline_;
+}
+inline void ExecutorOpts::set_record_timeline(bool value) {
+  
+  record_timeline_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.ExecutorOpts.record_timeline)
+}
+
+// bool record_partition_graphs = 4;
+inline void ExecutorOpts::clear_record_partition_graphs() {
+  record_partition_graphs_ = false;
+}
+inline bool ExecutorOpts::record_partition_graphs() const {
+  // @@protoc_insertion_point(field_get:tensorflow.ExecutorOpts.record_partition_graphs)
+  return record_partition_graphs_;
+}
+inline void ExecutorOpts::set_record_partition_graphs(bool value) {
+  
+  record_partition_graphs_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.ExecutorOpts.record_partition_graphs)
+}
+
+// bool report_tensor_allocations_upon_oom = 5;
+inline void ExecutorOpts::clear_report_tensor_allocations_upon_oom() {
+  report_tensor_allocations_upon_oom_ = false;
+}
+inline bool ExecutorOpts::report_tensor_allocations_upon_oom() const {
+  // @@protoc_insertion_point(field_get:tensorflow.ExecutorOpts.report_tensor_allocations_upon_oom)
+  return report_tensor_allocations_upon_oom_;
+}
+inline void ExecutorOpts::set_report_tensor_allocations_upon_oom(bool value) {
+  
+  report_tensor_allocations_upon_oom_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.ExecutorOpts.report_tensor_allocations_upon_oom)
+}
+
+// -------------------------------------------------------------------
+
+// RunGraphRequest
+
+// string session_handle = 8;
+inline void RunGraphRequest::clear_session_handle() {
+  session_handle_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline const ::std::string& RunGraphRequest::session_handle() const {
+  // @@protoc_insertion_point(field_get:tensorflow.RunGraphRequest.session_handle)
+  return session_handle_.Get();
+}
+inline void RunGraphRequest::set_session_handle(const ::std::string& value) {
+  
+  session_handle_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set:tensorflow.RunGraphRequest.session_handle)
+}
+#if LANG_CXX11
+inline void RunGraphRequest::set_session_handle(::std::string&& value) {
+  
+  session_handle_.Set(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.RunGraphRequest.session_handle)
+}
+#endif
+inline void RunGraphRequest::set_session_handle(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  session_handle_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
+              GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_char:tensorflow.RunGraphRequest.session_handle)
+}
+inline void RunGraphRequest::set_session_handle(const char* value,
+    size_t size) {
+  
+  session_handle_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
+      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.RunGraphRequest.session_handle)
+}
+inline ::std::string* RunGraphRequest::mutable_session_handle() {
+  
+  // @@protoc_insertion_point(field_mutable:tensorflow.RunGraphRequest.session_handle)
+  return session_handle_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline ::std::string* RunGraphRequest::release_session_handle() {
+  // @@protoc_insertion_point(field_release:tensorflow.RunGraphRequest.session_handle)
+  
+  return session_handle_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline void RunGraphRequest::set_allocated_session_handle(::std::string* session_handle) {
+  if (session_handle != NULL) {
+    
+  } else {
+    
+  }
+  session_handle_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), session_handle,
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.RunGraphRequest.session_handle)
+}
+inline ::std::string* RunGraphRequest::unsafe_arena_release_session_handle() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.RunGraphRequest.session_handle)
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  
+  return session_handle_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      GetArenaNoVirtual());
+}
+inline void RunGraphRequest::unsafe_arena_set_allocated_session_handle(
+    ::std::string* session_handle) {
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (session_handle != NULL) {
+    
+  } else {
+    
+  }
+  session_handle_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      session_handle, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.RunGraphRequest.session_handle)
+}
+
+// bool create_worker_session_called = 10;
+inline void RunGraphRequest::clear_create_worker_session_called() {
+  create_worker_session_called_ = false;
+}
+inline bool RunGraphRequest::create_worker_session_called() const {
+  // @@protoc_insertion_point(field_get:tensorflow.RunGraphRequest.create_worker_session_called)
+  return create_worker_session_called_;
+}
+inline void RunGraphRequest::set_create_worker_session_called(bool value) {
+  
+  create_worker_session_called_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.RunGraphRequest.create_worker_session_called)
+}
+
+// string graph_handle = 1;
+inline void RunGraphRequest::clear_graph_handle() {
+  graph_handle_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline const ::std::string& RunGraphRequest::graph_handle() const {
+  // @@protoc_insertion_point(field_get:tensorflow.RunGraphRequest.graph_handle)
+  return graph_handle_.Get();
+}
+inline void RunGraphRequest::set_graph_handle(const ::std::string& value) {
+  
+  graph_handle_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set:tensorflow.RunGraphRequest.graph_handle)
+}
+#if LANG_CXX11
+inline void RunGraphRequest::set_graph_handle(::std::string&& value) {
+  
+  graph_handle_.Set(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.RunGraphRequest.graph_handle)
+}
+#endif
+inline void RunGraphRequest::set_graph_handle(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  graph_handle_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
+              GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_char:tensorflow.RunGraphRequest.graph_handle)
+}
+inline void RunGraphRequest::set_graph_handle(const char* value,
+    size_t size) {
+  
+  graph_handle_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
+      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.RunGraphRequest.graph_handle)
+}
+inline ::std::string* RunGraphRequest::mutable_graph_handle() {
+  
+  // @@protoc_insertion_point(field_mutable:tensorflow.RunGraphRequest.graph_handle)
+  return graph_handle_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline ::std::string* RunGraphRequest::release_graph_handle() {
+  // @@protoc_insertion_point(field_release:tensorflow.RunGraphRequest.graph_handle)
+  
+  return graph_handle_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline void RunGraphRequest::set_allocated_graph_handle(::std::string* graph_handle) {
+  if (graph_handle != NULL) {
+    
+  } else {
+    
+  }
+  graph_handle_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), graph_handle,
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.RunGraphRequest.graph_handle)
+}
+inline ::std::string* RunGraphRequest::unsafe_arena_release_graph_handle() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.RunGraphRequest.graph_handle)
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  
+  return graph_handle_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      GetArenaNoVirtual());
+}
+inline void RunGraphRequest::unsafe_arena_set_allocated_graph_handle(
+    ::std::string* graph_handle) {
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (graph_handle != NULL) {
+    
+  } else {
+    
+  }
+  graph_handle_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      graph_handle, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.RunGraphRequest.graph_handle)
+}
+
+// int64 step_id = 2;
+inline void RunGraphRequest::clear_step_id() {
+  step_id_ = PROTOBUF_LONGLONG(0);
+}
+inline ::google::protobuf::int64 RunGraphRequest::step_id() const {
+  // @@protoc_insertion_point(field_get:tensorflow.RunGraphRequest.step_id)
+  return step_id_;
+}
+inline void RunGraphRequest::set_step_id(::google::protobuf::int64 value) {
+  
+  step_id_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.RunGraphRequest.step_id)
+}
+
+// .tensorflow.ExecutorOpts exec_opts = 5;
+inline bool RunGraphRequest::has_exec_opts() const {
+  return this != internal_default_instance() && exec_opts_ != NULL;
+}
+inline void RunGraphRequest::clear_exec_opts() {
+  if (GetArenaNoVirtual() == NULL && exec_opts_ != NULL) {
+    delete exec_opts_;
+  }
+  exec_opts_ = NULL;
+}
+inline const ::tensorflow::ExecutorOpts& RunGraphRequest::exec_opts() const {
+  const ::tensorflow::ExecutorOpts* p = exec_opts_;
+  // @@protoc_insertion_point(field_get:tensorflow.RunGraphRequest.exec_opts)
+  return p != NULL ? *p : *reinterpret_cast<const ::tensorflow::ExecutorOpts*>(
+      &::tensorflow::_ExecutorOpts_default_instance_);
+}
+inline ::tensorflow::ExecutorOpts* RunGraphRequest::release_exec_opts() {
+  // @@protoc_insertion_point(field_release:tensorflow.RunGraphRequest.exec_opts)
+  
+  ::tensorflow::ExecutorOpts* temp = exec_opts_;
+  if (GetArenaNoVirtual() != NULL) {
+    temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
+  }
+  exec_opts_ = NULL;
+  return temp;
+}
+inline ::tensorflow::ExecutorOpts* RunGraphRequest::unsafe_arena_release_exec_opts() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.RunGraphRequest.exec_opts)
+  
+  ::tensorflow::ExecutorOpts* temp = exec_opts_;
+  exec_opts_ = NULL;
+  return temp;
+}
+inline ::tensorflow::ExecutorOpts* RunGraphRequest::mutable_exec_opts() {
+  
+  if (exec_opts_ == NULL) {
+    auto* p = CreateMaybeMessage<::tensorflow::ExecutorOpts>(GetArenaNoVirtual());
+    exec_opts_ = p;
+  }
+  // @@protoc_insertion_point(field_mutable:tensorflow.RunGraphRequest.exec_opts)
+  return exec_opts_;
+}
+inline void RunGraphRequest::set_allocated_exec_opts(::tensorflow::ExecutorOpts* exec_opts) {
+  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
+  if (message_arena == NULL) {
+    delete exec_opts_;
+  }
+  if (exec_opts) {
+    ::google::protobuf::Arena* submessage_arena =
+      ::google::protobuf::Arena::GetArena(exec_opts);
+    if (message_arena != submessage_arena) {
+      exec_opts = ::google::protobuf::internal::GetOwnedMessage(
+          message_arena, exec_opts, submessage_arena);
+    }
+    
+  } else {
+    
+  }
+  exec_opts_ = exec_opts;
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.RunGraphRequest.exec_opts)
+}
+
+// repeated .tensorflow.NamedTensorProto send = 3;
+inline int RunGraphRequest::send_size() const {
+  return send_.size();
+}
+inline ::tensorflow::NamedTensorProto* RunGraphRequest::mutable_send(int index) {
+  // @@protoc_insertion_point(field_mutable:tensorflow.RunGraphRequest.send)
+  return send_.Mutable(index);
+}
+inline ::google::protobuf::RepeatedPtrField< ::tensorflow::NamedTensorProto >*
+RunGraphRequest::mutable_send() {
+  // @@protoc_insertion_point(field_mutable_list:tensorflow.RunGraphRequest.send)
+  return &send_;
+}
+inline const ::tensorflow::NamedTensorProto& RunGraphRequest::send(int index) const {
+  // @@protoc_insertion_point(field_get:tensorflow.RunGraphRequest.send)
+  return send_.Get(index);
+}
+inline ::tensorflow::NamedTensorProto* RunGraphRequest::add_send() {
+  // @@protoc_insertion_point(field_add:tensorflow.RunGraphRequest.send)
+  return send_.Add();
+}
+inline const ::google::protobuf::RepeatedPtrField< ::tensorflow::NamedTensorProto >&
+RunGraphRequest::send() const {
+  // @@protoc_insertion_point(field_list:tensorflow.RunGraphRequest.send)
+  return send_;
+}
+
+// repeated string recv_key = 4;
+inline int RunGraphRequest::recv_key_size() const {
+  return recv_key_.size();
+}
+inline void RunGraphRequest::clear_recv_key() {
+  recv_key_.Clear();
+}
+inline const ::std::string& RunGraphRequest::recv_key(int index) const {
+  // @@protoc_insertion_point(field_get:tensorflow.RunGraphRequest.recv_key)
+  return recv_key_.Get(index);
+}
+inline ::std::string* RunGraphRequest::mutable_recv_key(int index) {
+  // @@protoc_insertion_point(field_mutable:tensorflow.RunGraphRequest.recv_key)
+  return recv_key_.Mutable(index);
+}
+inline void RunGraphRequest::set_recv_key(int index, const ::std::string& value) {
+  // @@protoc_insertion_point(field_set:tensorflow.RunGraphRequest.recv_key)
+  recv_key_.Mutable(index)->assign(value);
+}
+#if LANG_CXX11
+inline void RunGraphRequest::set_recv_key(int index, ::std::string&& value) {
+  // @@protoc_insertion_point(field_set:tensorflow.RunGraphRequest.recv_key)
+  recv_key_.Mutable(index)->assign(std::move(value));
+}
+#endif
+inline void RunGraphRequest::set_recv_key(int index, const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  recv_key_.Mutable(index)->assign(value);
+  // @@protoc_insertion_point(field_set_char:tensorflow.RunGraphRequest.recv_key)
+}
+inline void RunGraphRequest::set_recv_key(int index, const char* value, size_t size) {
+  recv_key_.Mutable(index)->assign(
+    reinterpret_cast<const char*>(value), size);
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.RunGraphRequest.recv_key)
+}
+inline ::std::string* RunGraphRequest::add_recv_key() {
+  // @@protoc_insertion_point(field_add_mutable:tensorflow.RunGraphRequest.recv_key)
+  return recv_key_.Add();
+}
+inline void RunGraphRequest::add_recv_key(const ::std::string& value) {
+  recv_key_.Add()->assign(value);
+  // @@protoc_insertion_point(field_add:tensorflow.RunGraphRequest.recv_key)
+}
+#if LANG_CXX11
+inline void RunGraphRequest::add_recv_key(::std::string&& value) {
+  recv_key_.Add(std::move(value));
+  // @@protoc_insertion_point(field_add:tensorflow.RunGraphRequest.recv_key)
+}
+#endif
+inline void RunGraphRequest::add_recv_key(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  recv_key_.Add()->assign(value);
+  // @@protoc_insertion_point(field_add_char:tensorflow.RunGraphRequest.recv_key)
+}
+inline void RunGraphRequest::add_recv_key(const char* value, size_t size) {
+  recv_key_.Add()->assign(reinterpret_cast<const char*>(value), size);
+  // @@protoc_insertion_point(field_add_pointer:tensorflow.RunGraphRequest.recv_key)
+}
+inline const ::google::protobuf::RepeatedPtrField<::std::string>&
+RunGraphRequest::recv_key() const {
+  // @@protoc_insertion_point(field_list:tensorflow.RunGraphRequest.recv_key)
+  return recv_key_;
+}
+inline ::google::protobuf::RepeatedPtrField<::std::string>*
+RunGraphRequest::mutable_recv_key() {
+  // @@protoc_insertion_point(field_mutable_list:tensorflow.RunGraphRequest.recv_key)
+  return &recv_key_;
+}
+
+// bool is_partial = 6;
+inline void RunGraphRequest::clear_is_partial() {
+  is_partial_ = false;
+}
+inline bool RunGraphRequest::is_partial() const {
+  // @@protoc_insertion_point(field_get:tensorflow.RunGraphRequest.is_partial)
+  return is_partial_;
+}
+inline void RunGraphRequest::set_is_partial(bool value) {
+  
+  is_partial_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.RunGraphRequest.is_partial)
+}
+
+// bool is_last_partial_run = 7;
+inline void RunGraphRequest::clear_is_last_partial_run() {
+  is_last_partial_run_ = false;
+}
+inline bool RunGraphRequest::is_last_partial_run() const {
+  // @@protoc_insertion_point(field_get:tensorflow.RunGraphRequest.is_last_partial_run)
+  return is_last_partial_run_;
+}
+inline void RunGraphRequest::set_is_last_partial_run(bool value) {
+  
+  is_last_partial_run_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.RunGraphRequest.is_last_partial_run)
+}
+
+// bool store_errors_in_response_body = 9;
+inline void RunGraphRequest::clear_store_errors_in_response_body() {
+  store_errors_in_response_body_ = false;
+}
+inline bool RunGraphRequest::store_errors_in_response_body() const {
+  // @@protoc_insertion_point(field_get:tensorflow.RunGraphRequest.store_errors_in_response_body)
+  return store_errors_in_response_body_;
+}
+inline void RunGraphRequest::set_store_errors_in_response_body(bool value) {
+  
+  store_errors_in_response_body_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.RunGraphRequest.store_errors_in_response_body)
+}
+
+// -------------------------------------------------------------------
+
+// RunGraphResponse
+
+// repeated .tensorflow.NamedTensorProto recv = 1;
+inline int RunGraphResponse::recv_size() const {
+  return recv_.size();
+}
+inline ::tensorflow::NamedTensorProto* RunGraphResponse::mutable_recv(int index) {
+  // @@protoc_insertion_point(field_mutable:tensorflow.RunGraphResponse.recv)
+  return recv_.Mutable(index);
+}
+inline ::google::protobuf::RepeatedPtrField< ::tensorflow::NamedTensorProto >*
+RunGraphResponse::mutable_recv() {
+  // @@protoc_insertion_point(field_mutable_list:tensorflow.RunGraphResponse.recv)
+  return &recv_;
+}
+inline const ::tensorflow::NamedTensorProto& RunGraphResponse::recv(int index) const {
+  // @@protoc_insertion_point(field_get:tensorflow.RunGraphResponse.recv)
+  return recv_.Get(index);
+}
+inline ::tensorflow::NamedTensorProto* RunGraphResponse::add_recv() {
+  // @@protoc_insertion_point(field_add:tensorflow.RunGraphResponse.recv)
+  return recv_.Add();
+}
+inline const ::google::protobuf::RepeatedPtrField< ::tensorflow::NamedTensorProto >&
+RunGraphResponse::recv() const {
+  // @@protoc_insertion_point(field_list:tensorflow.RunGraphResponse.recv)
+  return recv_;
+}
+
+// .tensorflow.StepStats step_stats = 2;
+inline bool RunGraphResponse::has_step_stats() const {
+  return this != internal_default_instance() && step_stats_ != NULL;
+}
+inline const ::tensorflow::StepStats& RunGraphResponse::step_stats() const {
+  const ::tensorflow::StepStats* p = step_stats_;
+  // @@protoc_insertion_point(field_get:tensorflow.RunGraphResponse.step_stats)
+  return p != NULL ? *p : *reinterpret_cast<const ::tensorflow::StepStats*>(
+      &::tensorflow::_StepStats_default_instance_);
+}
+inline ::tensorflow::StepStats* RunGraphResponse::release_step_stats() {
+  // @@protoc_insertion_point(field_release:tensorflow.RunGraphResponse.step_stats)
+  
+  ::tensorflow::StepStats* temp = step_stats_;
+  if (GetArenaNoVirtual() != NULL) {
+    temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
+  }
+  step_stats_ = NULL;
+  return temp;
+}
+inline ::tensorflow::StepStats* RunGraphResponse::unsafe_arena_release_step_stats() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.RunGraphResponse.step_stats)
+  
+  ::tensorflow::StepStats* temp = step_stats_;
+  step_stats_ = NULL;
+  return temp;
+}
+inline ::tensorflow::StepStats* RunGraphResponse::mutable_step_stats() {
+  
+  if (step_stats_ == NULL) {
+    auto* p = CreateMaybeMessage<::tensorflow::StepStats>(GetArenaNoVirtual());
+    step_stats_ = p;
+  }
+  // @@protoc_insertion_point(field_mutable:tensorflow.RunGraphResponse.step_stats)
+  return step_stats_;
+}
+inline void RunGraphResponse::set_allocated_step_stats(::tensorflow::StepStats* step_stats) {
+  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
+  if (message_arena == NULL) {
+    delete reinterpret_cast< ::google::protobuf::MessageLite*>(step_stats_);
+  }
+  if (step_stats) {
+    ::google::protobuf::Arena* submessage_arena =
+      reinterpret_cast<::google::protobuf::MessageLite*>(step_stats)->GetArena();
+    if (message_arena != submessage_arena) {
+      step_stats = ::google::protobuf::internal::GetOwnedMessage(
+          message_arena, step_stats, submessage_arena);
+    }
+    
+  } else {
+    
+  }
+  step_stats_ = step_stats;
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.RunGraphResponse.step_stats)
+}
+
+// .tensorflow.CostGraphDef cost_graph = 3;
+inline bool RunGraphResponse::has_cost_graph() const {
+  return this != internal_default_instance() && cost_graph_ != NULL;
+}
+inline const ::tensorflow::CostGraphDef& RunGraphResponse::cost_graph() const {
+  const ::tensorflow::CostGraphDef* p = cost_graph_;
+  // @@protoc_insertion_point(field_get:tensorflow.RunGraphResponse.cost_graph)
+  return p != NULL ? *p : *reinterpret_cast<const ::tensorflow::CostGraphDef*>(
+      &::tensorflow::_CostGraphDef_default_instance_);
+}
+inline ::tensorflow::CostGraphDef* RunGraphResponse::release_cost_graph() {
+  // @@protoc_insertion_point(field_release:tensorflow.RunGraphResponse.cost_graph)
+  
+  ::tensorflow::CostGraphDef* temp = cost_graph_;
+  if (GetArenaNoVirtual() != NULL) {
+    temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
+  }
+  cost_graph_ = NULL;
+  return temp;
+}
+inline ::tensorflow::CostGraphDef* RunGraphResponse::unsafe_arena_release_cost_graph() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.RunGraphResponse.cost_graph)
+  
+  ::tensorflow::CostGraphDef* temp = cost_graph_;
+  cost_graph_ = NULL;
+  return temp;
+}
+inline ::tensorflow::CostGraphDef* RunGraphResponse::mutable_cost_graph() {
+  
+  if (cost_graph_ == NULL) {
+    auto* p = CreateMaybeMessage<::tensorflow::CostGraphDef>(GetArenaNoVirtual());
+    cost_graph_ = p;
+  }
+  // @@protoc_insertion_point(field_mutable:tensorflow.RunGraphResponse.cost_graph)
+  return cost_graph_;
+}
+inline void RunGraphResponse::set_allocated_cost_graph(::tensorflow::CostGraphDef* cost_graph) {
+  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
+  if (message_arena == NULL) {
+    delete reinterpret_cast< ::google::protobuf::MessageLite*>(cost_graph_);
+  }
+  if (cost_graph) {
+    ::google::protobuf::Arena* submessage_arena =
+      reinterpret_cast<::google::protobuf::MessageLite*>(cost_graph)->GetArena();
+    if (message_arena != submessage_arena) {
+      cost_graph = ::google::protobuf::internal::GetOwnedMessage(
+          message_arena, cost_graph, submessage_arena);
+    }
+    
+  } else {
+    
+  }
+  cost_graph_ = cost_graph;
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.RunGraphResponse.cost_graph)
+}
+
+// repeated .tensorflow.GraphDef partition_graph = 4;
+inline int RunGraphResponse::partition_graph_size() const {
+  return partition_graph_.size();
+}
+inline ::tensorflow::GraphDef* RunGraphResponse::mutable_partition_graph(int index) {
+  // @@protoc_insertion_point(field_mutable:tensorflow.RunGraphResponse.partition_graph)
+  return partition_graph_.Mutable(index);
+}
+inline ::google::protobuf::RepeatedPtrField< ::tensorflow::GraphDef >*
+RunGraphResponse::mutable_partition_graph() {
+  // @@protoc_insertion_point(field_mutable_list:tensorflow.RunGraphResponse.partition_graph)
+  return &partition_graph_;
+}
+inline const ::tensorflow::GraphDef& RunGraphResponse::partition_graph(int index) const {
+  // @@protoc_insertion_point(field_get:tensorflow.RunGraphResponse.partition_graph)
+  return partition_graph_.Get(index);
+}
+inline ::tensorflow::GraphDef* RunGraphResponse::add_partition_graph() {
+  // @@protoc_insertion_point(field_add:tensorflow.RunGraphResponse.partition_graph)
+  return partition_graph_.Add();
+}
+inline const ::google::protobuf::RepeatedPtrField< ::tensorflow::GraphDef >&
+RunGraphResponse::partition_graph() const {
+  // @@protoc_insertion_point(field_list:tensorflow.RunGraphResponse.partition_graph)
+  return partition_graph_;
+}
+
+// .tensorflow.error.Code status_code = 5;
+inline void RunGraphResponse::clear_status_code() {
+  status_code_ = 0;
+}
+inline ::tensorflow::error::Code RunGraphResponse::status_code() const {
+  // @@protoc_insertion_point(field_get:tensorflow.RunGraphResponse.status_code)
+  return static_cast< ::tensorflow::error::Code >(status_code_);
+}
+inline void RunGraphResponse::set_status_code(::tensorflow::error::Code value) {
+  
+  status_code_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.RunGraphResponse.status_code)
+}
+
+// string status_error_message = 6;
+inline void RunGraphResponse::clear_status_error_message() {
+  status_error_message_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline const ::std::string& RunGraphResponse::status_error_message() const {
+  // @@protoc_insertion_point(field_get:tensorflow.RunGraphResponse.status_error_message)
+  return status_error_message_.Get();
+}
+inline void RunGraphResponse::set_status_error_message(const ::std::string& value) {
+  
+  status_error_message_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set:tensorflow.RunGraphResponse.status_error_message)
+}
+#if LANG_CXX11
+inline void RunGraphResponse::set_status_error_message(::std::string&& value) {
+  
+  status_error_message_.Set(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.RunGraphResponse.status_error_message)
+}
+#endif
+inline void RunGraphResponse::set_status_error_message(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  status_error_message_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
+              GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_char:tensorflow.RunGraphResponse.status_error_message)
+}
+inline void RunGraphResponse::set_status_error_message(const char* value,
+    size_t size) {
+  
+  status_error_message_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
+      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.RunGraphResponse.status_error_message)
+}
+inline ::std::string* RunGraphResponse::mutable_status_error_message() {
+  
+  // @@protoc_insertion_point(field_mutable:tensorflow.RunGraphResponse.status_error_message)
+  return status_error_message_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline ::std::string* RunGraphResponse::release_status_error_message() {
+  // @@protoc_insertion_point(field_release:tensorflow.RunGraphResponse.status_error_message)
+  
+  return status_error_message_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline void RunGraphResponse::set_allocated_status_error_message(::std::string* status_error_message) {
+  if (status_error_message != NULL) {
+    
+  } else {
+    
+  }
+  status_error_message_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), status_error_message,
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.RunGraphResponse.status_error_message)
+}
+inline ::std::string* RunGraphResponse::unsafe_arena_release_status_error_message() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.RunGraphResponse.status_error_message)
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  
+  return status_error_message_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      GetArenaNoVirtual());
+}
+inline void RunGraphResponse::unsafe_arena_set_allocated_status_error_message(
+    ::std::string* status_error_message) {
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (status_error_message != NULL) {
+    
+  } else {
+    
+  }
+  status_error_message_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      status_error_message, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.RunGraphResponse.status_error_message)
+}
+
+// -------------------------------------------------------------------
+
+// CleanupGraphRequest
+
+// int64 step_id = 1;
+inline void CleanupGraphRequest::clear_step_id() {
+  step_id_ = PROTOBUF_LONGLONG(0);
+}
+inline ::google::protobuf::int64 CleanupGraphRequest::step_id() const {
+  // @@protoc_insertion_point(field_get:tensorflow.CleanupGraphRequest.step_id)
+  return step_id_;
+}
+inline void CleanupGraphRequest::set_step_id(::google::protobuf::int64 value) {
+  
+  step_id_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.CleanupGraphRequest.step_id)
+}
+
+// -------------------------------------------------------------------
+
+// CleanupGraphResponse
+
+// -------------------------------------------------------------------
+
+// RecvTensorRequest
+
+// int64 step_id = 1;
+inline void RecvTensorRequest::clear_step_id() {
+  step_id_ = PROTOBUF_LONGLONG(0);
+}
+inline ::google::protobuf::int64 RecvTensorRequest::step_id() const {
+  // @@protoc_insertion_point(field_get:tensorflow.RecvTensorRequest.step_id)
+  return step_id_;
+}
+inline void RecvTensorRequest::set_step_id(::google::protobuf::int64 value) {
+  
+  step_id_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.RecvTensorRequest.step_id)
+}
+
+// string rendezvous_key = 2;
+inline void RecvTensorRequest::clear_rendezvous_key() {
+  rendezvous_key_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline const ::std::string& RecvTensorRequest::rendezvous_key() const {
+  // @@protoc_insertion_point(field_get:tensorflow.RecvTensorRequest.rendezvous_key)
+  return rendezvous_key_.Get();
+}
+inline void RecvTensorRequest::set_rendezvous_key(const ::std::string& value) {
+  
+  rendezvous_key_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set:tensorflow.RecvTensorRequest.rendezvous_key)
+}
+#if LANG_CXX11
+inline void RecvTensorRequest::set_rendezvous_key(::std::string&& value) {
+  
+  rendezvous_key_.Set(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.RecvTensorRequest.rendezvous_key)
+}
+#endif
+inline void RecvTensorRequest::set_rendezvous_key(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  rendezvous_key_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
+              GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_char:tensorflow.RecvTensorRequest.rendezvous_key)
+}
+inline void RecvTensorRequest::set_rendezvous_key(const char* value,
+    size_t size) {
+  
+  rendezvous_key_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
+      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.RecvTensorRequest.rendezvous_key)
+}
+inline ::std::string* RecvTensorRequest::mutable_rendezvous_key() {
+  
+  // @@protoc_insertion_point(field_mutable:tensorflow.RecvTensorRequest.rendezvous_key)
+  return rendezvous_key_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline ::std::string* RecvTensorRequest::release_rendezvous_key() {
+  // @@protoc_insertion_point(field_release:tensorflow.RecvTensorRequest.rendezvous_key)
+  
+  return rendezvous_key_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline void RecvTensorRequest::set_allocated_rendezvous_key(::std::string* rendezvous_key) {
+  if (rendezvous_key != NULL) {
+    
+  } else {
+    
+  }
+  rendezvous_key_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), rendezvous_key,
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.RecvTensorRequest.rendezvous_key)
+}
+inline ::std::string* RecvTensorRequest::unsafe_arena_release_rendezvous_key() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.RecvTensorRequest.rendezvous_key)
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  
+  return rendezvous_key_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      GetArenaNoVirtual());
+}
+inline void RecvTensorRequest::unsafe_arena_set_allocated_rendezvous_key(
+    ::std::string* rendezvous_key) {
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (rendezvous_key != NULL) {
+    
+  } else {
+    
+  }
+  rendezvous_key_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      rendezvous_key, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.RecvTensorRequest.rendezvous_key)
+}
+
+// bool dma_ok = 3;
+inline void RecvTensorRequest::clear_dma_ok() {
+  dma_ok_ = false;
+}
+inline bool RecvTensorRequest::dma_ok() const {
+  // @@protoc_insertion_point(field_get:tensorflow.RecvTensorRequest.dma_ok)
+  return dma_ok_;
+}
+inline void RecvTensorRequest::set_dma_ok(bool value) {
+  
+  dma_ok_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.RecvTensorRequest.dma_ok)
+}
+
+// .tensorflow.DeviceLocality client_locality = 4;
+inline bool RecvTensorRequest::has_client_locality() const {
+  return this != internal_default_instance() && client_locality_ != NULL;
+}
+inline const ::tensorflow::DeviceLocality& RecvTensorRequest::client_locality() const {
+  const ::tensorflow::DeviceLocality* p = client_locality_;
+  // @@protoc_insertion_point(field_get:tensorflow.RecvTensorRequest.client_locality)
+  return p != NULL ? *p : *reinterpret_cast<const ::tensorflow::DeviceLocality*>(
+      &::tensorflow::_DeviceLocality_default_instance_);
+}
+inline ::tensorflow::DeviceLocality* RecvTensorRequest::release_client_locality() {
+  // @@protoc_insertion_point(field_release:tensorflow.RecvTensorRequest.client_locality)
+  
+  ::tensorflow::DeviceLocality* temp = client_locality_;
+  if (GetArenaNoVirtual() != NULL) {
+    temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
+  }
+  client_locality_ = NULL;
+  return temp;
+}
+inline ::tensorflow::DeviceLocality* RecvTensorRequest::unsafe_arena_release_client_locality() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.RecvTensorRequest.client_locality)
+  
+  ::tensorflow::DeviceLocality* temp = client_locality_;
+  client_locality_ = NULL;
+  return temp;
+}
+inline ::tensorflow::DeviceLocality* RecvTensorRequest::mutable_client_locality() {
+  
+  if (client_locality_ == NULL) {
+    auto* p = CreateMaybeMessage<::tensorflow::DeviceLocality>(GetArenaNoVirtual());
+    client_locality_ = p;
+  }
+  // @@protoc_insertion_point(field_mutable:tensorflow.RecvTensorRequest.client_locality)
+  return client_locality_;
+}
+inline void RecvTensorRequest::set_allocated_client_locality(::tensorflow::DeviceLocality* client_locality) {
+  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
+  if (message_arena == NULL) {
+    delete reinterpret_cast< ::google::protobuf::MessageLite*>(client_locality_);
+  }
+  if (client_locality) {
+    ::google::protobuf::Arena* submessage_arena =
+      reinterpret_cast<::google::protobuf::MessageLite*>(client_locality)->GetArena();
+    if (message_arena != submessage_arena) {
+      client_locality = ::google::protobuf::internal::GetOwnedMessage(
+          message_arena, client_locality, submessage_arena);
+    }
+    
+  } else {
+    
+  }
+  client_locality_ = client_locality;
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.RecvTensorRequest.client_locality)
+}
+
+// .tensorflow.DeviceLocality server_locality = 5;
+inline bool RecvTensorRequest::has_server_locality() const {
+  return this != internal_default_instance() && server_locality_ != NULL;
+}
+inline const ::tensorflow::DeviceLocality& RecvTensorRequest::server_locality() const {
+  const ::tensorflow::DeviceLocality* p = server_locality_;
+  // @@protoc_insertion_point(field_get:tensorflow.RecvTensorRequest.server_locality)
+  return p != NULL ? *p : *reinterpret_cast<const ::tensorflow::DeviceLocality*>(
+      &::tensorflow::_DeviceLocality_default_instance_);
+}
+inline ::tensorflow::DeviceLocality* RecvTensorRequest::release_server_locality() {
+  // @@protoc_insertion_point(field_release:tensorflow.RecvTensorRequest.server_locality)
+  
+  ::tensorflow::DeviceLocality* temp = server_locality_;
+  if (GetArenaNoVirtual() != NULL) {
+    temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
+  }
+  server_locality_ = NULL;
+  return temp;
+}
+inline ::tensorflow::DeviceLocality* RecvTensorRequest::unsafe_arena_release_server_locality() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.RecvTensorRequest.server_locality)
+  
+  ::tensorflow::DeviceLocality* temp = server_locality_;
+  server_locality_ = NULL;
+  return temp;
+}
+inline ::tensorflow::DeviceLocality* RecvTensorRequest::mutable_server_locality() {
+  
+  if (server_locality_ == NULL) {
+    auto* p = CreateMaybeMessage<::tensorflow::DeviceLocality>(GetArenaNoVirtual());
+    server_locality_ = p;
+  }
+  // @@protoc_insertion_point(field_mutable:tensorflow.RecvTensorRequest.server_locality)
+  return server_locality_;
+}
+inline void RecvTensorRequest::set_allocated_server_locality(::tensorflow::DeviceLocality* server_locality) {
+  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
+  if (message_arena == NULL) {
+    delete reinterpret_cast< ::google::protobuf::MessageLite*>(server_locality_);
+  }
+  if (server_locality) {
+    ::google::protobuf::Arena* submessage_arena =
+      reinterpret_cast<::google::protobuf::MessageLite*>(server_locality)->GetArena();
+    if (message_arena != submessage_arena) {
+      server_locality = ::google::protobuf::internal::GetOwnedMessage(
+          message_arena, server_locality, submessage_arena);
+    }
+    
+  } else {
+    
+  }
+  server_locality_ = server_locality;
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.RecvTensorRequest.server_locality)
+}
+
+// .google.protobuf.Any transport_options = 6;
+inline bool RecvTensorRequest::has_transport_options() const {
+  return this != internal_default_instance() && transport_options_ != NULL;
+}
+inline const ::google::protobuf::Any& RecvTensorRequest::transport_options() const {
+  const ::google::protobuf::Any* p = transport_options_;
+  // @@protoc_insertion_point(field_get:tensorflow.RecvTensorRequest.transport_options)
+  return p != NULL ? *p : *reinterpret_cast<const ::google::protobuf::Any*>(
+      &::google::protobuf::_Any_default_instance_);
+}
+inline ::google::protobuf::Any* RecvTensorRequest::release_transport_options() {
+  // @@protoc_insertion_point(field_release:tensorflow.RecvTensorRequest.transport_options)
+  
+  ::google::protobuf::Any* temp = transport_options_;
+  if (GetArenaNoVirtual() != NULL) {
+    temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
+  }
+  transport_options_ = NULL;
+  return temp;
+}
+inline ::google::protobuf::Any* RecvTensorRequest::unsafe_arena_release_transport_options() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.RecvTensorRequest.transport_options)
+  
+  ::google::protobuf::Any* temp = transport_options_;
+  transport_options_ = NULL;
+  return temp;
+}
+inline ::google::protobuf::Any* RecvTensorRequest::mutable_transport_options() {
+  
+  if (transport_options_ == NULL) {
+    auto* p = CreateMaybeMessage<::google::protobuf::Any>(GetArenaNoVirtual());
+    transport_options_ = p;
+  }
+  // @@protoc_insertion_point(field_mutable:tensorflow.RecvTensorRequest.transport_options)
+  return transport_options_;
+}
+inline void RecvTensorRequest::set_allocated_transport_options(::google::protobuf::Any* transport_options) {
+  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
+  if (message_arena == NULL) {
+    delete reinterpret_cast< ::google::protobuf::MessageLite*>(transport_options_);
+  }
+  if (transport_options) {
+    ::google::protobuf::Arena* submessage_arena = NULL;
+    if (message_arena != submessage_arena) {
+      transport_options = ::google::protobuf::internal::GetOwnedMessage(
+          message_arena, transport_options, submessage_arena);
+    }
+    
+  } else {
+    
+  }
+  transport_options_ = transport_options;
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.RecvTensorRequest.transport_options)
+}
+
+// int64 request_id = 7;
+inline void RecvTensorRequest::clear_request_id() {
+  request_id_ = PROTOBUF_LONGLONG(0);
+}
+inline ::google::protobuf::int64 RecvTensorRequest::request_id() const {
+  // @@protoc_insertion_point(field_get:tensorflow.RecvTensorRequest.request_id)
+  return request_id_;
+}
+inline void RecvTensorRequest::set_request_id(::google::protobuf::int64 value) {
+  
+  request_id_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.RecvTensorRequest.request_id)
+}
+
+// -------------------------------------------------------------------
+
+// RecvTensorResponse
+
+// .tensorflow.TensorProto tensor = 1;
+inline bool RecvTensorResponse::has_tensor() const {
+  return this != internal_default_instance() && tensor_ != NULL;
+}
+inline const ::tensorflow::TensorProto& RecvTensorResponse::tensor() const {
+  const ::tensorflow::TensorProto* p = tensor_;
+  // @@protoc_insertion_point(field_get:tensorflow.RecvTensorResponse.tensor)
+  return p != NULL ? *p : *reinterpret_cast<const ::tensorflow::TensorProto*>(
+      &::tensorflow::_TensorProto_default_instance_);
+}
+inline ::tensorflow::TensorProto* RecvTensorResponse::release_tensor() {
+  // @@protoc_insertion_point(field_release:tensorflow.RecvTensorResponse.tensor)
+  
+  ::tensorflow::TensorProto* temp = tensor_;
+  if (GetArenaNoVirtual() != NULL) {
+    temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
+  }
+  tensor_ = NULL;
+  return temp;
+}
+inline ::tensorflow::TensorProto* RecvTensorResponse::unsafe_arena_release_tensor() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.RecvTensorResponse.tensor)
+  
+  ::tensorflow::TensorProto* temp = tensor_;
+  tensor_ = NULL;
+  return temp;
+}
+inline ::tensorflow::TensorProto* RecvTensorResponse::mutable_tensor() {
+  
+  if (tensor_ == NULL) {
+    auto* p = CreateMaybeMessage<::tensorflow::TensorProto>(GetArenaNoVirtual());
+    tensor_ = p;
+  }
+  // @@protoc_insertion_point(field_mutable:tensorflow.RecvTensorResponse.tensor)
+  return tensor_;
+}
+inline void RecvTensorResponse::set_allocated_tensor(::tensorflow::TensorProto* tensor) {
+  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
+  if (message_arena == NULL) {
+    delete reinterpret_cast< ::google::protobuf::MessageLite*>(tensor_);
+  }
+  if (tensor) {
+    ::google::protobuf::Arena* submessage_arena =
+      reinterpret_cast<::google::protobuf::MessageLite*>(tensor)->GetArena();
+    if (message_arena != submessage_arena) {
+      tensor = ::google::protobuf::internal::GetOwnedMessage(
+          message_arena, tensor, submessage_arena);
+    }
+    
+  } else {
+    
+  }
+  tensor_ = tensor;
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.RecvTensorResponse.tensor)
+}
+
+// bool is_dead = 2;
+inline void RecvTensorResponse::clear_is_dead() {
+  is_dead_ = false;
+}
+inline bool RecvTensorResponse::is_dead() const {
+  // @@protoc_insertion_point(field_get:tensorflow.RecvTensorResponse.is_dead)
+  return is_dead_;
+}
+inline void RecvTensorResponse::set_is_dead(bool value) {
+  
+  is_dead_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.RecvTensorResponse.is_dead)
+}
+
+// int64 send_start_micros = 3;
+inline void RecvTensorResponse::clear_send_start_micros() {
+  send_start_micros_ = PROTOBUF_LONGLONG(0);
+}
+inline ::google::protobuf::int64 RecvTensorResponse::send_start_micros() const {
+  // @@protoc_insertion_point(field_get:tensorflow.RecvTensorResponse.send_start_micros)
+  return send_start_micros_;
+}
+inline void RecvTensorResponse::set_send_start_micros(::google::protobuf::int64 value) {
+  
+  send_start_micros_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.RecvTensorResponse.send_start_micros)
+}
+
+// .google.protobuf.Any transport_options = 4;
+inline bool RecvTensorResponse::has_transport_options() const {
+  return this != internal_default_instance() && transport_options_ != NULL;
+}
+inline const ::google::protobuf::Any& RecvTensorResponse::transport_options() const {
+  const ::google::protobuf::Any* p = transport_options_;
+  // @@protoc_insertion_point(field_get:tensorflow.RecvTensorResponse.transport_options)
+  return p != NULL ? *p : *reinterpret_cast<const ::google::protobuf::Any*>(
+      &::google::protobuf::_Any_default_instance_);
+}
+inline ::google::protobuf::Any* RecvTensorResponse::release_transport_options() {
+  // @@protoc_insertion_point(field_release:tensorflow.RecvTensorResponse.transport_options)
+  
+  ::google::protobuf::Any* temp = transport_options_;
+  if (GetArenaNoVirtual() != NULL) {
+    temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
+  }
+  transport_options_ = NULL;
+  return temp;
+}
+inline ::google::protobuf::Any* RecvTensorResponse::unsafe_arena_release_transport_options() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.RecvTensorResponse.transport_options)
+  
+  ::google::protobuf::Any* temp = transport_options_;
+  transport_options_ = NULL;
+  return temp;
+}
+inline ::google::protobuf::Any* RecvTensorResponse::mutable_transport_options() {
+  
+  if (transport_options_ == NULL) {
+    auto* p = CreateMaybeMessage<::google::protobuf::Any>(GetArenaNoVirtual());
+    transport_options_ = p;
+  }
+  // @@protoc_insertion_point(field_mutable:tensorflow.RecvTensorResponse.transport_options)
+  return transport_options_;
+}
+inline void RecvTensorResponse::set_allocated_transport_options(::google::protobuf::Any* transport_options) {
+  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
+  if (message_arena == NULL) {
+    delete reinterpret_cast< ::google::protobuf::MessageLite*>(transport_options_);
+  }
+  if (transport_options) {
+    ::google::protobuf::Arena* submessage_arena = NULL;
+    if (message_arena != submessage_arena) {
+      transport_options = ::google::protobuf::internal::GetOwnedMessage(
+          message_arena, transport_options, submessage_arena);
+    }
+    
+  } else {
+    
+  }
+  transport_options_ = transport_options;
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.RecvTensorResponse.transport_options)
+}
+
+// -------------------------------------------------------------------
+
+// LoggingRequest
+
+// bool enable_rpc_logging = 1;
+inline void LoggingRequest::clear_enable_rpc_logging() {
+  enable_rpc_logging_ = false;
+}
+inline bool LoggingRequest::enable_rpc_logging() const {
+  // @@protoc_insertion_point(field_get:tensorflow.LoggingRequest.enable_rpc_logging)
+  return enable_rpc_logging_;
+}
+inline void LoggingRequest::set_enable_rpc_logging(bool value) {
+  
+  enable_rpc_logging_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.LoggingRequest.enable_rpc_logging)
+}
+
+// bool disable_rpc_logging = 4;
+inline void LoggingRequest::clear_disable_rpc_logging() {
+  disable_rpc_logging_ = false;
+}
+inline bool LoggingRequest::disable_rpc_logging() const {
+  // @@protoc_insertion_point(field_get:tensorflow.LoggingRequest.disable_rpc_logging)
+  return disable_rpc_logging_;
+}
+inline void LoggingRequest::set_disable_rpc_logging(bool value) {
+  
+  disable_rpc_logging_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.LoggingRequest.disable_rpc_logging)
+}
+
+// bool clear = 2;
+inline void LoggingRequest::clear_clear() {
+  clear_ = false;
+}
+inline bool LoggingRequest::clear() const {
+  // @@protoc_insertion_point(field_get:tensorflow.LoggingRequest.clear)
+  return clear_;
+}
+inline void LoggingRequest::set_clear(bool value) {
+  
+  clear_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.LoggingRequest.clear)
+}
+
+// repeated int64 fetch_step_id = 3;
+inline int LoggingRequest::fetch_step_id_size() const {
+  return fetch_step_id_.size();
+}
+inline void LoggingRequest::clear_fetch_step_id() {
+  fetch_step_id_.Clear();
+}
+inline ::google::protobuf::int64 LoggingRequest::fetch_step_id(int index) const {
+  // @@protoc_insertion_point(field_get:tensorflow.LoggingRequest.fetch_step_id)
+  return fetch_step_id_.Get(index);
+}
+inline void LoggingRequest::set_fetch_step_id(int index, ::google::protobuf::int64 value) {
+  fetch_step_id_.Set(index, value);
+  // @@protoc_insertion_point(field_set:tensorflow.LoggingRequest.fetch_step_id)
+}
+inline void LoggingRequest::add_fetch_step_id(::google::protobuf::int64 value) {
+  fetch_step_id_.Add(value);
+  // @@protoc_insertion_point(field_add:tensorflow.LoggingRequest.fetch_step_id)
+}
+inline const ::google::protobuf::RepeatedField< ::google::protobuf::int64 >&
+LoggingRequest::fetch_step_id() const {
+  // @@protoc_insertion_point(field_list:tensorflow.LoggingRequest.fetch_step_id)
+  return fetch_step_id_;
+}
+inline ::google::protobuf::RepeatedField< ::google::protobuf::int64 >*
+LoggingRequest::mutable_fetch_step_id() {
+  // @@protoc_insertion_point(field_mutable_list:tensorflow.LoggingRequest.fetch_step_id)
+  return &fetch_step_id_;
+}
+
+// -------------------------------------------------------------------
+
+// LabeledStepStats
+
+// int64 step_id = 1;
+inline void LabeledStepStats::clear_step_id() {
+  step_id_ = PROTOBUF_LONGLONG(0);
+}
+inline ::google::protobuf::int64 LabeledStepStats::step_id() const {
+  // @@protoc_insertion_point(field_get:tensorflow.LabeledStepStats.step_id)
+  return step_id_;
+}
+inline void LabeledStepStats::set_step_id(::google::protobuf::int64 value) {
+  
+  step_id_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.LabeledStepStats.step_id)
+}
+
+// .tensorflow.StepStats step_stats = 2;
+inline bool LabeledStepStats::has_step_stats() const {
+  return this != internal_default_instance() && step_stats_ != NULL;
+}
+inline const ::tensorflow::StepStats& LabeledStepStats::step_stats() const {
+  const ::tensorflow::StepStats* p = step_stats_;
+  // @@protoc_insertion_point(field_get:tensorflow.LabeledStepStats.step_stats)
+  return p != NULL ? *p : *reinterpret_cast<const ::tensorflow::StepStats*>(
+      &::tensorflow::_StepStats_default_instance_);
+}
+inline ::tensorflow::StepStats* LabeledStepStats::release_step_stats() {
+  // @@protoc_insertion_point(field_release:tensorflow.LabeledStepStats.step_stats)
+  
+  ::tensorflow::StepStats* temp = step_stats_;
+  if (GetArenaNoVirtual() != NULL) {
+    temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
+  }
+  step_stats_ = NULL;
+  return temp;
+}
+inline ::tensorflow::StepStats* LabeledStepStats::unsafe_arena_release_step_stats() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.LabeledStepStats.step_stats)
+  
+  ::tensorflow::StepStats* temp = step_stats_;
+  step_stats_ = NULL;
+  return temp;
+}
+inline ::tensorflow::StepStats* LabeledStepStats::mutable_step_stats() {
+  
+  if (step_stats_ == NULL) {
+    auto* p = CreateMaybeMessage<::tensorflow::StepStats>(GetArenaNoVirtual());
+    step_stats_ = p;
+  }
+  // @@protoc_insertion_point(field_mutable:tensorflow.LabeledStepStats.step_stats)
+  return step_stats_;
+}
+inline void LabeledStepStats::set_allocated_step_stats(::tensorflow::StepStats* step_stats) {
+  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
+  if (message_arena == NULL) {
+    delete reinterpret_cast< ::google::protobuf::MessageLite*>(step_stats_);
+  }
+  if (step_stats) {
+    ::google::protobuf::Arena* submessage_arena =
+      reinterpret_cast<::google::protobuf::MessageLite*>(step_stats)->GetArena();
+    if (message_arena != submessage_arena) {
+      step_stats = ::google::protobuf::internal::GetOwnedMessage(
+          message_arena, step_stats, submessage_arena);
+    }
+    
+  } else {
+    
+  }
+  step_stats_ = step_stats;
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.LabeledStepStats.step_stats)
+}
+
+// -------------------------------------------------------------------
+
+// LoggingResponse
+
+// repeated .tensorflow.LabeledStepStats step = 1;
+inline int LoggingResponse::step_size() const {
+  return step_.size();
+}
+inline void LoggingResponse::clear_step() {
+  step_.Clear();
+}
+inline ::tensorflow::LabeledStepStats* LoggingResponse::mutable_step(int index) {
+  // @@protoc_insertion_point(field_mutable:tensorflow.LoggingResponse.step)
+  return step_.Mutable(index);
+}
+inline ::google::protobuf::RepeatedPtrField< ::tensorflow::LabeledStepStats >*
+LoggingResponse::mutable_step() {
+  // @@protoc_insertion_point(field_mutable_list:tensorflow.LoggingResponse.step)
+  return &step_;
+}
+inline const ::tensorflow::LabeledStepStats& LoggingResponse::step(int index) const {
+  // @@protoc_insertion_point(field_get:tensorflow.LoggingResponse.step)
+  return step_.Get(index);
+}
+inline ::tensorflow::LabeledStepStats* LoggingResponse::add_step() {
+  // @@protoc_insertion_point(field_add:tensorflow.LoggingResponse.step)
+  return step_.Add();
+}
+inline const ::google::protobuf::RepeatedPtrField< ::tensorflow::LabeledStepStats >&
+LoggingResponse::step() const {
+  // @@protoc_insertion_point(field_list:tensorflow.LoggingResponse.step)
+  return step_;
+}
+
+// -------------------------------------------------------------------
+
+// TraceOpts
+
+// double duration = 1;
+inline void TraceOpts::clear_duration() {
+  duration_ = 0;
+}
+inline double TraceOpts::duration() const {
+  // @@protoc_insertion_point(field_get:tensorflow.TraceOpts.duration)
+  return duration_;
+}
+inline void TraceOpts::set_duration(double value) {
+  
+  duration_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.TraceOpts.duration)
+}
+
+// bool use_step_profiler = 2;
+inline void TraceOpts::clear_use_step_profiler() {
+  use_step_profiler_ = false;
+}
+inline bool TraceOpts::use_step_profiler() const {
+  // @@protoc_insertion_point(field_get:tensorflow.TraceOpts.use_step_profiler)
+  return use_step_profiler_;
+}
+inline void TraceOpts::set_use_step_profiler(bool value) {
+  
+  use_step_profiler_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.TraceOpts.use_step_profiler)
+}
+
+// bool use_kernel_profiler = 3;
+inline void TraceOpts::clear_use_kernel_profiler() {
+  use_kernel_profiler_ = false;
+}
+inline bool TraceOpts::use_kernel_profiler() const {
+  // @@protoc_insertion_point(field_get:tensorflow.TraceOpts.use_kernel_profiler)
+  return use_kernel_profiler_;
+}
+inline void TraceOpts::set_use_kernel_profiler(bool value) {
+  
+  use_kernel_profiler_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.TraceOpts.use_kernel_profiler)
+}
+
+// bool use_extended_profiler = 4;
+inline void TraceOpts::clear_use_extended_profiler() {
+  use_extended_profiler_ = false;
+}
+inline bool TraceOpts::use_extended_profiler() const {
+  // @@protoc_insertion_point(field_get:tensorflow.TraceOpts.use_extended_profiler)
+  return use_extended_profiler_;
+}
+inline void TraceOpts::set_use_extended_profiler(bool value) {
+  
+  use_extended_profiler_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.TraceOpts.use_extended_profiler)
+}
+
+// bool use_gpu_profiler = 5;
+inline void TraceOpts::clear_use_gpu_profiler() {
+  use_gpu_profiler_ = false;
+}
+inline bool TraceOpts::use_gpu_profiler() const {
+  // @@protoc_insertion_point(field_get:tensorflow.TraceOpts.use_gpu_profiler)
+  return use_gpu_profiler_;
+}
+inline void TraceOpts::set_use_gpu_profiler(bool value) {
+  
+  use_gpu_profiler_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.TraceOpts.use_gpu_profiler)
+}
+
+// bool use_sample_profiler = 6;
+inline void TraceOpts::clear_use_sample_profiler() {
+  use_sample_profiler_ = false;
+}
+inline bool TraceOpts::use_sample_profiler() const {
+  // @@protoc_insertion_point(field_get:tensorflow.TraceOpts.use_sample_profiler)
+  return use_sample_profiler_;
+}
+inline void TraceOpts::set_use_sample_profiler(bool value) {
+  
+  use_sample_profiler_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.TraceOpts.use_sample_profiler)
+}
+
+// -------------------------------------------------------------------
+
+// TracingRequest
+
+// .tensorflow.TraceOpts options = 1;
+inline bool TracingRequest::has_options() const {
+  return this != internal_default_instance() && options_ != NULL;
+}
+inline void TracingRequest::clear_options() {
+  if (GetArenaNoVirtual() == NULL && options_ != NULL) {
+    delete options_;
+  }
+  options_ = NULL;
+}
+inline const ::tensorflow::TraceOpts& TracingRequest::options() const {
+  const ::tensorflow::TraceOpts* p = options_;
+  // @@protoc_insertion_point(field_get:tensorflow.TracingRequest.options)
+  return p != NULL ? *p : *reinterpret_cast<const ::tensorflow::TraceOpts*>(
+      &::tensorflow::_TraceOpts_default_instance_);
+}
+inline ::tensorflow::TraceOpts* TracingRequest::release_options() {
+  // @@protoc_insertion_point(field_release:tensorflow.TracingRequest.options)
+  
+  ::tensorflow::TraceOpts* temp = options_;
+  if (GetArenaNoVirtual() != NULL) {
+    temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
+  }
+  options_ = NULL;
+  return temp;
+}
+inline ::tensorflow::TraceOpts* TracingRequest::unsafe_arena_release_options() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.TracingRequest.options)
+  
+  ::tensorflow::TraceOpts* temp = options_;
+  options_ = NULL;
+  return temp;
+}
+inline ::tensorflow::TraceOpts* TracingRequest::mutable_options() {
+  
+  if (options_ == NULL) {
+    auto* p = CreateMaybeMessage<::tensorflow::TraceOpts>(GetArenaNoVirtual());
+    options_ = p;
+  }
+  // @@protoc_insertion_point(field_mutable:tensorflow.TracingRequest.options)
+  return options_;
+}
+inline void TracingRequest::set_allocated_options(::tensorflow::TraceOpts* options) {
+  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
+  if (message_arena == NULL) {
+    delete options_;
+  }
+  if (options) {
+    ::google::protobuf::Arena* submessage_arena =
+      ::google::protobuf::Arena::GetArena(options);
+    if (message_arena != submessage_arena) {
+      options = ::google::protobuf::internal::GetOwnedMessage(
+          message_arena, options, submessage_arena);
+    }
+    
+  } else {
+    
+  }
+  options_ = options;
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.TracingRequest.options)
+}
+
+// -------------------------------------------------------------------
+
+// TracingResponse
+
+// -------------------------------------------------------------------
+
+// RecvBufRequest
+
+// int64 step_id = 1;
+inline void RecvBufRequest::clear_step_id() {
+  step_id_ = PROTOBUF_LONGLONG(0);
+}
+inline ::google::protobuf::int64 RecvBufRequest::step_id() const {
+  // @@protoc_insertion_point(field_get:tensorflow.RecvBufRequest.step_id)
+  return step_id_;
+}
+inline void RecvBufRequest::set_step_id(::google::protobuf::int64 value) {
+  
+  step_id_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.RecvBufRequest.step_id)
+}
+
+// string buf_rendezvous_key = 2;
+inline void RecvBufRequest::clear_buf_rendezvous_key() {
+  buf_rendezvous_key_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline const ::std::string& RecvBufRequest::buf_rendezvous_key() const {
+  // @@protoc_insertion_point(field_get:tensorflow.RecvBufRequest.buf_rendezvous_key)
+  return buf_rendezvous_key_.Get();
+}
+inline void RecvBufRequest::set_buf_rendezvous_key(const ::std::string& value) {
+  
+  buf_rendezvous_key_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set:tensorflow.RecvBufRequest.buf_rendezvous_key)
+}
+#if LANG_CXX11
+inline void RecvBufRequest::set_buf_rendezvous_key(::std::string&& value) {
+  
+  buf_rendezvous_key_.Set(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.RecvBufRequest.buf_rendezvous_key)
+}
+#endif
+inline void RecvBufRequest::set_buf_rendezvous_key(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  buf_rendezvous_key_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
+              GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_char:tensorflow.RecvBufRequest.buf_rendezvous_key)
+}
+inline void RecvBufRequest::set_buf_rendezvous_key(const char* value,
+    size_t size) {
+  
+  buf_rendezvous_key_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
+      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.RecvBufRequest.buf_rendezvous_key)
+}
+inline ::std::string* RecvBufRequest::mutable_buf_rendezvous_key() {
+  
+  // @@protoc_insertion_point(field_mutable:tensorflow.RecvBufRequest.buf_rendezvous_key)
+  return buf_rendezvous_key_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline ::std::string* RecvBufRequest::release_buf_rendezvous_key() {
+  // @@protoc_insertion_point(field_release:tensorflow.RecvBufRequest.buf_rendezvous_key)
+  
+  return buf_rendezvous_key_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline void RecvBufRequest::set_allocated_buf_rendezvous_key(::std::string* buf_rendezvous_key) {
+  if (buf_rendezvous_key != NULL) {
+    
+  } else {
+    
+  }
+  buf_rendezvous_key_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), buf_rendezvous_key,
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.RecvBufRequest.buf_rendezvous_key)
+}
+inline ::std::string* RecvBufRequest::unsafe_arena_release_buf_rendezvous_key() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.RecvBufRequest.buf_rendezvous_key)
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  
+  return buf_rendezvous_key_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      GetArenaNoVirtual());
+}
+inline void RecvBufRequest::unsafe_arena_set_allocated_buf_rendezvous_key(
+    ::std::string* buf_rendezvous_key) {
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (buf_rendezvous_key != NULL) {
+    
+  } else {
+    
+  }
+  buf_rendezvous_key_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      buf_rendezvous_key, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.RecvBufRequest.buf_rendezvous_key)
+}
+
+// int64 num_bytes = 3;
+inline void RecvBufRequest::clear_num_bytes() {
+  num_bytes_ = PROTOBUF_LONGLONG(0);
+}
+inline ::google::protobuf::int64 RecvBufRequest::num_bytes() const {
+  // @@protoc_insertion_point(field_get:tensorflow.RecvBufRequest.num_bytes)
+  return num_bytes_;
+}
+inline void RecvBufRequest::set_num_bytes(::google::protobuf::int64 value) {
+  
+  num_bytes_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.RecvBufRequest.num_bytes)
+}
+
+// fixed64 buf_ptr = 4;
+inline void RecvBufRequest::clear_buf_ptr() {
+  buf_ptr_ = PROTOBUF_ULONGLONG(0);
+}
+inline ::google::protobuf::uint64 RecvBufRequest::buf_ptr() const {
+  // @@protoc_insertion_point(field_get:tensorflow.RecvBufRequest.buf_ptr)
+  return buf_ptr_;
+}
+inline void RecvBufRequest::set_buf_ptr(::google::protobuf::uint64 value) {
+  
+  buf_ptr_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.RecvBufRequest.buf_ptr)
+}
+
+// .tensorflow.DeviceLocality client_locality = 5;
+inline bool RecvBufRequest::has_client_locality() const {
+  return this != internal_default_instance() && client_locality_ != NULL;
+}
+inline const ::tensorflow::DeviceLocality& RecvBufRequest::client_locality() const {
+  const ::tensorflow::DeviceLocality* p = client_locality_;
+  // @@protoc_insertion_point(field_get:tensorflow.RecvBufRequest.client_locality)
+  return p != NULL ? *p : *reinterpret_cast<const ::tensorflow::DeviceLocality*>(
+      &::tensorflow::_DeviceLocality_default_instance_);
+}
+inline ::tensorflow::DeviceLocality* RecvBufRequest::release_client_locality() {
+  // @@protoc_insertion_point(field_release:tensorflow.RecvBufRequest.client_locality)
+  
+  ::tensorflow::DeviceLocality* temp = client_locality_;
+  if (GetArenaNoVirtual() != NULL) {
+    temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
+  }
+  client_locality_ = NULL;
+  return temp;
+}
+inline ::tensorflow::DeviceLocality* RecvBufRequest::unsafe_arena_release_client_locality() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.RecvBufRequest.client_locality)
+  
+  ::tensorflow::DeviceLocality* temp = client_locality_;
+  client_locality_ = NULL;
+  return temp;
+}
+inline ::tensorflow::DeviceLocality* RecvBufRequest::mutable_client_locality() {
+  
+  if (client_locality_ == NULL) {
+    auto* p = CreateMaybeMessage<::tensorflow::DeviceLocality>(GetArenaNoVirtual());
+    client_locality_ = p;
+  }
+  // @@protoc_insertion_point(field_mutable:tensorflow.RecvBufRequest.client_locality)
+  return client_locality_;
+}
+inline void RecvBufRequest::set_allocated_client_locality(::tensorflow::DeviceLocality* client_locality) {
+  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
+  if (message_arena == NULL) {
+    delete reinterpret_cast< ::google::protobuf::MessageLite*>(client_locality_);
+  }
+  if (client_locality) {
+    ::google::protobuf::Arena* submessage_arena =
+      reinterpret_cast<::google::protobuf::MessageLite*>(client_locality)->GetArena();
+    if (message_arena != submessage_arena) {
+      client_locality = ::google::protobuf::internal::GetOwnedMessage(
+          message_arena, client_locality, submessage_arena);
+    }
+    
+  } else {
+    
+  }
+  client_locality_ = client_locality;
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.RecvBufRequest.client_locality)
+}
+
+// .tensorflow.DeviceLocality server_locality = 6;
+inline bool RecvBufRequest::has_server_locality() const {
+  return this != internal_default_instance() && server_locality_ != NULL;
+}
+inline const ::tensorflow::DeviceLocality& RecvBufRequest::server_locality() const {
+  const ::tensorflow::DeviceLocality* p = server_locality_;
+  // @@protoc_insertion_point(field_get:tensorflow.RecvBufRequest.server_locality)
+  return p != NULL ? *p : *reinterpret_cast<const ::tensorflow::DeviceLocality*>(
+      &::tensorflow::_DeviceLocality_default_instance_);
+}
+inline ::tensorflow::DeviceLocality* RecvBufRequest::release_server_locality() {
+  // @@protoc_insertion_point(field_release:tensorflow.RecvBufRequest.server_locality)
+  
+  ::tensorflow::DeviceLocality* temp = server_locality_;
+  if (GetArenaNoVirtual() != NULL) {
+    temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
+  }
+  server_locality_ = NULL;
+  return temp;
+}
+inline ::tensorflow::DeviceLocality* RecvBufRequest::unsafe_arena_release_server_locality() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.RecvBufRequest.server_locality)
+  
+  ::tensorflow::DeviceLocality* temp = server_locality_;
+  server_locality_ = NULL;
+  return temp;
+}
+inline ::tensorflow::DeviceLocality* RecvBufRequest::mutable_server_locality() {
+  
+  if (server_locality_ == NULL) {
+    auto* p = CreateMaybeMessage<::tensorflow::DeviceLocality>(GetArenaNoVirtual());
+    server_locality_ = p;
+  }
+  // @@protoc_insertion_point(field_mutable:tensorflow.RecvBufRequest.server_locality)
+  return server_locality_;
+}
+inline void RecvBufRequest::set_allocated_server_locality(::tensorflow::DeviceLocality* server_locality) {
+  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
+  if (message_arena == NULL) {
+    delete reinterpret_cast< ::google::protobuf::MessageLite*>(server_locality_);
+  }
+  if (server_locality) {
+    ::google::protobuf::Arena* submessage_arena =
+      reinterpret_cast<::google::protobuf::MessageLite*>(server_locality)->GetArena();
+    if (message_arena != submessage_arena) {
+      server_locality = ::google::protobuf::internal::GetOwnedMessage(
+          message_arena, server_locality, submessage_arena);
+    }
+    
+  } else {
+    
+  }
+  server_locality_ = server_locality;
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.RecvBufRequest.server_locality)
+}
+
+// .google.protobuf.Any transport_options = 7;
+inline bool RecvBufRequest::has_transport_options() const {
+  return this != internal_default_instance() && transport_options_ != NULL;
+}
+inline const ::google::protobuf::Any& RecvBufRequest::transport_options() const {
+  const ::google::protobuf::Any* p = transport_options_;
+  // @@protoc_insertion_point(field_get:tensorflow.RecvBufRequest.transport_options)
+  return p != NULL ? *p : *reinterpret_cast<const ::google::protobuf::Any*>(
+      &::google::protobuf::_Any_default_instance_);
+}
+inline ::google::protobuf::Any* RecvBufRequest::release_transport_options() {
+  // @@protoc_insertion_point(field_release:tensorflow.RecvBufRequest.transport_options)
+  
+  ::google::protobuf::Any* temp = transport_options_;
+  if (GetArenaNoVirtual() != NULL) {
+    temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
+  }
+  transport_options_ = NULL;
+  return temp;
+}
+inline ::google::protobuf::Any* RecvBufRequest::unsafe_arena_release_transport_options() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.RecvBufRequest.transport_options)
+  
+  ::google::protobuf::Any* temp = transport_options_;
+  transport_options_ = NULL;
+  return temp;
+}
+inline ::google::protobuf::Any* RecvBufRequest::mutable_transport_options() {
+  
+  if (transport_options_ == NULL) {
+    auto* p = CreateMaybeMessage<::google::protobuf::Any>(GetArenaNoVirtual());
+    transport_options_ = p;
+  }
+  // @@protoc_insertion_point(field_mutable:tensorflow.RecvBufRequest.transport_options)
+  return transport_options_;
+}
+inline void RecvBufRequest::set_allocated_transport_options(::google::protobuf::Any* transport_options) {
+  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
+  if (message_arena == NULL) {
+    delete reinterpret_cast< ::google::protobuf::MessageLite*>(transport_options_);
+  }
+  if (transport_options) {
+    ::google::protobuf::Arena* submessage_arena = NULL;
+    if (message_arena != submessage_arena) {
+      transport_options = ::google::protobuf::internal::GetOwnedMessage(
+          message_arena, transport_options, submessage_arena);
+    }
+    
+  } else {
+    
+  }
+  transport_options_ = transport_options;
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.RecvBufRequest.transport_options)
+}
+
+// string src_device = 8;
+inline void RecvBufRequest::clear_src_device() {
+  src_device_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline const ::std::string& RecvBufRequest::src_device() const {
+  // @@protoc_insertion_point(field_get:tensorflow.RecvBufRequest.src_device)
+  return src_device_.Get();
+}
+inline void RecvBufRequest::set_src_device(const ::std::string& value) {
+  
+  src_device_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set:tensorflow.RecvBufRequest.src_device)
+}
+#if LANG_CXX11
+inline void RecvBufRequest::set_src_device(::std::string&& value) {
+  
+  src_device_.Set(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.RecvBufRequest.src_device)
+}
+#endif
+inline void RecvBufRequest::set_src_device(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  src_device_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
+              GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_char:tensorflow.RecvBufRequest.src_device)
+}
+inline void RecvBufRequest::set_src_device(const char* value,
+    size_t size) {
+  
+  src_device_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
+      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.RecvBufRequest.src_device)
+}
+inline ::std::string* RecvBufRequest::mutable_src_device() {
+  
+  // @@protoc_insertion_point(field_mutable:tensorflow.RecvBufRequest.src_device)
+  return src_device_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline ::std::string* RecvBufRequest::release_src_device() {
+  // @@protoc_insertion_point(field_release:tensorflow.RecvBufRequest.src_device)
+  
+  return src_device_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline void RecvBufRequest::set_allocated_src_device(::std::string* src_device) {
+  if (src_device != NULL) {
+    
+  } else {
+    
+  }
+  src_device_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), src_device,
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.RecvBufRequest.src_device)
+}
+inline ::std::string* RecvBufRequest::unsafe_arena_release_src_device() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.RecvBufRequest.src_device)
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  
+  return src_device_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      GetArenaNoVirtual());
+}
+inline void RecvBufRequest::unsafe_arena_set_allocated_src_device(
+    ::std::string* src_device) {
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (src_device != NULL) {
+    
+  } else {
+    
+  }
+  src_device_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      src_device, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.RecvBufRequest.src_device)
+}
+
+// string dst_device = 9;
+inline void RecvBufRequest::clear_dst_device() {
+  dst_device_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline const ::std::string& RecvBufRequest::dst_device() const {
+  // @@protoc_insertion_point(field_get:tensorflow.RecvBufRequest.dst_device)
+  return dst_device_.Get();
+}
+inline void RecvBufRequest::set_dst_device(const ::std::string& value) {
+  
+  dst_device_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set:tensorflow.RecvBufRequest.dst_device)
+}
+#if LANG_CXX11
+inline void RecvBufRequest::set_dst_device(::std::string&& value) {
+  
+  dst_device_.Set(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.RecvBufRequest.dst_device)
+}
+#endif
+inline void RecvBufRequest::set_dst_device(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  dst_device_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
+              GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_char:tensorflow.RecvBufRequest.dst_device)
+}
+inline void RecvBufRequest::set_dst_device(const char* value,
+    size_t size) {
+  
+  dst_device_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
+      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.RecvBufRequest.dst_device)
+}
+inline ::std::string* RecvBufRequest::mutable_dst_device() {
+  
+  // @@protoc_insertion_point(field_mutable:tensorflow.RecvBufRequest.dst_device)
+  return dst_device_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline ::std::string* RecvBufRequest::release_dst_device() {
+  // @@protoc_insertion_point(field_release:tensorflow.RecvBufRequest.dst_device)
+  
+  return dst_device_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline void RecvBufRequest::set_allocated_dst_device(::std::string* dst_device) {
+  if (dst_device != NULL) {
+    
+  } else {
+    
+  }
+  dst_device_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), dst_device,
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.RecvBufRequest.dst_device)
+}
+inline ::std::string* RecvBufRequest::unsafe_arena_release_dst_device() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.RecvBufRequest.dst_device)
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  
+  return dst_device_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      GetArenaNoVirtual());
+}
+inline void RecvBufRequest::unsafe_arena_set_allocated_dst_device(
+    ::std::string* dst_device) {
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (dst_device != NULL) {
+    
+  } else {
+    
+  }
+  dst_device_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      dst_device, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.RecvBufRequest.dst_device)
+}
+
+// -------------------------------------------------------------------
+
+// RecvBufResponse
+
+// fixed64 buf_ptr = 1;
+inline void RecvBufResponse::clear_buf_ptr() {
+  buf_ptr_ = PROTOBUF_ULONGLONG(0);
+}
+inline ::google::protobuf::uint64 RecvBufResponse::buf_ptr() const {
+  // @@protoc_insertion_point(field_get:tensorflow.RecvBufResponse.buf_ptr)
+  return buf_ptr_;
+}
+inline void RecvBufResponse::set_buf_ptr(::google::protobuf::uint64 value) {
+  
+  buf_ptr_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.RecvBufResponse.buf_ptr)
+}
+
+// int64 num_bytes = 2;
+inline void RecvBufResponse::clear_num_bytes() {
+  num_bytes_ = PROTOBUF_LONGLONG(0);
+}
+inline ::google::protobuf::int64 RecvBufResponse::num_bytes() const {
+  // @@protoc_insertion_point(field_get:tensorflow.RecvBufResponse.num_bytes)
+  return num_bytes_;
+}
+inline void RecvBufResponse::set_num_bytes(::google::protobuf::int64 value) {
+  
+  num_bytes_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.RecvBufResponse.num_bytes)
+}
+
+// bool is_dead = 3;
+inline void RecvBufResponse::clear_is_dead() {
+  is_dead_ = false;
+}
+inline bool RecvBufResponse::is_dead() const {
+  // @@protoc_insertion_point(field_get:tensorflow.RecvBufResponse.is_dead)
+  return is_dead_;
+}
+inline void RecvBufResponse::set_is_dead(bool value) {
+  
+  is_dead_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.RecvBufResponse.is_dead)
+}
+
+// .google.protobuf.Any transport_options = 4;
+inline bool RecvBufResponse::has_transport_options() const {
+  return this != internal_default_instance() && transport_options_ != NULL;
+}
+inline const ::google::protobuf::Any& RecvBufResponse::transport_options() const {
+  const ::google::protobuf::Any* p = transport_options_;
+  // @@protoc_insertion_point(field_get:tensorflow.RecvBufResponse.transport_options)
+  return p != NULL ? *p : *reinterpret_cast<const ::google::protobuf::Any*>(
+      &::google::protobuf::_Any_default_instance_);
+}
+inline ::google::protobuf::Any* RecvBufResponse::release_transport_options() {
+  // @@protoc_insertion_point(field_release:tensorflow.RecvBufResponse.transport_options)
+  
+  ::google::protobuf::Any* temp = transport_options_;
+  if (GetArenaNoVirtual() != NULL) {
+    temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
+  }
+  transport_options_ = NULL;
+  return temp;
+}
+inline ::google::protobuf::Any* RecvBufResponse::unsafe_arena_release_transport_options() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.RecvBufResponse.transport_options)
+  
+  ::google::protobuf::Any* temp = transport_options_;
+  transport_options_ = NULL;
+  return temp;
+}
+inline ::google::protobuf::Any* RecvBufResponse::mutable_transport_options() {
+  
+  if (transport_options_ == NULL) {
+    auto* p = CreateMaybeMessage<::google::protobuf::Any>(GetArenaNoVirtual());
+    transport_options_ = p;
+  }
+  // @@protoc_insertion_point(field_mutable:tensorflow.RecvBufResponse.transport_options)
+  return transport_options_;
+}
+inline void RecvBufResponse::set_allocated_transport_options(::google::protobuf::Any* transport_options) {
+  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
+  if (message_arena == NULL) {
+    delete reinterpret_cast< ::google::protobuf::MessageLite*>(transport_options_);
+  }
+  if (transport_options) {
+    ::google::protobuf::Arena* submessage_arena = NULL;
+    if (message_arena != submessage_arena) {
+      transport_options = ::google::protobuf::internal::GetOwnedMessage(
+          message_arena, transport_options, submessage_arena);
+    }
+    
+  } else {
+    
+  }
+  transport_options_ = transport_options;
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.RecvBufResponse.transport_options)
+}
+
+// int64 send_start_micros = 5;
+inline void RecvBufResponse::clear_send_start_micros() {
+  send_start_micros_ = PROTOBUF_LONGLONG(0);
+}
+inline ::google::protobuf::int64 RecvBufResponse::send_start_micros() const {
+  // @@protoc_insertion_point(field_get:tensorflow.RecvBufResponse.send_start_micros)
+  return send_start_micros_;
+}
+inline void RecvBufResponse::set_send_start_micros(::google::protobuf::int64 value) {
+  
+  send_start_micros_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.RecvBufResponse.send_start_micros)
+}
+
+// -------------------------------------------------------------------
+
+// CompleteGroupRequest
+
+// int32 group_key = 1;
+inline void CompleteGroupRequest::clear_group_key() {
+  group_key_ = 0;
+}
+inline ::google::protobuf::int32 CompleteGroupRequest::group_key() const {
+  // @@protoc_insertion_point(field_get:tensorflow.CompleteGroupRequest.group_key)
+  return group_key_;
+}
+inline void CompleteGroupRequest::set_group_key(::google::protobuf::int32 value) {
+  
+  group_key_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.CompleteGroupRequest.group_key)
+}
+
+// int32 group_size = 2;
+inline void CompleteGroupRequest::clear_group_size() {
+  group_size_ = 0;
+}
+inline ::google::protobuf::int32 CompleteGroupRequest::group_size() const {
+  // @@protoc_insertion_point(field_get:tensorflow.CompleteGroupRequest.group_size)
+  return group_size_;
+}
+inline void CompleteGroupRequest::set_group_size(::google::protobuf::int32 value) {
+  
+  group_size_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.CompleteGroupRequest.group_size)
+}
+
+// string device_type = 3;
+inline void CompleteGroupRequest::clear_device_type() {
+  device_type_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline const ::std::string& CompleteGroupRequest::device_type() const {
+  // @@protoc_insertion_point(field_get:tensorflow.CompleteGroupRequest.device_type)
+  return device_type_.Get();
+}
+inline void CompleteGroupRequest::set_device_type(const ::std::string& value) {
+  
+  device_type_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set:tensorflow.CompleteGroupRequest.device_type)
+}
+#if LANG_CXX11
+inline void CompleteGroupRequest::set_device_type(::std::string&& value) {
+  
+  device_type_.Set(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.CompleteGroupRequest.device_type)
+}
+#endif
+inline void CompleteGroupRequest::set_device_type(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  device_type_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
+              GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_char:tensorflow.CompleteGroupRequest.device_type)
+}
+inline void CompleteGroupRequest::set_device_type(const char* value,
+    size_t size) {
+  
+  device_type_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
+      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.CompleteGroupRequest.device_type)
+}
+inline ::std::string* CompleteGroupRequest::mutable_device_type() {
+  
+  // @@protoc_insertion_point(field_mutable:tensorflow.CompleteGroupRequest.device_type)
+  return device_type_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline ::std::string* CompleteGroupRequest::release_device_type() {
+  // @@protoc_insertion_point(field_release:tensorflow.CompleteGroupRequest.device_type)
+  
+  return device_type_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline void CompleteGroupRequest::set_allocated_device_type(::std::string* device_type) {
+  if (device_type != NULL) {
+    
+  } else {
+    
+  }
+  device_type_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), device_type,
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.CompleteGroupRequest.device_type)
+}
+inline ::std::string* CompleteGroupRequest::unsafe_arena_release_device_type() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.CompleteGroupRequest.device_type)
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  
+  return device_type_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      GetArenaNoVirtual());
+}
+inline void CompleteGroupRequest::unsafe_arena_set_allocated_device_type(
+    ::std::string* device_type) {
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (device_type != NULL) {
+    
+  } else {
+    
+  }
+  device_type_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      device_type, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.CompleteGroupRequest.device_type)
+}
+
+// repeated string device_name = 4;
+inline int CompleteGroupRequest::device_name_size() const {
+  return device_name_.size();
+}
+inline void CompleteGroupRequest::clear_device_name() {
+  device_name_.Clear();
+}
+inline const ::std::string& CompleteGroupRequest::device_name(int index) const {
+  // @@protoc_insertion_point(field_get:tensorflow.CompleteGroupRequest.device_name)
+  return device_name_.Get(index);
+}
+inline ::std::string* CompleteGroupRequest::mutable_device_name(int index) {
+  // @@protoc_insertion_point(field_mutable:tensorflow.CompleteGroupRequest.device_name)
+  return device_name_.Mutable(index);
+}
+inline void CompleteGroupRequest::set_device_name(int index, const ::std::string& value) {
+  // @@protoc_insertion_point(field_set:tensorflow.CompleteGroupRequest.device_name)
+  device_name_.Mutable(index)->assign(value);
+}
+#if LANG_CXX11
+inline void CompleteGroupRequest::set_device_name(int index, ::std::string&& value) {
+  // @@protoc_insertion_point(field_set:tensorflow.CompleteGroupRequest.device_name)
+  device_name_.Mutable(index)->assign(std::move(value));
+}
+#endif
+inline void CompleteGroupRequest::set_device_name(int index, const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  device_name_.Mutable(index)->assign(value);
+  // @@protoc_insertion_point(field_set_char:tensorflow.CompleteGroupRequest.device_name)
+}
+inline void CompleteGroupRequest::set_device_name(int index, const char* value, size_t size) {
+  device_name_.Mutable(index)->assign(
+    reinterpret_cast<const char*>(value), size);
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.CompleteGroupRequest.device_name)
+}
+inline ::std::string* CompleteGroupRequest::add_device_name() {
+  // @@protoc_insertion_point(field_add_mutable:tensorflow.CompleteGroupRequest.device_name)
+  return device_name_.Add();
+}
+inline void CompleteGroupRequest::add_device_name(const ::std::string& value) {
+  device_name_.Add()->assign(value);
+  // @@protoc_insertion_point(field_add:tensorflow.CompleteGroupRequest.device_name)
+}
+#if LANG_CXX11
+inline void CompleteGroupRequest::add_device_name(::std::string&& value) {
+  device_name_.Add(std::move(value));
+  // @@protoc_insertion_point(field_add:tensorflow.CompleteGroupRequest.device_name)
+}
+#endif
+inline void CompleteGroupRequest::add_device_name(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  device_name_.Add()->assign(value);
+  // @@protoc_insertion_point(field_add_char:tensorflow.CompleteGroupRequest.device_name)
+}
+inline void CompleteGroupRequest::add_device_name(const char* value, size_t size) {
+  device_name_.Add()->assign(reinterpret_cast<const char*>(value), size);
+  // @@protoc_insertion_point(field_add_pointer:tensorflow.CompleteGroupRequest.device_name)
+}
+inline const ::google::protobuf::RepeatedPtrField<::std::string>&
+CompleteGroupRequest::device_name() const {
+  // @@protoc_insertion_point(field_list:tensorflow.CompleteGroupRequest.device_name)
+  return device_name_;
+}
+inline ::google::protobuf::RepeatedPtrField<::std::string>*
+CompleteGroupRequest::mutable_device_name() {
+  // @@protoc_insertion_point(field_mutable_list:tensorflow.CompleteGroupRequest.device_name)
+  return &device_name_;
+}
+
+// -------------------------------------------------------------------
+
+// CompleteGroupResponse
+
+// int32 group_key = 1;
+inline void CompleteGroupResponse::clear_group_key() {
+  group_key_ = 0;
+}
+inline ::google::protobuf::int32 CompleteGroupResponse::group_key() const {
+  // @@protoc_insertion_point(field_get:tensorflow.CompleteGroupResponse.group_key)
+  return group_key_;
+}
+inline void CompleteGroupResponse::set_group_key(::google::protobuf::int32 value) {
+  
+  group_key_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.CompleteGroupResponse.group_key)
+}
+
+// int32 group_size = 2;
+inline void CompleteGroupResponse::clear_group_size() {
+  group_size_ = 0;
+}
+inline ::google::protobuf::int32 CompleteGroupResponse::group_size() const {
+  // @@protoc_insertion_point(field_get:tensorflow.CompleteGroupResponse.group_size)
+  return group_size_;
+}
+inline void CompleteGroupResponse::set_group_size(::google::protobuf::int32 value) {
+  
+  group_size_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.CompleteGroupResponse.group_size)
+}
+
+// string device_type = 3;
+inline void CompleteGroupResponse::clear_device_type() {
+  device_type_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline const ::std::string& CompleteGroupResponse::device_type() const {
+  // @@protoc_insertion_point(field_get:tensorflow.CompleteGroupResponse.device_type)
+  return device_type_.Get();
+}
+inline void CompleteGroupResponse::set_device_type(const ::std::string& value) {
+  
+  device_type_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set:tensorflow.CompleteGroupResponse.device_type)
+}
+#if LANG_CXX11
+inline void CompleteGroupResponse::set_device_type(::std::string&& value) {
+  
+  device_type_.Set(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.CompleteGroupResponse.device_type)
+}
+#endif
+inline void CompleteGroupResponse::set_device_type(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  device_type_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
+              GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_char:tensorflow.CompleteGroupResponse.device_type)
+}
+inline void CompleteGroupResponse::set_device_type(const char* value,
+    size_t size) {
+  
+  device_type_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
+      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.CompleteGroupResponse.device_type)
+}
+inline ::std::string* CompleteGroupResponse::mutable_device_type() {
+  
+  // @@protoc_insertion_point(field_mutable:tensorflow.CompleteGroupResponse.device_type)
+  return device_type_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline ::std::string* CompleteGroupResponse::release_device_type() {
+  // @@protoc_insertion_point(field_release:tensorflow.CompleteGroupResponse.device_type)
+  
+  return device_type_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline void CompleteGroupResponse::set_allocated_device_type(::std::string* device_type) {
+  if (device_type != NULL) {
+    
+  } else {
+    
+  }
+  device_type_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), device_type,
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.CompleteGroupResponse.device_type)
+}
+inline ::std::string* CompleteGroupResponse::unsafe_arena_release_device_type() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.CompleteGroupResponse.device_type)
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  
+  return device_type_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      GetArenaNoVirtual());
+}
+inline void CompleteGroupResponse::unsafe_arena_set_allocated_device_type(
+    ::std::string* device_type) {
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (device_type != NULL) {
+    
+  } else {
+    
+  }
+  device_type_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      device_type, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.CompleteGroupResponse.device_type)
+}
+
+// int32 num_tasks = 4;
+inline void CompleteGroupResponse::clear_num_tasks() {
+  num_tasks_ = 0;
+}
+inline ::google::protobuf::int32 CompleteGroupResponse::num_tasks() const {
+  // @@protoc_insertion_point(field_get:tensorflow.CompleteGroupResponse.num_tasks)
+  return num_tasks_;
+}
+inline void CompleteGroupResponse::set_num_tasks(::google::protobuf::int32 value) {
+  
+  num_tasks_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.CompleteGroupResponse.num_tasks)
+}
+
+// repeated string device_name = 5;
+inline int CompleteGroupResponse::device_name_size() const {
+  return device_name_.size();
+}
+inline void CompleteGroupResponse::clear_device_name() {
+  device_name_.Clear();
+}
+inline const ::std::string& CompleteGroupResponse::device_name(int index) const {
+  // @@protoc_insertion_point(field_get:tensorflow.CompleteGroupResponse.device_name)
+  return device_name_.Get(index);
+}
+inline ::std::string* CompleteGroupResponse::mutable_device_name(int index) {
+  // @@protoc_insertion_point(field_mutable:tensorflow.CompleteGroupResponse.device_name)
+  return device_name_.Mutable(index);
+}
+inline void CompleteGroupResponse::set_device_name(int index, const ::std::string& value) {
+  // @@protoc_insertion_point(field_set:tensorflow.CompleteGroupResponse.device_name)
+  device_name_.Mutable(index)->assign(value);
+}
+#if LANG_CXX11
+inline void CompleteGroupResponse::set_device_name(int index, ::std::string&& value) {
+  // @@protoc_insertion_point(field_set:tensorflow.CompleteGroupResponse.device_name)
+  device_name_.Mutable(index)->assign(std::move(value));
+}
+#endif
+inline void CompleteGroupResponse::set_device_name(int index, const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  device_name_.Mutable(index)->assign(value);
+  // @@protoc_insertion_point(field_set_char:tensorflow.CompleteGroupResponse.device_name)
+}
+inline void CompleteGroupResponse::set_device_name(int index, const char* value, size_t size) {
+  device_name_.Mutable(index)->assign(
+    reinterpret_cast<const char*>(value), size);
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.CompleteGroupResponse.device_name)
+}
+inline ::std::string* CompleteGroupResponse::add_device_name() {
+  // @@protoc_insertion_point(field_add_mutable:tensorflow.CompleteGroupResponse.device_name)
+  return device_name_.Add();
+}
+inline void CompleteGroupResponse::add_device_name(const ::std::string& value) {
+  device_name_.Add()->assign(value);
+  // @@protoc_insertion_point(field_add:tensorflow.CompleteGroupResponse.device_name)
+}
+#if LANG_CXX11
+inline void CompleteGroupResponse::add_device_name(::std::string&& value) {
+  device_name_.Add(std::move(value));
+  // @@protoc_insertion_point(field_add:tensorflow.CompleteGroupResponse.device_name)
+}
+#endif
+inline void CompleteGroupResponse::add_device_name(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  device_name_.Add()->assign(value);
+  // @@protoc_insertion_point(field_add_char:tensorflow.CompleteGroupResponse.device_name)
+}
+inline void CompleteGroupResponse::add_device_name(const char* value, size_t size) {
+  device_name_.Add()->assign(reinterpret_cast<const char*>(value), size);
+  // @@protoc_insertion_point(field_add_pointer:tensorflow.CompleteGroupResponse.device_name)
+}
+inline const ::google::protobuf::RepeatedPtrField<::std::string>&
+CompleteGroupResponse::device_name() const {
+  // @@protoc_insertion_point(field_list:tensorflow.CompleteGroupResponse.device_name)
+  return device_name_;
+}
+inline ::google::protobuf::RepeatedPtrField<::std::string>*
+CompleteGroupResponse::mutable_device_name() {
+  // @@protoc_insertion_point(field_mutable_list:tensorflow.CompleteGroupResponse.device_name)
+  return &device_name_;
+}
+
+// repeated string task_name = 6;
+inline int CompleteGroupResponse::task_name_size() const {
+  return task_name_.size();
+}
+inline void CompleteGroupResponse::clear_task_name() {
+  task_name_.Clear();
+}
+inline const ::std::string& CompleteGroupResponse::task_name(int index) const {
+  // @@protoc_insertion_point(field_get:tensorflow.CompleteGroupResponse.task_name)
+  return task_name_.Get(index);
+}
+inline ::std::string* CompleteGroupResponse::mutable_task_name(int index) {
+  // @@protoc_insertion_point(field_mutable:tensorflow.CompleteGroupResponse.task_name)
+  return task_name_.Mutable(index);
+}
+inline void CompleteGroupResponse::set_task_name(int index, const ::std::string& value) {
+  // @@protoc_insertion_point(field_set:tensorflow.CompleteGroupResponse.task_name)
+  task_name_.Mutable(index)->assign(value);
+}
+#if LANG_CXX11
+inline void CompleteGroupResponse::set_task_name(int index, ::std::string&& value) {
+  // @@protoc_insertion_point(field_set:tensorflow.CompleteGroupResponse.task_name)
+  task_name_.Mutable(index)->assign(std::move(value));
+}
+#endif
+inline void CompleteGroupResponse::set_task_name(int index, const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  task_name_.Mutable(index)->assign(value);
+  // @@protoc_insertion_point(field_set_char:tensorflow.CompleteGroupResponse.task_name)
+}
+inline void CompleteGroupResponse::set_task_name(int index, const char* value, size_t size) {
+  task_name_.Mutable(index)->assign(
+    reinterpret_cast<const char*>(value), size);
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.CompleteGroupResponse.task_name)
+}
+inline ::std::string* CompleteGroupResponse::add_task_name() {
+  // @@protoc_insertion_point(field_add_mutable:tensorflow.CompleteGroupResponse.task_name)
+  return task_name_.Add();
+}
+inline void CompleteGroupResponse::add_task_name(const ::std::string& value) {
+  task_name_.Add()->assign(value);
+  // @@protoc_insertion_point(field_add:tensorflow.CompleteGroupResponse.task_name)
+}
+#if LANG_CXX11
+inline void CompleteGroupResponse::add_task_name(::std::string&& value) {
+  task_name_.Add(std::move(value));
+  // @@protoc_insertion_point(field_add:tensorflow.CompleteGroupResponse.task_name)
+}
+#endif
+inline void CompleteGroupResponse::add_task_name(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  task_name_.Add()->assign(value);
+  // @@protoc_insertion_point(field_add_char:tensorflow.CompleteGroupResponse.task_name)
+}
+inline void CompleteGroupResponse::add_task_name(const char* value, size_t size) {
+  task_name_.Add()->assign(reinterpret_cast<const char*>(value), size);
+  // @@protoc_insertion_point(field_add_pointer:tensorflow.CompleteGroupResponse.task_name)
+}
+inline const ::google::protobuf::RepeatedPtrField<::std::string>&
+CompleteGroupResponse::task_name() const {
+  // @@protoc_insertion_point(field_list:tensorflow.CompleteGroupResponse.task_name)
+  return task_name_;
+}
+inline ::google::protobuf::RepeatedPtrField<::std::string>*
+CompleteGroupResponse::mutable_task_name() {
+  // @@protoc_insertion_point(field_mutable_list:tensorflow.CompleteGroupResponse.task_name)
+  return &task_name_;
+}
+
+// -------------------------------------------------------------------
+
+// CompleteInstanceRequest
+
+// string name = 1;
+inline void CompleteInstanceRequest::clear_name() {
+  name_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline const ::std::string& CompleteInstanceRequest::name() const {
+  // @@protoc_insertion_point(field_get:tensorflow.CompleteInstanceRequest.name)
+  return name_.Get();
+}
+inline void CompleteInstanceRequest::set_name(const ::std::string& value) {
+  
+  name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set:tensorflow.CompleteInstanceRequest.name)
+}
+#if LANG_CXX11
+inline void CompleteInstanceRequest::set_name(::std::string&& value) {
+  
+  name_.Set(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.CompleteInstanceRequest.name)
+}
+#endif
+inline void CompleteInstanceRequest::set_name(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
+              GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_char:tensorflow.CompleteInstanceRequest.name)
+}
+inline void CompleteInstanceRequest::set_name(const char* value,
+    size_t size) {
+  
+  name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
+      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.CompleteInstanceRequest.name)
+}
+inline ::std::string* CompleteInstanceRequest::mutable_name() {
+  
+  // @@protoc_insertion_point(field_mutable:tensorflow.CompleteInstanceRequest.name)
+  return name_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline ::std::string* CompleteInstanceRequest::release_name() {
+  // @@protoc_insertion_point(field_release:tensorflow.CompleteInstanceRequest.name)
+  
+  return name_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline void CompleteInstanceRequest::set_allocated_name(::std::string* name) {
+  if (name != NULL) {
+    
+  } else {
+    
+  }
+  name_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), name,
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.CompleteInstanceRequest.name)
+}
+inline ::std::string* CompleteInstanceRequest::unsafe_arena_release_name() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.CompleteInstanceRequest.name)
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  
+  return name_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      GetArenaNoVirtual());
+}
+inline void CompleteInstanceRequest::unsafe_arena_set_allocated_name(
+    ::std::string* name) {
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (name != NULL) {
+    
+  } else {
+    
+  }
+  name_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      name, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.CompleteInstanceRequest.name)
+}
+
+// int32 type = 2;
+inline void CompleteInstanceRequest::clear_type() {
+  type_ = 0;
+}
+inline ::google::protobuf::int32 CompleteInstanceRequest::type() const {
+  // @@protoc_insertion_point(field_get:tensorflow.CompleteInstanceRequest.type)
+  return type_;
+}
+inline void CompleteInstanceRequest::set_type(::google::protobuf::int32 value) {
+  
+  type_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.CompleteInstanceRequest.type)
+}
+
+// .tensorflow.DataType data_type = 3;
+inline void CompleteInstanceRequest::clear_data_type() {
+  data_type_ = 0;
+}
+inline ::tensorflow::DataType CompleteInstanceRequest::data_type() const {
+  // @@protoc_insertion_point(field_get:tensorflow.CompleteInstanceRequest.data_type)
+  return static_cast< ::tensorflow::DataType >(data_type_);
+}
+inline void CompleteInstanceRequest::set_data_type(::tensorflow::DataType value) {
+  
+  data_type_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.CompleteInstanceRequest.data_type)
+}
+
+// .tensorflow.TensorShapeProto shape = 4;
+inline bool CompleteInstanceRequest::has_shape() const {
+  return this != internal_default_instance() && shape_ != NULL;
+}
+inline const ::tensorflow::TensorShapeProto& CompleteInstanceRequest::shape() const {
+  const ::tensorflow::TensorShapeProto* p = shape_;
+  // @@protoc_insertion_point(field_get:tensorflow.CompleteInstanceRequest.shape)
+  return p != NULL ? *p : *reinterpret_cast<const ::tensorflow::TensorShapeProto*>(
+      &::tensorflow::_TensorShapeProto_default_instance_);
+}
+inline ::tensorflow::TensorShapeProto* CompleteInstanceRequest::release_shape() {
+  // @@protoc_insertion_point(field_release:tensorflow.CompleteInstanceRequest.shape)
+  
+  ::tensorflow::TensorShapeProto* temp = shape_;
+  if (GetArenaNoVirtual() != NULL) {
+    temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
+  }
+  shape_ = NULL;
+  return temp;
+}
+inline ::tensorflow::TensorShapeProto* CompleteInstanceRequest::unsafe_arena_release_shape() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.CompleteInstanceRequest.shape)
+  
+  ::tensorflow::TensorShapeProto* temp = shape_;
+  shape_ = NULL;
+  return temp;
+}
+inline ::tensorflow::TensorShapeProto* CompleteInstanceRequest::mutable_shape() {
+  
+  if (shape_ == NULL) {
+    auto* p = CreateMaybeMessage<::tensorflow::TensorShapeProto>(GetArenaNoVirtual());
+    shape_ = p;
+  }
+  // @@protoc_insertion_point(field_mutable:tensorflow.CompleteInstanceRequest.shape)
+  return shape_;
+}
+inline void CompleteInstanceRequest::set_allocated_shape(::tensorflow::TensorShapeProto* shape) {
+  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
+  if (message_arena == NULL) {
+    delete reinterpret_cast< ::google::protobuf::MessageLite*>(shape_);
+  }
+  if (shape) {
+    ::google::protobuf::Arena* submessage_arena =
+      reinterpret_cast<::google::protobuf::MessageLite*>(shape)->GetArena();
+    if (message_arena != submessage_arena) {
+      shape = ::google::protobuf::internal::GetOwnedMessage(
+          message_arena, shape, submessage_arena);
+    }
+    
+  } else {
+    
+  }
+  shape_ = shape;
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.CompleteInstanceRequest.shape)
+}
+
+// int32 group_key = 5;
+inline void CompleteInstanceRequest::clear_group_key() {
+  group_key_ = 0;
+}
+inline ::google::protobuf::int32 CompleteInstanceRequest::group_key() const {
+  // @@protoc_insertion_point(field_get:tensorflow.CompleteInstanceRequest.group_key)
+  return group_key_;
+}
+inline void CompleteInstanceRequest::set_group_key(::google::protobuf::int32 value) {
+  
+  group_key_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.CompleteInstanceRequest.group_key)
+}
+
+// int32 group_size = 6;
+inline void CompleteInstanceRequest::clear_group_size() {
+  group_size_ = 0;
+}
+inline ::google::protobuf::int32 CompleteInstanceRequest::group_size() const {
+  // @@protoc_insertion_point(field_get:tensorflow.CompleteInstanceRequest.group_size)
+  return group_size_;
+}
+inline void CompleteInstanceRequest::set_group_size(::google::protobuf::int32 value) {
+  
+  group_size_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.CompleteInstanceRequest.group_size)
+}
+
+// int32 instance_key = 7;
+inline void CompleteInstanceRequest::clear_instance_key() {
+  instance_key_ = 0;
+}
+inline ::google::protobuf::int32 CompleteInstanceRequest::instance_key() const {
+  // @@protoc_insertion_point(field_get:tensorflow.CompleteInstanceRequest.instance_key)
+  return instance_key_;
+}
+inline void CompleteInstanceRequest::set_instance_key(::google::protobuf::int32 value) {
+  
+  instance_key_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.CompleteInstanceRequest.instance_key)
+}
+
+// string device_type = 8;
+inline void CompleteInstanceRequest::clear_device_type() {
+  device_type_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline const ::std::string& CompleteInstanceRequest::device_type() const {
+  // @@protoc_insertion_point(field_get:tensorflow.CompleteInstanceRequest.device_type)
+  return device_type_.Get();
+}
+inline void CompleteInstanceRequest::set_device_type(const ::std::string& value) {
+  
+  device_type_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set:tensorflow.CompleteInstanceRequest.device_type)
+}
+#if LANG_CXX11
+inline void CompleteInstanceRequest::set_device_type(::std::string&& value) {
+  
+  device_type_.Set(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.CompleteInstanceRequest.device_type)
+}
+#endif
+inline void CompleteInstanceRequest::set_device_type(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  device_type_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
+              GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_char:tensorflow.CompleteInstanceRequest.device_type)
+}
+inline void CompleteInstanceRequest::set_device_type(const char* value,
+    size_t size) {
+  
+  device_type_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
+      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.CompleteInstanceRequest.device_type)
+}
+inline ::std::string* CompleteInstanceRequest::mutable_device_type() {
+  
+  // @@protoc_insertion_point(field_mutable:tensorflow.CompleteInstanceRequest.device_type)
+  return device_type_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline ::std::string* CompleteInstanceRequest::release_device_type() {
+  // @@protoc_insertion_point(field_release:tensorflow.CompleteInstanceRequest.device_type)
+  
+  return device_type_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline void CompleteInstanceRequest::set_allocated_device_type(::std::string* device_type) {
+  if (device_type != NULL) {
+    
+  } else {
+    
+  }
+  device_type_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), device_type,
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.CompleteInstanceRequest.device_type)
+}
+inline ::std::string* CompleteInstanceRequest::unsafe_arena_release_device_type() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.CompleteInstanceRequest.device_type)
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  
+  return device_type_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      GetArenaNoVirtual());
+}
+inline void CompleteInstanceRequest::unsafe_arena_set_allocated_device_type(
+    ::std::string* device_type) {
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (device_type != NULL) {
+    
+  } else {
+    
+  }
+  device_type_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      device_type, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.CompleteInstanceRequest.device_type)
+}
+
+// repeated int32 subdiv_offset = 9;
+inline int CompleteInstanceRequest::subdiv_offset_size() const {
+  return subdiv_offset_.size();
+}
+inline void CompleteInstanceRequest::clear_subdiv_offset() {
+  subdiv_offset_.Clear();
+}
+inline ::google::protobuf::int32 CompleteInstanceRequest::subdiv_offset(int index) const {
+  // @@protoc_insertion_point(field_get:tensorflow.CompleteInstanceRequest.subdiv_offset)
+  return subdiv_offset_.Get(index);
+}
+inline void CompleteInstanceRequest::set_subdiv_offset(int index, ::google::protobuf::int32 value) {
+  subdiv_offset_.Set(index, value);
+  // @@protoc_insertion_point(field_set:tensorflow.CompleteInstanceRequest.subdiv_offset)
+}
+inline void CompleteInstanceRequest::add_subdiv_offset(::google::protobuf::int32 value) {
+  subdiv_offset_.Add(value);
+  // @@protoc_insertion_point(field_add:tensorflow.CompleteInstanceRequest.subdiv_offset)
+}
+inline const ::google::protobuf::RepeatedField< ::google::protobuf::int32 >&
+CompleteInstanceRequest::subdiv_offset() const {
+  // @@protoc_insertion_point(field_list:tensorflow.CompleteInstanceRequest.subdiv_offset)
+  return subdiv_offset_;
+}
+inline ::google::protobuf::RepeatedField< ::google::protobuf::int32 >*
+CompleteInstanceRequest::mutable_subdiv_offset() {
+  // @@protoc_insertion_point(field_mutable_list:tensorflow.CompleteInstanceRequest.subdiv_offset)
+  return &subdiv_offset_;
+}
+
+// string device = 10;
+inline void CompleteInstanceRequest::clear_device() {
+  device_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline const ::std::string& CompleteInstanceRequest::device() const {
+  // @@protoc_insertion_point(field_get:tensorflow.CompleteInstanceRequest.device)
+  return device_.Get();
+}
+inline void CompleteInstanceRequest::set_device(const ::std::string& value) {
+  
+  device_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set:tensorflow.CompleteInstanceRequest.device)
+}
+#if LANG_CXX11
+inline void CompleteInstanceRequest::set_device(::std::string&& value) {
+  
+  device_.Set(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_rvalue:tensorflow.CompleteInstanceRequest.device)
+}
+#endif
+inline void CompleteInstanceRequest::set_device(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  device_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
+              GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_char:tensorflow.CompleteInstanceRequest.device)
+}
+inline void CompleteInstanceRequest::set_device(const char* value,
+    size_t size) {
+  
+  device_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
+      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_pointer:tensorflow.CompleteInstanceRequest.device)
+}
+inline ::std::string* CompleteInstanceRequest::mutable_device() {
+  
+  // @@protoc_insertion_point(field_mutable:tensorflow.CompleteInstanceRequest.device)
+  return device_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline ::std::string* CompleteInstanceRequest::release_device() {
+  // @@protoc_insertion_point(field_release:tensorflow.CompleteInstanceRequest.device)
+  
+  return device_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
+}
+inline void CompleteInstanceRequest::set_allocated_device(::std::string* device) {
+  if (device != NULL) {
+    
+  } else {
+    
+  }
+  device_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), device,
+      GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_set_allocated:tensorflow.CompleteInstanceRequest.device)
+}
+inline ::std::string* CompleteInstanceRequest::unsafe_arena_release_device() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.CompleteInstanceRequest.device)
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  
+  return device_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      GetArenaNoVirtual());
+}
+inline void CompleteInstanceRequest::unsafe_arena_set_allocated_device(
+    ::std::string* device) {
+  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
+  if (device != NULL) {
+    
+  } else {
+    
+  }
+  device_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      device, GetArenaNoVirtual());
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.CompleteInstanceRequest.device)
+}
+
+// bool is_source = 11;
+inline void CompleteInstanceRequest::clear_is_source() {
+  is_source_ = false;
+}
+inline bool CompleteInstanceRequest::is_source() const {
+  // @@protoc_insertion_point(field_get:tensorflow.CompleteInstanceRequest.is_source)
+  return is_source_;
+}
+inline void CompleteInstanceRequest::set_is_source(bool value) {
+  
+  is_source_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.CompleteInstanceRequest.is_source)
+}
+
+// -------------------------------------------------------------------
+
+// CompleteInstanceResponse
+
+// int32 instance_key = 1;
+inline void CompleteInstanceResponse::clear_instance_key() {
+  instance_key_ = 0;
+}
+inline ::google::protobuf::int32 CompleteInstanceResponse::instance_key() const {
+  // @@protoc_insertion_point(field_get:tensorflow.CompleteInstanceResponse.instance_key)
+  return instance_key_;
+}
+inline void CompleteInstanceResponse::set_instance_key(::google::protobuf::int32 value) {
+  
+  instance_key_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.CompleteInstanceResponse.instance_key)
+}
+
+// int32 source_rank = 2;
+inline void CompleteInstanceResponse::clear_source_rank() {
+  source_rank_ = 0;
+}
+inline ::google::protobuf::int32 CompleteInstanceResponse::source_rank() const {
+  // @@protoc_insertion_point(field_get:tensorflow.CompleteInstanceResponse.source_rank)
+  return source_rank_;
+}
+inline void CompleteInstanceResponse::set_source_rank(::google::protobuf::int32 value) {
+  
+  source_rank_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.CompleteInstanceResponse.source_rank)
+}
+
+// -------------------------------------------------------------------
+
+// GetStepSequenceRequest
+
+// repeated int64 graph_key = 1;
+inline int GetStepSequenceRequest::graph_key_size() const {
+  return graph_key_.size();
+}
+inline void GetStepSequenceRequest::clear_graph_key() {
+  graph_key_.Clear();
+}
+inline ::google::protobuf::int64 GetStepSequenceRequest::graph_key(int index) const {
+  // @@protoc_insertion_point(field_get:tensorflow.GetStepSequenceRequest.graph_key)
+  return graph_key_.Get(index);
+}
+inline void GetStepSequenceRequest::set_graph_key(int index, ::google::protobuf::int64 value) {
+  graph_key_.Set(index, value);
+  // @@protoc_insertion_point(field_set:tensorflow.GetStepSequenceRequest.graph_key)
+}
+inline void GetStepSequenceRequest::add_graph_key(::google::protobuf::int64 value) {
+  graph_key_.Add(value);
+  // @@protoc_insertion_point(field_add:tensorflow.GetStepSequenceRequest.graph_key)
+}
+inline const ::google::protobuf::RepeatedField< ::google::protobuf::int64 >&
+GetStepSequenceRequest::graph_key() const {
+  // @@protoc_insertion_point(field_list:tensorflow.GetStepSequenceRequest.graph_key)
+  return graph_key_;
+}
+inline ::google::protobuf::RepeatedField< ::google::protobuf::int64 >*
+GetStepSequenceRequest::mutable_graph_key() {
+  // @@protoc_insertion_point(field_mutable_list:tensorflow.GetStepSequenceRequest.graph_key)
+  return &graph_key_;
+}
+
+// -------------------------------------------------------------------
+
+// StepSequence
+
+// int64 graph_key = 1;
+inline void StepSequence::clear_graph_key() {
+  graph_key_ = PROTOBUF_LONGLONG(0);
+}
+inline ::google::protobuf::int64 StepSequence::graph_key() const {
+  // @@protoc_insertion_point(field_get:tensorflow.StepSequence.graph_key)
+  return graph_key_;
+}
+inline void StepSequence::set_graph_key(::google::protobuf::int64 value) {
+  
+  graph_key_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.StepSequence.graph_key)
+}
+
+// int64 next_step_id = 2;
+inline void StepSequence::clear_next_step_id() {
+  next_step_id_ = PROTOBUF_LONGLONG(0);
+}
+inline ::google::protobuf::int64 StepSequence::next_step_id() const {
+  // @@protoc_insertion_point(field_get:tensorflow.StepSequence.next_step_id)
+  return next_step_id_;
+}
+inline void StepSequence::set_next_step_id(::google::protobuf::int64 value) {
+  
+  next_step_id_ = value;
+  // @@protoc_insertion_point(field_set:tensorflow.StepSequence.next_step_id)
+}
+
+// -------------------------------------------------------------------
+
+// GetStepSequenceResponse
+
+// repeated .tensorflow.StepSequence step_sequence = 1;
+inline int GetStepSequenceResponse::step_sequence_size() const {
+  return step_sequence_.size();
+}
+inline void GetStepSequenceResponse::clear_step_sequence() {
+  step_sequence_.Clear();
+}
+inline ::tensorflow::StepSequence* GetStepSequenceResponse::mutable_step_sequence(int index) {
+  // @@protoc_insertion_point(field_mutable:tensorflow.GetStepSequenceResponse.step_sequence)
+  return step_sequence_.Mutable(index);
+}
+inline ::google::protobuf::RepeatedPtrField< ::tensorflow::StepSequence >*
+GetStepSequenceResponse::mutable_step_sequence() {
+  // @@protoc_insertion_point(field_mutable_list:tensorflow.GetStepSequenceResponse.step_sequence)
+  return &step_sequence_;
+}
+inline const ::tensorflow::StepSequence& GetStepSequenceResponse::step_sequence(int index) const {
+  // @@protoc_insertion_point(field_get:tensorflow.GetStepSequenceResponse.step_sequence)
+  return step_sequence_.Get(index);
+}
+inline ::tensorflow::StepSequence* GetStepSequenceResponse::add_step_sequence() {
+  // @@protoc_insertion_point(field_add:tensorflow.GetStepSequenceResponse.step_sequence)
+  return step_sequence_.Add();
+}
+inline const ::google::protobuf::RepeatedPtrField< ::tensorflow::StepSequence >&
+GetStepSequenceResponse::step_sequence() const {
+  // @@protoc_insertion_point(field_list:tensorflow.GetStepSequenceResponse.step_sequence)
+  return step_sequence_;
+}
+
+#ifdef __GNUC__
+  #pragma GCC diagnostic pop
+#endif  // __GNUC__
+// -------------------------------------------------------------------
+
+// -------------------------------------------------------------------
+
+// -------------------------------------------------------------------
+
+// -------------------------------------------------------------------
+
+// -------------------------------------------------------------------
+
+// -------------------------------------------------------------------
+
+// -------------------------------------------------------------------
+
+// -------------------------------------------------------------------
+
+// -------------------------------------------------------------------
+
+// -------------------------------------------------------------------
+
+// -------------------------------------------------------------------
+
+// -------------------------------------------------------------------
+
+// -------------------------------------------------------------------
+
+// -------------------------------------------------------------------
+
+// -------------------------------------------------------------------
+
+// -------------------------------------------------------------------
+
+// -------------------------------------------------------------------
+
+// -------------------------------------------------------------------
+
+// -------------------------------------------------------------------
+
+// -------------------------------------------------------------------
+
+// -------------------------------------------------------------------
+
+// -------------------------------------------------------------------
+
+// -------------------------------------------------------------------
+
+// -------------------------------------------------------------------
+
+// -------------------------------------------------------------------
+
+// -------------------------------------------------------------------
+
+// -------------------------------------------------------------------
+
+// -------------------------------------------------------------------
+
+// -------------------------------------------------------------------
+
+// -------------------------------------------------------------------
+
+// -------------------------------------------------------------------
+
+// -------------------------------------------------------------------
+
+// -------------------------------------------------------------------
+
+
+// @@protoc_insertion_point(namespace_scope)
+
+}  // namespace tensorflow
+
+// @@protoc_insertion_point(global_scope)
+
+#include <google/protobuf/port_undef.inc>
+#endif  // PROTOBUF_INCLUDED_tensorflow_2fcore_2fprotobuf_2fworker_2eproto
diff --git a/tensorflow/core/protobuf/worker.proto b/tensorflow/core/protobuf/worker.proto
new file mode 100644 (file)
index 0000000..a3bc2f4
--- /dev/null
@@ -0,0 +1,550 @@
+/* Copyright 2016 The TensorFlow Authors. All Rights Reserved.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+==============================================================================*/
+
+syntax = "proto3";
+
+package tensorflow;
+option cc_enable_arenas = true;
+option java_outer_classname = "WorkerProtos";
+option java_multiple_files = true;
+option java_package = "org.tensorflow.distruntime";
+option go_package = "github.com/tensorflow/tensorflow/tensorflow/go/core/protobuf";
+import "google/protobuf/any.proto";
+import "tensorflow/core/framework/cost_graph.proto";
+import "tensorflow/core/framework/step_stats.proto";
+import "tensorflow/core/framework/device_attributes.proto";
+import "tensorflow/core/framework/graph.proto";
+import "tensorflow/core/framework/tensor.proto";
+import "tensorflow/core/framework/tensor_shape.proto";
+import "tensorflow/core/framework/types.proto";
+import "tensorflow/core/lib/core/error_codes.proto";
+import "tensorflow/core/protobuf/config.proto";
+import "tensorflow/core/protobuf/debug.proto";
+import "tensorflow/core/protobuf/named_tensor.proto";
+import "tensorflow/core/protobuf/tensorflow_server.proto";
+
+////////////////////////////////////////////////////////////////////////////////
+//
+// GetStatus method request/response messages
+//
+////////////////////////////////////////////////////////////////////////////////
+
+message GetStatusRequest {
+}
+
+message GetStatusResponse {
+  repeated DeviceAttributes device_attributes = 1;
+}
+
+////////////////////////////////////////////////////////////////////////////////
+//
+// CreateSession method request/response messages
+//
+// For each session,
+//
+////////////////////////////////////////////////////////////////////////////////
+
+message CreateWorkerSessionRequest {
+  // Sessions are identified by a given handle.
+  string session_handle = 1;
+
+  // Defines the configuration of a TensorFlow worker.
+  ServerDef server_def = 2;
+
+  // If true, any resources such as Variables used in the session will not be
+  // shared with other sessions.
+  bool isolate_session_state = 3;
+}
+
+message CreateWorkerSessionResponse {
+}
+
+////////////////////////////////////////////////////////////////////////////////
+//
+// DeleteSession method request/response messages
+//
+// Deletes all worker-side state associated with the given session handle.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+message DeleteWorkerSessionRequest {
+  // Sessions are identified by a given handle.
+  string session_handle = 1;
+}
+
+message DeleteWorkerSessionResponse {
+}
+
+////////////////////////////////////////////////////////////////////////////////
+//
+// RegisterGraph method request/response messages
+//
+// For each session, after the master placed every node on a device,
+// it partitions the whole graph into many subgraphs. All the nodes in
+// a subgraph were in the same worker, but potentially on many devices
+// owned by that worker (e.g. cpu0, plus gpu0, gpu1, ..., gpu7). The
+// master registers subgraphs for a worker before running any steps. A
+// successful registration returns a graph handle to be used in latter
+// RunGraph requests.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+message RegisterGraphRequest {
+  // Subgraphs are scoped within one session.
+  string session_handle = 1;
+
+  // Set to true if `CreateWorkerSession` was called for `session_handle`.
+  bool create_worker_session_called = 6;
+
+  // "graph_def" has the subgraph of nodes for this worker, with each node
+  // having its device_name filled in.
+  GraphDef graph_def = 2;
+
+  // True iff the graph (before partitioning) contains control flow nodes.
+  //
+  // As of 01/11/2015, this is no longer set by clients.
+  bool has_control_flow = 3 [deprecated = true];
+
+  // Configuration options for the session in which this graph was created.
+  GraphOptions graph_options = 4;
+
+  // Field(s) used by TensorFlow Debugger (tfdbg).
+  DebugOptions debug_options = 5;
+
+  // If graph_def contains any collective ops this must be a positive
+  // integer used to coordinate execution with other graphs.  All
+  // graphs in a distributed execution with the same
+  // collective_graph_key will coordinate to use the same step_id
+  // concurrently so that BufRendezvous entries will make the correct
+  // values accessible.
+  int64 collective_graph_key = 7;
+}
+
+message RegisterGraphResponse {
+  // If the registration succeeds, returns an opaque graph_handle to
+  // the master. The master calls RunGraph with graph_handle to
+  // compute different steps.
+  string graph_handle = 1;
+}
+
+////////////////////////////////////////////////////////////////////////////////
+//
+// DeregisterGraph method request/response messages
+//
+// The master deregisters the given graph_handle when the graph is no
+// longer needed (e.g., the overall graph is re-scheduled and nodes
+// are re-placed).
+//
+// The worker deregisters a graph_handle automatically according to on
+// a TTL-base policy in case of master restarts.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+message DeregisterGraphRequest {
+  // The session_handle used when registering the graph. If session_handle is
+  // empty, a single global namespace is used.
+  string session_handle = 2;
+
+  // Set to true if `CreateWorkerSession` was called for `session_handle`.
+  bool create_worker_session_called = 3;
+
+  // REQUIRED: graph_handle must be returned by a RegisterGraph call
+  // to the same WorkerService.
+  string graph_handle = 1;
+}
+
+message DeregisterGraphResponse {
+  // TODO(mrry): Optionally add summary stats for the graph.
+}
+
+////////////////////////////////////////////////////////////////////////////////
+//
+// CleanupAll method request/response messages
+//
+////////////////////////////////////////////////////////////////////////////////
+
+message CleanupAllRequest {
+  // A list of container names.
+  //
+  // If 'container' is not empty, releases resources in the given
+  // containers in all devices.
+  //
+  // If 'container' is empty, releases resources in the default
+  // container in all devices.
+  repeated string container = 1;
+}
+
+message CleanupAllResponse {
+}
+
+////////////////////////////////////////////////////////////////////////////////
+//
+// RunGraph request / response messages
+//
+// The worker executes all subgraphs registered under graph_handle.
+// RunGraph returns after the execution finishes or an error is
+// encountered.
+// A sequence of RunGraphRequests with is_partial may be sent to RunGraph for
+// partial graph execution.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+// Options specific to the execution of a single step.
+message ExecutorOpts {
+  bool record_costs = 1;
+  bool record_timeline = 3;
+  bool record_partition_graphs = 4;
+  bool report_tensor_allocations_upon_oom = 5;
+};
+
+message RunGraphRequest {
+  // session_handle is the master-generated unique id for this session.
+  // If session_handle is non-empty, it must be the same as used when
+  // registering the graph. If it is empty, a single global namespace is used to
+  // search for the graph_handle.
+  string session_handle = 8;
+
+  // Set to true if `CreateWorkerSession` was called for `session_handle`.
+  bool create_worker_session_called = 10;
+
+  // REQUIRED: graph_handle must be returned by a RegisterGraph call
+  // to the same WorkerService.
+  string graph_handle = 1;
+
+  // A unique ID to distinguish different runs of the same graph.
+  //
+  // The master generates a global unique `step_id` to distinguish
+  // different runs of the graph computation. Subgraphs communicate
+  // (e.g., send/recv ops) with each other using `step_id` to
+  // distinguish tensors generated by different runs.
+  int64 step_id = 2;
+
+  // Options for this step.
+  ExecutorOpts exec_opts = 5;
+
+  // Runs the graph.
+  //
+  // Sends the tensors in "send" into the graph before the run and
+  // fetches the keys into `RunGraphResponse.recv` after the run.
+  repeated NamedTensorProto send = 3;
+  repeated string recv_key = 4;
+
+  // True if the RunGraphRequest is a partial run request.
+  bool is_partial = 6;
+  // True if this is the last partial run request in a sequence of requests.
+  bool is_last_partial_run = 7;
+
+  // If true then some errors, e.g., execution errors that have long
+  // error messages, may return an OK RunGraphResponse with the actual
+  // error saved in the status_code/status_error_message fields of the
+  // response body. This is a workaround since the RPC subsystem may
+  // truncate long metadata messages.
+  bool store_errors_in_response_body = 9;
+
+  // Next: 11
+}
+
+message RunGraphResponse {
+  // A list of tensors corresponding to those requested by
+  // `RunGraphRequest.recv_key`.
+  repeated NamedTensorProto recv = 1;
+
+  // If the request asked for execution stats, the cost graph, or the partition
+  // graphs, these are returned here.
+  // TODO(suharshs): Package these in a RunMetadata instead.
+  StepStats step_stats = 2;
+  CostGraphDef cost_graph = 3;
+  repeated GraphDef partition_graph = 4;
+
+  // If store_errors_in_response_body is true in the request, then
+  // optionally the server may return an OK status for the RPC and
+  // fill the true status into the fields below, to allow for messages
+  // that are too long to fit in metadata.
+  error.Code status_code = 5;
+  string status_error_message = 6;
+}
+
+////////////////////////////////////////////////////////////////////////////////
+//
+// CleanupGraph method request/response messages
+//
+// After the master receives RunGraph responses from all workers, the
+// master instructs every worker to cleanup any remaining state of a
+// step (e.g. tensors buffered by a `Send` op but not picked up by
+// other workers). The master does not necessarily need to wait for
+// completion of CleanupGraph calls.
+//
+// Workers should cleanup step states automatically according to a
+// TTL-based policy in case of master restarts.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+message CleanupGraphRequest {
+  int64 step_id = 1;
+}
+
+message CleanupGraphResponse {
+}
+
+////////////////////////////////////////////////////////////////////////////////
+//
+// RecvTensor method request/response messages
+//
+////////////////////////////////////////////////////////////////////////////////
+
+message RecvTensorRequest {
+  // The step in which the tensor will be produced.
+  //
+  // REQUIRED: This must eventually correspond to the `step_id` passed
+  // into a RunGraph call on the same WorkerService.
+  int64 step_id = 1;
+
+  // A key identifying the channel to receive tensors from. A RecvTensor request
+  // retrieves one tensor from the channel, but multiple tensors can be sent and
+  // received over the same channel with multiple RecvTensor requests. See
+  // rendezvous.h for details.
+  string rendezvous_key = 2;
+
+  // If true, use an out-of-band DMA mechanism to transfer the
+  // received tensor.
+  bool dma_ok = 3;
+
+  // Optional information on client-side device locality.
+  DeviceLocality client_locality = 4;
+
+  // Optional information on server-side device locality.
+  DeviceLocality server_locality = 5;
+
+  // Optional information needed by the RPC subsystem.
+  google.protobuf.Any transport_options = 6;
+
+  // Unique identifier for this request. Every RecvTensorRequest must have a
+  // unique request_id, and retried RecvTensorRequests must have the same
+  // request_id. If request_id is zero, retry detection is disabled.
+  //
+  // Retried RecvTensorRequests are problematic because a RecvTensor with no
+  // corresponding sender will wait forever, and the tensor may have been
+  // delivered to a previous retry. Workers use request_ids to reject retried
+  // RecvTensor requests instead of waiting forever.
+  int64 request_id = 7;
+}
+
+message RecvTensorResponse {
+  // The tensor as a proto.
+  TensorProto tensor = 1;
+
+  // If true, this tensor was the output of a dead node, and the
+  // content is invalid.
+  bool is_dead = 2;
+
+  // The time at which tensor was available and started to be returned.
+  int64 send_start_micros = 3;
+
+  // Optional additional information about how to receive the tensor,
+  // e.g. in the event that `RecvTensorRequest.dma_ok` was true.
+  google.protobuf.Any transport_options = 4;
+}
+
+////////////////////////////////////////////////////////////////////////////////
+//
+// Logging method request/response messages
+//
+// NOTE(mrry): This feature is not supported in the open-source
+// version, and these messages are expected to change.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+// Out-of-band request to begin or end logging, or
+// to retrieve logs for particular steps.
+message LoggingRequest {
+  // If true, RPC logging will be enabled.
+  bool enable_rpc_logging = 1;
+
+  // If true, RPC logging will be disabled.
+  bool disable_rpc_logging = 4;
+
+  // If true, discard any saved logging data (for all steps).
+  bool clear = 2;
+
+  // When set, requests all saved log data pertaining to the step.
+  // Any log data retrieved is eliminated from the store and cannot be
+  // retrieved again.
+  repeated int64 fetch_step_id = 3;
+}
+
+message LabeledStepStats {
+  int64 step_id = 1;
+  StepStats step_stats = 2;
+}
+
+message LoggingResponse {
+  repeated LabeledStepStats step = 1;
+}
+
+////////////////////////////////////////////////////////////////////////////////
+//
+// Tracing method request/response messages
+//
+// NOTE(mrry): This feature is not supported in the open-source
+// version, and these messages are expected to change.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+message TraceOpts {
+  // Length of the trace to be taken, in seconds.
+  double duration = 1;
+  // If true, capture step profile locally in each worker. Currently
+  // unimplemented.
+  bool use_step_profiler = 2;
+  // If true, capture kernel events from each worker.
+  bool use_kernel_profiler = 3;
+  // If true, capture extended profiling events from TensorFlow process.
+  bool use_extended_profiler = 4;
+  // If true, capture GPU profiling events locally on each
+  // machine. Currently unimplemented.
+  bool use_gpu_profiler = 5;
+  // If true, collect sampled profile events. Currently unimplemented.
+  bool use_sample_profiler = 6;
+}
+
+// Out-of-band request to configure distributed tracing.
+message TracingRequest {
+  TraceOpts options = 1;
+}
+
+message TracingResponse {
+}
+
+////////////////////////////////////////////////////////////////////////////////
+//
+// Raw data transfers in support of Collective Ops.
+// These methods are experimental and subject to change.
+//
+// The intention is to allow collectives to take advantage of the most
+// efficient methods available on a platform, e.g. RDMA, and not be
+// constrained to use the RPC system in use by other methods.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+message RecvBufRequest {
+  // Use of the fields below may vary by implementation.  For example
+  // the buf_ptr and num_bytes may be set only for local operations and
+  // not sent on the wire, or only sent on the wire in one direction.
+
+  // Used at server side to find the correct BufRendezvous.
+  int64 step_id = 1;
+
+  // Arbitrary string identifying a BufRendezvous entry.
+  string buf_rendezvous_key = 2;
+
+  // Size of value expected, must agree with BufRendezvous entry.
+  int64 num_bytes = 3;
+
+  // When RDMA is in use, address of destination field on client.
+  fixed64 buf_ptr = 4;
+
+  // Optional information on client-side device locality.
+  DeviceLocality client_locality = 5;
+
+  // Optional information on server-side device locality.
+  DeviceLocality server_locality = 6;
+
+  // Optional, implementation-specific data.
+  google.protobuf.Any transport_options = 7;
+  // Optional, for annotating the timeline.
+  string src_device = 8;
+  string dst_device = 9;
+}
+
+message RecvBufResponse {
+  // Use of the fields below may vary by implementation.  Comments give
+  // intended use.
+
+  fixed64 buf_ptr = 1;  // Address of source field on server.
+  int64 num_bytes = 2;  // Byte length of buf_ptr field, if set.
+  bool is_dead = 3;     // True if value is 'dead' like a tensor.
+  // Optional, implementation-specific data.
+  google.protobuf.Any transport_options = 4;
+  // Optional, for timeline.
+  int64 send_start_micros = 5;
+}
+
+////////////////////////////////////////////////////////////////////////////////
+//
+// Collective Op dynamic group resolution messages.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+// Supplies one or more device names as members of the group identified by
+// group_key.  Service will respond when all group_size devices become known.
+// All devices in group must have same type.
+message CompleteGroupRequest {
+  int32 group_key = 1;
+  int32 group_size = 2;
+  string device_type = 3;
+  repeated string device_name = 4;
+}
+
+// Gives the complete membership of the group identified by group_key.
+message CompleteGroupResponse {
+  int32 group_key = 1;
+  int32 group_size = 2;
+  string device_type = 3;
+  int32 num_tasks = 4;  // number of distinct tasks hosting the devices
+  repeated string device_name = 5;
+  repeated string task_name = 6;  // task name prefixes of device_names
+}
+
+// Supplies data about one collective op belonging to the instance identified
+// by instance_key.  Service will respond when all group_size ops have
+// become known.  Most of the data being sent is for correctness checking,
+// to ensure that all ops in the instance share common attributes.
+message CompleteInstanceRequest {
+  string name = 1;
+  int32 type = 2;
+  DataType data_type = 3;
+  TensorShapeProto shape = 4;
+  int32 group_key = 5;
+  int32 group_size = 6;
+  int32 instance_key = 7;
+  string device_type = 8;
+  repeated int32 subdiv_offset = 9;
+  string device = 10;
+  bool is_source = 11;
+}
+
+// Confirms that every op in the instance has consistently declared itself.
+// Also gives the source_rank in case of broadcast.
+message CompleteInstanceResponse {
+  int32 instance_key = 1;
+  int32 source_rank = 2;
+}
+
+// Request for next agreed-upon step_id for the specified graph_keys.
+// This is used to enable multiple graphs containing nodes from
+// a common collective instance to coordinate using the same step_ids.
+message GetStepSequenceRequest {
+  repeated int64 graph_key = 1;
+}
+
+message StepSequence {
+  int64 graph_key = 1;
+  int64 next_step_id = 2;
+}
+
+// Next valid step_ids for one or more graph_keys.
+message GetStepSequenceResponse {
+  repeated StepSequence step_sequence = 1;
+}
diff --git a/tensorflow/core/protobuf/worker_service.pb.cc b/tensorflow/core/protobuf/worker_service.pb.cc
new file mode 100644 (file)
index 0000000..e136d8b
--- /dev/null
@@ -0,0 +1,105 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: tensorflow/core/protobuf/worker_service.proto
+
+#include "tensorflow/core/protobuf/worker_service.pb.h"
+
+#include <algorithm>
+
+#include <google/protobuf/stubs/common.h>
+#include <google/protobuf/io/coded_stream.h>
+#include <google/protobuf/extension_set.h>
+#include <google/protobuf/wire_format_lite_inl.h>
+#include <google/protobuf/descriptor.h>
+#include <google/protobuf/generated_message_reflection.h>
+#include <google/protobuf/reflection_ops.h>
+#include <google/protobuf/wire_format.h>
+// @@protoc_insertion_point(includes)
+#include <google/protobuf/port_def.inc>
+
+namespace tensorflow {
+namespace grpc {
+}  // namespace grpc
+}  // namespace tensorflow
+void InitDefaults_tensorflow_2fcore_2fprotobuf_2fworker_5fservice_2eproto() {
+}
+
+constexpr ::google::protobuf::Metadata* file_level_metadata_tensorflow_2fcore_2fprotobuf_2fworker_5fservice_2eproto = nullptr;
+constexpr ::google::protobuf::EnumDescriptor const** file_level_enum_descriptors_tensorflow_2fcore_2fprotobuf_2fworker_5fservice_2eproto = nullptr;
+constexpr ::google::protobuf::ServiceDescriptor const** file_level_service_descriptors_tensorflow_2fcore_2fprotobuf_2fworker_5fservice_2eproto = nullptr;
+const ::google::protobuf::uint32 TableStruct_tensorflow_2fcore_2fprotobuf_2fworker_5fservice_2eproto::offsets[1] = {};
+static constexpr ::google::protobuf::internal::MigrationSchema* schemas = NULL;
+static constexpr ::google::protobuf::Message* const* file_default_instances = NULL;
+
+::google::protobuf::internal::AssignDescriptorsTable assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2fworker_5fservice_2eproto = {
+  {}, AddDescriptors_tensorflow_2fcore_2fprotobuf_2fworker_5fservice_2eproto, "tensorflow/core/protobuf/worker_service.proto", schemas,
+  file_default_instances, TableStruct_tensorflow_2fcore_2fprotobuf_2fworker_5fservice_2eproto::offsets,
+  file_level_metadata_tensorflow_2fcore_2fprotobuf_2fworker_5fservice_2eproto, 0, file_level_enum_descriptors_tensorflow_2fcore_2fprotobuf_2fworker_5fservice_2eproto, file_level_service_descriptors_tensorflow_2fcore_2fprotobuf_2fworker_5fservice_2eproto,
+};
+
+::google::protobuf::internal::DescriptorTable descriptor_table_tensorflow_2fcore_2fprotobuf_2fworker_5fservice_2eproto = {
+  false, InitDefaults_tensorflow_2fcore_2fprotobuf_2fworker_5fservice_2eproto, 
+  "\n-tensorflow/core/protobuf/worker_servic"
+  "e.proto\022\017tensorflow.grpc\032%tensorflow/cor"
+  "e/protobuf/worker.proto2\360\t\n\rWorkerServic"
+  "e\022H\n\tGetStatus\022\034.tensorflow.GetStatusReq"
+  "uest\032\035.tensorflow.GetStatusResponse\022f\n\023C"
+  "reateWorkerSession\022&.tensorflow.CreateWo"
+  "rkerSessionRequest\032\'.tensorflow.CreateWo"
+  "rkerSessionResponse\022f\n\023DeleteWorkerSessi"
+  "on\022&.tensorflow.DeleteWorkerSessionReque"
+  "st\032\'.tensorflow.DeleteWorkerSessionRespo"
+  "nse\022T\n\rRegisterGraph\022 .tensorflow.Regist"
+  "erGraphRequest\032!.tensorflow.RegisterGrap"
+  "hResponse\022Z\n\017DeregisterGraph\022\".tensorflo"
+  "w.DeregisterGraphRequest\032#.tensorflow.De"
+  "registerGraphResponse\022E\n\010RunGraph\022\033.tens"
+  "orflow.RunGraphRequest\032\034.tensorflow.RunG"
+  "raphResponse\022Q\n\014CleanupGraph\022\037.tensorflo"
+  "w.CleanupGraphRequest\032 .tensorflow.Clean"
+  "upGraphResponse\022K\n\nCleanupAll\022\035.tensorfl"
+  "ow.CleanupAllRequest\032\036.tensorflow.Cleanu"
+  "pAllResponse\022M\n\nRecvTensor\022\035.tensorflow."
+  "RecvTensorRequest\032\036.tensorflow.RecvTenso"
+  "rResponse\"\000\022B\n\007Logging\022\032.tensorflow.Logg"
+  "ingRequest\032\033.tensorflow.LoggingResponse\022"
+  "B\n\007Tracing\022\032.tensorflow.TracingRequest\032\033"
+  ".tensorflow.TracingResponse\022D\n\007RecvBuf\022\032"
+  ".tensorflow.RecvBufRequest\032\033.tensorflow."
+  "RecvBufResponse\"\000\022Z\n\017GetStepSequence\022\".t"
+  "ensorflow.GetStepSequenceRequest\032#.tenso"
+  "rflow.GetStepSequenceResponse\022T\n\rComplet"
+  "eGroup\022 .tensorflow.CompleteGroupRequest"
+  "\032!.tensorflow.CompleteGroupResponse\022]\n\020C"
+  "ompleteInstance\022#.tensorflow.CompleteIns"
+  "tanceRequest\032$.tensorflow.CompleteInstan"
+  "ceResponseBq\n\032org.tensorflow.distruntime"
+  "B\023WorkerServiceProtosP\001Z<github.com/tens"
+  "orflow/tensorflow/tensorflow/go/core/pro"
+  "tobufb\006proto3"
+,
+  "tensorflow/core/protobuf/worker_service.proto", &assign_descriptors_table_tensorflow_2fcore_2fprotobuf_2fworker_5fservice_2eproto, 1493,
+};
+
+void AddDescriptors_tensorflow_2fcore_2fprotobuf_2fworker_5fservice_2eproto() {
+  static constexpr ::google::protobuf::internal::InitFunc deps[1] =
+  {
+    ::AddDescriptors_tensorflow_2fcore_2fprotobuf_2fworker_2eproto,
+  };
+ ::google::protobuf::internal::AddDescriptors(&descriptor_table_tensorflow_2fcore_2fprotobuf_2fworker_5fservice_2eproto, deps, 1);
+}
+
+// Force running AddDescriptors() at dynamic initialization time.
+static bool dynamic_init_dummy_tensorflow_2fcore_2fprotobuf_2fworker_5fservice_2eproto = []() { AddDescriptors_tensorflow_2fcore_2fprotobuf_2fworker_5fservice_2eproto(); return true; }();
+namespace tensorflow {
+namespace grpc {
+
+// @@protoc_insertion_point(namespace_scope)
+}  // namespace grpc
+}  // namespace tensorflow
+namespace google {
+namespace protobuf {
+}  // namespace protobuf
+}  // namespace google
+
+// @@protoc_insertion_point(global_scope)
+#include <google/protobuf/port_undef.inc>
diff --git a/tensorflow/core/protobuf/worker_service.pb.h b/tensorflow/core/protobuf/worker_service.pb.h
new file mode 100644 (file)
index 0000000..59c5dcb
--- /dev/null
@@ -0,0 +1,81 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: tensorflow/core/protobuf/worker_service.proto
+
+#ifndef PROTOBUF_INCLUDED_tensorflow_2fcore_2fprotobuf_2fworker_5fservice_2eproto
+#define PROTOBUF_INCLUDED_tensorflow_2fcore_2fprotobuf_2fworker_5fservice_2eproto
+
+#include <limits>
+#include <string>
+
+#include <google/protobuf/port_def.inc>
+#if PROTOBUF_VERSION < 3006001
+#error This file was generated by a newer version of protoc which is
+#error incompatible with your Protocol Buffer headers. Please update
+#error your headers.
+#endif
+#if 3006001 < PROTOBUF_MIN_PROTOC_VERSION
+#error This file was generated by an older version of protoc which is
+#error incompatible with your Protocol Buffer headers. Please
+#error regenerate this file with a newer version of protoc.
+#endif
+
+#include <google/protobuf/port_undef.inc>
+#include <google/protobuf/io/coded_stream.h>
+#include <google/protobuf/arena.h>
+#include <google/protobuf/arenastring.h>
+#include <google/protobuf/generated_message_table_driven.h>
+#include <google/protobuf/generated_message_util.h>
+#include <google/protobuf/inlined_string_field.h>
+#include <google/protobuf/metadata.h>
+#include <google/protobuf/repeated_field.h>  // IWYU pragma: export
+#include <google/protobuf/extension_set.h>  // IWYU pragma: export
+#include "tensorflow/core/protobuf/worker.pb.h"
+// @@protoc_insertion_point(includes)
+#include <google/protobuf/port_def.inc>
+#define PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fprotobuf_2fworker_5fservice_2eproto
+
+// Internal implementation detail -- do not use these members.
+struct TableStruct_tensorflow_2fcore_2fprotobuf_2fworker_5fservice_2eproto {
+  static const ::google::protobuf::internal::ParseTableField entries[]
+    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
+  static const ::google::protobuf::internal::AuxillaryParseTableField aux[]
+    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
+  static const ::google::protobuf::internal::ParseTable schema[1]
+    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
+  static const ::google::protobuf::internal::FieldMetadata field_metadata[];
+  static const ::google::protobuf::internal::SerializationTable serialization_table[];
+  static const ::google::protobuf::uint32 offsets[];
+};
+void AddDescriptors_tensorflow_2fcore_2fprotobuf_2fworker_5fservice_2eproto();
+namespace google {
+namespace protobuf {
+}  // namespace protobuf
+}  // namespace google
+namespace tensorflow {
+namespace grpc {
+
+// ===================================================================
+
+
+// ===================================================================
+
+
+// ===================================================================
+
+#ifdef __GNUC__
+  #pragma GCC diagnostic push
+  #pragma GCC diagnostic ignored "-Wstrict-aliasing"
+#endif  // __GNUC__
+#ifdef __GNUC__
+  #pragma GCC diagnostic pop
+#endif  // __GNUC__
+
+// @@protoc_insertion_point(namespace_scope)
+
+}  // namespace grpc
+}  // namespace tensorflow
+
+// @@protoc_insertion_point(global_scope)
+
+#include <google/protobuf/port_undef.inc>
+#endif  // PROTOBUF_INCLUDED_tensorflow_2fcore_2fprotobuf_2fworker_5fservice_2eproto
diff --git a/tensorflow/core/protobuf/worker_service.proto b/tensorflow/core/protobuf/worker_service.proto
new file mode 100644 (file)
index 0000000..9ebbd55
--- /dev/null
@@ -0,0 +1,89 @@
+/* Copyright 2016 The TensorFlow Authors. All Rights Reserved.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+==============================================================================*/
+
+syntax = "proto3";
+
+package tensorflow.grpc;
+option java_outer_classname = "WorkerServiceProtos";
+option java_multiple_files = true;
+option java_package = "org.tensorflow.distruntime";
+option go_package = "github.com/tensorflow/tensorflow/tensorflow/go/core/protobuf";
+import "tensorflow/core/protobuf/worker.proto";
+
+////////////////////////////////////////////////////////////////////////////////
+//
+// WorkerService defines a TensorFlow service that executes dataflow
+// graphs on a set of local devices, on behalf of a MasterService.
+//
+// A worker service keeps track of multiple "registered graphs". Each
+// registered graph is a subgraph of a client's graph, corresponding to
+// only the nodes that should execute on this worker (and any
+// additional nodes necessary for inter-process communication using
+// the `RecvTensor` method).
+//
+////////////////////////////////////////////////////////////////////////////////
+
+service WorkerService {
+  // See worker.proto for details.
+  rpc GetStatus(GetStatusRequest) returns (GetStatusResponse);
+
+  // See worker.proto for details.
+  rpc CreateWorkerSession(CreateWorkerSessionRequest)
+      returns (CreateWorkerSessionResponse);
+
+  // See worker.proto for details.
+  rpc DeleteWorkerSession(DeleteWorkerSessionRequest)
+      returns (DeleteWorkerSessionResponse);
+
+  // See worker.proto for details.
+  rpc RegisterGraph(RegisterGraphRequest) returns (RegisterGraphResponse);
+
+  // See worker.proto for details.
+  rpc DeregisterGraph(DeregisterGraphRequest) returns (DeregisterGraphResponse);
+
+  // See worker.proto for details.
+  rpc RunGraph(RunGraphRequest) returns (RunGraphResponse);
+
+  // See worker.proto for details.
+  rpc CleanupGraph(CleanupGraphRequest) returns (CleanupGraphResponse);
+
+  // See worker.proto for details.
+  rpc CleanupAll(CleanupAllRequest) returns (CleanupAllResponse);
+
+  // See worker.proto for details.
+  rpc RecvTensor(RecvTensorRequest) returns (RecvTensorResponse) {
+    // RecvTensor Method
+  }
+
+  // See worker.proto for details.
+  rpc Logging(LoggingRequest) returns (LoggingResponse);
+
+  // See worker.proto for details.
+  rpc Tracing(TracingRequest) returns (TracingResponse);
+
+  // See worker.proto for details.
+  rpc RecvBuf(RecvBufRequest) returns (RecvBufResponse) {
+  }
+
+  // See worker.proto for details.
+  rpc GetStepSequence(GetStepSequenceRequest) returns (GetStepSequenceResponse);
+
+  // See worker.proto for details.
+  rpc CompleteGroup(CompleteGroupRequest) returns (CompleteGroupResponse);
+
+  // See worker.proto for details.
+  rpc CompleteInstance(CompleteInstanceRequest)
+      returns (CompleteInstanceResponse);
+}